最速下降法作为求解无约束最优化问题的入门算法,其思想是很多其他优化算法的基础。之前我一直对梯度下降法和最速下降法之间的关系和差异理解不清楚,只知道他们都是一阶方法,都沿负梯度方向迭代降低目标函数值,查了很多资料和网上的教程,发现讲得较为繁琐。经过系统学习和思考后我认为,最速下降法是梯度下降法的一种,该算法与一般梯度下降的区别在于,每次迭代过程中都要求目标函数值下降到搜索方向下的最小值。
最速下降法算法步骤
为何最速下降法相邻两次迭代的搜索方向是正交的
故最速下降法相邻两次搜索方向正交。
所以最速下降法的搜索方向是“迂回下降”的,随着梯度值的降低,收敛速度越来越慢,当目标函数值特别接近局部最优解时,搜索可能会每次动一点点,然后不断的迂回。。。想象那种近在眼前远在天边的感觉QAQ。
对机器学习和深度学习中学习率以及算法收敛速度的一些理解
不难看出,最速下降法关键的步骤就是一维搜索求解步长
,也就是机器学习中所称的学习率,其余步骤同机器学习中的梯度下降系列算法一致。这也使我对机器学习和深度学习中,常用的随机梯度下降(SGD),小批量梯度下降(BGD)等算法中学习率(步长)为何是一个超参(Hyperparameter),需要实验调整来确定有一定的猜想:大概是因为对于神经网络计算而言,损失函数极其复杂,很难使用一维搜索求解出这个最合适的学习率(其实这个学习率也不一定是最合适的,后面会讲)。给定(凭经验,炼丹。。。)一个很小的学习率,尽管它在这一次迭代中并不一定使得目标函数值下降最快,但总归是下降的,方便实用。另一方面,梯度下降是盲目的,某次迭代中,搜索方向仅仅考虑了起始点的梯度,这个梯度却不一定是起始点和终点之间其他点的梯度方向,因此从整体上考虑负梯度方向不一定是下降最快的方向,那么基于这个搜索方向确定的最优步长也未必使得算法整体收敛得最快。从这个角度来看,“最速下降法”还真是名不副实。
所以总的来说,想算法收敛速度快,最速下降法不是一个‘“最速”的方法,由一维精确搜索确定的步长也不见得能从整体上最使目标函数降得最快。想要得到收敛速度更快的方法,一般问题而言,就要考虑二阶方法(Newtown法及其衍生算法等),当然对于神经网络而言,计算Hessian矩阵的代价不敢想象。。。因此才使用了对一般梯度下降算法(一阶方法)的改进,如动量法(Momentum),Adam算法等。