梯度下降原理

最小化损失函数L(θ)L(\theta), 得到参数θ\theta在损失最小情况下的对应值. 梯度下降法的迭代步骤如下:

选取初值θ0\theta_{0}, 步长α\alpha和算法的终止距离ε\varepsilon.

  • 确定当前参数下梯度函数的梯度, 对于第tt轮, 对应的参数为θt\theta_{t}, 此时的梯度为δL(θ)δθt\frac{\delta L(\theta)}{\delta \theta_{t}}

  • 用步长α\alpha乘以损失函数的梯度, 得到当前步的下降长度, 即αδL(θ)δθt\alpha\frac{\delta L(\theta)}{\delta \theta_{t}}

  • 判断当前下降步幅αδL(θ)δθt\alpha\frac{\delta L(\theta)}{\delta \theta_{t}}是否小于ε\varepsilon, 如果小于这个阈值, 停止迭代, θt\theta_{t}即为最终的结果

  • 更新θt\theta_{t}: θt+1=θtδL(θ)δθt\theta_{t+1}=\theta_{t}-\frac{\delta L(\theta)}{\delta \theta_{t}}

为什么梯度的负方向是局部下降最快的方向

需要结合泰勒展开说明.

在第tt轮迭代中, 将L(θt)L(\theta_{t})θt1\theta_{t-1}处进行一阶泰勒展开, 得到:

L(θt)=L(θt1+Δθ)L(θt1)+L(θt1)Δθ\begin{aligned} L\left(\theta_{t}\right) &=L\left(\theta_{t-1}+\Delta \theta\right) \\ & \approx L\left(\theta_{t-1}\right)+L^{\prime}\left(\theta_{t-1}\right) \Delta \theta \end{aligned}

我们的目的是使得损失函数逐渐缩小, 就要使得L(θt)<L(θt1)L(\theta_{t}) \lt L(\theta_{t-1}). 根据泰勒一阶展开式, 有:

L(θt1+Δθ)L(θt1)L(θt1)ΔθL\left(\theta_{t-1}+\Delta \theta\right)-L\left(\theta_{t-1}\right) \approx L^{\prime}\left(\theta_{t-1}\right) \Delta \theta

参数向量θ\theta中包含多个变量参数, 因此损失函数对参数的导数L(θt1)L^{\prime}\left(\theta_{t-1}\right)以及参数微小的变化量Δθ\Delta \theta也均为向量, 则L(θt1)ΔθL^{\prime}\left(\theta_{t-1}\right) \Delta \theta是两个向量的点积.

L(θt1)ΔθL^{\prime}\left(\theta_{t-1}\right) \Delta \theta作为损失函数迭代一步的变化量的近似, 我们想要下降的越快越好, 也就是要求这个近似量的值越小越好.

对于两个向量的点积, 其最大值就是两个向量的方向相同时, 点积值最大. L(θt1)L^{\prime}\left(\theta_{t-1}\right)正是损失函数在θt1\theta_{t-1}位置的梯度. 考虑此时Δθ\Delta \theta的取值, 其模长由步长α\alpha控制, 我们只需要考虑其方向. 前面说了两个向量同向时点积值最大, 反过来, 两个向量反向时点积值最小, 因此取Δθ=αL(θt1)\Delta \theta=-\alpha L^{\prime}\left(\theta_{t-1}\right)

这就是梯度负方向是局部下降最快方向的原因.

最后更新于

这有帮助吗?