李宏毅机器学习04:梯度下降Gradient Descent
文章目录
李宏毅机器学习04:梯度下降Gradient Descent一、梯度下降方法二、梯度下降的改进方法Tip 1: Tuning your learning rates 调整学习率1.学习率大小对梯度下降的影响2.Adaptive Learning Rates 自适应学习率3.Adagrad算法(1)Adagrad 是什么(2)Adagrad 举例(3)Adagrad 理解Ⅰ Intuitive Reason 直观原因Ⅱ Mathematical Reason 数学原因Tip 2: Stochastic Gradient Descent 随机梯度下降Tip 3: Feature Scaling 特征缩放1.特征缩放Feature Scaling
是什么(what)?2.特征缩放Feature Scaling
为什么(why)?3.特征缩放Feature Scaling
怎么做(how)?三、Gradient Descent Theory梯度下降的数学理论基本原理1:泰勒级数基本原理2:梯度矢量点乘四、梯度下降的限制一、梯度下降方法
Review: 李宏毅机器学习02:回归Regression
在回归问题的第三步中,需要解决下面的最优化问题,即寻找一组参数 θ\thetaθ,使损失函数Loss Function
尽可能的小。
θ∗=arg minθL(θ)\theta^*=\argmin_\theta L(\theta)θ∗=θargminL(θ)
LLL : 损失函数loss function
θ\thetaθ : 参数parameters
梯度下降方法如下:
假设θ有两个变量 { θ1,θ2\theta_1,\theta_2θ1,θ2 },随机选取初值θ0=[θ10θ20]\theta^0=\begin{bmatrix} \theta_1^0 \\ \theta_2^0 \end{bmatrix}θ0=[θ10θ20]
损失函数loss function
的梯度 ∇L(θ)=[∂L(θ1)∂θ1∂L(θ2)∂θ2]\nabla L(\theta)=\Large\begin{bmatrix} \frac{\partial L(\theta_1)}{\partial \theta_1} \\ \frac{\partial L(\theta_2)}{\partial \theta_2} \end{bmatrix}∇L(θ)=⎣⎢⎡∂θ1∂L(θ1)∂θ2∂L(θ2)⎦⎥⎤
不断地更新参数:
[θ11θ21]=[θ10θ20]−η[∂L(θ10)∂θ1∂L(θ20)∂θ2]\begin{bmatrix} \theta_1^1 \\ \theta_2^1 \end{bmatrix} = \begin{bmatrix} \theta_1^0 \\ \theta_2^0 \end{bmatrix} -\eta\Large\begin{bmatrix} \frac{\partial L(\theta_1^0)}{\partial \theta_1} \\ \frac{\partial L(\theta_2^0)}{\partial \theta_2} \end{bmatrix}[θ11θ21]=[θ10θ20]−η⎣⎢⎡∂θ1∂L(θ10)∂θ2∂L(θ20)⎦⎥⎤ ⟹\large\Longrightarrow⟹ θ1=θ0−η∇L(θ0)\theta^1=\theta^0-\eta\nabla L(\theta^0)θ1=θ0−η∇L(θ0)[θ12θ22]=[θ11θ21]−η[∂L(θ11)∂θ1∂L(θ21)∂θ2]\begin{bmatrix} \theta_1^2 \\ \theta_2^2 \end{bmatrix} = \begin{bmatrix} \theta_1^1 \\ \theta_2^1 \end{bmatrix} -\eta\Large\begin{bmatrix} \frac{\partial L(\theta_1^1)}{\partial \theta_1} \\ \frac{\partial L(\theta_2^1)}{\partial \theta_2} \end{bmatrix}[θ12θ22]=[θ11θ21]−η⎣⎢⎡∂θ1∂L(θ11)∂θ2∂L(θ21)⎦⎥⎤ ⟹\large\Longrightarrow⟹ θ2=θ1−η∇L(θ1)\theta^2=\theta^1-\eta\nabla L(\theta^1)θ2=θ1−η∇L(θ1)… …
二、梯度下降的改进方法
Tip 1: Tuning your learning rates 调整学习率
θi=θi−1−η∇L(θi−1)\theta^{i}=\theta^{i-1}-\eta\nabla L(\theta^{i-1})θi=θi−1−η∇L(θi−1)
η\etaη is called Learning Rate
1.学习率大小对梯度下降的影响
Learning Rate Ver large 步长非常大学习率步长太大,会出现损失函数Loss Function
不降反增的情况 Learning Rate Small 步长小
学习率步长小,会出现损失函数Loss Function
下降速度过慢的情况 Learning Rate Just make 步长刚刚好
学习率大小适当,可以使损失函数Loss Function
收敛于最小值 Learning Rate Large 步长大
学习率大可能出现损失函数Loss Function
无法到达最低点的情况
通常可以做出参数更新值和损失函数
Loss Function
的图像来判断学习率的情况
2.Adaptive Learning Rates 自适应学习率
Popular & Simple Idea: Reduce the learning rate by some factor every few epochs通俗、简单的思想:随着次数的增加,通过一些因子来减少学习率 At the beginning, we are far from the destination, so we use larger learning rate
通常刚开始,初始点会距离最低点比较远,所以使用大一点的学习率After several epochs, we are close to the destination, so we reduce the learning rate
经过一段时间后,参数比较靠近最低点了,此时减少学习率E.g. : 1/t decay ηt=ηt+1\eta^t=\Large\frac{\eta}{\sqrt{\smash[b]{t+1}}}ηt=t+1η
例如分数减缓1/t decay
:ηt\eta^tηt表示第t次的步长,随着次数的增加,步长不断减小。 Learning rate cannot be one-size-fits-all
学习率不能是一个值通用所有特征 Giving different parameters different learning rates
不同的参数需要不同的学习率
3.Adagrad算法
(1)Adagrad 是什么
Divide the learning rate of each parameter by the root mean square of
its previous derivatives 将每个参数的学习速率除以其先前导数的均方根
Vanilla Gradient descent
wt+1←wt−ηtgtw^{t+1} \gets w^t - \eta^t g^twt+1←wt−ηtgt
Adagrad
wt+1←wt−ηtσtgtw^{t+1} \gets w^t - \Large\frac{\eta^t}{\sigma^t} \normalsize g^twt+1←wt−σtηtgt
设ηt\eta^tηt, gtg^tgt 分别表示第ttt 次的学习率和偏微分。
ηt=ηt+1\eta^t=\Large\frac{\eta}{\sqrt{\smash[b]{t+1}}}ηt=t+1η ; gt=∂L(θt)∂wg^t=\Large\frac{\partial L(\theta^t)}{\partial w}gt=∂w∂L(θt)
w is one parameters
w是参数σt\sigma^tσt: root mean square of the previous derivatives of parameter w,(Parameter dependent)
σt\sigma^tσt是之前参数的所有微分的方均根,依赖于参数w
(2)Adagrad 举例
w1←w0−η0σ0g0w^1 \gets w^0 - \Large\frac{\eta^0}{\sigma^0}\normalsize g^0w1←w0−σ0η0g0 , 其中 σ0=(g0)2\sigma^0 =\sqrt{(g^0)^2}σ0=(g0)2
w2←w1−η1σ1g1w^2 \gets w^1 -\Large\frac{\eta^1}{\sigma^1}\normalsize g^1w2←w1−σ1η1g1 , 其中 σ1=12[(g0)2+(g1)2]\sigma^1 =\sqrt{\frac1 2[(g^0)^2+(g^1)^2]}σ1=21[(g0)2+(g1)2]
w3←w2−η2σ2g2w^3 \gets w^2 - \Large\frac{\eta^2}{\sigma^2}\normalsize g^2w3←w2−σ2η2g2 , 其中 σ2=13[(g0)2+(g1)2+(g2)2]\sigma^2 =\sqrt{\frac1 3[(g^0)^2+(g^1)^2+(g^2)^2]}σ2=31[(g0)2+(g1)2+(g2)2]
. … …
wt+1←wt−ηtσtgtw^{t+1} \gets w^t - \Large\frac{\eta^t}{\sigma^t}\normalsize g^twt+1←wt−σtηtgt , 其中 σt=1t+1∑i=0t(gi)2\sigma^t =\sqrt{\frac{1}{t+1}\displaystyle\sum_{i=0}^t(g^i)^2}σt=t+11i=0∑t(gi)2
(3)Adagrad 理解
对学习率和微分的方均根的比值进行化简
原式为:wt+1←wt−ηtσtgtw^{t+1} \gets w^t - \Large\frac{\eta^t}{\sigma^t}\normalsize g^twt+1←wt−σtηtgt
其中 : ηt=ηt+1\eta^t=\Large\frac{\eta}{\sqrt{\smash[b]{t+1}}}ηt=t+1η ; σt=1t+1∑i=0t(gi)2=1t+1∑i=0t(gi)2\sigma^t =\sqrt{\frac{1}{t+1}\displaystyle\sum_{i=0}^t(g^i)^2}=\frac{1}{\sqrt{t+1}}\sqrt{\displaystyle\sum_{i=0}^t(g^i)^2}σt=t+11i=0∑t(gi)2=t+11i=0∑t(gi)2
将ηt\eta^tηt ,σt\sigma^tσt 代入:ηtσt=ηt+11t+1∑i=0t(gi)2=η∑i=0t(gi)2\Large\frac{\eta^t}{\sigma^t}\normalsize=\Large\frac{\frac{\eta}{\sout{\sqrt{\smash[b]{t+1}}}}}{\frac{1}{\sout{\sqrt{t+1}}}\small\sqrt{\displaystyle\sum_{i=0}^t(g^i)^2}}\normalsize=\frac{\large\eta}{\small\sqrt{\displaystyle\sum_{i=0}^t(g^i)^2}}σtηt=t+11i=0∑t(gi)2t+1η=i=0∑t(gi)2η
得到:wt+1←wt−η∑i=0t(gi)2gtw^{t+1} \gets w^t - \Large\frac{\eta}{\small\sqrt{\displaystyle\sum_{i=0}^t(g^i)^2}}\normalsize g^twt+1←wt−i=0∑t(gi)2ηgt
Contradiction ? 出现矛盾
对比普通梯度下降公式和Adagrad算法
梯度对迭代值的大小影响相反:梯度值在分子上,梯度越大,迭代值的更新就越大;之前梯度的方均根在分母上,梯度越大,迭代值的更新越小。
Ⅰ Intuitive Reason 直观原因
当梯度值变化很大时,方均根可以造成反差的效果
Ⅱ Mathematical Reason 数学原因
以二次函数 y=ax2+bx+c(a>0)y=ax^2+bx+c (a>0)y=ax2+bx+c(a>0) 为例:
其最小值位于 x=−b2ax=-\large\frac{b}{2a}x=−2ab ,
任取一点 x0x_0x0 , x0x_0x0 到最值点的距离为:∣x0+b2a∣|x_0+\large\frac{b}{2a}\normalsize|∣x0+2ab∣ ,
Best step
=∣x0+b2a∣=∣2ax0+b∣2a=|x_0+\large\frac{b}{2a}\normalsize|=\large\frac{|2ax_0+b|}{2a}=∣x0+2ab∣=2a∣2ax0+b∣
分子是二次函数y=ax2+bx+c(a>0)y=ax^2+bx+c (a>0)y=ax2+bx+c(a>0)
在x0x_0x0点的一阶导数值
由此可以得出结论:
Larger 1st order derivative means far from the minima
较大的一阶导数意味着距离极小值较远
然而当考虑多个参数时,结论失效
例如下图,参数w1w_1w1 在a点一阶导数的绝对值小于参数 w2w_2w2在c点一阶导数的绝对值,而从图上来看c点反而距离极值点更近。
同时考虑∣2ax0+b∣2a\large\frac{|2ax_0+b|}{2a}2a∣2ax0+b∣ 的分母:
分母2a2a2a可以由二次函数y=ax2+bx+c(a>0)y=ax^2+bx+c (a>0)y=ax2+bx+c(a>0)
二阶导数得到
∂2y∂x2=2a\large\frac{\partial^2 y}{\partial x^2}=\normalsize2a∂x2∂2y=2a
The best step is ∣First−derivative∣Second−derivative\large\frac{|First-derivative|}{Second-derivative}Second−derivative∣First−derivative∣
因此最好的步长应该时一阶导数的绝对值与二阶导数的比值
对比公式:wt+1←wt−η∑i=0t(gi)2gtw^{t+1} \gets w^t - \Large\frac{\eta}{\small\sqrt{\displaystyle\sum_{i=0}^t(g^i)^2}}\normalsize g^twt+1←wt−i=0∑t(gi)2ηgt
gtg^tgt是一阶导数,二阶导数较难计算,使用∑i=0t(gi)2\sqrt{\displaystyle\sum_{i=0}^t(g^i)^2}i=0∑t(gi)2来估测
Tip 2: Stochastic Gradient Descent 随机梯度下降
Gradient Descent 普通梯度下降
Loss is the summation over all training examples
损失函数是所有训练样例的总和
损失函数loss function
:
L(w,b)=∑(yn^−(b+∑w1⋅xcpi))2L(w,b)=\sum\big(\hat{y^n}-(b+\sum w_1\cdot x_{cp}^i)\big)^2L(w,b)=∑(yn^−(b+∑w1⋅xcpi))2
损失函数loss function
梯度下降公式:
θi=θi−1−η∇L(θi−1)\theta^{i}=\theta^{i-1}-\eta\nabla L(\theta^{i-1})θi=θi−1−η∇L(θi−1)
Stochastic Gradient Descent 随机梯度下降
Loss for only one example
每次使用一个样例
损失函数loss function
:
L(w,b)=(yn^−(b+∑w1⋅xcpi))2L(w,b)=\big(\hat{y^n}-(b+\sum w_1\cdot x_{cp}^i)\big)^2L(w,b)=(yn^−(b+∑w1⋅xcpi))2
损失函数loss function
梯度下降公式(与普通梯度下降相同):
θi=θi−1−η∇L(θi−1)\theta^{i}=\theta^{i-1}-\eta\nabla L(\theta^{i-1})θi=θi−1−η∇L(θi−1)
随机梯度下降Stochastic Gradient Descent
优点:
计算速度更快——“天下武功,唯快不破”
Tip 3: Feature Scaling 特征缩放
1.特征缩放Feature Scaling
是什么(what)?
设函数: y=b+w1x1+w2x2y=b+w_1x_1+w_2x_2y=b+w1x1+w2x2
通过特征缩放Feature Scaling
后如下图所示
2.特征缩放Feature Scaling
为什么(why)?
Make different features have the same scaling
使不同的特征值有相同的比例
经过特征缩放后,便于进行梯度下降:
右边是两个参数scaling比较接近,右边的绿色图就比较接近圆形。
对于左边的情况,这种狭长的情形不用Adagrad算法比较难处理,两个方向上需要不同的学习率。而右边情形更新参数就会变得比较容易。左边的梯度下降并不是向着最低点方向走的,而是顺着等高线切线法线方向走的。但绿色就可以向着圆心(最低点)走,这样做参数更新也是比较有效率。
3.特征缩放Feature Scaling
怎么做(how)?
其中一种做法类似于概率统计学中正态分布的标准化:
具体方法如下:
一共有R组数据:{x1,x2,x3...xr...xR}\{x^1,x^2,x^3...x^r...x^R\}{x1,x2,x3...xr...xR}
对于第 rrr 个数据,其第 iii 维特征值xirx_i^rxir 可以通过:
xir←xir−miσix_i^r \gets \large\frac{x_i^r-m_i}{\sigma_i}xir←σixir−mi
其中mim_imi 是第 iii 维数值的均值,σi\sigma_iσi 是第 iii 维数据的标准差
通过特征缩放
Feature Scaling
,所有维度数据的均值为0,标准差为1
三、Gradient Descent Theory梯度下降的数学理论
梯度下降
Gradient Descent
可以看作在圆圈内不断寻找最小值点,并更新圆心的过程
基本原理1:泰勒级数
一阶泰勒展开:h(x)=∑k=0∞h(k)(x0)k!(x−x0)kh(x)=\displaystyle\sum_{k=0}^∞\frac{h^{(k)}(x_0)}{k!}(x-x_0)^kh(x)=k=0∑∞k!h(k)(x0)(x−x0)k
=h(x0)+h′(x0)(x−x0)+h′′(x0)2!(x−x0)2+...=h(x_0)+h'(x_0)(x-x_0)+\frac{h''(x_0)}{2!}(x-x_0)^2+...=h(x0)+h′(x0)(x−x0)+2!h′′(x0)(x−x0)2+...
当x→x0x \to x_0x→x0 时,有h(x)≈h(x0)+h′(x0)(x−x0)h(x)\approx h(x_0)+h'(x_0)(x-x_0)h(x)≈h(x0)+h′(x0)(x−x0)二阶泰勒展开:
h(x,y)=h(x0,y0)+∂h(x0,y0)∂x(x−x0)+∂h(x0,y0)∂y(y−y0)+...h(x,y)=h(x_0,y_0)+\frac{\partial h(x_0,y_0)}{\partial x}(x-x_0)+\frac{\partial h(x_0,y_0)}{\partial y}(y-y_0)+...h(x,y)=h(x0,y0)+∂x∂h(x0,y0)(x−x0)+∂y∂h(x0,y0)(y−y0)+...
由于‘…’中的项在x→x0,y→y0x \to x_0,y \to y_0x→x0,y→y0 时可以忽略,因此:
h(x,y)≈h(x0,y0)+∂h(x0,y0)∂x(x−x0)+∂h(x0,y0)∂y(y−y0)h(x,y)\approx h(x_0,y_0)+\frac{\partial h(x_0,y_0)}{\partial x}(x-x_0)+\frac{\partial h(x_0,y_0)}{\partial y}(y-y_0)h(x,y)≈h(x0,y0)+∂x∂h(x0,y0)(x−x0)+∂y∂h(x0,y0)(y−y0)
利用泰勒级数,对于有两个参数{θ1,θ2}\{\theta_1,\theta_2\}{θ1,θ2}的损失函数loss function
在点 (a,b)(a,b)(a,b) 处可以表示为如下形式:
L(θ)≈L(a,b)+∂L(a,b)∂θ1(θ1−a)+∂L(a,b)∂θ2(θ2−b)L(\theta)\approx L(a,b)+\frac{\partial L(a,b)}{\partial \theta_1}(\theta_1-a)+\frac{\partial L(a,b)}{\partial \theta_2}(\theta_2-b)L(θ)≈L(a,b)+∂θ1∂L(a,b)(θ1−a)+∂θ2∂L(a,b)(θ2−b)
基本原理2:梯度矢量点乘
L(θ)≈L(a,b)+∂L(a,b)∂θ1(θ1−a)+∂L(a,b)∂θ2(θ2−b)L(\theta)\approx L(a,b)+\frac{\partial L(a,b)}{\partial \theta_1}(\theta_1-a)+\frac{\partial L(a,b)}{\partial \theta_2}(\theta_2-b)L(θ)≈L(a,b)+∂θ1∂L(a,b)(θ1−a)+∂θ2∂L(a,b)(θ2−b)
令s=L(a,b)s=L(a,b)s=L(a,b)
u=∂L(a,b)∂θ1u=\frac{\partial L(a,b)}{\partial \theta_1}u=∂θ1∂L(a,b) , v=∂L(a,b)∂θ2v=\frac{\partial L(a,b)}{\partial \theta_2}v=∂θ2∂L(a,b)
则 L(θ)≈s+u(θ1−a)+v(θ2−b)L(\theta)\approx s+u(\theta_1-a)+v(\theta_2-b)L(θ)≈s+u(θ1−a)+v(θ2−b)
再令(θ1−a)→Δθ1,(θ2−b)→Δθ2(\theta_1-a)\to \Delta\theta_1 , (\theta_2-b)\to \Delta\theta_2(θ1−a)→Δθ1,(θ2−b)→Δθ2
有(Δθ1)2+(Δθ2)2⩽d2(\Delta\theta_1)^2+(\Delta\theta_2)^2\leqslant d^2(Δθ1)2+(Δθ2)2⩽d2
为了使L(θ)L(\theta)L(θ)最小,考虑Δθ1,Δθ2\Delta\theta_1,\Delta\theta_2Δθ1,Δθ2组成的(Δθ1,Δθ2)(\Delta\theta_1,\Delta\theta_2)(Δθ1,Δθ2)向量
L(θ)=s+(Δθ1,Δθ2)⋅(u,v)L(\theta)=s+(\Delta\theta_1,\Delta\theta_2)\cdot(u,v)L(θ)=s+(Δθ1,Δθ2)⋅(u,v)
显然,当(Δθ1,Δθ2)(\Delta\theta_1,\Delta\theta_2)(Δθ1,Δθ2)与(u,v)(u,v)(u,v)反向时,L(θ)L(\theta)L(θ)最小。
因此,令 [Δθ1Δθ2]=η[uv]\begin{bmatrix} \Delta\theta_1 \\ \Delta\theta_2 \end{bmatrix}=\eta\begin{bmatrix} u \\ v \end{bmatrix}[Δθ1Δθ2]=η[uv] ,
即 [θ1θ2]=[ab]−η[uv]=[ab]−η[∂L(a,b)∂θ1∂L(a,b)∂θ2]\begin{bmatrix} \theta_1 \\ \theta_2 \end{bmatrix}=\begin{bmatrix} a \\ b \end{bmatrix}-\eta\begin{bmatrix} u \\ v \end{bmatrix}=\begin{bmatrix} a \\ b \end{bmatrix}-\eta\begin{bmatrix} \frac{\partial L(a,b)}{\partial \theta_1} \\ \frac{\partial L(a,b)}{\partial \theta_2} \end{bmatrix}[θ1θ2]=[ab]−η[uv]=[ab]−η[∂θ1∂L(a,b)∂θ2∂L(a,b)]
四、梯度下降的限制
(1)Very slow at the plateau 在稳定的‘高原’时下降缓慢(2)Stuck at saddle point 停在马鞍点(3)Stuck at local minima 停在局部最小值点【知识索引】【李宏毅机器学习】