迭代求解最优化问题——最小二乘问题、高斯牛顿法

最小二乘问题

最小二乘问题是应用最广泛的优化问题,它的一般形式如下:
min ⁡ x ∣ ∣ r ( x ) ∣ ∣ 2 \min_x ||r(x)||^2 xminr(x)2
该问题的损失函数为 S ( x ) = ∣ ∣ r ( x ) ∣ ∣ 2 S(x)=||r(x)||^2 S(x)=r(x)2。其中r(x)为残差函数,一般表示预测值与实际值的差别。一个最简单的最小二乘问题就是线性回归问题,对于这个问题的求解可以用上一节所说的梯度下降法,这也是机器学习领域常用的一种做法。

线性最小二乘问题

线性最小二乘问题是最简单的最小二乘问题,它的一般形式如下:
min ⁡ x ∣ ∣ A x − b ∣ ∣ 2 \min_x ||Ax-b||^2 xminAxb2
线性最小二乘问题的求解很容易,
h ( x ) = ∣ ∣ A x − b ∣ ∣ 2 = ( A x − b ) T ( A x − b ) h(x) = ||Ax-b||^2 = (Ax-b)^T(Ax-b) h(x)=Axb2=(Axb)T(Axb)
对它求导并且令导数为零得到 A T A x − A T b = 0 A^TAx-A^Tb=0 ATAxATb=0,这称为最小二乘问题的标准方程(normal equation)。

解得 x = ( A T A ) − 1 A T b x = (A^TA)^{-1}A^Tb x=(ATA)1ATb
熟悉线性回归模型的话就可以发现,这就是线性回归模型参数的解析解。

非线性最小二乘问题

上面的问题中有 r ( x ) = A x − b r(x) = Ax-b r(x)=Axb。r(x)是一个线性函数。对它求导得到Jacobian矩阵 J r = A J_r=A Jr=A。于是有 x = ( J r T J r ) − 1 J r T b x = (J_r^TJ_r)^{-1}J_r^Tb x=(JrTJr)1JrTb

而许多最小二乘问题的残差函数并不是线性的,此类问题称为非线性优化问题。

对于非线性优化的问题当然可以结合具体的残差函数进行分析,但是对于一般的函数,我们也可以通过将非线性函数进行线性化的方式进行迭代求解。具体来说,假设在x的某个领域可以对函数进行线性逼近,则由泰勒展开
r ( x 0 + Δ ) = r ( x 0 ) + J r Δ r(x_0+\Delta) = r(x_0)+J_r\Delta r(x0+Δ)=r(x0)+JrΔ

求解 min ⁡ Δ ∣ ∣ r ( x 0 + Δ ) ∣ ∣ 2 = min ⁡ Δ ∣ ∣ r ( x 0 ) + J r Δ ∣ ∣ 2 \min_\Delta||r(x_0+\Delta)||^2=\min_\Delta||r(x_0)+J_r\Delta||^2 Δminr(x0+Δ)2=Δminr(x0)+JrΔ2

由上面线性最小二乘问题的推导可以得出此问题的解为 Δ = − ( J r T J r ) − 1 J r T r ( x 0 ) \Delta = -(J_r^TJ_r)^{-1}J_r^Tr(x_0) Δ=(JrTJr)1JrTr(x0)

于是通过不断迭代 x ( k + 1 ) = x ( k ) + α Δ x^{(k+1)}=x^{(k)}+\alpha\Delta x(k+1)=x(k)+αΔ,我们可以对非线性最小二乘问题的解进行逼近

高斯牛顿法

上述使用迭代求解非线性最小二乘问题的方法称为高斯牛顿法。它是牛顿法求解非线性最小二乘问题时的一个特例。
事实上,对损失函数:
S ( β ) = ∣ ∣ r ( β ) ∣ ∣ 2 S(\beta)=||r(\beta)||^2 S(β)=r(β)2
使用牛顿法有
β ( s + 1 ) = β ( s ) − H − 1 g \beta^{(s+1)}=\beta^{(s)}-H^{-1}g β(s+1)=β(s)H1g
H为S对 β \beta β的二次导,g为S对 β \beta β的梯度。

显然 g = 2 J r T r g = 2J_r^Tr g=2JrTr, H = 2 ( J r T J r + H r T r ) H=2(J_r^TJ_r+H_r^T r) H=2(JrTJr+HrTr),其中 J r J_r Jr为r对 β \beta β的Jacobian矩阵, H r H_r Hr为r对 β \beta β的Hessian矩阵。

在此我们假设在非线性最小二乘问题中残差函数的二次偏导的作用是不明显的,于是我们可以将这一项省略,于是得到

H ≈ 2 J r T J r H\approx 2J_r^TJ_r H2JrTJr

带入牛顿法的计算公式,我们有
β ( s + 1 ) = β ( s ) + α Δ , Δ = − ( J r T J r ) − 1 J r T r ( β ( s ) ) \beta^{(s+1)}=\beta^{(s)}+\alpha\Delta,\Delta=-(J_r^TJ_r)^{-1}J_r^Tr(\beta^{(s)}) β(s+1)=β(s)+αΔ,Δ=(JrTJr)1JrTr(β(s))

由此,我们就从另一个角度推导出了高斯牛顿法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值