梯度下降的理解

梯度下降的理解

损失函数 L ( W ⃗ ) L(\vec{W}) L(W )其实就是把参数向量 θ ⃗ \vec{\theta} θ 当作自变量,每一个样本的预测值 H i ( W ⃗ ) H_i(\vec{W}) Hi(W )和真实值 Y i Y_i Yi之间差作为因变量。求出关于参数 θ ⃗ \vec{\theta} θ 取什么值时,使得损失函数最小化。这些参数构造就得到了模型。
W ⃗ = [ θ 1 , θ 2 , . . . , θ j , . . . , θ p ] \vec{W}=[\theta^1,\theta^2,...,\theta^j,...,\theta^p] W =[θ1,θ2,...,θj,...,θp]
根据函数导数的定义, L ( W ⃗ ) L(\vec{W}) L(W )在对每个参数求偏导为0时,即 ∂ L ( θ n 1 ) ∂ θ n 1 = 0 , ∂ L ( θ n 2 ) ∂ θ n 2 = 0 , . . . , ∂ L ( θ n p ) ∂ θ n p = 0 \frac{\partial L(\theta^1_n)}{\partial \theta^1_n}=0,\frac{\partial L(\theta^2_n)}{\partial \theta^2_n}=0,...,\frac{\partial L(\theta^p_n)}{\partial \theta^p_n}=0 θn1L(θn1)=0,θn2L(θn2)=0,...,θnpL(θnp)=0可以得到最小值。

假设损失函数为
L ( W ⃗ ) = ( H 1 ( W ⃗ ) − Y 1 ) 2 + ( H 2 ( W ⃗ ) − Y 2 ) 2 + . . . + ( H m ( W ⃗ ) − Y m ) 2 L(\vec{W})=(H_1(\vec{W})-Y_1)^{2} +(H2(\vec{W})-Y_2)^2+...+(Hm(\vec{W})-Y_m)^2 L(W )=(H1(W )Y1)2+(H2(W )Y2)2+...+(Hm(W )Ym)2

梯度下降一般是设置一个初始的参数向量 W 0 ⃗ \vec{W_0} W0
W 0 ⃗ = [ θ 0 1 , θ 0 2 , . . . , θ 0 j , . . . , θ 0 p ] \vec{W_0}=[\theta^1_0,\theta^2_0,...,\theta^j_0,...,\theta^p_0] W0 =[θ01,θ02,...,θ0j,...,θ0p]

参数 W 0 ⃗ \vec{W_0} W0 一步步更新,使得最终的每一个参数 ∂ L ( θ n j ) ∂ θ n j = 0 \frac{\partial L(\theta^j_n)}{\partial \theta^j_n}=0 θnjL(θnj)=0

权重参数 θ j \theta^j θj更新的式子
θ 1 j = θ 0 j − α ∂ L ( θ 0 j ) ∂ θ 0 j \theta^j_1=\theta^j_0-\alpha \frac{\partial L(\theta^j_0)}{\partial \theta^j_0} θ1j=θ0jαθ0jL(θ0j)
⋯ \cdots
θ k j = θ k − 1 j − α ∂ L ( θ k − 1 j ) ∂ θ k − 1 j \theta^j_k=\theta^j_{k-1}-\alpha \frac{\partial L(\theta^j_{k-1})}{\partial \theta^j_{k-1}} θkj=θk1jαθk1jL(θk1j) ∗ ∗ E q 1 ∗ ∗ **Eq1** Eq1
⋯ \cdots
θ n j = θ n − 1 j − α ∂ L ( θ n − 1 j ) ∂ θ n − 1 j \theta^j_n=\theta^j_{n-1}-\alpha \frac{\partial L(\theta^j_{n-1})}{\partial \theta^j_{n-1}} θnj=θn1jαθn1jL(θn1j)

那为什么这么更新呢
可以理解为,要使得 L ( W ⃗ ) L(\vec{W}) L(W )达到极小值,那么每一个参数 ∂ L ( θ k j ) ∂ θ k j \frac{\partial L(\theta^j_k)}{\partial \theta^j_k} θkjL(θkj)都是在不断的逼近到0,即 ∂ L ( θ k j ) ∂ θ k j ⟶ 0 \frac{\partial L(\theta^j_k)}{\partial \theta^j_k}\longrightarrow 0 θkjL(θkj)0

L ( W ⃗ ) L(\vec{W}) L(W )在对参数 θ k j \theta^j_k θkj求偏导为0时等价于 θ k j \theta^j_k θkj对步长 α \alpha α的变化率为0。即 θ k j \theta^j_k θkj相对于步长 α \alpha α的变化不再变化时。
可以根据极限的定义来看这一步
∂ L ( θ k j ) ∂ θ k j = L ( θ k j ) − L ( θ k + 1 j ) θ k j − θ k + 1 j = θ k j − θ k + 1 j α     E q 2 \frac{\partial L(\theta^j_k)}{\partial \theta^j_k}=\frac{L(\theta^j_k)-L(\theta^j_{k+1})}{\theta^j_k-\theta^j_{k+1}}=\frac{\theta^j_k-\theta^j_{k+1}}{\alpha} \ \ \ Eq2 θkjL(θkj)=θkjθk+1jL(θkj)L(θk+1j)=αθkjθk+1j   Eq2

α \alpha α就是步长,学习率learning rate。由Eq2可知, α \alpha α L ( θ k j ) − L ( θ k + 1 j ) L(\theta^j_k)-L(\theta^j_{k+1}) L(θkj)L(θk+1j)同号, α \alpha α取正数,决定了下一步更新的函数值会下降,此时参数会沿着极小值不断更新。(参考下图理解,把x轴换成 θ \theta θ轴思考)
在这里插入图片描述
总体来说 θ \theta θ从两边向内收,分为两种情况:

  1. 斜率为负时, θ \theta θ往右更新,即 θ k j − θ k + 1 j < 0 \theta^j_k-\theta^j_{k+1}<0 θkjθk+1j<0 L ( θ k j ) − L ( θ k + 1 j ) > 0 L(\theta^j_k)-L(\theta^j_{k+1})>0 L(θkj)L(θk+1j)>0
  2. 斜率为正时, θ \theta θ往左更新,即 θ k j − θ k + 1 j > 0 \theta^j_k-\theta^j_{k+1}>0 θkjθk+1j>0 L ( θ k j ) − L ( θ k + 1 j ) > 0 L(\theta^j_k)-L(\theta^j_{k+1})>0 L(θkj)L(θk+1j)>0
    故Eq1成立。
    α < 0 \alpha<0 α<0时, L ( θ k j ) − L ( θ k + 1 j ) < 0 L(\theta^j_k)-L(\theta^j_{k+1})<0 L(θkj)L(θk+1j)<0。函数值会增大,参数会往函数极大值的方向更新, θ \theta θ整体往两边跑(此时变成梯度上升🤣)。
  • 28
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值