知识库 › 定位仓库学习 › 核心算法 › 最小二乘问题 › 梯度下降法
在工程实践中,我们通常还会使用梯度下降法进行最优值的估计,特别是在神经网络领域。
牛顿法基于一阶和二阶导数进行下降,每一步准确且大胆,二阶导的曲率信息向下降过程提供了重要的方向信息,但是海森矩阵的计算并不简单,会消耗大量算力和时间,在需要进行快速迭代的实时场景中不一定总是好用。于是我们删掉海森矩阵提供的曲率信息,单纯使用梯度信息进行下降的指导。
我们令每次下降的距离为梯度的若干倍数,下降方向为梯度反方向,就能够在任意点开始向着最低点下降。
迭代公式: $x_{n+1} = x_n - \gamma \nabla f(x_n)$
其中 $\gamma$为人工设置的比例参数,每次步进距离就是若干倍的反向梯度。
这个下降耗时短,每次只需要对原函数进行一次求导操作即可,问题是每次下降总是沿着梯度反方向,有时会在“谷地”区域出现左右横跳的锯齿状轨迹情况:
综合来说,对于需要高速迭代且二阶不可导的多元函数来说,一般采用梯度下降法,尤其是对于神经网络之类代价函数高度非凸的情况。

