700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【李宏毅机器学习】04:梯度下降Gradient Descent

【李宏毅机器学习】04:梯度下降Gradient Descent

时间:2019-12-20 05:47:07

相关推荐

【李宏毅机器学习】04:梯度下降Gradient Descent

李宏毅机器学习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)θ∗=θargmin​L(θ)

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ηt​gt

设η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η0​g0 , 其中 σ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η1​g1 , 其中 σ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η2​g2 , 其中 σ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ηt​gt , 其中 σt=1t+1∑i=0t(gi)2\sigma^t =\sqrt{\frac{1}{t+1}\displaystyle\sum_{i=0}^t(g^i)^2}σt=t+11​i=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ηt​gt

其中 : η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+11​i=0∑t​(gi)2​=t+1​1​i=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+1​​1​i=0∑t​(gi)2​t+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+w1​x1​+w2​x2​

通过特征缩放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​←σi​xir​−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 停在局部最小值点

【知识索引】【李宏毅机器学习】

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。