自动更新参数

鞍点不一定是训练过程中最大的阻碍,当loss不再下降,梯度不一定很小。
NTV7z.png
这就是error surface卡在了两个山谷之间不断震荡。这时候loss不会再下降,这时候就是卡在了临界点。当你用gradient descend来做优化时,往往不是因为临界点。

不同的参数需要不同的学习率

如果在某个地方很平坦,就希望学习率大一些,而在某个地方很崎岖,就希望学习率小一些。
我们有Momentum,也就是说我们现在,不是完全顺著gradient的方向,现在不是完全顺著这一个时间
点,算出来的gradient的方向,来update参数,而是把过去,所有算出来gradient的方向,做一个加总当
作update的方向,这个是momentum
接下来应该要update多大的步伐呢,我们要除掉,gradient的Root Mean Square
那讲到这边可能有同学会觉得很困惑,这一个momentum是考虑,过去所有的gradient,这个σ也是考
虑过去所有的gradient,一个放在分子一个放在分母,都考虑过去所有的gradient,不就是正好抵销了
吗,
但是其实这个Momentum跟这个σ,它们在使用过去所有gradient的方式是不一样的,Momentum
是直接把所有的gradient通通都加起来,所以它有考虑方向,它有考虑gradient的正负号,它有考虑
gradient是往左走还是往右走
但是这个Root Mean Square,它就不考虑gradient的方向了,它只考虑gradient的大小,记不记得
我们在算σ的时候,我们都要取平方项,我们都要把gradient取一个平方项,我们是把平方的结果加起
来,所以我们只考虑gradient的大小,不考虑它的方向,所以Momentum跟这个σ,算出来的结果并不会
互相抵销掉
那最后我们还会加上,一个learning rate的scheduling,
那这个是今天optimization的,完整的版本了,这种Optimizer,除了Adam以外,Adam可能是今天最常
用的,但除了Adam以外,还有各式各样的变形,但其实各式各样的变形都不脱,就是要嘛不同的方法算
M,要嘛不同的方法算σ,要嘛不同的,Learning Rate Scheduling的方式