都是个人理解,可能有错误,请告知
我们简单说一下整个神经网络学习过程:
[w,b]
[w,b]
是什么标准呢?就是在这组参数确定的神经网络中,所有数据通过该神经网络,得到的预测值与真实值差距计算总和的平均值最小(目标是0
)
[w,b]
是在反向传播的过程中,方式是梯度下降
。梯度下降
。SGD
,momentum
,RMSprop
,Ddam
都是梯度下降里的改进方法。传统梯度下降比如三层参数,1000个数据,每层1000个参数(n=1000)
我们先通过1000个数据 算出了总损失函数,现在要反向传播,进行调整初始化的[w,b]
,【3层 -> 2层】反向传播一层为例:
第一个数据,通过反向传播,更新一次参数,不过这个更新暂存的,实际的参数没有变化
。然后使用原始的参数更新一次第二个例子,然后使用原始参数更新一次第三个例子…这样一层参数更新了所有数据1000次,我们把这1000次计算出来需要的update的参数量求和或者求平均,从而更新一次参数
。更新这一层参数的计算量1000*1000
它的问题是计算量太大了,尤其深度神经网络,无法实际应用。
想法:调查全国30岁人均身高,不需要把所有30岁人身高都计算出来,就随机抽样就行,无非是抽样数据越大,就约准确。即使抽取1个,那么离真是平均值相差不大。
用法:每次修改参数,随机取一个数据,下次再随机取一个,而不是用所有数据。
优势:相对于传统的梯度下降,大大降低了计算量,让理论方法得以实践
思考:在每轮更新中,难免会遇到误差很大的点,那么考虑 既不用1个数据,也不用所有数据,用一部分数据,这种就是mini-batch
mini-batch
:设置越大,那么梯度下降方向和最佳路线就更准确,但是计算量就越大。重要的是把我这个度.类似与这种收敛,会来回震荡,因为梯度下降方向很小的向量指向目标点(0.0)
思路:如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
步的修正量,它参考了所有的历史数据,越近的影响的权重越大η
是学习率第一个式子理解参看视频【16分钟时候开始】https://www.bilibili.com/video/BV1r64y1s7fU/
缺点:它的问题就是学习率η
是一致不变的,可能会因为冲最佳点,反复震荡
这个是想办法修改学习率η
,让它自适应,步伐开始大,后面每步只能越来越小
,这样就解决了如果学习率太大,可能冲过目标点,太小又下降的太慢的问题
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
0
S(t)
有参考历史梯度,相对于每一步上,梯度越大走的步伐增量越小;梯度越小,走的步伐相对来说增量大一点;但整体来看 整体分母是不断增加的,就是增加的量是变化的,整体看步伐只会是越来越小
。缺点:整体看步伐只会是越来越小,导致这种步伐一单变的很小了,就没办法再增大了,再次遇到大梯度就下降的很慢
对上面的缺点进行了优化,就是和动量想法相似,利用历史数据,但是越近的影响越大(方法的解释在第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
动量法(梯度的优化)+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