1、把大象关进冰箱的第三步 |
假如θ有两个变量θ1,θ2,从任意位置θ0处开始,计算偏微分,更新θ,如此不断更新很多次之后,就会找到loss最小的function。但这么做是不是有点简单粗暴呢,下面讲gradient descent三个小技巧。
Tip1:tuning your learning rate |
Tip2:Stochastic gradient descent---make the training faster |
Tip3:Feature scaling |
1、如下图左边所示,在一维二维的情况下,我们可以把loss和参数之间的关系可视化出来,但涉及到很多参数的情况下,就没办法可视化了,但是我们总能把更新参数和loss之间的关系可视化出来,就想图右边一样。
像上图一样,如果learning rate是固定一成不变的话,那么有可能出现蓝色的情况,learning rate很小,参数一直在蜗牛的速度更新,绿色的情况,learning rate中等,总是会在optimization处来回徘徊,黄色的情况,learning rate太大,loss之间飞出去了,这时候我们就意识到,如果learning rate能随情况更新就好了,我们需要adaptive learning rates。
一个经典的方法就是Adagrad。
我们希望在微分比较大的时候,用比较大的learning rate,微分比较小的时候,用比较小的learning rate,而上图adagrad的式子貌似有矛盾啊,这是为什么呢。一个直观的解释就是adagrad强调的是反差的效果。
2、Stochastic gradient descent
3、feature scaling
从下图可以很明显的看出,在左侧未feature scaling时,在w1和w2做同样的变化时,w2对y的影响比w1对y的影响大得多,而在右侧feature scaling之后,w1和w2对y的影响基本处在同一水平了。
那feature scaling要怎么做呢?如下图,是一种常见做法。