Review
在解决问题时一般分为三个步骤:
步骤一:选择一个function set
步骤二:找到loss function
步骤三:最小化loss function找到function set中最优的function。
步骤三中常用的方法就是梯度下降(Gradient Descent)。
θ∗=argminθL(θ)
L: loss function
θ: parameters
目标是最小化loss function,并找到使loss function 最小的θ,其中θ是function set的参数组成的vector。
假设θ有两个参数{θ1,θ2},梯度下降的做法如下:
- 随机从loss function上任意一点开始,随机的使θ=θ0,其中θ0=[θ10θ20]
- 更新θ
- θ1=[θ11θ21]=[θ10θ20]−η[∂θ1∂L(θ10)∂θ2∂L(θ20)]
- θ2=[θ12θ22]=[θ11θ21]−η[∂θ1∂L(θ11)∂θ2∂L(θ21)]
- 将这个动作一直重复下去…
可以简写为:θk+1=θk−η∇L(θk)
∇L(θ)=[∂θ1∂L(θ1)∂θ2∂L(θ2)]
直观理解就是对每个参数在当前位置上求偏微分,这个偏微分就是当前点在这个参数方向上的梯度,向这个梯度的反方向走就可以走到一个更低的点,这个更低的点代表着loss function的值更小。如下图,横轴是θ1纵轴是θ2,初始点θ0是随机选择的。
Learning Rate:η
learning rate可以理解为步长,就是在梯度反方向上走多长,learning rate是监督学习中重要的超参,它决定了能否走到一个足够优的点,也决定了多久能走到一个足够优的点,就是他决定了目标函数能否收敛到局部最小值也决定了收敛速度,所以learning rate的选择十分重要。
蓝色的线表示一个比较小的learning rate,这就导致目标函数收敛速度非常慢;绿线和黄线表示了一个比较大的learning rate,这就导致目标函数无法收敛甚至会发散。红色的线是比较合适的learning rate。
Adaptive Learning Rates
假设在一个不规则的曲面上进行梯度下降,在每个方向上的梯度都是不断变化的,这种情况下,使用统一的learning rate会导致在梯度较小的时候收敛太慢,在梯度较大的时候learning rate又相对过大,会出现无法收敛甚至发散的情况。
比较常用且简单的方法:每隔几步就将学习率降低一些。
- 一开始离目的地很远,所以我们使用较大的学习率
- 经过几次下降后,我们离目的地很近,所以我们降低了学习率
- 例如:t1decay:ηt=t+1η
Learning rate cannot be one-size-fits-all,所以对于不同的参数要有不同的learning rates
Adagrad
adagrad也是一种梯度下降方法,在普通的梯度下降的基础上对于learning rates:η除以之前所有一阶微分的RME。
Stochastic Gradient Descent
随机梯度下降法不同于批量梯度下降,随机梯度下降是每次迭代使用一个样本来对参数进行更新。使得训练速度加快。
Gradient Descent:对于全部的样本进行求和
L=∑n(y^n−(b+∑wixin))
θi=θi−1−η∇L(θi−1)
Stochastic Gradient Descent:随机选择一个样本xn
Ln=(y^n−(b+∑wixin))2
θi=θi−1−η∇L(θi−1)
所以SGD的速度更快。
Feature Scaling
对于不同的特征,很可能比例不同,例如一个模型y=b+w1x1+w2x2,有两个特征x1和x2,x1的范围是[-1,1],x2的范围[-100,100],这导致x1和x2对目标函数的不同,同时可能梯度下降的速度会减慢。