一. 梯度下降法
一阶最优化算法,梯度其实是有方向的。若找到一个函数的局部极小值,必须向函数上当前点对应梯度的反方向的规定步长距离点进行迭代搜索;若向梯度正方向搜索,会接近函数的局部极大值,称为梯度上升法。
优点:
简单易行
缺点:
靠近极小值时速度减慢。
二. 牛顿法,拟牛顿法,L-BGFS
牛顿法是使用函数f(x)的泰勒级数的前面几项来寻找 f(x)=0 的根。
基本思想是:在现有极小点估计值的附件对f(x)做二阶泰勒展开,进而找到极小点的下一个估计值。
例子1. 求函数为0的根
选择接近函数f(x)零点的 x0 ,用泰勒一阶展开表示:
f(x):=f(x0)+f′(x0)(x−x0)=0
会发现得到 x1=x0−f(x0)/f′(x0) 更接近方程 f(x)=0 的解,如此迭代,将越来越逼近真实的值。
例子2. 求解最优化问题
牛顿法可用于求解非线性优化问题,假设任务优化一个目标函数,求f的极大极小问题,可转为求解函数的导数f`(x)=0问题, 这样就可以把优化问题视为求解方程根(f’=0).
由于求最值,由极值必要条件可知,f’(x)=0, 利用产生序列 xk 逼近f(x)的极小点。
为了求解f’=0 ,把函数f(x)泰勒展开到2阶形式:
f(x):=f(x0)+f′(x0)(x−x0)+1/2f′′(x0)(x−x0)2
f′(x)=f′(