GD

θnext=θlast−ωf′(θi)
直到
f′(θnext)=0
对于一般的凸函数,其中的θ是一个关于x的函数
θi=g(xi)
也就是说,给定一个f(x)的时候,我们只能确定一个θ,只有全面的遍历所有样本,我们才能够的到f(θ)
最小二乘法:J(θ)=21i=1∑m(fθ(xi)−yi)2
一次性全部展开
θnext==θlast−wf′(θi)θlast−wf′(g(xi))
但是一般来说,样本不少,直接计算是在耗费资源。
更主要的是,为了刨除一些特殊性质,会打乱样本的顺序进行再次训练,以为提高适应性。
假设样本个数为n,训练次数为m,总共重复计算量为n×m
BGD
批量梯度下降,它的有优点在于把随机样本顺序隐藏到了计算步骤当中。
假设总样本为S,个数为n则每次训练的样本集为Si,样本为ni{Si∈Sni≤n
当ni=n的时候,就成了一般的梯度下降方法了。
当pi∈Si的时候,得到的θ是仅适用于pi这些点的极值参数。
为了适配全部的点,就应该多组的进行训练,遍历全部样本。
它显式的优势在于,减少了每次计算的计算量,可以通过重复计算来慢慢增加精度。
隐式的优势在于,它把一个一次性达成目的造成的大量计算,拆分成了分步达成,从时间上进行了分离。
把算力分步到了时间片上,相同算力条件下,每次的计算速度加快。
SGD
这个就更加赖皮了,如果把BGD中每次批量的数据量设置为1,也就是
ni=1
也就是每次只是计算一个点,它内在的原理是进一步发掘了计算结果的累加性
θnext=θlast−ωf′(θi)
不过计算过程中,样本数据固定的话,每次只取一个样本会增加循环的次数,增加额外开销。
这种办法适合单点计算量比较大的情况下使用,否则只会适得其反
θi=f(xi)
Adagrad
前面的优化办法,都是对计算聚集的拆分办法,还有一个关于学习率w的问题

红到绿,步子跨大了,错过了最低点。
关于学习率
- 学习率大了,收敛速度快,但是可能错过极值点,还有反复横跳
- 学习率太小,收敛速度太慢,计算量大
- 全部参数使用同一个学习率,收敛慢
为此,Adagrad提出了一个适配的学习率
wi=∑ikg′(θi)2+εwk≤n
这样一来前期时候可以设置一个较大的学习率,快速的收敛。
后期由于累积的梯度增大,学习率逐渐减小,不容易错过极值反复横跳。
更主要的是,它不一定是一维的,每个维度之间的学习率是独立的,不会在整体收敛情况下让单一维度反复横跳。
其中的ε主要是为了避免除0的情况
RMSprop
一个数字,一直分一半,最小是多少,需要多少次。
Adagrad重心转到了学习率上面,提出一个适配的学习率,解决了诸多问题,但是也引出了一个问题
后期学习率逐渐降低,而且降低的太过分了,当累加的梯度到一个很大的地步,每次的学习率就会极小。
一米的路程,如果一步一纳米,也是很远的路程。
所以RMSprop提出这么一个观点,累加的梯度应该有一个时效性,太久远的梯度影响应该减小。
wi=ρgi−1′(θi−1)+(1−ρ)gi′(θi)2+ε2
其中它的辅助参数只是取了上一次的梯度和当前的梯度加权和,通过ρ进行控制。
根据这种观点,你还可以设计一个卷积函数参数t(n)
wi=∑kit(k−i)gi′(θi)+εw
让辅助参数不那么大,在收敛区域学习率不会过于小,导致收敛缓慢即可。
Momentum
山羊在陡峭的地方也站的很稳,站的很稳不一定就是最低点。
可能有很多的极值点,但并非就是全局最优解,Moment的重心回到了全局最优解这个问题上面。
它朴素的思想是,容易逃离的就不是全局最优。
我们每次寻找下一个点都是根据这个表达式
θi=θi−1−wg′(θi−1)
当梯度趋于0,完全没有逃离的办法。
调整w,太大就会左右横跳,太小就会陷入局部最优。
前面的办法都是让w在初期保持较大值,快速收敛,后期减小,都没有办法逃离局部最优,变换模式单一。
也就是说,在梯度很小的时候,不一定要保持较低的学习率进行收敛,需要适应的调整,验证一下是否全局最优。
vi=θi=avi−1−wg′(θi−1)θi−1+vi
全部放在一块
θi=θi−1−wg′(θi−1)+avi−1
也就是说,它在最后加上另一个新的控制手段,以此来对极值点进行校验。每次移动不由单一值控制,而是变成了
avi−1−wg′(θi−1)
之前的移动控制学习率的大小,通过之前梯度的影响进行计算。
但是梯度总会减小,偏移量也是一直减小的,无法对当前位置进行更好的调整。
现在加上了一个受之前状态影响的偏移量,使得可以在梯度很小的时候也能够进行偏移,逃离局部最优。
偏移的距离和上一次移动距离正相关,也就是说当梯度绝对值较大的时候偏移量也会比较大。
如果是全局最优,在反复几次偏离后,梯度逐渐减小,偏移逐渐减小,最终得到最优解。
如果是局部最优,就会偏移出局部区域,从而避免局部最优。
其中vi初始值为0,a表示v的衰减率。
Adam
minim^n^θi+1=β1mi−1+(1−β1)g′(θi)=β2ni−1+(1−β2)g′(θi)2=1−β1imi=1−β2ini=θi−n^+εηm^
觉得复杂可以先这样看看
y=kx+b⇒y=k(x+kb)
把原来的式子全部整合为一个
θi+1=θi−1−β2iβ2ni−1+(1−β2)g′(θi)2+εη⎝⎛1−β1iβ1mi−1+(1−β1)g′(θi)⎠⎞
也就是说,Adam是RMSprop和Momentum的整合。让学习率w和偏移都进行一种变化的适配。
在收敛的同时,还能避免局部最优解的限制。