最优化算法详解:梯度下降法、最优梯度法与共轭梯度法
最优化算法详解:梯度下降法、最优梯度法与共轭梯度法
梯度下降法、最优梯度法和共轭梯度法是机器学习和优化问题中常用的算法。本文将详细介绍这三种方法的基本原理、算法流程及其数学证明,帮助读者深入理解这些优化算法的核心思想。
1. 梯度下降法
函数在某一点的梯度是在该方向单位步长上升最快的向量。梯度下降法是利用待优化变量,沿着负梯度方向不断迭代寻找最优值。
梯度下降法算法流程:
梯度下降法证明
通过泰勒展开表达式证明沿着梯度下降最快。对函数在初值处进行一阶泰勒展开可以得到:
由于是在处泰勒展开,即在附近近似程度才较高,因此是微小向量,可以令:是步长,是单位向量,则有:
目的是找到新的x,使,即,令:
得到目的转化为:
是正标量忽略,得到:
由于向量v为单位向量,设为v与之间的夹角,由:
当且仅当v与方向相反时,取得最小值,由可知,此时在此方向下降最快,即在梯度反方向下降最快。
2. 最优梯度法
梯度法设置固定步长,可能出现的情况是在谷底左右来回波动难以收敛。最优梯度法根据梯度模长设置步长,在越接近最优点,步长越短。算法如下:
相比梯度下降法,最优梯度法的核心在于利用梯度计算步长,步长计算公式推导如下:
最优化方程可以写成如下形式:
将 在处进行二阶泰勒展开得到:
其中,A是f(x)的二阶偏导矩阵。用替换可以得到:
在极小值处有:
即可得到:
3. 共轭梯度法
共轭梯度法对最优梯度法进行了修正,搜索方向为共轭方向,将负梯度方向旋转了一个角度,每次往最优方向需要在负梯度方向进行修正。算法如下:
共轭梯度法证明
对于二次型优化问题:
下一次的搜索方向需要与上一次搜索方向共轭,即:
计算梯度:
两梯度相减可得:
由参数更新公式:
代入(3-4)可得:
将方向更新公式:
及代入(3-2)可得:
因为与正交,乘积为0。化简可得:
将代入得到:
可以近似成:
表格中步长计算采用了一维搜索法,当然也可以固定步长或者采用最优梯度法中的步长计算方法进行替换。
梯度下降法在不同的迭代轮数中会选择非常近似的方向,说明沿着这个方向的误差没有一次更新完成,优化过程呈锯齿状。共轭梯度法的思想是,选择一个优化方向后,本次选择的步长能够将这个方向的误差更新完,在以后的优化更新过程中不再需要朝这个方向更新了。由于每次将一个方向优化到了极小,后面的优化过程将不再影响之前优化方向上的极小值,所以理论上对N维问题求极小只用对N个方向都求出极小就行了。
共轭梯度法计算流程如下图: