最小二乘法,梯度下降,牛顿法以及高斯牛顿法

作业推导:

E [ d 2 ] = E [ ( S ( k ) − S e ( k ) ) 2 ] = E [ ( S ( k ) − ∑ i = 1 N a i S ( k − i ) ) 2 ] E\left[d^{2}\right]=E\left[\left(S(k)-S_{e}(k)\right)^{2}\right]=E\left[\left(S(k)-\sum_{i=1}^{N} a_{i} S(k-i)\right)^{2}\right] E[d2]=E[(S(k)Se(k))2]=E(S(k)i=1NaiS(ki))2

为了满足最佳预测需求,令:

∂ E [ d 2 ] ∂ a i = 0 i = 1 , 2 , … , N \frac{\partial E\left[d^{2}\right]}{\partial a_{i}}=0 \quad i=1,2, \ldots, N aiE[d2]=0i=1,2,,N

有:

E [ 2 ( S ( k ) − ∑ m = 1 N a m S ( k − m ) ) S ( k − i ) ] = E [ 2 ( S ( k ) S ( k − i ) − ∑ m = 1 N a m S ( k − m ) S ( k − i ) ) ] = 0 E\left[2\left(S(k)-\sum_{m=1}^{N}a_{m} S(k-m)\right)S\left(k-i\right)\right]=E\left[2\left(S(k)S\left(k-i\right)-\sum_{m=1}^{N}a_{m} S(k-m)S\left(k-i\right)\right)\right]=0 E[2(S(k)m=1NamS(km))S(ki)]=E[2(S(k)S(ki)m=1NamS(km)S(ki))]=0

那么可以得到:

E [ S ( k ) S ( k − i ) ] = E [ ( ∑ m = 1 N a m S ( k − m ) ) S ( k − i ) ] = ∑ m = 1 N E [ S ( k − m ) S ( k − i ) ) ] E\left[S(k\right)S\left(k-i)\right]=E\left[\left(\sum_{m=1}^{N}a_{m} S(k-m)\right)S\left(k-i\right)\right]=\sum_{m=1}^{N}E\left[S(k-m)S(k-i))\right] E[S(k)S(ki)]=E[(m=1NamS(km))S(ki)]=m=1NE[S(km)S(ki))]

利用自相关函数的定义 R ( i ) = E [ S ( k ) S ( k − i ) ] , i = 0 , 1 , 2 , … , N − 1 \boldsymbol{R}(\boldsymbol{i})=\boldsymbol{E}[\boldsymbol{S}(\boldsymbol{k}) \boldsymbol{S}(\boldsymbol{k}-\boldsymbol{i})],i=0,1,2, \ldots, N-1 R(i)=E[S(k)S(ki)],i=0,1,2,,N1,可以将上式展开为:

R ( 1 ) = a 1 R ( 0 ) + a 2 R ( 1 ) + ⋯ + a N R ( N − 1 ) R(1) = a_1R(0)+a_2R(1)+\cdots+a_NR(N-1) R(1)=a1R(0)+a2R(1)++aNR(N1)

R ( 2 ) = a 1 R ( 1 ) + a 2 R ( 0 ) + ⋯ + a N R ( N − 2 ) R(2) = a_1R(1)+a_2R(0)+\cdots+a_NR(N-2) R(2)=a1R(1)+a2R(0)++aNR(N2)

⋮ \vdots

R ( N ) = a 1 R ( N − 1 ) + a 2 R ( N − 2 ) + ⋯ + a N R ( 0 ) R(N) = a_1R(N-1)+a_2R(N-2)+\cdots+a_NR(0) R(N)=a1R(N1)+a2R(N2)++aNR(0)

写成矩阵形式即为:

[ R ( 1 ) R ( 2 ) ⋮ R ( N ) ] = [ R ( 0 ) R ( 1 ) ⋯ R ( N − 1 ) R ( 1 ) R ( 0 ) ⋯ R ( N − 2 ) ⋮ ⋮ ⋮ R ( N − 1 ) R ( N − 2 ) … R ( 0 ) ] [ a 1 a 2 ⋮ a N ] \left[\begin{array}{l}R(1) \\ R(2) \\ \vdots \\ R(N)\end{array}\right]=\left[\begin{array}{llll}R(0) & R(1) & \cdots & R(N-1) \\ R(1) & R(0) & \cdots & R(N-2) \\ \vdots & \vdots & & \vdots\\ R(N-1) &R(N-2) & \dots & R(0)\end{array}\right]\left[\begin{array}{l}a_{1} \\ a_{2} \\ \vdots \\ a_{N}\end{array}\right] R(1)R(2)R(N)=R(0)R(1)R(N1)R(1)R(0)R(N2)R(N1)R(N2)R(0)a1a2aN

最小二乘法

假设需要描述一个解不存在的巨型方程组 A x = b A\boldsymbol{x}=\boldsymbol{b} Ax=b(比如线性回归问题),通常做法是寻找一个 x \boldsymbol{x} x,使得 A x A\boldsymbol{x} Ax尽量接近 b \boldsymbol{b} b。这里通常使用距离来描述近似,即找出使得 ∥ b − A x ∥ \|\mathbf{b}-A \mathbf{x}\| bAx尽量小的 x \boldsymbol{x} x

定义

If A A A is m × n m \times n m×n and b \mathbf{b} b is in R m \mathbb{R}^{m} Rm, a least-squares solution of A x = b A \mathbf{x}=\mathbf{b} Ax=b is an x ^ \hat{\mathbf{x}} x^ in R n \mathbb{R}^{n} Rn such that

∥ b − A x ^ ∥ ≤ ∥ b − A x ∥ \|\mathbf{b}-A \hat{\mathbf{x}}\| \leq\|\mathbf{b}-A \mathbf{x}\| bAx^bAx
for all x \mathbf{x} x in R n \mathbb{R}^{n} Rn

定义损失函数 L ( x ) = ∑ i = 1 m ∥ A i x − b i ∥ 2 L(\boldsymbol{x})=\sum^m_{i=1}\|\boldsymbol{A}_i\boldsymbol{x}-b_i\|^2 L(x)=i=1mAixbi2,其中 A i \boldsymbol{A}_i Ai是A中的第i行。

可以对 L ( x ) L(\boldsymbol{x}) L(x)进行化简:

L ( x ) = ( x T A T − b T ) ( A x − b ) L(\boldsymbol{x})=(\boldsymbol{x}^TA^T-\boldsymbol{b}^T)(A\boldsymbol{x}-\boldsymbol{b}) L(x)=(xTATbT)(Axb)

展开可得

L ( x ) = ( A x ) T A x − 2 ( A x ) T b + b T b L(\boldsymbol{x})=(A\boldsymbol{x})^TA\boldsymbol{x}-2(A\boldsymbol{x})^T\boldsymbol{b}+\boldsymbol{b}^T\boldsymbol{b} L(x)=(Ax)TAx2(Ax)Tb+bTb

那么现在的任务就是找到 x \boldsymbol{x} x满足 x = a r g ( m i n ( L ( x ) ) ) \boldsymbol{x}=arg(min(L(\boldsymbol{x}))) x=arg(min(L(x)))

∂ L ( x ) x = 2 A T A x − 2 A T b = 0 \frac{\partial L(\boldsymbol{x})}{\boldsymbol{x}}=2A^TA\boldsymbol{x}-2A^T\boldsymbol{b}=0 xL(x)=2ATAx2ATb=0

A T A x = A T b A^TA\boldsymbol{x}=A^T\boldsymbol{b} ATAx=ATb

A T A A^TA ATA可逆的时候,可以解得

x = ( A T A ) − 1 A T b \boldsymbol{x}=(A^TA)^{-1}A^T\boldsymbol{b} x=(ATA)1ATb

计算时间复杂度为 O ( n 2 m ) O(n^2m) O(n2m).

当矩阵具有某些特殊结构的时候,可以使用算法快速求解最小二乘问题。

有时样本数目不够多或者样本的维度过大,那么就有可能造成过拟合。这时候可以采用正则化的方法,在损失函数中增加一些多余的项,如:

L ( x ) = ( x T A T − b T ) ( A x − b ) + ρ x T x L(\boldsymbol{x})=(\boldsymbol{x}^TA^T-\boldsymbol{b}^T)(A\boldsymbol{x}-\boldsymbol{b})+\rho \boldsymbol{x}^T\boldsymbol{x} L(x)=(xTATbT)(Axb)+ρxTx

算法

梯度下降

使用负梯度作为搜算个方向。即令 Δ x = − ∇ f ( x ) \Delta{x}=-\nabla f(x) Δx=f(x)

步骤

给定 初始点 x ∈ d o m f x\in \boldsymbol{dom} f xdomf

重复进行

  • Δ x : = − ∇ f ( x ) \Delta{x}:=-\nabla f(x) Δx:=f(x)
    • 检验是否满足停止准则,如果满足则停止。不满足则进行后续步骤。
    • 直线搜索。通过精确或回溯直线搜索方法确定步长t。
    • 修改 x : = x + t Δ x x:=x+t\Delta x x:=x+tΔx

停止准则通常取为 ∥ ∇ f ( x ) ∥ ≤ η \|\nabla f(x)\|\le \eta f(x)η

梯度下降法考虑的是局部性质。对于许多问题,下降速度非常反满。当函数的等值曲线接近一个圆(球)时,最速下降法较快;当其为一个椭球时,最开始几步下降较快,后来就出现锯齿现象,下降缓慢。

牛顿法

牛顿法的思想是利用 f ( x ) f(x) f(x)的泰勒级数前面几项来寻找方程 f ( x ) = 0 f(x)=0 f(x)=0的根。

Newton步径

对于 x ∈ d o m f x\in \boldsymbol{dom} f xdomf,称向量 Δ x n t = − ∇ 2 f ( x ) − 1 ∇ f ( x ) \Delta x_{\mathrm{nt}}=-\nabla^{2} f(x)^{-1} \nabla f(x) Δxnt=2f(x)1f(x)为f在x处的Newton步径。除非 ∇ f ( x ) = 0 \nabla f(x)=0 f(x)=0,否则都会有:

∇ f ( x ) T Δ x n t = − ∇ f ( x ) T ∇ 2 f ( x ) − 1 ∇ f ( x ) < 0 \nabla f(x)^{T} \Delta x_{\mathrm{nt}}=-\nabla f(x)^{T} \nabla^{2} f(x)^{-1} \nabla f(x)<0 f(x)TΔxnt=f(x)T2f(x)1f(x)<0

所以Newton步径是下降方向,除非x为最有点。

函数f在x处的二阶泰勒展开为 f ^ \hat{f} f^为:

f ^ ( x + v ) = f ( x ) + ∇ f ( x ) T v + 1 2 v T ∇ 2 f ( x ) v \widehat{f}(x+v)=f(x)+\nabla f(x)^{T} v+\frac{1}{2} v^{T} \nabla^{2} f(x) v f (x+v)=f(x)+f(x)Tv+21vT2f(x)v

这是v的二次凸函数,在 v = Δ x n t v=\Delta x_{nt} v=Δxnt处达到最小值。因此x加上Newton步径能够极小化f在x处的二阶近似。

最小二乘法,梯度下降,牛顿法以及高斯牛顿法_第1张图片

Newton减量

λ ( x ) = ( ∇ f ( x ) T ∇ 2 f ( x ) − 1 ∇ f ( x ) ) 1 / 2 \lambda(x)=\left(\nabla f(x)^{T} \nabla^{2} f(x)^{-1} \nabla f(x)\right)^{1 / 2} λ(x)=(f(x)T2f(x)1f(x))1/2

称为x处的Newton减量

Newton减量也可以表示为 λ ( x ) = ( Δ x n t T ∇ 2 f ( x ) Δ x n t ) 1 / 2 \lambda(x)=\left(\Delta x_{\mathrm{nt}}^{T} \nabla^{2} f(x) \Delta x_{\mathrm{nt}}\right)^{1 / 2} λ(x)=(ΔxntT2f(x)Δxnt)1/2。在回溯直线搜索中可以呗解释为f在x处沿Newton步径方向的方向导数,即:

− λ ( x ) 2 = ∇ f ( x ) T Δ x n t = d d t f ( x + Δ x n t t ) ∣ t = 0 -\lambda(x)^{2}=\nabla f(x)^{T} \Delta x_{\mathrm{nt}}=\left.\frac{d}{d t} f\left(x+\Delta x_{\mathrm{nt}} t\right)\right|_{t=0} λ(x)2=f(x)TΔxnt=dtdf(x+Δxntt)t=0

Newton减量也是仿射不变的。

算法步骤

给定 初始点 x ∈ d o m f x \in \boldsymbol{dom} f xdomf,误差阈值 ϵ > 0 \epsilon>0 ϵ>0

重复进行

  1. 计算Newton步径和Newton减量.

    Δ x n t : = − ∇ 2 f ( x ) − 1 ∇ f ( x ) ; λ 2 : = ∇ f ( x ) T ∇ 2 f ( x ) − 1 ∇ f ( x ) \Delta x_{\mathrm{nt}}:=-\nabla^{2} f(x)^{-1} \nabla f(x) ; \quad \lambda^{2}:=\nabla f(x)^{T} \nabla^{2} f(x)^{-1} \nabla f(x) Δxnt:=2f(x)1f(x);λ2:=f(x)T2f(x)1f(x)

  2. 停止准则:如果 λ 2 / 2 ⩽ ϵ \lambda^{2} / 2 \leqslant \epsilon λ2/2ϵ,退出.

  3. 直线搜素:通过回溯直线确定搜索步长t.

  4. 改进: x : = x + t Δ x n t x:=x+t\Delta x_{nt} x:=x+tΔxnt

高斯牛顿法

高斯牛顿法适用于非线性最小二乘问题,并且只能处理二次函数.

对于非线性最小二乘问题 x = arg ⁡ min ⁡ x 1 2 ∥ f ( x ) ∥ 2 x=\arg \min _{x} \frac{1}{2}\|f(x)\|^{2} x=argminx21f(x)2

高斯牛顿法的思想是把 f ( x ) f(x) f(x)泰勒展开,取一阶近似项.

f ( x + Δ x ) = f ( x ) + f ′ ( x ) Δ x = f ( x ) + J ( x ) Δ x f(x+\Delta x)=f(x)+f^{\prime}(x) \Delta x=f(x)+J(x) \Delta x f(x+Δx)=f(x)+f(x)Δx=f(x)+J(x)Δx

对上式求导,并令其为0.

J ( x ) T J ( x ) Δ x = − J ( x ) T f ( x ) J(x)^{T} J(x) \Delta x=-J(x)^{T} f(x) J(x)TJ(x)Δx=J(x)Tf(x)

其中 J ( x ) = [ ∂ f ∂ x 1 ∂ f ∂ x 2 ] J(x)=\left[\begin{array}{c}\frac{\partial f}{\partial x_{1}} \\ \frac{\partial f}{\partial x_{2}}\end{array}\right] J(x)=[x1fx2f].

H = J T J , B = − J T f H=J^{T} J, \quad B=-J^{T} f H=JTJ,B=JTf,则上式可化为 H Δ x = B H\Delta x = B HΔx=B,从而可以得到调整量 Δ x \Delta x Δx.这就要求H可逆。

步骤

给定 初始点 x ∈ d o m f x \in \boldsymbol{dom} f xdomf

重复进行

  1. 计算 J , H , B J,H,B J,H,B,从而得到 Δ x \Delta x Δx
  2. 如果满足停止准则则退出
  3. 改进: x : = x + t Δ x n t x:=x+t\Delta x_{nt} x:=x+tΔxnt

你可能感兴趣的:(数据压缩作业)