Gradien Descent
Gradient Descent 1
计算gradient 得到红色箭头
蓝色的箭头是movement
反复下去
要小心的调 learning rate
蓝色 太小,太慢
绿色 没有办法走到最低的地方
黄色 一瞬间飞出去
可视化后所对应的损失函数与下右图所对应
Adaptive Learning Rates
Adagrad
在没有增加任何额外运算的前提下,想办法去估一下二次微分的值
每一个参数都分开来考虑
不同的参数,其learning rate都不一样
eg.
s
q
r
t
(
t
+
1
)
消
去
了
sqrt (t+1) 消去了
sqrt(t+1)消去了
整体而言,越来越慢,其实后面很慢
会不会有点矛盾
g^t ,越大分母那儿越小
直观的解释:造成反差
更合理的解释:
上图只考虑一个参数的时候才成立 ,2a是对y作二次微分的来的,出现在最好的步伐的分母的地方
同时考虑几个参数时
与一次微分成正比,二次微分成反比
要比较a的微分➗二次微分 和 c的微分➗二次微分
多采几个样,就可以估计,在比较平的峡谷里二次微分比较小,在比较陡的峡谷里,二次微分比较大
Stochastic Gradient Desecnt
让训练更快一点
Adagrad每次计算所有的gradient
Stochastic 里每次只考虑一个x(example)
Fearture Scaling
不同的feature 让他们的scale一样,即分布差不多
左图中
w1对y的影响较小,稍微改变一下w1,对loss影响不是很大,比较平滑,w1为轴来看
w2对y的影响较大,改变w2,对loss的影响就是比较shark的,w2为轴来看
同一组learning rate 比较难搞定,不断更新。按照梯度走开始时,不会指着圆心
右图中
scale比较接近,update参数比较容易,梯度一直向着圆心,比较有效率
怎么做feature scaling?
其中一种方法
Gradient Descent Theory
update参数后,loss不一定会下降
画一个很小的圆圈,总能在邻域内找到使值最小的点时的参数
taylor展式
考虑一个variable时的例子
橙色线为sin x
多个参数时
同理,证明总能在邻域内找到最小的值,知道此时的参数值
其实就是gradient descent
红色圈圈无穷小时,才能保证这件事
Limitation of Gradient Descent
会卡在local minima(局部最小)的地方
saddle point(极点)的地方也可能卡住