《机器学习-小知识点》4:SGD,momentum,RMSprop,AdaGrad ,Adam
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
《机器学习-小知识点》4SGD,momentum,RMSprop,AdaGrad ,Adam
都是个人理解可能有错误请告知
4.1 知识点定位
我们简单说一下整个神经网络学习过程:
- 我们数据是已知的网络结构是已知的目的就是找到该网络一套最佳的参数
[w,b]
- 最佳的参数
[w,b]
是什么标准呢就是在这组参数确定的神经网络中所有数据通过该神经网络得到的预测值与真实值差距计算总和的平均值最小目标是0
- 不是一个数据预测对了就行是所有数据都得参加
- 要算平均最小是因为排除数量不同的影响
- 我们目的是每次都能预测对也就是追求一套参数让每次都不出错没有误差
- 调整
[w,b]
是在反向传播的过程中方式是梯度下降
。 - 为了减少运算时间有两种优化思路对神经网络本身进行优化dropout等还有就是优化
梯度下降
。 SGD
,momentum
,RMSprop
,Ddam
都是梯度下降里的改进方法。
4.2 传统梯度下降
传统梯度下降比如三层参数1000个数据每层1000个参数n=1000
我们先通过1000个数据 算出了总损失函数现在要反向传播进行调整初始化的[w,b]
,【3层 -> 2层】反向传播一层为例
第一个数据通过反向传播更新一次参数不过这个更新暂存的实际的参数没有变化
。然后使用原始的参数更新一次第二个例子然后使用原始参数更新一次第三个例子…这样一层参数更新了所有数据1000次我们把这1000次计算出来需要的update的参数量求和或者求平均从而更新一次参数
。更新这一层参数的计算量1000*1000
它的问题是计算量太大了尤其深度神经网络无法实际应用。
4.3 SGD随机梯度下降法
想法调查全国30岁人均身高不需要把所有30岁人身高都计算出来就随机抽样就行无非是抽样数据越大就约准确。即使抽取1个那么离真是平均值相差不大。
用法每次修改参数随机取一个数据下次再随机取一个而不是用所有数据。
优势相对于传统的梯度下降大大降低了计算量让理论方法得以实践
思考在每轮更新中难免会遇到误差很大的点那么考虑 既不用1个数据也不用所有数据用一部分数据这种就是mini-batch
mini-batch
:设置越大那么梯度下降方向和最佳路线就更准确但是计算量就越大。重要的是把我这个度.
缺点
类似与这种收敛会来回震荡因为梯度下降方向很小的向量指向目标点0.0
4.4 momentum 动量法
思路如SGD问题会来回震荡我们发现我们目的是向前红
在竖直方向上来回反转黄
绿
如果能够考虑历史原因将上下方向有一定抵消那么会减少震荡
公式
V
t
=
β
⋅
V
t
−
1
+
(
1
−
β
)
⋅
d
w
(
t
)
i
V_{t}=\beta·V_{t-1}+(1-\beta)·dw_{(t)i}
Vt=β⋅Vt−1+(1−β)⋅dw(t)i
W
(
t
)
i
=
W
(
t
−
1
)
i
+
η
V
t
W_{(t)i}=W_{(t-1)i}+\eta V_{t}
W(t)i=W(t−1)i+ηVt
Vt
其实就是W
在t
步的修正量它参考了所有的历史数据越近的影响的权重越大η
是学习率- W ( t ) i = ∂ J ( W ( t − 1 ) i ) ∂ W i W_{(t)i}=\frac{\partial J(W_{(t-1)i})}{\partial W_i} W(t)i=∂Wi∂J(W(t−1)i) 就是w的梯度
第一个式子理解参看视频【16分钟时候开始】https://www.bilibili.com/video/BV1r64y1s7fU/
缺点它的问题就是学习率η
是一致不变的可能会因为冲最佳点反复震荡
4.5 AdaGrad 自适应算法
这个是想办法修改学习率η
让它自适应步伐开始大后面每步只能越来越小
这样就解决了如果学习率太大可能冲过目标点太小又下降的太慢的问题
W ( t ) i = W ( t − 1 ) i + η S ( t ) + ϵ V t W_{(t)i}=W_{(t-1)i}+\frac{\eta}{\sqrt{S_{(t)}+\epsilon} } V_{t} W(t)i=W(t−1)i+S(t)+ϵηVt S ( t ) = S ( t − 1 ) + Δ W ( t ) i ⋅ Δ W ( t ) i S_{(t)}=S_{(t-1)}+\Delta W_{(t)i}·\Delta W_{(t)i} S(t)=S(t−1)+ΔW(t)i⋅ΔW(t)i
-
ϵ
\epsilon
ϵ 是极小量为了避免分母是
0
S(t)
有参考历史梯度相对于每一步上梯度越大走的步伐增量越小梯度越小走的步伐相对来说增量大一点但整体来看 整体分母是不断增加的就是增加的量是变化的整体看步伐只会是越来越小
。
缺点整体看步伐只会是越来越小导致这种步伐一单变的很小了就没办法再增大了再次遇到大梯度就下降的很慢
4.6 RMSprop
对上面的缺点进行了优化就是和动量想法相似利用历史数据但是越近的影响越大(方法的解释在第16分钟)
W ( t ) i = W ( t − 1 ) i + η S ( t ) + ϵ V t W_{(t)i}=W_{(t-1)i}+\frac{\eta}{\sqrt{S_{(t)}+\epsilon} } V_{t} W(t)i=W(t−1)i+S(t)+ϵηVt S ( t ) = β ⋅ S ( t − 1 ) + 1 − β Δ W ( t ) i ⋅ Δ W ( t ) i S_{(t)}=\beta·S_{(t-1)}+1-\beta\Delta W_{(t)i}·\Delta W_{(t)i} S(t)=β⋅S(t−1)+1−βΔW(t)i⋅ΔW(t)i
4.7 Adam
动量法(梯度的优化)+RMSprop(学习率优化) = Adam
W
(
t
)
i
=
W
(
t
−
1
)
i
+
η
S
(
t
)
+
ϵ
V
t
W_{(t)i}=W_{(t-1)i}+\frac{\eta}{\sqrt{S_{(t)}+\epsilon} } V_{t}
W(t)i=W(t−1)i+S(t)+ϵηVt
V
t
=
β
1
⋅
V
t
−
1
+
(
1
−
β
1
)
⋅
d
w
(
t
)
i
V_{t}=\beta_1·V_{t-1}+(1-\beta_1)·dw_{(t)i}
Vt=β1⋅Vt−1+(1−β1)⋅dw(t)i
S
(
t
)
=
β
2
⋅
S
(
t
−
1
)
+
1
−
β
2
Δ
W
(
t
)
i
⋅
Δ
W
(
t
)
i
S_{(t)}=\beta_2·S_{(t-1)}+1-\beta_2\Delta W_{(t)i}·\Delta W_{(t)i}
S(t)=β2⋅S(t−1)+1−β2ΔW(t)i⋅ΔW(t)i
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |