1.牛顿法
牛顿法可以用来解方程或者解决最优化问题。二者的本质是一样的。
假设我们要求解如下最优化问题:
minx∈Rnf(x)\min_{x\in R^n } f(x)x∈Rnminf(x)
注意x∈Rnx\in R^nx∈Rn,直接讨论多维的情形。
为了便于理解,假设f(x)f(x)f(x)是二元函数,则其在x(0)=(x1(0),x2(0))Tx^{(0)} = (x_1^{(0)},x_2^{(0)})^Tx(0)=(x1(0),x2(0))T处的泰勒展开为

其中Δx1=x1−x1(0)\Delta x_1=x_1-x_1^{(0)}Δx1=x1−x1(0),Δx2=x2−x2(0)\Delta x_2=x_2-x_2^{(0)}Δx2=x2−x2(0).
如果写成矩阵形式:

同理,对于多维的情况,如果我们令
H(x)=[∂2f∂xi∂xj]n×nH(x)=[\frac{\partial^2f}{\partial x_i \partial x_j}]_{n\times n}H(x)=[∂xi∂xj∂2f]n×n
则假设f(x)f(x)f(x)具有二阶连续偏导数,其在x(k)x^{(k)}x(k)处的二阶泰勒展开可表示为
f(x)=f(x(k))+gkT(x−x(k))+12(x−x(k))TH(x(k))(x−x(k))f(x)=f(x^{(k)})+g_k^T(x-x^{(k)})+\frac{1}{2}(x-x^{(k)})^TH(x^{(k)})(x-x^{(k)})f(x)=f(x(k))+gkT(x−x(k))+21(x−x(k))TH(x(k))(x−x(k))
其中H(x(k))H(x^{(k)})H(x(k))称作Hesse矩阵,gkT=(∂f∂x1,…,∂f∂xn)∣x(k)g_k^T=(\frac{\partial f}{\partial x_1},\dots , \frac{\partial f}{\partial x_n})|_{x^{(k)}}gkT=(∂x1∂f,…,∂xn∂f)∣x(k),即f(x)f(x)f(x)的梯度向量在x(k)x^{(k)}x(k)处的值。
当xxx是极小点时,必有
∇f(x)=0\nabla f(x)=0∇f(x)=0
因此最优化问题仍然是解方程问题,这就是为何开头说最优化和解方程本质上是一样的。
假设第k次迭代过程从x(k)x^{(k)}x(k)开始,求目标函数的极小点。作为第k+1k+1k+1次迭代值x(k+1)x^{(k+1)}x(k+1),假设其满足:
∇f(x(k+1))=0\nabla f(x^{(k+1)})=0∇f(x(k+1))=0
根据f(x)f(x)f(x)的泰勒展开式,得其梯度(可以看成是对向量xxx求导):
∇f(x)=gk+H(x(k))(x−x(k))\nabla f(x)=g_k +H(x^{(k)}) (x-x^{(k)})∇f(x)=gk+H(x(k))(x−x(k))
于是有
gk+H(x(k))(x(k+1)−x(k))=0g_k +H(x^{(k)}) (x^{(k+1)}-x^{(k)})=0gk+H(x(k))(x(k+1)−x(k))=0
x(k+1)=x(k)−H−1(x(k))gkx^{(k+1)}=x^{(k)}-H^{-1}(x^{(k)})g_k x(k+1)=x(k)−H−1(x(k))gk
以上式作为迭代公式的方法就是牛顿法。
但是有的时候求Hesse矩阵很复杂,尤其是高维的情形,于是又引出了拟牛顿法。
2.拟牛顿法
前面说计算Hasse矩阵的逆矩阵非常复杂,所以考虑用一个n阶矩阵G(x(k))G(x^{(k)})G(x(k))来代替H−1(x(k))H^{-1}(x^{(k)})H−1(x(k)).
前面推导出下式:
∇f(x)=gk+H(x(k))(x−x(k))\nabla f(x)=g_k +H(x^{(k)}) (x-x^{(k)})∇f(x)=gk+H(x(k))(x−x(k))
令其中的x=x(k+1)x=x^{(k+1)}x=x(k+1),得
∇f(x(k+1))=gk+1=gk+H(x(k))(x(k+1)−x(k))\nabla f(x^{(k+1)})=g_{k+1}=g_k +H(x^{(k)}) (x^{(k+1)}-x^{(k)})∇f(x(k+1))=gk+1=gk+H(x(k))(x(k+1)−x(k))
即
gk+1−gk=H(x(k))(x(k+1)−x(k))g_{k+1}-g_k =H(x^{(k)}) (x^{(k+1)}-x^{(k)})gk+1−gk=H(x(k))(x(k+1)−x(k))
令yk=gk+1−gk,δk=x(k+1)−x(k)y_k=g_{k+1}-g_k,\delta _k=x^{(k+1)}-x^{(k)}yk=gk+1−gk,δk=x(k+1)−x(k),则
yk=Hkδky_k=H_k\delta _kyk=Hkδk
或
δk=Hk−1yk\delta _k=H_k^{-1}y_kδk=Hk−1yk
因此我们要找近似的GkG_kGk时,也必须满足上式的条件,即:
δk=Gk−1yk\delta _k=G_k^{-1}y_kδk=Gk−1yk
因此在拟牛顿法中每次迭代中可以更新矩阵:
Gk+1=Gk+ΔGkG_{k+1}=G_k+\Delta G_kGk+1=Gk+ΔGk
至于如何具体地实现更新,又有了许多算法,例如DFP、BFGS、Broyden类算法等,有时间我再学习更新。
本文深入探讨了牛顿法及其在最优化问题中的应用,同时介绍了拟牛顿法作为牛顿法的一种改进,解决了高维情况下计算Hesse矩阵的复杂性问题。
2013

被折叠的 条评论
为什么被折叠?



