预测编码系数求解与最小二乘法总结

预测编码系数求解与最小二乘法总结_第1张图片
以上是关于N个前项预测块的系数求解证明。

最小二乘法

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

简单的说最小二乘法就是找到一条与数据差距方差最小的曲线或直线。

梯度下降法

梯度下降法是通过迭代求解最优解。
以负梯度作为搜索方向,距离越远则步长越大,距离越近则步长越小。
在这里插入图片描述
伪代码如下预测编码系数求解与最小二乘法总结_第2张图片
从J的公式中可以看到步长与预测的误差之间的关系
在这里插入图片描述
后项自适应预测就是利用梯度下降法去求得预测系数的。

牛顿法

现实中并不是所有的方程都有求根公式,或者求根公式很复杂,导致求解困难。利用牛顿法,可以迭代求解。

原理是利用泰勒公式,在x0处泰勒展开到一阶,即:f(x) = f(x0)+(x-x0)f’(x0)

求解方程:f(x)=0,即:f(x0)+(x-x0)*f’(x0)=0,求解:x = x1=x0-f(x0)/f’(x0)。
求解方程:f(x)=0,即:f(x0)+(x-x0)*f’(x0)=0,求解:x = x1=x0-f(x0)/f’(x0)。
利用泰勒公式的一阶展开,f(x) = f(x0)+(x-x0)f’(x0)处只是近似相等,这里求得的x1并不能让f(x)=0,只能说f(x1)的值比f(x0)更接近f(x)=0,于是乎,迭代求解的想法就很自然了,可以进而推出x(n+1)=x(n)-f(x(n))/f’(x(n)),通过迭代,这个式子必然在f(x)=0的时候收敛。

在极小值估计值附近,把f(x)泰勒展开到2阶形式:

在这里插入图片描述
当且仅当 Δx 无线趋近于0,上面的公式成立。令:f’(x+delta(X))=0,得到:
在这里插入图片描述
从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。

若求解最优化问题时,根据极小点的必要条件f(x)梯度为0,可知:
在这里插入图片描述
预测编码系数求解与最小二乘法总结_第3张图片牛顿法的每一次迭代都需要计算海瑟矩阵的逆矩阵,且这一步的计算很复杂。

高斯-牛顿迭代法

高斯牛顿法相较于牛顿法,避免了求解海瑟矩阵,大大降低了运算量,但是也有其缺点,即:容易和梯度下降法一样,陷入锯齿状,导致迭代次数较长且如果求出来的步太大,会导致其局部近似不精确,严重的时候,可能无法保证迭代收敛。
高斯-牛顿迭代法的步骤为:
预测编码系数求解与最小二乘法总结_第4张图片
这种方法避免了计算海瑟阵的复杂,高斯-牛顿法中为了避免发散,有两种解决方法

1.调整下降步伐:βs+1=βs+α Δ.0<α<1βs+1=βs+α Δ.0<α<1

2.调整下降方向:(JTJ+λD)Δ=JTr(JTJ+λD)Δ=JTr

λ→+∞λ→+∞时:Δ/λ→JTrΔ/λ→JTr,即方向和梯度方向一样,变成了梯度下降法。

相反,如果λ为0,就变成了高斯牛顿法。

好处在于可以调节:

如果下降太快,使用较小的λ,使之更接近高斯牛顿法

如果下降太慢,使用较大的λ,使之更接近梯度下降法

你可能感兴趣的:(预测编码系数求解与最小二乘法总结)