【机器学习杂记】牛顿法与拟牛顿法

本文深入探讨了牛顿法及其在最优化问题中的应用,同时介绍了拟牛顿法作为牛顿法的一种改进,解决了高维情况下计算Hesse矩阵的复杂性问题。

1.牛顿法

牛顿法可以用来解方程或者解决最优化问题。二者的本质是一样的。
假设我们要求解如下最优化问题:
min⁡x∈Rnf(x)\min_{x\in R^n } f(x)xRnminf(x)
注意x∈Rnx\in R^nxRn,直接讨论多维的情形。
为了便于理解,假设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=x1x1(0),Δx2=x2−x2(0)\Delta x_2=x_2-x_2^{(0)}Δx2=x2x2(0).
如果写成矩阵形式:
在这里插入图片描述
同理,对于多维的情况,如果我们令
H(x)=[∂2f∂xi∂xj]n×nH(x)=[\frac{\partial^2f}{\partial x_i \partial x_j}]_{n\times n}H(x)=[xixj2f]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(xx(k))+21(xx(k))TH(x(k))(xx(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=(x1f,,xnf)x(k),即f(x)f(x)f(x)的梯度向量在x(k)x^{(k)}x(k)处的值。
xxx是极小点时,必有
∇f(x)=0\nabla f(x)=0f(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)})=0f(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))(xx(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)H1(x(k))gk
以上式作为迭代公式的方法就是牛顿法。
但是有的时候求Hesse矩阵很复杂,尤其是高维的情形,于是又引出了拟牛顿法。

2.拟牛顿法

前面说计算Hasse矩阵的逆矩阵非常复杂,所以考虑用一个n阶矩阵G(x(k))G(x^{(k)})G(x(k))来代替H−1(x(k))H^{-1}(x^{(k)})H1(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))(xx(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+1gk=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+1gk,δ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=Hk1yk
因此我们要找近似的GkG_kGk时,也必须满足上式的条件,即:
δk=Gk−1yk\delta _k=G_k^{-1}y_kδk=Gk1yk
因此在拟牛顿法中每次迭代中可以更新矩阵:
Gk+1=Gk+ΔGkG_{k+1}=G_k+\Delta G_kGk+1=Gk+ΔGk
至于如何具体地实现更新,又有了许多算法,例如DFP、BFGS、Broyden类算法等,有时间我再学习更新。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值