任务1:推导线性预测器最佳预测系数的线性方程
任务2:最小二乘法的总结
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和来寻找数据的最佳函数匹配。
利用最小二乘法可以简便的求得未知的数据,并使得求得的数据与实际数据之间误差的平方和为最小。
“最小二乘法”是对线性方程组,即方程个数比未知数更多的方程组,以回归分析求得近似解的标准方法。在这整个解决方案中,最小二乘法演算为每一方程式的结果中,将残差平方和的总和最小化。
最重要的应用是在曲线拟合上。最小平方所涵义的最佳拟合,即残差(残差为:观测值与模型提供的拟合值之间的差距)平方总和的最小化。当问题在自变量(x变量)有重大不确定性时,那么使用简易回归和最小二乘法会发生问题;在这种情况下,须另外考虑变量-误差-拟合模型所需的方法,而不是最小二乘法。
OLS(最小二乘法)主要用于线性回归的参数估计,它的思路很简单,就是求一些使得实际值和模型估值之差的平方和达到最小的值。即上文说到的最小化误差的平方和。
最小平方问题分为两种:线性或普通的最小二乘法,和非线性的最小二乘法。
两种的分类取决于在所有未知数中的残差是否为线性。
某次实验得到了四个数据点 ( x , y ) {\displaystyle (x,y)} (x,y): ( 1 , 6 ) {\displaystyle (1,6)} (1,6)、 ( 2 , 5 ) {\displaystyle (2,5)} (2,5)、 ( 3 , 7 ) {\displaystyle (3,7)} (3,7)、 ( 4 , 10 ) {\displaystyle (4,10)} (4,10)(下图红色的点)。我们希望找出一条和这四个点最匹配的直线 y = β 1 + β 2 x {\displaystyle y=\beta _{1}+\beta _{2}x} y=β1+β2x,即找出在某种“最佳情况”下能够大致符合如下超定线性方程组的 β 1 {\displaystyle \beta _{1}} β1和 β 2 {\displaystyle \beta _{2}} β2:
β 1 + 1 β 2 = 6 \beta_1+1\beta_2=6 β1+1β2=6 β 1 + 2 β 2 = 5 \beta_1+2\beta_2=5 β1+2β2=5 β 1 + 3 β 2 = 7 \beta_1+3\beta_2=7 β1+3β2=7 β 1 + 4 β 2 = 10 \beta_1+4\beta_2=10 β1+4β2=10
最小二乘法采用的方法是尽量使得等号两边的平方差最小,也就是找出下面这个函数的最小值:
S ( β 1 , β 2 ) = [ 6 − ( β 1 + 1 β 2 ) ] 2 + [ 5 − ( β 1 + 2 β 2 ) ] 2 + [ 7 − ( β 1 + 3 β 2 ) ] 2 + [ 10 − ( β 1 + 4 β 2 ) ] 2 S(\beta_1,\beta_2) \\ =[6-(\beta_1+1\beta_2)]^2\\+[5-(\beta_1+2\beta_2)]^2 \\+[7-(\beta_1+3\beta_2)]^2\\+[10-(\beta_1+4\beta_2)]^2 S(β1,β2)=[6−(β1+1β2)]2+[5−(β1+2β2)]2+[7−(β1+3β2)]2+[10−(β1+4β2)]2
最小值可以通过对 S ( β 1 , β 2 ) S(\beta_1,\beta_2) S(β1,β2)分别求 β 1 \beta_1 β1和 β 2 \beta_2 β2的偏导数,然后使他们等于零得到: ∂ S ∂ β 1 = 0 = 8 β 1 + 20 β 2 − 56 \frac{\partial S}{\partial \beta_1}=0=8\beta_1+20\beta_2-56 ∂β1∂S=0=8β1+20β2−56 ∂ S ∂ β 2 = 0 = 20 β 1 + 60 β 2 − 154 \frac{\partial S}{\partial \beta_2}=0=20\beta_1+60\beta_2-154 ∂β2∂S=0=20β1+60β2−154
如此就得到了一个只有两个未知数的方程组,很容易就可以解出:
β 1 = 3.5 \beta_1=3.5 β1=3.5 β 2 = 1.4 \beta_2=1.4 β2=1.4
也就是说,直线 y = 3.5 + 1.4 x y=3.5+1.4x y=3.5+1.4x是所要求的根据最小二乘得到的线性方程。
参考资料:
在向量微积分中,标量场的梯度是一个向量场。标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。
在三维直角坐标系中表示为: ∇ φ = ( ∂ φ ∂ x , ∂ φ ∂ y , ∂ φ ∂ z ) = ∂ φ ∂ x i ⃗ + ∂ φ ∂ y j ⃗ + ∂ φ ∂ z k ⃗ \nabla \varphi=(\frac{\partial \varphi}{\partial x},\frac{\partial \varphi}{\partial y},\frac{\partial \varphi}{\partial z})=\frac{\partial \varphi}{\partial x} \vec i+\frac{\partial \varphi}{\partial y}\vec j+\frac{\partial \varphi}{\partial z}\vec k ∇φ=(∂x∂φ,∂y∂φ,∂z∂φ)=∂x∂φi+∂y∂φj+∂z∂φk
梯度下降背后的思想是:开始时我们随机选取一个参数的组合 ( θ 0 , θ 1 , ⋯ , θ n ) (\theta_0,\theta_1,\cdots,\theta_n) (θ0,θ1,⋯,θn),计算代价函数 J ( θ ) J(\theta) J(θ),然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做,直到找到一个局部最小值,因为我们并没有尝试完所有的参数组合,所以不能确定我们得到局部最小值是否便是全局最小值,不同的初始参数组合,可能会找到不同的局部最小值。如果我们知道代价函数是一个凸函数,那么我们就可以保证我们找到的局部最小点就是全局最小点。
通过梯度的定义,我们知道,梯度的方向是增长(上升)最快的方向,那么梯度的反方向便是让代价函数下降程度最大的方向。
相关概念:
梯度下降法的算法可以有代数法和矩阵法(也称向量法)两种表示,如果对矩阵分析不熟悉,则代数法更加容易理解。不过矩阵法更加的简洁,且由于使用了矩阵,实现逻辑更加的一目了然。这里先介绍代数法,后介绍矩阵法。
1.先决条件:确认优化模型的假设函数和损失函数。
比如对于线性回归,假设函数为 h θ ( x 1 , x 2 , ⋯ , x n ) = θ 0 + θ 1 x 1 + ⋯ + θ n h_{\theta}(x_1,x_2,\cdots,x_n)=\theta_0+\theta_1x_1+\cdots+\theta_n hθ(x1,x2,⋯,xn)=θ0+θ1x1+⋯+θn,其中 θ i ( i = 0 , 1 , ⋯ , n ) \theta_i(i=0,1,\cdots,n) θi(i=0,1,⋯,n)为模型参数, x i ( i = 0 , 1 , 2 , ⋯ , n ) x_i(i=0,1,2,\cdots,n) xi(i=0,1,2,⋯,n)为每个样本的 n n n个特征值,可以简化为 h θ ( x 1 , x 2 , ⋯ , x n ) = Σ i = 0 n θ i x i h_{\theta}(x_1,x_2,\cdots,x_n)=\Sigma^n_{i=0}\theta_ix_i hθ(x1,x2,⋯,xn)=Σi=0nθixi。
同样是线性回归,对应于上面的假设函数,损失函数为: J ( θ 0 , θ 1 , ⋯ , θ n ) = 1 2 m Σ j = 1 m ( h θ ( x 0 ( j ) , x 1 ( j ) , ⋯ , x n ( j ) ) − y j ) 2 J(\theta_0,\theta_1,\cdots,\theta_n)=\frac{1}{2m}\Sigma^m_{j=1}(h_{\theta}(x_0^{(j)},x_1^{(j)},\cdots,x_n^{(j)})-y_j)^2 J(θ0,θ1,⋯,θn)=2m1Σj=1m(hθ(x0(j),x1(j),⋯,xn(j))−yj)2
2.算法相关参数初始化。
主要是初始化 θ 0 , θ 1 , ⋯ , θ n \theta_0,\theta_1,\cdots,\theta_n θ0,θ1,⋯,θn,算法终止距离 ε \varepsilon ε以及步长 α \alpha α,将所有的 θ \theta θ初始化为0,将步长初始化为1.
3.算法过程:
- 确定当前位置的损失函数的梯度,对于 θ i \theta_i θi,其梯度表达式如下: ∂ ∂ θ i J ( θ 0 , θ 1 , ⋯ , θ n ) \frac{\partial }{\partial \theta_i}J(\theta_0,\theta_1,\cdots,\theta_n) ∂θi∂J(θ0,θ1,⋯,θn)
- 用步长乘以损失函数的梯度,得到当前位置下降的距离,即 α ∂ ∂ θ i J ( θ 0 , θ 1 , ⋯ , θ n ) \alpha\frac{\partial }{\partial \theta_i}J(\theta_0,\theta_1,\cdots,\theta_n) α∂θi∂J(θ0,θ1,⋯,θn)对应于前面登山例子中的某一步。
- 确定是否所有的 θ i \theta_i θi,梯度下降的距离都小于 ε \varepsilon ε,如果小于 ε \varepsilon ε则算法终止,当前所有的 θ i ( i = 0 , 1 , ⋯ , n ) \theta_i(i=0,1,\cdots,n) θi(i=0,1,⋯,n)即为最终结果,否则进入步骤4.
- 更新所有的 θ \theta θ,对于 θ i \theta_i θi,其更新表达式如下: θ i = θ i − α ∂ ∂ θ i J ( θ 0 , θ 1 , ⋯ , θ n ) \theta_i=\theta_i-\alpha\frac{\partial }{\partial \theta_i}J(\theta_0,\theta_1,\cdots,\theta_n) θi=θi−α∂θi∂J(θ0,θ1,⋯,θn)更新完后继续转入步骤1.
1). 假设 a a a为常数,则 t r ( a ) = a tr(a)=a tr(a)=a
2). 如果 A B AB AB为方针,则 t r ( A B ) = t r ( B A ) tr(AB)=tr(BA) tr(AB)=tr(BA)证明: t r ( A B ) = Σ i = 1 m Σ j = 1 n a i j b j i = Σ i = 1 n Σ j = 1 m a i j b j i = t r ( B A ) tr(AB)=\Sigma^m_{i=1}\Sigma^n_{j=1}a_{ij}b_{ji}=\Sigma^n_{i=1}\Sigma^m_{j=1}a_{ij}b_{ji}=tr(BA) tr(AB)=Σi=1mΣj=1naijbji=Σi=1nΣj=1maijbji=tr(BA),因此在矩阵乘积为方阵的情况下,矩阵乘积的迹不受矩阵乘积顺序的影响
t r ( A T ) = t r ( A ) tr(A^T)=tr(A) tr(AT)=tr(A)
1). ∇ A t r ( A B ) = B T \nabla_Atr(AB)=B^T ∇Atr(AB)=BT
2). ∇ A t r ( A B A T C ) = C T A B T + C A B \nabla_Atr(ABA^TC)=C^TAB^T+CAB ∇Atr(ABATC)=CTABT+CAB
性质推导 ∇ A t r ( A B ) = B T \nabla_Atr(AB)=B^T ∇Atr(AB)=BT
性质推导 ∇ A t r ( A B A T C ) = C T A B T + C A B \nabla_Atr(ABA^TC)=C^TAB^T+CAB ∇Atr(ABATC)=CTABT+CAB
目前我推不出来,先当公式记着
鞍点:鞍点是指梯度为0,Hessian矩阵既不是正定也不是负定,即不定的点。
参考资料:
和梯度下降法一样,牛顿法寻找的也是导数为0的点。
利用迭代点 x k x_k xk处的一阶导数(梯度)和二阶导数(Hessen矩阵)对目标函数进行二次函数近似,然后把二次模型的极小点作为新的迭代点,并不断重复这一过程,直至求得满足精度的近似极小值。
牛顿法的速度相当快,而且能高度逼近最优值。牛顿法分为基本的牛顿法和全局牛顿法。
基本牛顿法是一种用导数的算法,它每一步的迭代方向都是沿着当前点函数值下降的方向。
在一维的情况下,对于一个需要求解的优化函数 f ( x ) f(x) f(x),求函数的极值的问题可以转化为求导函数 f ′ ( x ) = 0 f'(x)=0 f′(x)=0。对函数 f ( x ) f(x) f(x)进行泰勒展开到二阶,得到 f ( x ) = f ( x k ) + f ′ ( x k ) ( x − x k ) + 1 2 f ′ ′ ( x k ) ( x − x k ) 2 f(x)=f(x_k)+f'(x_k)(x-x_k)+\frac{1}{2}f''(x_k)(x-x_k)^2 f(x)=f(xk)+f′(xk)(x−xk)+21f′′(xk)(x−xk)2 对上式求导并令其为0,则, f ′ ( x k ) + f ′ ′ ( x k ) ( x − x k ) = 0 f'(x_k)+f''(x_k)(x-x_k)=0 f′(xk)+f′′(xk)(x−xk)=0,即 x = x k − f ′ ( x k ) f ′ ′ ( x k ) x=x_k-\frac{f'(x_k)}{f''(x_k)} x=xk−f′′(xk)f′(xk) 这就是牛顿法的更新公式(一维)。
对于高维函数,推导过程基于多元函数的泰勒展开。 f ( x ) ≈ f ( x n ) + ∇ f ( x n ) T ( x − x n ) + 1 2 ( x − x n ) T H ( x n ) ( x − x n ) f(x)\approx f(x_n)+\nabla f(x_n)^T(x-x_n)+\frac{1}{2}(x-x_n)^TH(x_n)(x-x_n) f(x)≈f(xn)+∇f(xn)T(x−xn)+21(x−xn)TH(xn)(x−xn). 这是用高维二次曲面在 x n x_n xn处逼近原函数。如下图所示(图片来源)
对上式,令其对 x x x的导函数为0,则 ∇ f ( x ) = H ( x n ) ( x − x n ) + ∇ f ( x n ) = 0 \nabla f(x)=H(x_n)(x-x_n)+\nabla f(x_n)=0 ∇f(x)=H(xn)(x−xn)+∇f(xn)=0 解得, x n + 1 = x n − H ( x n ) − 1 ∇ f ( x n ) x_{n+1}=x_n-H(x_n)^{-1}\nabla f(x_n) xn+1=xn−H(xn)−1∇f(xn)
其中 H H H是hessian矩阵,定义为 H ( f ) = [ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ x n p a r t i a l x 1 ∂ 2 f ∂ x n ∂ x 2 ⋯ ∂ 2 f ∂ x n 2 ] H(f)=\begin{bmatrix}\frac{\partial^2f}{\partial x_1^2} & \frac{\partial^2f}{\partial x_1\partial x_2} & \cdots & \frac{\partial^2f}{\partial x_1\partial x_n} \\ \frac{\partial^2f}{\partial x_2 \partial x_1} & \frac{\partial^2f}{\partial x_1\partial x_2} & \cdots & \frac{\partial^2f}{\partial x_1\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2f}{\partial x_npartial x_1} & \frac{\partial ^2f}{\partial x_n\partial x_2} & \cdots & \frac{\partial^2f}{\partial x_n^2}\end{bmatrix} H(f)=⎣⎢⎢⎢⎢⎢⎡∂x12∂2f∂x2∂x1∂2f⋮∂xnpartialx1∂2f∂x1∂x2∂2f∂x1∂x2∂2f⋮∂xn∂x2∂2f⋯⋯⋱⋯∂x1∂xn∂2f∂x1∂xn∂2f⋮∂xn2∂2f⎦⎥⎥⎥⎥⎥⎤
基本牛顿法的流程
- 给定终止误差值 0 ≤ ε ≪ 1 0\leq \varepsilon \ll 1 0≤ε≪1,初始点 x 0 ∈ R n x_0 \in R^n x0∈Rn,令 k = 0 k=0 k=0
- 计算 g ( k ) = ∇ f ( x k ) g(k)=\nabla f(x_k) g(k)=∇f(xk),若 ∣ ∣ g k ∣ ∣ ≤ ε ||g_k|| \leq \varepsilon ∣∣gk∣∣≤ε,则停止,输出 x ∗ ≈ x k x* \approx x_k x∗≈xk
- 计算 G k = ∇ 2 f ( x k ) G_k=\nabla ^2f(x_k) Gk=∇2f(xk),并求解线性方程组得解 d k : G k d = − g k d_k:G_kd=-g_k dk:Gkd=−gk
- 令 x k + 1 = x k + d k , k = k + 1 x_{k+1}=x_k+d_k,k=k+1 xk+1=xk+dk,k=k+1,并转2
牛顿法最突出的优点是收敛速度快,具有局部二阶收敛性,但是,基本牛顿法初始点需要足够“靠近”极小点,否则,有可能导致算法不收敛。这样就引入了全局牛顿法。
全局牛顿法的流程
- 给定终止误差值 0 ≤ ε ≪ 1 0\leq \varepsilon \ll 1 0≤ε≪1, δ ∈ ( 0 , 1 ) \delta \in (0,1) δ∈(0,1), σ ∈ ( 0 , 0.5 ) \sigma \in (0,0.5) σ∈(0,0.5),初始点 x 0 ∈ R n x_0 \in R^n x0∈Rn,令 k = 0 k=0 k=0
- 给定 g ( k ) = ∇ f ( x k ) g(k)=\nabla f(x_k) g(k)=∇f(xk),若 ∣ ∣ g k ∣ ∣ ≤ ε ||g_k|| \leq \varepsilon ∣∣gk∣∣≤ε,则停止,输出 x ∗ ≈ x k x* \approx x_k x∗≈xk
- 计算 G k = ∇ 2 f ( x k ) G_k=\nabla ^2f(x_k) Gk=∇2f(xk),并求解线性方程组得解 d k : G k d = − g k d_k:G_kd=-g_k dk:Gkd=−gk
- 记 m k m_k mk是不满足下列不等式的最小非负整数 m m m: f ( x k + δ m d k ) ≤ f ( x k ) + σ δ m g k T d k f(x_k+\delta^md_k)\leq f(x_k)+\sigma \delta^m g_k^Td_k f(xk+δmdk)≤f(xk)+σδmgkTdk
令 α k = δ m k , x k + 1 = x k + α k d k , k = k + 1 \alpha_k=\delta^{m_k},x_{k+1}=x_k+\alpha_kd_k,k=k+1 αk=δmk,xk+1=xk+αkdk,k=k+1,并转2
参考资料:
高斯-牛顿法是牛顿法的特例,用于解非线性最小二乘问题。
假设观测到N个数据点 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} {(x1,y1),(x2,y2),⋯,(xN,yN)},其中 x ∈ R M x \in R^M x∈RM,希望找到包含 M M M个参数的非线性函数 f ( x , a 1 , a 2 , ⋯ , a M ) f(x,a_1,a_2,\cdots,a_M) f(x,a1,a2,⋯,aM),拟合上述 N N N个数据点,为了方便书写,记 f 1 ( a ⃗ ) = f ( x 1 , a 1 , ⋯ , a M ) f_1(\vec a)=f(x_1,a_1,\cdots,a_M) f1(a)=f(x1,a1,⋯,aM),则最小二乘的目标函数为 ε ( a ⃗ ) = Σ i = 1 N ∣ ∣ f i ( a ⃗ ) − y i ∣ ∣ 2 \varepsilon(\vec a)=\Sigma^N_{i=1}||f_i(\vec a)-y_i||^2 ε(a)=Σi=1N∣∣fi(a)−yi∣∣2 我们需要找到 a ⃗ = [ a 1 , a 2 , ⋯ , a M ] T \vec a=[a_1,a_2,\cdots,a_M]^T a=[a1,a2,⋯,aM]T,使目标函数最小,将目标函数对 a j a_j aj求导: ∂ ε ( a ⃗ ) a j = Σ i = 1 N 2 ( f i ( a ⃗ ) − y i ) ∂ f i ( a ⃗ ) ∂ a j \frac{\partial \varepsilon (\vec a)}{a_j}=\Sigma^N_{i=1}2(f_i(\vec a)-y_i)\frac{\partial f_i(\vec a)}{\partial a_j} aj∂ε(a)=Σi=1N2(fi(a)−yi)∂aj∂fi(a) 令 J = [ ∂ f 1 ( a ⃗ ) ∂ a 1 ∂ f 1 ( a ⃗ ) ∂ a 2 ⋯ ∂ f 1 ( a ⃗ ) ∂ a M ∂ f 2 ( a ⃗ ) ∂ a 1 ∂ f 2 ( a ⃗ ) ∂ a 2 ⋯ ∂ f 2 ( a ⃗ ) ∂ a M ⋮ ⋮ ⋱ ⋮ ∂ f N ( a ⃗ ) ∂ a 1 ∂ f N ( a ⃗ ) ∂ a 2 ⋯ ∂ f N ( a ⃗ ) ∂ a M ] J=\begin{bmatrix} \frac{\partial f_1(\vec a)}{\partial a_1} & \frac{\partial f_1(\vec a)}{\partial a_2}& \cdots & \frac{\partial f_1(\vec a)}{\partial a_M}\\ \frac{\partial f_2(\vec a)}{\partial a_1} & \frac{\partial f_2(\vec a)}{\partial a_2} & \cdots & \frac{\partial f_2(\vec a)}{\partial a_M}\\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f_N(\vec a)}{\partial a_1} & \frac{\partial f_N(\vec a)}{\partial a_2} & \cdots & \frac{\partial f_N(\vec a)}{\partial a_M}\end{bmatrix} J=⎣⎢⎢⎢⎢⎡∂a1∂f1(a)∂a1∂f2(a)⋮∂a1∂fN(a)∂a2∂f1(a)∂a2∂f2(a)⋮∂a2∂fN(a)⋯⋯⋱⋯∂aM∂f1(a)∂aM∂f2(a)⋮∂aM∂fN(a)⎦⎥⎥⎥⎥⎤, r ⃗ = [ f 1 ( a ⃗ ) − y 1 f 2 ( a ⃗ ) − y 2 ⋮ f N ( a ⃗ ) − y N ] \vec r=\begin{bmatrix}f_1(\vec a)-y_1 \\ f_2(\vec a)-y_2\\ \vdots\\ f_N(\vec a)-y_N\end{bmatrix} r=⎣⎢⎢⎢⎡f1(a)−y1f2(a)−y2⋮fN(a)−yN⎦⎥⎥⎥⎤ 将求导后的式子写成向量形式: ∇ ε ( a ⃗ ) = 2 J T r ⃗ \nabla \varepsilon(\vec a)=2J^T \vec r ∇ε(a)=2JTr 接下来求海森矩阵第 k k k行第 j j j列的元素: ∂ 2 ε ( a ⃗ ) ∂ a k ∂ a j = ∂ ∂ a k ∂ ε ( a ⃗ ) ∂ a j = ∂ ∂ a k ( Σ i = 1 N 2 ( f i ( a ⃗ ) − y i ) ∂ f i ( a ⃗ ) ∂ a j ) = 2 Σ i = 1 N ( ∂ f i ( a ⃗ ) ∂ a k ∂ f i ( a ⃗ ) ∂ a j + ( f i ( a ⃗ ) − y i ) ∂ 2 f i ( a ⃗ ) ∂ a k ∂ a j \begin{aligned}& \frac{\partial^2\varepsilon(\vec a)}{\partial a_k\partial a_j}\\&=\frac{\partial}{\partial a_k}\frac{\partial \varepsilon (\vec a)}{\partial a_j}\\ &=\frac{\partial }{\partial a_k}(\Sigma^N_{i=1}2(f_i(\vec a)-y_i)\frac{\partial f_i(\vec a)}{\partial a_j})\\&=2\Sigma^N_{i=1}(\frac{\partial f_i(\vec a)}{\partial a_k}\frac{\partial f_i(\vec a)}{\partial a_j}+(f_i(\vec a)-y_i)\frac{\partial^2f_i(\vec a)}{\partial a_k\partial a_j} \end{aligned} ∂ak∂aj∂2ε(a)=∂ak∂∂aj∂ε(a)=∂ak∂(Σi=1N2(fi(a)−yi)∂aj∂fi(a))=2Σi=1N(∂ak∂fi(a)∂aj∂fi(a)+(fi(a)−yi)∂ak∂aj∂2fi(a)
令 H H H为 ε ( a ⃗ ) \varepsilon(\vec a) ε(a)的海森矩阵,由上式可知, H = 2 ( J T J + S ) H=2(J^TJ+S) H=2(JTJ+S) 其中, S k , j = Σ i = 1 N ( f i ( a ⃗ ) − y i ) ∂ 2 f i ( a ⃗ ) ∂ a k ∂ a j S_{k,j}=\Sigma^N_{i=1}(f_i(\vec a)-y_i)\frac{\partial^2f_i(\vec a)}{\partial a_k \partial a_j} Sk,j=Σi=1N(fi(a)−yi)∂ak∂aj∂2fi(a). 将 ∇ ε ( a ⃗ ) = 2 J T r ⃗ \nabla \varepsilon(\vec a)=2J^T \vec r ∇ε(a)=2JTr和 H = 2 ( J T J + S ) H=2(J^TJ+S) H=2(JTJ+S)带入牛顿法中的 x n + 1 = x n − H ( x n ) − 1 ∇ f ( x n ) x_{n+1}=x_n-H(x_n)^{-1}\nabla f(x_n) xn+1=xn−H(xn)−1∇f(xn)得: a ⃗ n + 1 = a ⃗ n − ( J T J ) − 1 J T r ⃗ \vec a_{n+1}=\vec a_n-(J^TJ)^{-1}J^T\vec r an+1=an−(JTJ)−1JTr 将 S S S忽略,则最终高斯-牛顿法的迭代公式为 a ⃗ n 1 = a ⃗ n − ( J T J ) − 1 J T r ⃗ \vec a_{n_1}=\vec a_n-(J^TJ)^{-1}J^T\vec r an1=an−(JTJ)−1JTr
基本区别是:Gauss-Newton只用于求解非线性最小二乘问题,Newton法可用于求解任意连续函数的最优化问题。
高斯-牛顿法使牛顿法在最小二乘问题上的特例,但不是完全套用牛顿法,而是在套用的过程中做了简化。