模式识别系列(二)线性回归

目录

  • 1.线性回归
    • 1.1什么是线性回归
    • 1.2线性回归的最优解
  • 2.梯度下降法
    • 2.1什么是梯度下降法
    • 2.2线性回归梯度下降法
    • 2.3随机梯度下降法(SGD)
    • 2.4Mini-Batch

1.线性回归

1.1什么是线性回归

  线性回归的定义准确来说使用线性的回归方程,利用最小二乘的方式,对一元或多元变量的函数进行拟合。所谓回归,实际上就是拟合一个函数。在实际生活中,线性回归被应用于值预测和分类问题。举一个简单的例子,大部分出租车有个起步价,随着公里数变多,费用变高,那么做出租车要花多少钱呢?很简单,费用 y y y可以写成 y = k x + b y=kx+b y=kx+b,其中 x x x是乘坐出租车的公里数,如果我们获得的数据是公里数 x x x和费用 y y y,要求是给一个 x x x算出一个 y y y,通过最小二乘法拟合出的这条直线就是回归的结果。另一方面,如果我们将标签的+1和-1当做值,就可以做分类问题了。当然,线性回归做分类并不太好用,logistic回归会是更好选择,因为最小二乘法使用的是平方误差,不难想象,一个异常值造成的偏差影响是很大的。

1.2线性回归的最优解

  下面我们可以开始愉快的推公式环节了,导出理论上的线性回归的最优解。
  首先我们假设变量, x i \mathbf{x}_i xi为一个样本的特征向量,假设有D+1个维度(最后一个维度是1,为了把常数项放进来), X = ( x 1 , x 2 , . . . , x n ) T \mathbf{X} = (\mathbf{x}_1,\mathbf{x}_2,...,\mathbf{x}_n)^T X=(x1,x2,...,xn)T为样本组成的nd+1的矩阵,而 w \mathbf{w} w是待求的d+1维的权重,或者说回归系数, y n y_n yn是第n个样本对应的输出值, Y \mathbf{Y} Y是输出值构成的n1矩阵, Y ^ \mathbf{\hat{Y}} Y^则是预测的输出值。最小二乘法其实说穿了就是在优化这么一个损失函数,使之最小:
E = 1 N ∑ i = 1 n ( y n ^ − y n ) 2 E = \frac{1}{N}\sum_{i=1}^n(\hat{y_n} - y_n)^2 E=N1i=1n(yn^yn)2
将我们假设的变量带入,并且略去不影响结果的系数项,我们得到:
E = ( X w − Y ) 2 E= (\mathbf{X}\mathbf{w} - \mathbf{Y})^2 E=(XwY)2
而我们要求的就是:
min ⁡ w E ( w ) = ( X w − Y ) T ( X w − Y ) = w T X T X w − 2 w T X T Y + Y T Y \begin{aligned} \underset{\mathbf{w}}{\min}\quad E(\mathbf{w})&=(\mathbf{X}\mathbf{w} - \mathbf{Y})^T(\mathbf{X}\mathbf{w} - \mathbf{Y})\\ &=\mathbf{w}^T\mathbf{X}^T\mathbf{X}\mathbf{w} -2\mathbf{w}^T\mathbf{X}^T \mathbf{Y}+\mathbf{Y}^T\mathbf{Y} \end{aligned} wminE(w)=(XwY)T(XwY)=wTXTXw2wTXTY+YTY
自然而然的,我们可以想到对 w \mathbf{w} w求导,令 ∂ E ∂ w = 0 \frac{\partial E}{\partial \mathbf{w}} = 0 wE=0,不会矩阵求导的朋友可以参考Matrix Cookbook。求导后得到如下的结果:
2 X T X w − 2 X T Y = 0 2\mathbf{X}^T\mathbf{X}\mathbf{w} - 2\mathbf{X}^T\mathbf{Y} = 0 2XTXw2XTY=0
当样本数量大于特征维度时, X T X \mathbf{X}^T\mathbf{X} XTX是满秩矩阵,因此可以求逆,得到 w \mathbf{w} w的解:
w = ( X T X ) − 1 X T Y \mathbf{w} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y} w=(XTX)1XTY
在这里解释一下这个解,最小二乘法是可以给出最优解的。这个 w \mathbf{w} w就代表着在当前样本下,使得样本均方误差最小的解,这是全局的最优解,是唯一且确定的。

2.梯度下降法

2.1什么是梯度下降法

  上一节我们推导出了线性回归问题的最优解,那么是不是就此万事大吉了呢?显然不是这样,否则也没必要提出梯度下降的方法(梯度下降法可以用于很多的损失函数,本篇仅针对线性回归)。上节导出的最优解最要命的是有一个求逆的运算,而我们知道,逆矩阵的计算复杂度是 O ( n 3 ) O(n^3) O(n3),当输入的特征维度很高的时候,计算逆矩阵是很困难的。因此,引入了梯度下降的概念。梯度下降法的直观理解可以参考下图:
模式识别系列(二)线性回归_第1张图片

2.2线性回归梯度下降法

  梯度下降法的实质也是优化损失函数,线性回归梯度下降法优化的也是平方误差,区别在于最优解的求取过程中是全局的最优,而梯度下降关注的是局部最优。最小二乘拟合的时候直接求取了极值点,而梯度下降法则是在当前的 w \mathbf{w} w下寻找一个使损失函数变小的方向,通过迭代来完成,这样就避免了逆矩阵的求取,之前的求导过程我们得到 ∂ E ∂ w \frac{\partial E}{\partial \mathbf{w}} wE
∂ E ∂ w = X T X w − X T Y \frac{\partial E}{\partial \mathbf{w}} = \mathbf{X}^T\mathbf{X}\mathbf{w} - \mathbf{X}^T\mathbf{Y} wE=XTXwXTY
于是我们设定一个正的学习率 η \eta η,就可以得到 w \mathbf{w} w的更新公式:
w t + 1 = w t − η ⋅ ∂ E ∂ w t \mathbf{w}_{t+1} = \mathbf{w}_t - \eta \cdot \frac{\partial E}{\partial \mathbf{w}_t} wt+1=wtηwtE
结合上图可以看出, w t + 1 ​ w_{t+1}​ wt+1始终在向 J ( θ ) J(\theta) J(θ)也就是 E ( w ) E(w) E(w)更小的方向迭代。

2.3随机梯度下降法(SGD)

  梯度下降法固然不用求导,但是每一次迭代仍然使用了所有的样本,而SGD则是选择了抽取单个样本,从而损失函数从全局变成了局部:
E = ( X w − Y ) 2 E g = ( x i T w − y i ) 2 \begin{aligned} &E= (\mathbf{X}\mathbf{w} - \mathbf{Y})^2 \\ &E_g = (\mathbf{x_i}^ T\mathbf{w} - y_i)^2 \end{aligned} E=(XwY)2Eg=(xiTwyi)2
  于是梯度也变成了:
∂ E ∂ w t = x i T x i w t − x i T y i \frac{\partial E}{\partial \mathbf{w_t}} = \mathbf{x_i}^T\mathbf{x_i}\mathbf{w_t} - \mathbf{x_i}^Ty_i wtE=xiTxiwtxiTyi
  更新公式:
w t + 1 = w t − η ⋅ ∂ E ∂ w t \mathbf{w}_{t+1} = \mathbf{w}_t - \eta \cdot \frac{\partial E}{\partial \mathbf{w}_t} wt+1=wtηwtE
  显然,采用了SGD计算量小了很多,但是缺点也很直观,容易受到噪声影响,收敛的速度会变慢,震荡会更加厉害。

2.4Mini-Batch

  Mini-Batch可以说是SGD和BGD的折中选择,具体做法就是每一次迭代先将样本集分成若干个小的Batch,随后根据梯度下降法的公式,在每一个batch上更新梯度,这样既可以减少计算量,又可以抑制噪声,属于改进方法。我生成了两类遵从高斯分布的样本点,测试了一下梯度下降和最小二乘的结果,分类面是差不多的。LMS为最小二乘,SSE为梯度下降。

你可能感兴趣的:(人工智能,机器学习)