来源 |机器学习算法与Python实战
1.罗列常用的最优化办法
梯度降落法
牛顿法,
拟牛顿法
坐标降落法
2.梯度降落法的关键点
梯度降落法沿着梯度的反方向进行搜索,应用了函数的一阶导数信息。梯度降落法的迭代公式为:
依据函数的一阶泰勒展开,在负梯度方向,函数值是降落的。只需学习率设置的足够小,并且没有抵达梯度为0的点处,每次迭代时函数值一定会降落。需求设置学习率为一个十分小的正数的缘由是要保证迭代之后的 xk+1位于迭代之前的值 xk的邻域内,从而能够疏忽泰勒展开中的高次项,保证迭代时函数值降落。
梯度降落法只能保证找到梯度为0的点,不能保证找到极小值点。迭代终止的断定根据是梯度值充沛接近于0,或者到达最大指定迭代次数。
梯度降落法在机器学习中应用普遍,特别是在深度学习中。AdaDelta,AdaGrad,Adam,NAG等改良的梯度降落法都是用梯度结构更新项,区别在于更新项的结构方式不同。对梯度降落法更全面的引见能够阅读SIGAI之前的公众号文章“了解梯度降落法”。
3.牛顿法的关键点
牛顿法应用了函数的一阶和二阶导数信息,直接寻觅梯度为0的点。牛顿法的迭代公式为:
其中H为Hessian矩阵,g为梯度向量。牛顿法不能保证每次迭代时函数值降落,也不能保证收敛到极小值点。在完成时,也需求设置学习率,缘由和梯度降落法相同,是为了可以疏忽泰勒展开中的高阶项。学习率的设置通常采用直线搜索(line search)技术。
在完成时,普通不直接求Hessian矩阵的逆矩阵,而是求解下面的线性方程组:
其解d称为牛顿方向。迭代终止的断定根据是梯度值充沛接近于0,或者到达最大指定迭代次数。
牛顿法比梯度降落法有更快的收敛速度,但每次迭代时需求计算Hessian矩阵,并求解一个线性方程组,运算量大。另外,假如Hessian矩阵不可逆,则这种办法失效。
4.拉格朗日乘数法