加权平均数
温馨提示:由于本篇latex公式较多,容易显示异常或者加载较慢
公式:
$V_t = \beta_1V_{t-1} + (1-\beta_1)\theta_t$
其中$V_0 = 0$,所以展开后为:
$V_t = \beta_1^{t-1}(1-\beta_1)\theta_1 + \beta_1^{t-2}(1-\beta_1)\theta_2 + … + \beta_1^2(1-\beta_1)\theta_{t-2} + \beta_1(1-\beta_1)\theta_{t-1} + (1-\beta_1)\theta_t \\ = (1-\beta_1)\sum_{i=1}^{t} \beta_1^{t-i}\theta_{i}$
即$\frac{1}{1-\beta_1}V_t = \sum_{i=1}^{t}\beta_1^{t-i}\theta_i$,其中$\beta_1$是小于1的浮点数,所以在大约$\frac{1}{1-\beta_1}$次方后,$\beta_1^{\frac{1}{1-\beta_1}}$会小于1/e(这个数相当于是一个指数衰减函数,在权重小于1/e是算作较小值),可以逐渐算作忽略不计,则可视作 $V_t$为前$\frac{1}{1-\beta_1}$ 项的加权平均数
另外,在数据的前期由于其数据比$\frac{1}{1-\beta_{1}}$小得多,所以不能算较多数的加权平均,为了弥补数据量还不足的问题,可以除以偏差修正量$1-\beta_1^t$,而这个量会随着t的增大而逐渐趋向于1,所以不会影响后面的值
所以最终取的值为:
$\frac{V_t}{1-\beta_1^t} = \frac{1-\beta_1}{1-\beta_1^t}\sum_{i=1}^t\beta_1^{t-i}\theta_i$
动量梯度下降法(Momentum)
我们一般把梯度下降法比作是在爬山中的下坡,不断地迭代就是为了找出当前更快的下山的路,梯度下降法的迭代计算式为:
$\left\{\begin{array}{l}{w = w - \alpha dw} \\ {b = b - \alpha db}\end{array}\right.$
w和b分别可以表示每次跨的步数多少,和一个跨步的固定最小的值,wx+b可以代表了下山的路线,所以,对于正确的下山路线而言,训练的过程可能是上下摆动较大的,而我们之前说过$\frac{1}{1-\beta_1}$代表了$V_t$表示着多少天的加权平均,所以$\beta_1$越大,代表着越多值的平均值,而取较大的$\beta_1$意味着得到更平坦的图像(路线),所以使用加权平均数可以使得dw和db的变化变得平稳,我们分别用$V_{dw},V_{db}$表示他们使用加权平均后的值,这样可以使得w和b的变化更平稳,则wx+b也会变得更加平坦
流程:
On iteration t:
计算当前小批量的dw, db
$V_{dw} = \beta_1V_{dw} + (1-\beta_1)dw \\ V_{db} = \beta_1V_{db} + (1-\beta_1)db \\ w = w - \alpha V_{dw}, b = b - \alpha V_{db}$
其中的超参数:α(学习率),$\beta_1$(控制指数加权平均,最常用0.9)
Note:由于数据量较大,一般$\beta_1$取10,而前10个数据对于整体数据而言几乎可以忽略不计,所以不必添加偏差修正量
根均方传播法(RMS prop)
函数在向数据的正确分布拟合的时候,x的参数w越大,往往能更快的接近正确的分布(当然也不能过大),而b较大的时候容易过大而走弯路,所以一般不能太大,所以一般来说我们鼓励在学习过程中w变得更大一点而b变得更小一点。由此我们可以使用RMSprop方法来平衡w较小而b较大的情况
流程:
On iteration t:
计算当前小批量的dw, db
RMSprop: $S_{dw} = \beta_2 S_{dw} + (1 - \beta_2)(dw)^2 \\ S_{db} = \beta_2 S_{db} + (1- \beta_2)(dw)^2$
更新参数:$w = w - \alpha \frac{dw}{\sqrt{S_{dw}} + \epsilon} \\ b = b - \alpha \frac{db}{\sqrt{S_{db}} + \epsilon}$
其中公式中前后$S_{dw}, S_{db}$分别代表前t次,前t-1次迭代累计的dw的平方,相对本次db而言,它们是小的,所以更新后的也 $S_{db}$相对db而言是较小数,那么$\frac{db}{\sqrt{S_{db}} + \epsilon}$是一个较大的数,b减去一个较大的数后就可以更新为一个较小数,同理dw也可以更新为一个较大数
Note:ε的存在一般是为了防止$S_{dw}, S_{db}$过小导致算出来的值爆炸,所以加上一个几乎不影响结果的较小值,常用$10^{-8}、 10^{-6}$
Adam优化算法(Adaptive moment Estimation)
Adam优化算法就是将RMS传播算法和动量梯度下降法结合起来的算法
流程为:
$V_{dw} = 0,S_{dw} = 0, V_{db} = 0, S_{db} = 0$
On iteration t:
计算当前小批量的dw, db
$\left.\begin{array}{l}{V_{dw} = \beta_1 V_{dw} + (1-\beta_1)dw} \\
{V_{db} = \beta_1 V_{db} + (1-\beta_1)db }\end{array}\right\}$”Momentum”动量梯度下降
$\left.\begin{array}{l}{S_{dw}= \beta_2 S_{dw} + (1-\beta_2)(dw)^2} \\
{S_{db}=\beta_2 S_{dw} + (1 -\beta_2)(db)^2}\end{array}\right\}$”RMSprop”根均方传播算法
偏差修正:
$V^{corrected}_{dw} = \frac{V_{dw}}{1-\beta_1^t} \\
V^{corrected}_{db} = \frac{V_{db}}{1-\beta_1^t} \\
S^{corrected}_{dw} = \frac{S_{dw}}{1-\beta_2^t} \\
S^{corrected}_{db} = \frac{S_{db}}{1-\beta_2^t}$
更新参数:$w = w - \alpha \frac{V^{corrected}_{dw}}{\sqrt{S^{corrected}_{dw}} + \epsilon} \\
b = b-\alpha \frac{V^{corrected}_{db}}{\sqrt{S^{corrected}_{db}} +\epsilon}$
超参数:
α:学习率,需要调试
$\beta_1$:常用0.9 (dw的加权平均数,第一矩(待了解))
$\beta_2$:推荐0.999 ($dw^2$的加权平均数,第二矩)
ε:$10^{-8}$ (不需要太在意)
总而言之,Adam优化算法就是将RMS传播算法和动量梯度下降法结合在一起,前者可以减少偏差以加快学习,后者可以使图像更加平坦,从而加快学习。