本文针对线性回归这一无约束最优化问题,深入分析最小二乘、梯度下降和牛顿法三种优化求解方法的优缺点,是对三种方法的原理学习总结。
无约束最优化问题,是指在一个给定的集合S上泛函J(θ)的极小化或极大化问题。
1.应用场景引入
数据间往往大体趋势呈现出线性关系,但并不完全满足。我们希望得到唯一的线性关系,表示输入数据到输出数据之间映射的函数,使其很好的拟合已知函数并预测未知数据,即线性回归问题。
最小二乘法是一种确立数据间最好的映射函数的优化技术,梯度下降和牛顿法是两种可根据这种优化技术中的评估准则求解最优映射函数的具体方法。
最小二乘法:以偏差的最小平方和为评估准则,求解最佳映射函数回归系数的解析解,结果为全局最优;
梯度下降和牛顿法:两种通过迭代更新来逐步进行的参数优化方法,假设条件更为广泛(无约束)的,结果一般为局部最优;
2.从最大似然解释最小二乘
最大似然估计是一种“模型已定,参数未知”的方法。利用已知的样本的结果,在使用某个模型的基础上,反推最有可能导致这样结果的模型参数值。
根据高斯-马尔科夫定理,在线性回归模型中,如果误差满足零均值、同方差且互不相关,则回归系数的最佳线性无偏估计(BLUE, Best Linear unbiased estimator)就是普通最小二乘法估计。特别地,当随机噪声服从正态分布时,最小二乘与最大似然等价。
求解最大似然估计的一般过程为:
- 写出似然函数(生成已知样本的联合概率);
- 如果无法直接求导的话,对似然函数取对数;
- 求导数 ;
- 求解模型中参数的最优值。
线性回归模型的似然函数为:
![](https://img-%0ablog.csdnimg.cn/20190823132846424.png)
假设随机误差 ε是独立同分布的,服从数学期望为μ、方差为σ^2 的正态分布(中心极限定理)。误差 ε的概率密度函数为:
![](https://i-blog.csdnimg.cn/blog_migrate/4ff604d9aee360bc387f5c6f2ec8def8.png)
y、x取值的概率密度函数:
![](https://i-blog.csdnimg.cn/blog_migrate/cab540ebf584a92dd14757880a1211cc.png)
联合概率无法获取的时候,概率密度积最大便最大似然。由此得到线性回归模型参数θ的似然估计:
![](https://i-blog.csdnimg.cn/blog_migrate/a490135161e44a0490d0ac3153f049af.png)
对似然估计取对数:
![](https://i-blog.csdnimg.cn/blog_migrate/c1c718abc5b59a05dcfb849af3a11eb8.png)
要使 l(θ) 最大,则上式减号右边的式子最小,即下式最小。
![](https://i-blog.csdnimg.cn/blog_migrate/b705bf0ee9f2e7e2909c65be8ceab4f4.png)
与最小二乘的评价准则偏差的最小平方和相同,由此可解释当随机噪声服从正态分布时,最小二乘与最大似然等价。同时证明了最小二乘的合理性。
最小二乘法:即观测值与实际数据误差平方和最小,其没有假设,几何意义上就是距离最小。
最大似然估计:估计参数可能值,使样本发生概率最大。
3.最小二乘求解线性回归系数
设一元线性回归模型为y=ax+b。
根据最小二乘的评价准则,使得axi+b与yi的偏差平方和最小的参数a、b确定了源数据(xi,yi)的最优回归直线。即确定二元函数:
![](https://i-blog.csdnimg.cn/blog_migrate/92881538042af16b625cf94fe1dbf643.png)
的最小值。若L(a,b)的极值就是最小值即存在最优回归直线,那么Hessian矩阵:
![](https://i-blog.csdnimg.cn/blog_migrate/6c38eb6b308794defbc413e1ab0e5955.png)
就必须是正定的。求二元函数L的二阶偏导:
![](https://i-blog.csdnimg.cn/blog_migrate/ca84a0a3ce7f8b271f867f8d8f9754ef.png)
则H(L)的行列式:
![](https://i-blog.csdnimg.cn/blog_migrate/057c86f268f81ea563c7c827d412a3b9.png)
又因为1阶顺序主子式大于0,所以H(L)正定。最小值存在,最优回归直线存在。
所以L(a,b)的驻点就是极小值点。利用克拉默法则,首先令L(a,b)的一阶偏导:
![](https://i-blog.csdnimg.cn/blog_migrate/7dab016568f7e6bcd43b0842eb77ea90.png)
等于0,得到系数行列式D:
![](https://i-blog.csdnimg.cn/blog_migrate/40d0bc726612586d31a9d85dcb308708.png)
D不等于0,线性方程组有唯一解:
![](https://i-blog.csdnimg.cn/blog_migrate/5f1e165eca479b0a26ba086f8d627195.png)
于是通过最小二乘法得到最优归回直线:y=ax+b。
3.梯度下降法
3.1梯度
在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。从几何意义上讲,就是函数变化增加最快的地方。或者说,沿着梯度向量的方向,更容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,梯度减少最快,也就是更容易找到函数的最小值。
在解决线性回归问题时,针对最小二乘法中的偏差平方和评估准则,可以通过梯度下降法来一步步的迭代求解,得到最小平方和的映射函数参数值。
假设L(θ)为偏差平方和函数,其中θ为要求解的映射函数参数。梯度下降法是一种 迭代方法:选取初值θ0,不断迭代,更新θ的值,进行L(θ)的极小化。
迭代公式:
![](https://i-blog.csdnimg.cn/blog_migrate/bc928a85d6bcd3440eaa916d5fc2e848.png)
泰勒函数是一个用函数在某点的信息描述其附近取值的公式,具有局部有效性。将L(θt)在L(θt-1)处进行一阶泰勒展开:
![](https://i-blog.csdnimg.cn/blog_migrate/b9483cd926306533f98b46bf44de051a.png)
要使得:
![](https://i-blog.csdnimg.cn/blog_migrate/f627350b6fafd15c9b7e7e95a3b7fe0e.png)
可取:
![](https://i-blog.csdnimg.cn/blog_migrate/e2e54423e06277a18d20af77f78cf826.png)
则:
![](https://i-blog.csdnimg.cn/blog_migrate/71abe1c5677d2182609d34e4dbc1db77.png)
这里∂是步长,可通过line search确定,但一般直接赋一个小的数。
梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
3.2批量梯度下降法
批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有的样本来进行更新,迭代公式为:
![](https://i-blog.csdnimg.cn/blog_migrate/bdcd00036bb2fd6134d6cf166e45decb.png)
3.3随机梯度下降法
随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本来求梯度。迭代公式为:
![](https://i-blog.csdnimg.cn/blog_migrate/38165def04b148ebe874e737254ffdd0.png)
3.4小批量梯度下降法
小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是可以选取m+1个样本来迭代,即若干个样本的平均梯度作为更新方向,根据样本的数据,可以调整选取样本的数量。迭代公式为:
![](https://i-blog.csdnimg.cn/blog_migrate/7254756949d400c7bdb34dd8d43bf945.png)
对于训练速度来说,随机梯度下降法由于每次仅仅采用一个样本来迭代,训练速度很快,而批量梯度下降法在样本量很大的时候,训练速度不能让人满意。对于准确度来说,随机梯度下降法用于仅仅用一个样本决定梯度方向,导致解很有可能不是最优。对于收敛速度来说,由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。所以说小批量梯度下降法是一种性能折中的设计。
4.牛顿法
将L(θt)在L(θt-1)处进行二阶泰勒展开:
![](https://i-blog.csdnimg.cn/blog_migrate/cf70de0be6732f7cbaa1a9baf2a82c5d.png)
为了简化分析过程,假设参数是标量(即θ只有一维),则可将一阶和二阶导数分别记为g和h:
![](https://i-blog.csdnimg.cn/blog_migrate/67313b30dbb382f13248fc38e252a6bc.png)
要使得L(θt)极小,即让右侧后两项极小,可令:
![](https://i-blog.csdnimg.cn/blog_migrate/a98c3da8c33d2251e591eaf4e3790124.png)
求得:
![](https://i-blog.csdnimg.cn/blog_migrate/ab835d8fdad3fcd97b3982fd1c254fd0.png)
故:
![](https://i-blog.csdnimg.cn/blog_migrate/18207a7e7ac96017d9131a86248592f6.png)
参数θ推广到向量形式,迭代公式为:
![](https://i-blog.csdnimg.cn/blog_migrate/13c74d266a7a4bd22590f063bcd28cf4.png)
这里H是海森矩阵(Hesse)。
牛顿法需要求Hesse矩阵的逆,容易出现数值不稳定的情况。拟牛顿法不是直接去求Hesse矩阵,而是通过梯度函数g和两个X点的位移来构造与Hesse相似的正定矩阵来代替,减少运算的复杂度.
5.区别与优缺点总结
最小二乘法和梯度下降、牛顿法相比:
-
梯度下降与牛顿法是迭代求解,最小二乘法是计算解析解。
-
迭代求解需要选择步长,快迭代到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,而且往往只能找到局部最小。
-
如果样本量不算很大,且存在解析解,最小二乘法比起梯度下降与牛顿法要有优势,计算速度很快。但是如果样本量很大,用最小二乘法由于需要求一个超级大的逆矩阵,这时就很难或者很慢才能求解解析解了,使用迭代的梯度下降与牛顿法比较有优势。
梯度下降法和牛顿法相比:
- 两者都是迭代求解,不过梯度下降法是梯度求解,而牛顿法是用二阶的海森矩阵的逆矩阵求解。
- 相对而言,使用牛顿法收敛更快。但是每次迭代的时间比梯度下降法长。