最小二乘法之梯度下降法、牛顿法和高斯牛顿法理解

最小二乘法是一种数学优化技术。他的基本思路是通过最小化误差的平方和从而最大化的拟合与数据匹配的函数表达式。不仅如此,通过最小二乘法还可以求出未知数据的大概数值等。

最小梯度法:
首先先明确一下梯度的概念,我们先从简单入手,假设有一个二元函数f(x,y),这个函数的梯度表达式如下:
在这里插入图片描述
我们可以注意到,这个表达式相当于将关于x和y的一个向量映射为了x关于f(x,y)的偏导和y关于f(x,y)的偏导的一个向量。我们都知道对于一个二元一次方程组来说,例如y = a·x + b,这个函数x的偏导事实上就是x关于y的导数,导数的意义是求出在某一个点上,x的斜率是多少,通俗一点说,就是看这个点的位置“陡不陡峭”。这是对于一个二维空间来说的,那么上述的二元函数f(x,y)则是针对于三维空间来说的。同理,f(x,y)中某一个点的梯度,事实上也是用来表示该点“陡不陡峭”的。
需要注意的是,因为梯度是一个向量,因此梯度表示的是各点处函数值减少最多的方向,例如f(x,y)的表达式为f(x,y) = x2 + y2,随意给定函数中的一点,我们要从该点找到梯度为0的地方,如图所示:
这是函数图像

最小二乘法之梯度下降法、牛顿法和高斯牛顿法理解_第1张图片
这是梯度

我们可以看到,各个点梯度指向的方向就是函数图像中最低点的位置,也就是梯度为0的点的位置,但需要注意的是,并不是所有的函数都像这个函数一样只拥有一个最低点,有的函数还拥有极小值、最小值、鞍点等,这些地方的梯度同样为0,也就是说也许用这个方法找到的点并不一定是我们想要找到的点。但使用这个方法可以沿着它的方向最大限度的减小函数的值,从而决定函数的前进方向。

牛顿法:
牛顿法主要是提供了一个对于非线性优化的解决办法啊,与梯度下降法使用的是梯度作为判定标准不同的是,牛顿法是在估计值附近将函数展开为泰勒2阶形式:
在这里插入图片描述
事实上还是对f(x)求导,应用这个方法时,需要将delta x无限趋近于0,求解后得到的迭代公式如下:
在这里插入图片描述
从式子中可以看出来,牛顿法不仅参考了一点的导数,还参考了导数的导数,也就是说,梯度下降法只考虑了该点是否在下降,而牛顿法考虑了下降后这个方向是不是依然在下降,可以优化梯度下降法中最终可能找到鞍点等错误的点的情况。

高斯牛顿法:
高斯牛顿法的与牛顿法类似也是使用泰勒级数展开式去近似代替回归模型,然后通过迭代与修正找到最佳的回归系数时的原模型的残差平方和最小。
该方法的基本思路是,假设有多个点(x,y),要拟合这些点,则设y = f(x,a1,a2,a3,a4,a5……),后面的那些a参数是用来拟合逼近函数的,也就是说,这个方法的最终目的实际上是通过迭代与拟合,找到最终合适的这些a参数。
为了找到合适的a参数,寻找的标准就是找到最小的残差,残差等于ri = yi - f(xi,a1,a2,a3,a4,a4……)。
那么根据残差,误差函数就可以得出来:ε(a)= ∑N​ri2
由此可知,误差函数越小,拟合的就更加接近,为了找到误差函数减小的方向,我们还是运用了求偏导的方法:
∂aj/​∂​ε(a) ​= ∂aj​/∂·∑N​[yi​− f(xi,a1,a2,a3,a4,a4……)]2 = 0
通过这种方法,再继续运算得到关于∂f(xi,a1,a2,a3,a4,a4……)/​∂​a的雅各比矩阵就可以最终求出来迭代表达式:
an+1 = an​−J(f(an​)−y) 。

参考文献:
1.深度学习入门-基于python的理论与实现
2.https://blog.csdn.net/piaoxuezhong/article/details/60135153?utm_medium=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-6.nonecase&depth_1-utm_source=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-6.nonecase

你可能感兴趣的:(最小二乘法之梯度下降法、牛顿法和高斯牛顿法理解)