带自适应不确定度与群体化段位校准的自适应动态评分:一种面向自由对战竞技场的原创在线评分算法
本文件为英文版论文的中文翻译。术语或表述若存在歧义,以英文版 ADR-Algorithm-EN.md 为准。
作者:邓睿熙(Neamyoo-dev)
GitHub:https://github.com/Neamyoo-dev
ORCID:https://orcid.org/0009-0004-3643-6049
日期:2026-09-05
本文提出自适应动态评分(Adaptive Dynamic Rating, ADR)算法,这是一种面向自由对战(Free-For-All, FFA)竞技场的原创在线技能评估方法。ADR 为每位玩家维护一个动态状态,该状态包含技能估计值、不确定度、当前连胜数、近期波动性估计、短期趋势和暂存分数池。每次 FFA 击杀被建模为一次低信息密度的成对比较。算法使用自适应学习率更新两名相关玩家;该学习率取决于不确定度、连胜数、波动性和近期趋势。更新被有意设计为非对称的,以降低单次死亡造成的惩罚。时间衰减机制用于处理不活跃玩家,并将他们的技能估计值拉向当前活跃玩家均值。段位边界根据活跃玩家群体的经验技能分布重新校准。为防止长期缺席回归玩家的分数激增,ADR 结合了峰形学习率、证据置信度加权、暂存分数池和单次变化上限。该算法并不直接复制 Elo、Glicko 或 TrueSkill;它与这些方法共享成对比较建模的一般思想,但引入了独特的自适应结构。在显式有界性约束下,若维护有序索引,单事件更新复杂度为 $O(\log P)$ ,排名查询复杂度为 $O(\log P)$ ,其中 $P$ 是被追踪玩家数。
关键词 :自适应学习率;不确定度传播;在线排名;自由对战竞技场;动态阈值校准;回归玩家保护机制
可靠的技能评估对于竞技游戏服务器至关重要。在自由对战竞技场中,玩家会在短时间内与多名对手交战,单次击杀是低信息量观测。经典评分系统主要针对持续时间相对稳定的成对比赛设计。将它们直接应用于 FFA 可能导致评分波动、刷分和段位膨胀。
本文的主要贡献如下:
提出一种新的在线评分模型,每位玩家由技能估计值、不确定度、连胜数、波动性窗口、短期趋势和暂存分数池表示。
提出一种由玩家不确定度、连胜数、波动性和趋势驱动的自适应学习率,而不是固定 $K$ 因子。
提出非对称更新规则,以减少对败者的惩罚。
提出时间衰减机制,降低不活跃玩家的影响,并将其技能估计值拉向当前活跃玩家均值。
提出基于玩家群体的段位校准流程,根据技能估计值的经验分布重新计算段位边界。
给出计算复杂度分析,阐明实时事件更新与有序索引维护之间的权衡。
提出针对长期缺席回归玩家的综合保护机制,结合峰形学习率、证据置信度加权、暂存分数池和单次变化上限。该机制在第 8 节中完整定义。
最广泛使用的评分系统是 Elo 系统,它使用固定学习率和逻辑斯蒂结果模型更新标量评分。虽然简单,但它不建模不确定度,并且对 $K$ 的选择敏感。Glicko 和 Glicko-2 通过引入评分偏差(Rating Deviation)来扩展 Elo,并将比赛分组为评分周期。TrueSkill 和 TrueSkill Through Time 为多人及时变技能提供了贝叶斯公式,但依赖因子图和近似推断,计算开销较大。Weng 和 Lin 提出了在线排名的贝叶斯近似方法,统一了多种评分模型。近期研究还探讨了自适应学习环境中 Elo 的动态 $K$ 值。
ADR 与 Bradley–Terry 和 Elo 共享成对比较建模的一般思想,但并未直接复制这些方法。第一,它使用基于反正切的结果模型,其扩散系数取决于玩家群体的平均不确定度。第二,其学习率是不确定度、连胜数、波动性和趋势项的乘积。第三,其段位系统直接根据当前玩家群体分布校准,而不是使用固定评分阈值。
本文其余部分结构如下。第 2 节形式化问题并定义玩家状态。第 3 节提出成对结果模型。第 4 节描述自适应评分更新,包括修正后的不确定度更新。第 5 节提出时间衰减机制。第 6 节描述段位分配与动态校准。第 7 节分析算法性质,包括有界性和计算复杂度。第 8 节详细说明回归玩家保护机制。第 9 节提供参数设置与敏感性指导。第 10 节提出实验协议。第 11 节讨论局限性与未来工作。第 12 节总结全文。
FFA 事件定义为三元组 $(a,b,t)$ ,表示玩家 $a$ 在时刻 $t$ 击杀玩家 $b$ 。如果同一攻击者在冷却期 $T_{\text{cooldown}}$ 内再次击杀同一受害者,则该重复事件不参与评分更新。该排除被视为核心更新前的预处理步骤。除非另有说明,默认值为 $T_{\text{cooldown}}=60$ 秒。
令 $\mathcal{P}(t)$ 表示时刻 $t$ 的被追踪玩家集合,令 $P=|\mathcal{P}(t)|$ 。
每位玩家 $i \in \mathcal{P}(t)$ 具有以下状态:
符号
定义
定义域
$\mu_i(t)$
技能估计值
$[\mu_{\min}, \mu_{\max}]$
$\sigma_i(t)$
不确定度
$[\sigma_{\min}, \sigma_{\max}]$
$s_i(t)$
当前连胜数
$\mathbb{Z}_{\ge 0}$
$\mathbf{w}_i(t)$
评分变化绝对值的滑动窗口
$\mathbb{R}_{\ge 0}^{L}$
$\phi_i(t)$
短期趋势
$[-1, 1]$
$\nu_i(t)$
暂存分数池
$[\nu_{\min}, \nu_{\max}]$
$n_i(t)$
已计入的 FFA 事件数
$\mathbb{Z}_{\ge 0}$
$t_i$
最近一次已计入事件的时间
$\mathbb{R}_{\ge 0}$
初始状态为:
$$
\mu_i(0)=\mu_0,\quad \sigma_i(0)=\sigma_0,\quad s_i(0)=0,\quad \phi_i(0)=0,\quad \nu_i(0)=0,\quad n_i(0)=0.
$$
滑动窗口 $\mathbf{w}_i(t)$ 保存最近 $L$ 次更新的评分变化绝对值 $|\mu_i(t')-\mu_i(t'-1)|$ 。如果可用元素少于 $L$ ,则均值基于可用元素计算。如果窗口为空,则 $\bar{w}_i(t)=0$ 。其均值为:
$$
\bar{w}_i(t)=\frac{1}{\min(L,|\mathbf{w}_i(t)|)}\sum_{k=1}^{\min(L,|\mathbf{w}_i(t)|)} w_{i,k}(t).
$$
玩家 $i$ 自最近一次事件以来的时间差(以天为单位)为:
$$
d_i(t)=\frac{t-t_i}{T_{\text{day}}},
$$
其中 $T_{\text{day}}$ 是每天对应的时间单位数。
为了进行校准和时间衰减目标设定,活跃玩家集合 $\mathcal{A}(t)$ 定义为:
$$
\mathcal{A}(t)=\left\lbrace i\in\mathcal{P}(t): n_i(t)-n_i(t-T_{\text{active}})\ge N_{\text{active}}\right\rbrace,
$$
其中 $T_{\text{active}}$ 是回溯窗口,$N_{\text{active}}$ 是该窗口内的最小事件数。默认值为 $T_{\text{active}}=7$ 天,$N_{\text{active}}=5$。如果没有玩家满足该条件,则 $\mathcal{A}(t)$ 回退为 $\mathcal{P}(t)$ 。
该算法有三个目标:
以在线方式估计每位玩家的真实技能 $\theta_i$ 。
从估计技能中产生可靠的段位标签。
在玩家数量很大时保持计算高效。
假设玩家 $a$ 在时刻 $t$ 击杀玩家 $b$ 。预测 $a$ 击杀 $b$ 的概率为:
$$
P_{ab}(t)=\frac{1}{2}+\frac{1}{\pi}\arctan\left(\frac{\mu_a(t)-\mu_b(t)}{D(t)}\right).
$$
该基于反正切的函数取值在 $(0,1)$ 内,并且当评分差变得极端时,其导数会减小。该性质可防止对实力悬殊的对局产生过度反应。
扩散系数 $D(t)$ 定义为:
$$
D(t)=\theta+\lambda,\bar{\sigma}(t),
$$
$$
\bar{\sigma}(t)=\frac{1}{P}\sum_{i\in\mathcal{P}(t)}\sigma_i(t).
$$
其中,$\theta>0$ 是基础扩散系数,$\lambda\ge 0$ 控制群体平均不确定度对预测的影响强度。当玩家群体的平均不确定度较高时,$D(t)$ 增大,预测概率变得更不极端。
玩家 $i$ 的学习率定义为:
$$
\eta_i(t)=\eta_i^{\text{base}}(t)\cdot\eta_i^{\text{streak}}(t)\cdot\eta_i^{\text{vol}}(t)\cdot\eta_i^{\text{trend}}(t).
$$
基础分量取决于不确定度:
$$
\eta_i^{\text{base}}(t)=\eta_{\min}+(\eta_{\max}-\eta_{\min})\cdot\frac{\sigma_i(t)}{\sigma_i(t)+K_\sigma}.
$$
连胜分量为:
$$
\eta_i^{\text{streak}}(t)=1+\rho_s\cdot\min(s_i(t),S_{\max}).
$$
波动性分量被设计为稳定的负反馈项:
$$
\eta_i^{\text{vol}}(t)=\frac{1}{1+\rho_v\cdot\frac{\bar{w}_i(t)}{W_{\text{ref}}}}.
$$
这意味着近期评分波动较大的玩家会获得较小的学习率,从而抑制震荡。
趋势分量为:
$$
\eta_i^{\text{trend}}(t)=1+\gamma_\phi\cdot\max(0,\phi_i(t)).
$$
只有正趋势会加速学习。负趋势不会提高学习率,因为状态下滑的玩家已经通过负向技能更新得到修正;额外的加速会放大情绪化波动。
对于败者 $b$ ,有效学习率被折扣:
$$
\eta_b^{\text{loss}}(t)=c_{\text{loss}}\cdot\eta_b(t),
$$
其中 $c_{\text{loss}}\in(0,1]$ 。
当 $a$ 击杀 $b$ 时,原始技能更新为:
$$
\tilde{\mu}_a(t+1)=\mu_a(t)+\eta_a(t)\cdot\bigl(1-P_{ab}(t)\bigr),
$$
$$
\tilde{\mu}_b(t+1)=\mu_b(t)-\eta_b^{\text{loss}}(t)\cdot P_{ab}(t).
$$
最终值被显式裁剪到允许范围内:
$$
\mu_i(t+1)=\min\left(\mu_{\max},\max\left(\mu_{\min},\tilde{\mu}_i(t+1)\right)\right).
$$
默认边界为 $\mu_{\min}=0$ 和 $\mu_{\max}=4000$ 。该裁剪是算法的一部分,并用于第 7.1 节的有界性性质。
令:
$$
\Delta\mu_a(t)=\mu_a(t+1)-\mu_a(t),
$$
$$
\Delta\mu_b(t)=\mu_b(t+1)-\mu_b(t).
$$
不确定度更新分为两个阶段:过程噪声增加和基于证据的下降。
首先,加入过程噪声:
$$
\sigma_i^{\text{mid}}(t)=\sqrt{\sigma_i(t)^2+\left(\Delta\mu_i(t)\right)^2}.
$$
其次,根据事件获得的信息量降低不确定度:
$$
\sigma_i(t+1)=\max\left(\sigma_{\min},\left(\frac{1}{\sigma_i^{\text{mid}}(t)^2}+\frac{1}{\gamma^2}\right)^{-1/2}\right).
$$
其中,$\gamma>0$ 是观测噪声参数,控制单次事件能降低多少不确定度。随着有效事件数量的增加,$\sigma_i$ 向 $\sigma_{\min}$ 下降。这修正了先前设计中不确定度只能增加而不能下降的缺陷。
更新后强制执行下界 $\sigma_{\min}$ 。
短期趋势使用预测误差的指数滑动平均更新:
$$
\phi_a(t+1)=\mathrm{clip}\Bigl((1-\lambda_\phi)\phi_a(t)+\lambda_\phi\bigl(1-P_{ab}(t)\bigr),,-1,,1\Bigr),
$$
$$
\phi_b(t+1)=\mathrm{clip}\Bigl((1-\lambda_\phi)\phi_b(t)+\lambda_\phi\bigl(P_{ab}(t)-1\bigr),,-1,,1\Bigr).
$$
正趋势表示玩家持续超过预期,这会增大学习率中的趋势分量。
连胜数更新为:
$$
s_a(t+1)=s_a(t)+1,\qquad s_b(t+1)=0.
$$
评分变化绝对值 $|\Delta\mu_a(t)|$ 和 $|\Delta\mu_b(t)|$ 分别追加到对应滑动窗口。若窗口长度超过 $L$ ,则删除最旧元素。
事件数更新为:
$$
n_a(t+1)=n_a(t)+1,\qquad n_b(t+1)=n_b(t)+1.
$$
令 $\Delta t_i=d_i(t)$ 表示玩家 $i$ 自最近一次已计入事件以来的天数。在处理新事件前,若 $\Delta t_i>0$ ,则执行以下衰减:
$$
\mu_i(t)\leftarrow \bar{\mu}_{\mathcal{A}}(t)+\bigl(\mu_i(t)-\bar{\mu}_{\mathcal{A}}(t)\bigr)\cdot\exp\left(-\frac{\Delta t_i}{\tau}\right),
$$
$$
\sigma_i(t)\leftarrow\min\left(\sigma_{\max},\sigma_i(t)+\sigma_{\text{drift}}\cdot\Delta t_i\right).
$$
其中,$\bar{\mu}{\mathcal{A}}(t)$ 是第 2.3 节定义的活跃玩家集合 $\mathcal{A}(t)$ 的技能估计均值。如果 $\mathcal{A}(t)$ 为空,则 $\bar{\mu} {\mathcal{A}}(t)=\mu_0$。衰减后,最近事件时间被设置为 $t_i=t$ 。
向当前活跃玩家均值衰减,而不是向全局初始值衰减,可以避免由整体玩家群体变化引起的系统性偏差。
玩家在同时满足以下两个条件前保持“No Tier”状态:
$$
n_i(t)\ge N_{\min},
$$
$$
\sigma_i(t)\le\sigma_{\text{place}}.
$$
第一个条件保证存在最少数量的证据。第二个条件保证不确定度足够低,以进行可靠分配。
段位集合从高到低排列为:
$$
1H,\ 1M,\ 1L,\ 2H,\ 2M,\ 2L,\ 3H,\ 3M,\ 3L,\ 4H,\ 4M,\ 4L,\ 5H,\ 5M,\ 5L.
$$
令段位索引 $k\in\lbrace 1,\dots,15 \rbrace$ 表示该有序列表。较小的 $k$ 表示较高的段位。
令 $\mathcal{A}(t)$ 为第 2.3 节定义的活跃玩家集合。其技能估计值的经验累积分布函数为:
$$
F_t(x)=\frac{1}{|\mathcal{A}(t)|}\sum_{i\in\mathcal{A}(t)}\mathbb{I}[\mu_i(t)\le x].
$$
对每个段位 $k$ ,令 $p_k$ 为活跃玩家中目标位于段位 $k$ 的比例,且:
$$
\sum_{k=1}^{15}p_k=1.
$$
累积比例为:
$$
q_k=\sum_{\ell=1}^{k}p_\ell.
$$
段位 $k$ 与段位 $k+1$ 之间的边界为:
$$
B_k=F_t^{-1}(1-q_k),\quad k=1,\dots,14.
$$
令 $B_0=+\infty$ ,$B_{15}=-\infty$ 为哨兵边界。玩家被分配到段位 $k$ 当且仅当:
$$
B_k\le\mu_i(t)<B_{k-1}.
$$
如果 $|\mathcal{A}(t)|<P_{\min}$ ,则不更新阈值。否则,边界使用指数平滑更新:
$$
B_k(t+1)=(1-\beta),B_k(t)+\beta,B_k^{\text{target}}(t),
$$
其中 $B_k^{\text{target}}(t)$ 是由当前经验分布估计得到的边界,$\beta\in(0,1]$。
由于边界是时变的,技能估计值不变的玩家也可能在边界移动时被晋升或降级。这是段位分布的有意再平衡,与群体校准目标一致。
令 $k_i(t)$ 为玩家 $i$ 的当前段位索引。定义晋升累积器:
$$
h_i^{\uparrow}(t+1)=
\begin{cases}
h_i^{\uparrow}(t)+\max\bigl(0,\mu_i(t+1)-B_{k_i(t)-1}\bigr), & \mu_i(t+1)\ge B_{k_i(t)-1},\\
0, & \text{otherwise}.
\end{cases}
$$
若 $h_i^{\uparrow}(t+1)\ge H_{\text{req}}$ ,则玩家晋升至段位 $k_i(t)-1$ ,并将两个累积器重置为零。
定义降级累积器:
$$
h_i^{\downarrow}(t+1)=
\begin{cases}
h_i^{\downarrow}(t)+\max\bigl(0,B_{k_i(t)}-\mu_i(t+1)\bigr), & \mu_i(t+1)<B_{k_i(t)},\\
0, & \text{otherwise}.
\end{cases}
$$
若 $h_i^{\downarrow}(t+1)\ge H_{\text{req}}$ ,则玩家降级至段位 $k_i(t)+1$ ,并将两个累积器重置为零。
累积器机制可防止单次事件立即引起段位变化。
技能估计值 $\mu_i(t)$ 在第 4.2 节的规则下每次更新后都被显式裁剪到 $[\mu_{\min},\mu_{\max}]$ 。因此 $\mu_i(t)$ 由构造保证有界。不确定度 $\sigma_i(t)$ 被裁剪到 $[\sigma_{\min},\sigma_{\max}]$ ,趋势 $\phi_i(t)$ 被裁剪到 $[-1,1]$ ,连胜数 $s_i(t)$ 非负,暂存分数池 $\nu_i(t)$ 按第 8.3 节被裁剪到 $[\nu_{\min},\nu_{\max}]$ 。学习率的每个分量都是有限的。因此,ADR 的状态空间是紧致的,任何轨迹都不会发散。
若玩家的真实技能提高,则该玩家更可能超过预测结果。这会产生正向预测误差,从而增大趋势项。波动性项保持有界,且不确定度更新会随证据积累而下降,因此学习率在保持可控的同时仍能向新技能水平收敛。
预测概率 $P_{ab}(t)$ 已考虑对手的技能估计值。击杀较弱对手只会产生较小的正向更新。连胜和波动性分量有界,可防止长连杀导致无界加速。重复击杀冷却由第 2.1 节描述的预处理步骤强制执行。
令 $P$ 为被追踪玩家数,$L$ 为固定滑动窗口长度。
如果增量维护有序索引,则每次评分更新需要删除并重新插入两名受影响玩家。因此单事件更新复杂度为 $O(\log P)$ 。排名查询复杂度为 $O(\log P)$ 。Top-$N$ 查询复杂度为 $O(\log P+N)$ ,若维护有界 Top-$N$ 缓存则为 $O(1)$ 。
如果优先保证实时事件更新并采用惰性重建有序索引,则单事件更新可为 $O(1)$ ,但此时排名和 Top-$N$ 查询在重建时需要 $O(P\log P)$ 。因此 ADR 在事件更新延迟与查询延迟之间存在权衡;默认建议是增量索引维护,单事件 $O(\log P)$ 。
阈值校准的精确分位数为 $O(P\log P)$ ,若使用近似分位数草图则为 $O(P)$ 。空间复杂度为 $O(P)$ 。
本节完整定义贡献 7 所列机制。目标是让回归玩家能够快速重新校准,同时防止单次击杀将技能估计值推高到不切实际的水平。
对于所有玩家,基础学习率被替换为关于不确定度的峰形函数:
$$
\eta_i^{\text{base}}(t)=\eta_{\min}+(\eta_{\max}-\eta_{\min})\cdot\frac{2\sigma_i(t)\sigma_{\text{peak}}}{\sigma_i(t)^2+\sigma_{\text{peak}}^2}.
$$
当 $\sigma_i(t)=\sigma_{\text{peak}}$ 时,基础学习率达到最大值。当 $\sigma_i(t)$ 远小于或远大于 $\sigma_{\text{peak}}$ 时,基础学习率下降。特别是,长期缺席玩家的不确定度漂移到接近 $\sigma_{\max}$ 时,其基础学习率会降低,而不是过高。该峰形定义取代了第 4.1 节中基于 $K_\sigma$ 的基础分量;因此,$K_\sigma$ 不是最终算法的参数。
对于最近一次事件距今超过 $T_{\text{return}}$ 天的回归玩家,过高的不确定度不应使单次击杀看起来像强证据。原始更新乘以证据置信度权重:
$$
r_i(t)=\frac{\sigma_0}{\sigma_i(t)+\sigma_0}.
$$
有效技能更新变为:
$$
\Delta\mu_i^{\text{raw}}(t)=\eta_i(t)\cdot\bigl(1-P_{ab}(t)\bigr),
$$
$$
\Delta\mu_i^{\text{effective}}(t)=\Delta\mu_i^{\text{raw}}(t)\cdot r_i(t).
$$
当不确定度较低时,$r_i(t)$ 接近 1。当不确定度较高时,$r_i(t)$ 较小,因此单次意外结果的直接影响有限。
对于最近一次事件距今超过 $T_{\text{return}}$ 天的玩家,有效更新在可见技能估计值与暂存池之间分配:
$$
\nu_i(t+1)=\mathrm{clip}\Bigl(\nu_i(t)+\alpha,\Delta\mu_i^{\text{effective}}(t),,\nu_{\min},,\nu_{\max}\Bigr),
$$
$$
\mu_i(t+1)=\mu_i(t)+(1-\alpha),\Delta\mu_i^{\text{effective}}(t)+\lambda_{\text{pool}},\nu_i(t).
$$
其中,$\alpha\in[0,1]$ 是暂存在池中的有效更新比例,$\lambda_{\text{pool}}\in(0,1]$ 是释放速率。默认值为 $\alpha=0.7$ ,$\lambda_{\text{pool}}=0.2$。默认情况下,$\nu_{\min}=-\Delta_{\max}$,$\nu_{\max}=\Delta_{\max}$,因此暂存池被裁剪到与单次变化上限相同的范围。该池使回归玩家的评分只能逐渐移动。如果后续结果与暂存方向不一致,池会自然衰减或被相反的更新抵消。如果玩家确实更强,则重复的正向有效更新最终会释放暂存分数。
作为硬性安全约束,应用于可见技能估计值的绝对变化被限制为:
$$
\left|\mu_i(t+1)-\mu_i(t)\right|\le\Delta_{\max}.
$$
默认值为 $\Delta_{\max}=60$ 。令 $\tilde{\mu}_i(t+1)$ 表示第 8.3 节暂存池机制产生的可见技能值。最终可见技能为:
$$
\mu_i(t+1)=\mu_i(t)+\mathrm{clip}\bigl(\tilde{\mu}_i(t+1)-\mu_i(t),,-\Delta_{\max},,\Delta_{\max}\bigr).
$$
该上限在所有其他机制之后生效。被裁剪掉的多余部分直接丢弃,不会写回 $\nu_i(t+1)$ ;这可以防止暂存池累积无界的延迟分数。
该保护机制不会替代时间衰减或段位累积器机制,而是对其进行补充。时间衰减处理长期漂移,暂存池处理不确定证据的重新评估,单次变化上限处理极端异常值,段位累积器防止瞬时段位变化。它们共同确保回归玩家获得平滑且公平的重新校准体验。
下表列出 ADR 使用的默认参数。
参数
符号
推荐值
初始技能
$\mu_0$
1000
技能下界
$\mu_{\min}$
0
技能上界
$\mu_{\max}$
4000
初始不确定度
$\sigma_0$
350
最小不确定度
$\sigma_{\min}$
10
最大不确定度
$\sigma_{\max}$
400
观测噪声
$\gamma$
100
峰形不确定度
$\sigma_{\text{peak}}$
200
最小基础学习率
$\eta_{\min}$
4
最大基础学习率
$\eta_{\max}$
40
连胜奖励系数
$\rho_s$
0.15
计入的最大连胜数
$S_{\max}$
5
波动性阻尼系数
$\rho_v$
0.3
参考波动性
$W_{\text{ref}}$
20
趋势奖励系数
$\gamma_\phi$
0.3
趋势 EMA 平滑系数
$\lambda_\phi$
0.2
败者折扣
$c_{\text{loss}}$
0.8
重复击杀冷却
$T_{\text{cooldown}}$
60 秒
扩散系数基础值
$\theta$
400
扩散系数不确定度权重
$\lambda$
0.5
衰减时间常数
$\tau$
30 天
不活跃期间不确定度漂移
$\sigma_{\text{drift}}$
每天 5
回归阈值
$T_{\text{return}}$
60 天
暂存池比例
$\alpha$
0.7
暂存池释放速率
$\lambda_{\text{pool}}$
0.2
暂存池下界
$\nu_{\min}$
$-\Delta_{\max}$ (即 $-60$ )
暂存池上界
$\nu_{\max}$
$\Delta_{\max}$ (即 $60$ )
单次变化上限
$\Delta_{\max}$
60
定级所需最小事件数
$N_{\min}$
15
定级不确定度阈值
$\sigma_{\text{place}}$
180
活跃回溯窗口
$T_{\text{active}}$
7 天
活跃最小事件数
$N_{\text{active}}$
5
校准所需最小活跃玩家数
$P_{\min}$
20
晋升/降级能量阈值
$H_{\text{req}}$
400
边界平滑系数
$\beta$
0.2
滑动窗口长度
$L$
20
敏感性指导:
$\sigma_{\text{peak}}$ 控制算法在正常不确定度区间内的学习积极性。较大的值会使学习率对不确定度的敏感度降低。
$\gamma$ 控制不确定度随证据下降的速度。较小的 $\gamma$ 会使不确定度下降更快。
$\alpha$ 和 $\lambda_{\text{pool}}$ 共同控制回归玩家分数的释放速度。较大的 $\alpha$ 使系统在短期内更保守。
$\Delta_{\max}$ 是硬性安全限制,应根据每次事件允许的最大可见评分变化来设置。
$N_{\text{active}}$ 和 $T_{\text{active}}$ 定义用于校准的活跃群体。如果服务器人数较少,建议增大 $T_{\text{active}}$ 或减小 $N_{\text{active}}$ 。
$p_k$ 的总和应为 1,并应反映期望的段位分布。在没有特定领域要求时,15 个段位上的近似均匀分布是合理的默认选择。
所提出的算法应在模拟 FFA 事件流或真实服务器日志上进行评估。每个事件所需的输入为:
可选输入包括造成伤害、受到伤害、爆头数和生存时间。
该算法应至少与以下基线进行比较:
固定 $K$ 因子的 Elo。
Glicko-2。
TrueSkill。
动态 $K$ 的 Elo 变体。
建议使用以下指标:
击杀概率预测的对数损失(Log Loss)。
击杀预测的 ROC 曲线下面积(AUC)。
评分估计的收敛速度。
段位分配的稳定性。
对模拟技能变化的响应延迟。
对重复击杀和刷分模式的鲁棒性。
经验段位比例与目标比例 $p_k$ 的匹配程度。
长期缺席后的最大可见评分变化,用于评估回归玩家保护机制。
由于在评估时可能没有真实世界数据,因此规定如下合成模拟协议。
生成 $P$ 名玩家,其隐藏真实技能从高斯混合分布中抽取。
通过反复选择两名活跃玩家并根据其真实技能生成结果来模拟 FFA 事件。
注入受控事件,例如技能突然提升,或长期缺席后紧接着的强势表现。
将事件流输入 ADR 和每个基线。
在第 10.3 节的留出事件批次上评估指标。
该协议允许对预测质量、稳定性和保护机制有效性进行受控比较。
数据集应划分为训练流和测试流。评分系统在线处理训练流,并在测试流上评估预测。校准质量应通过经验段位比例与目标比例 $p_k$ 之间的距离来衡量。
为展示保护机制的行为,我们运行了一个受控玩具模拟。一名初始评分为 1000 的玩家缺席 60 天后回归,并连续 50 次击败同一名高技能对手(评分为 2000)。我们将 ADR 与 Elo、Glicko-2 和 TrueSkill 进行比较。由于每个系统使用不同的评分尺度,图 1 报告的是各系统相对于自身初始值的标准化评分增量。
图 2 展示逐次标准化评分变化。ADR 平滑上升,没有单次大尖峰;Elo 每次更新幅度几乎恒定;Glicko-2 首跳很大但随后迅速衰减;TrueSkill 的变化幅度很小。这支持了“ADR 不会产生极端单次评分跳跃”的结论。
经过 50 次连续击杀后,标准化增量分别为:ADR 1197.93,Elo 1166.94,Glicko-2 1077.40,TrueSkill 31.52。TrueSkill 的较小增量反映了其刻意保守的单场更新幅度以及不同的评分尺度;标准化增量仅为说明性展示,不能跨系统直接比较。结果显示,ADR 不会产生极端的单次评分尖峰;其可见评分平稳上升,同时暂存池逐步释放分数。该玩具示例仅用于演示,不能替代完整验证。正式比较应执行第 10.4 节的完整模拟协议。
为展示 ADR 的在线预测行为,我们按照第 10.4 节的模拟协议运行了一个包含 50 名玩家、8000 次成对击杀事件的合成 FFA 事件流。相同事件分别输入 ADR、Elo、Glicko-2 和 TrueSkill。图 3 报告随事件数增加时的滚动对数损失和分块 AUC。
在该说明性运行中,四种系统最终达到相近的 AUC 水平;Elo、Glicko-2 和 TrueSkill 的对数损失略低。这是预期的结果,因为合成数据生成器使用接近 Elo 的逻辑斯蒂模型,而 ADR 的反正切模型是刻意不同的。该图仅用于展示评估流程,并不声称 ADR 在预测质量上更优。
当前论文存在以下局限性:
目前仅报告说明性模拟(回归玩家玩具示例和合成预测质量事件流);第 10.4 节的完整多玩家模拟协议尚未执行。
摔落、环境伤害等非击杀死亡未被建模。
多因子表现评分需要额外数据采集,尚未完全整合到正式更新方程中。
当活跃玩家数量很小时,基于群体的校准可能不稳定;$P_{\min}$ 阈值可缓解但无法完全消除该问题。
尚未在一般随机假设下给出形式化收敛证明。
未来工作包括:执行模拟协议,推导形式化收敛保证,将多因子表现评分整合到事件模型中,在真实 FFA 服务器日志上评估算法,并与已有评分系统进行预测质量比较。
本文提出了 ADR,一种面向自由对战竞技场的原创在线技能评估算法。ADR 将自适应学习率、两阶段不确定度更新、连胜与波动性效应、短期趋势、基于活跃群体的时间衰减、群体化段位校准和回归玩家综合保护机制结合在一起。该算法自包含,不直接复制现有已发布的评分系统,并具有清晰表征的计算复杂度。ADR 旨在对真实技能变化作出响应,对孤立事件保持稳健,抵抗简单刷分策略,并适用于大规模玩家群体。
作者声明,在本文准备过程中使用了人工智能辅助工具(DeepSeek V4 Flash 0731 和 GPT 5.6 Sol)。这些工具协助完成了数学公式组织、LaTeX/Markdown 排版、数值模拟实现以及多轮修改。作者本人负责提出研究问题与设计目标,评估并选择候选方案,发现并纠正概念性错误,并对全部最终公式、模拟设置与结果进行审阅和验收。作者对本文内容承担全部责任。
Bradley, R. A., and Terry, M. E. Rank analysis of incomplete block designs: I. The method of paired comparisons. Biometrika , 39(3/4):324–345, 1952.
Elo, A. E. The Rating of Chessplayers, Past and Present . Arco Publishing, 1978.
Glickman, M. E. Parameter estimation in large dynamic paired comparison experiments. Applied Statistics , 48(3):377–394, 1999.
Glickman, M. E. The Glicko-2 system . 2012. http://www.glicko.net/glicko.html
Herbrich, R., Minka, T., and Graepel, T. TrueSkill: A Bayesian skill rating system. In Advances in Neural Information Processing Systems 19 , 2006.
Dangauthier, P., Herbrich, R., Minka, T., and Graepel, T. TrueSkill through time: Revisiting the history of chess. In Advances in Neural Information Processing Systems 20 , 2007.
Weng, R. C., and Lin, C.-J. A Bayesian approximation method for online ranking. Journal of Machine Learning Research , 12:155–189, 2011.
A method for fast leaderboard calculations in massive online game-based environments. International Journal of Computer Games Technology , 2018. https://doi.org/10.1155/2018/3234873
Balancing stability and flexibility: investigating a dynamic $K$ value approach for the Elo rating system in adaptive learning environments. User Modeling and User-Adapted Interaction , 2025.
US Patent 8694427B2, Time-efficient and deterministic adaptive score calibration techniques for maintaining a predefined score distribution , 2014.