1. 指数加权平均
对这个概念,我们用一个例子来一步步引入,假定下面这组数据是一周的气温:
从周一到周日
1.1 平均数
我们先从最基本的“平均”开始。
不用再多提,这组数据的简单平均为:
而对于这种最基本的平均值,我们得到就是这一周气温的“平均水平”,在这个“平均水平”里,每一天的温度都是同等重要的。
因此,对于平均数,我们往往用它和数据本身作运算,用数据和平均值的运算来量化“波动”。
而现在,有这样一个问题:
假如我是一个爱家人的笨蛋打工人,在一周里,相比工作日,我更希望知道周六日的温度适不适合我带家人出游。 我想确认看看上周末的气温,但是我忘了上周的具体气温,只对一个平均值有印象。
那在这种情况下,我更希望这个平均值和周六日的气温更接近,而不是周六日的气温被工作日的气温“拉平了”。
应对这种情况的就是下一步:加权平均数。
1.2 加权平均数
继续上面的例子,我们希望“平均值”更贴近周六、周日的气温。
这时候,“每一天同等重要”的普通平均就不够用了,我们需要让“重要的日子权重大”,不重要的权重小,于是就有了加权平均数:
其中,
是数据,
是权重,代表“这个数据点的重要程度”。
我们来看看,仍然是那组气温:
周一到周日
现在为了让平均值更反映出周六日的温度,我们把工作日(周一~周五)权重都设为
,而把周六、周日权重设为
。
那么加权平均值就是:
你会发现它比普通平均
更偏向周末的气温(11℃、15℃)。
总结一下,加权平均数会往“权重大”数据靠近。
可是又有一个问题:上一周的气温不一定和这一周类似。
一年有四季,气温会随时间不断变化,尤其在换季的时候,可能这一周突然降温,而你上周的平均气温却还停留在“秋天的温柔”里。
在这种情况下,如果我们还继续对所有天数给固定权重,就会出现一个问题:
一个月前的周末和昨天的周末“权重”一样大,这是不合理的,因为在小范围里,过去越久的气温对预测明天的气温参考价值越小(再次强调小范围)
而现在,如果我想预测本周末的气温,更合理的做法应该是根据更近的信息去预测。
总结一下,在现在这个受时间影响的气温预测问题中:
时间越久的数据,对我们当前判断的帮助越小;
越近的数据,更应该影响我们对“当前平均水平”的认识。
你可能会说,那就按时间顺序,给越往前的数据越小的权重,这个思路是对的,可是实施起来,我们难度要每过一天,就给所有的数据排新的权重吗?
能解决这个问题的就是这部分的主角:指数加权平均数。
1.3 指数加权平均数(Exponential Moving Average, EMA)
刚才我们说到了一个关键需求:
我们希望越新的气温越影响我们对当前“平均气温水平”的判断,越旧的数据影响越小。
如果继续用加权平均数,每过一天就重新给所有数据分配一次权重,这样不仅麻烦,还不够灵活。
于是,指数加权平均数出现了,他可以实现:
让旧数据的权重自动随时间“指数衰减”。
即越早的数据影响越弱、越近的数据影响越强,而我们完全不需要手动更新所有权重。
具体来说,我们给出一个参数:
它叫“衰减因子”或 “平滑系数”,代表我们对“历史印象”的依赖程度,展开来说:
越大 → 越“念旧”,更看重过去积累的平均值
越小 → 越“看重当下”,今天冷一点你马上觉得“最近都好冷”
而具体实现这个逻辑的公式,也就是指数加权平均值公式就是:
它的含义非常直观:
今天我认为的平均气温水平一部分保留昨天的印象一部分采纳今天的真实气温。
我们仍然用这组数据来说明:
周一到周日
我们固定设置
开始,并使用一个比较温和的参数:
周一(10℃) :
周二(16℃) :
周三(12℃) :
依次类推,
表示到第
天为止,根据指数加权平均计算出的“当前平均值”
展开两个小问题:
(1) 指数加权平均的“权重到底是怎么变小的?”
把今天(第
天)的平均
展开,可以看到每一天对今天平均的影响:
可以发现:
今天:权重
昨天:权重
前天:权重
很明显,随着时间往回走,权重呈指数式衰减。
这就是“指数平均”,在一层层迭代中,让越远的数据权重越小。
(2) 衰减因子的物理含义
我们展开一下
时的权重衰减示例如下:
天数 权重 累计权重比
今天 0.70 70%
昨天 0.21 91%
前天 0.063 91.6%
大前天 0.019 91.8%
四天前 0.006 91.86%
可以看到,当
较大时,历史数据仍然有显著权重,指数平均“记忆长”;当
较小时,历史数据迅速衰减,指数平均更重视近期数据。
我们可以用等效天数量化
的影响:
表示今天权重对应普通平均的天数,也可以理解为历史信息平均贡献的有效天数。
→
天 → 平均更重视今天
→
天 → 平均包含更多历史信息
→
天 → 历史数据记忆很长
这样就可以根据需求确定一个较合理的衰减因子。
1.4 指数加权平均的偏差修正(Bias Correction)
刚才我们用公式:
计算得到指数加权平均值。
但是,如果我们从
开始,会发现前几天的
往往偏低。这是为什么呢?
原因很简单:初始值
并没有反映真实平均值,因为前几天的 EMA 都会被这个“零值”拉低,从而产生偏差。
举个例子:假设我们继续用前面的气温数据,
:
天数 实际气温
EMA
周一 10 7.0
周二 16 13.3
周三 12 12.39
你会发现,周一的 EMA
,比实际温度
低得多;周二
,也略低于真实平均。
为了修正这种“初始偏差”,我们引入偏差修正:
其中:
分母
的作用是把初始零值对 EMA 的拉低影响消掉;
随着时间
增大,
,偏差修正的影响自然消失。
继续刚才的例子,我们看看修正后的 EMA:
周一:
周二:
周三:
可以看到:经过偏差修正后,EMA 在前几天就能更真实地反映数据水平,同时,随着
增大,
,偏差自动消失。
总结一下:EMA 的初始值会导致前几天平均被“拉低”,用
可以快速修正偏差,同时也不影响后续数据。
2. 学习率衰减
我们在此之前一直用梯度下降法来不断调整参数,让损失函数越来越小。
在这个过程中,学习率(learning rate)控制每次参数更新的步幅,我们称其为一个超参数,需要我们手动地设置,但怎么设置,好像并没有一个公认的科学标准。
因为更好的方法是在训练中动态调整,而不是像我们之前一样使用一个固定值。
我们早说过:学习率设置得太大或者太小,都会影响训练效果:
太大:容易“蹦得太远”,跳过最优点,训练可能不稳定 (在谷底两侧来回跳下不去) ;
太小:每次更新太慢,训练收敛速度非常慢 (十年下不来山)。
所以,为了兼顾速度和稳定性,更好的方法是不是动态地调整步幅?即快点下山,然后细细地找谷底。
这个调整的学习率的过程,就叫学习率衰减(Learning Rate Decay)。
Pasted image 20251108213028
2.1 局部最优的情况
在训练过程中,参数更新的路径往往不是一条直线,而是像爬山/下谷一样崎岖不平:
有时候,我们可能先到达一个局部最优点(Local Minimum),不是全局最优,但梯度很小,参数更新几乎停滞。如果学习率保持不变,我们可能永远停在这个局部最优,无法进一步优化。
要强调一点的是,在高维参数空间里,局部最优点往往不是局部最小值而是鞍点,大家了解即可。
Pasted image 20251108213416
这就像走在山谷里,如果你步子太小,爬不出小山丘;步子太大,又可能越过真正的大山谷。
解决这个问题的一个策略就是先大步快走(大学习率),再小步精修(小学习率)。
这也是学习率衰减的核心思想:
训练初期:学习率大,快速收敛,覆盖较大的参数空间;
训练后期:学习率小,精细调整,避免“来回震荡”,更稳定逼近最优解。
2.2 常见的学习率衰减方法
和 EMA 类似,学习率衰减也可以看作随着训练步数,历史信息逐渐被“淡化”,步幅逐渐变小。
常见方法有以下几种:
(1)固定衰减(Step Decay)
最简单的方法:每隔固定训练轮次,将学习率缩小一个比例。
公式:
其中:
:初始学习率
:衰减比例(例如 0.5)
:步数间隔(轮次epoch)
举个例子:
假设初始学习率
,每训练 10 个 epoch 衰减一次,衰减比例
:
epoch 学习率
1~10 0.1
11~20 0.05
21~30 0.025
可以看到,学习率像阶梯一样逐步降低,训练初期大步,后期小步。
(2)指数衰减(Exponential Decay)
和 EMA 很像:每一步训练后,学习率按指数规律衰减:
:衰减速率
:当前训练步数(轮次epoch)
特点:学习率连续衰减,前期下降快,后期下降慢,类似 EMA 对历史数据权重的衰减。
举个例子:
初始学习率
,衰减速率
:
epoch
学习率
1
2
3
4
5
(3)1/t 衰减(Inverse Time Decay)
另一种方式是按时间倒数衰减:
初期衰减较快
后期衰减逐渐减缓
适合训练很长时间的模型
举个例子:
假设初始学习率
,衰减速率
,计算前几个 epoch 的学习率:
epoch
学习率
1
2
3
4
5
(4)自适应学习率方法
有些优化器内置类似 EMA 的机制,自动根据历史梯度调整每个参数的有效学习率:
相当于每个参数都有自己的“指数加权平均历史”,
训练初期快速更新,后期逐渐收敛,类似 EMA 的偏差修正和衰减效果结合起来。
这类优化算法就是在实际应用中使用的,也是之后要介绍的主要内容。要提前强调一点:这种算法叫自适应学习率算法,但是反而却并不会像上面的几个方法一样改变超参数意义里的学习率,具体原理是什么样的,我们之后就会了解到。
3."人话版"总结
概念 基本原理 比喻
平均数(Mean) 对一组数据求算术平均,每个数据权重相同 所有数据都是等重要的朋友,每个人的意见一样
加权平均数(Weighted Mean) 给不同数据分配不同权重,权重大 → 更影响平均值 更重要的人意见更大,比如周末气温对出游更重要
指数加权平均数(Exponential Moving Average, EMA) 历史数据权重按指数衰减,越新的数据权重越大;公式
记忆力随时间衰减:最近的印象更鲜明,旧印象慢慢淡忘
EMA 偏差修正(Bias Correction) 解决初始值导致前期平均被拉低问题:
刚开始看信息时容易低估真实水平,修正后更准确
学习率(Learning Rate) 控制梯度下降每次更新参数的步幅 下山步子大小:步子大 → 快但可能蹦过谷底,步子小 → 精确但慢
学习率衰减(Learning Rate Decay) 随训练进程逐渐减小学习率,提高收敛稳定性 先大步快下山,再小步精细找谷底
固定衰减(Step Decay) 每隔固定步数按比例缩小学习率 爬山每隔一段路就换小步走
指数衰减(Exponential Decay) 学习率随训练步数按指数规律连续衰减 步子逐渐变小,前期快,后期慢
1/t 衰减(Inverse Time Decay) 学习率按时间倒数衰减 前期快跑,后期慢慢走
自适应学习率方法(Adaptive LR) 每个参数根据历史梯度调整步幅,类似 EMA 机制 每个腿根据走路经验自动调节步子大小,更聪明地下山