摘要
SGD(Stochastic Gradient Descent, 梯度下降法)是求解最优解问题时常用的优化器, 其核心思想是, 每次迭代时沿着负梯度(梯度的反方向)前进, 经过多次迭代后到达一个较小函数值的参数点处. 为什么是沿着负梯度方向而不是其他的方向进行前进呢? 本文从梯度的数学定义出发来回答这个问题. 本文组织如下:
- 阐述方向导数的定义;
- 阐述方向导数与梯度的关系;
- 为何负梯度是函数值减小的最快方向;
- 总结.
校对: @王铁柱
方向导数
熟悉微积分的同学都知道, 导数是描述函数随自变量变化快慢的数学定义. 如果此时的函数为多元函数, 该如何描述函数的变化快慢? 设
设点
存在, 我们便称其为函数
方向导数与梯度的关系
方向导数和我们关心的梯度有什么关系呢? 我们先来回顾梯度的定义: 函数
梯度本身是一个向量, 其每个分量分别描述了函数
其中,
其中,
为何负梯度是函数值减小的最快方向
由(5)我们可以看出, 函数在点
由向量內积公式, 可得
由Schwarz公式和(7), 可得
所以, 函数在点
而当方向导数正好与梯度反向时, 即
综上, 我们可以得出负梯度是函数值减小的最快方向, 其大小为(10)所示.
值得注意的是, 那些与梯度(负梯度)垂直的方向导数, 即
总结
SGD使用负梯度作为目标函数更新时的方向, 可在某一点处达到函数值下降最快的目的. 使用负梯度作为优化信息的算法有一个大类, 但基本的思想都是围绕着更加合理地利用负梯度信息进行展开.
引用
[1] "方向导数, 梯度". 复旦大学, 2019. http://math.fudan.edu.cn/gdsx/KEJIAN/%E6%96%B9%E5%90%91%E5%AF%BC%E6%95%B0%E5%92%8C%E6%A2%AF%E5%BA%A6.pdf
[2] Wikipedia contributors, "Gradient,"Wikipedia, The Free Encyclopedia,https://en.wikipedia.org/w/index.php?title=Gradient&oldid=884452517(accessed February 25, 2019)