白话机器学习-最优化方法-牛顿法
简介
牛顿法,英文名称BFGS,是求解非线性优化问题的最有效的方法之一。
特点
- 收敛速度快;
方式
- 牛顿法是迭代算法,每一步需要求解目标函数的海塞矩阵的逆矩阵,计算比较复杂(后续会讲解拟牛顿法,拟牛顿法通过正定矩阵近似海塞矩阵的逆矩阵或海塞矩阵,简化了这个过程。
分析
考虑无约束最优化问题
minx∈Rf(x)
其中x∗ 为目标函数的极小点。
假设f(x)具有二阶连续偏导数,若第k次迭代值为x(k) ,则可将f(x)在x(k) 附近进行二阶泰勒展开:f(x)=f(xk)+gTk(x−xk)+1/2(x−xk)TH(xk)(x−xk)
-gk=g(xk)=∇(f(xk)) 是f(x)的梯度向量在x(k) 的值。
-H(xk) 是f(x)的海塞矩阵[∂f2∂xi∂yj]nxn 在x(k) 的值。
这里详解下泰勒展开式的里面的海塞矩阵,暂时讲解下二元函数的泰勒展开式
接着我们继续进行,函数f(x)有极值的必要条件是在极值点处的一阶导数为0,即梯度向量为0。特别是当
H(xk) 是正定矩阵的时候,函数f(x)的极值为极小值,所以:∇(f(x))=0 对f(x)求导,则
∇(f(x)=f(xk)+gTk(x−xk)+1/2(x−xk)TH(xk(x−xk))) =gk+H(xk)(x−xk)
则gk+H(xk)(xk+1−xk)=0 xk+1−xk=−H(xk)−1gk
或者xk+1=xk+pk
其中H(xk)pk=−gk
到此公式推导完毕
算法
输入:目标函数f(x),梯度
输出:f(x)的极小点x^*;
1. 取初始值点
2. 计算
3. 若
4. 计算
5. 进行迭代,