白话机器学习-最优化方法-牛顿法


简介

牛顿法,英文名称BFGS,是求解非线性优化问题的最有效的方法之一。

特点

  • 收敛速度快;

方式

  • 牛顿法是迭代算法,每一步需要求解目标函数的海塞矩阵的逆矩阵,计算比较复杂(后续会讲解拟牛顿法,拟牛顿法通过正定矩阵近似海塞矩阵的逆矩阵或海塞矩阵,简化了这个过程。

分析

考虑无约束最优化问题

minxRf(x)

其中x为目标函数的极小点。
假设f(x)具有二阶连续偏导数,若第k次迭代值为x(k),则可将f(x)在x(k)附近进行二阶泰勒展开:
f(x)=f(xk)+gTk(xxk)+1/2(xxk)TH(xk)(xxk)

- gk=g(xk)=(f(xk))是f(x)的梯度向量在x(k)的值。
- H(xk)是f(x)的海塞矩阵 [f2xiyj]nxnx(k)的值。

这里详解下泰勒展开式的里面的海塞矩阵,暂时讲解下二元函数的泰勒展开式
白话机器学习-最优化方法-牛顿法

接着我们继续进行,函数f(x)有极值的必要条件是在极值点处的一阶导数为0,即梯度向量为0。特别是当H(xk)是正定矩阵的时候,函数f(x)的极值为极小值,所以:

(f(x))=0

对f(x)求导,则

(f(x)=f(xk)+gTk(xxk)+1/2(xxk)TH(xk(xxk)))

=gk+H(xk)(xxk)


gk+H(xk)(xk+1xk)=0

xk+1xk=H(xk)1gk

或者
xk+1=xk+pk

其中
H(xk)pk=gk

到此公式推导完毕

算法

输入:目标函数f(x),梯度g(x)=f(x),海塞矩阵H(x),精度要求ε;
输出:f(x)的极小点x^*;
1. 取初始值点x(0),k=0;
2. 计算gk=g(x(k))
3. 若||gk||<ε,则停止计算,得到解x=x(k)
4. 计算Hk=H(x(k)),并且求解pk

H(xk)pk=gk

5. 进行迭代,xk+1=xk+pk,请求k++,转到第2步;

相关文章: