深度学习系列1:从线性回归说起

引言

​深度学习系列第一篇,我们从线性回归说起。

一元线性回归

你的朋友问你,在海淀区买一套 60 平米左右的小两居需要多少钱?你该如何回答他呢。

深度学习系列1:从线性回归说起

负责任的你并没有冒然回答,而是从网上找了一些房子的数据,建立了下面的表格。

深度学习系列1:从线性回归说起

并根据表格中的数据做出了下图

深度学习系列1:从线性回归说起

图中每个点代表一条数据,如果可以找到图中红线所示拟合各个数据点的线性方程 y = wx + b, 然后把 x = 60 带进去就可以回复朋友了。

从数据中确定(w,b)从而确定线性方程的过程就是线性回归,这里我们只有一个变量 x, 所以又称为一元线性回归。

现在假设我们找到了一对(w,b)得到一个方程 y = wx + b, 那么怎么评估这个方程的效果呢?

直观来看我们希望方程尽可能符合所有的数据点,也就是对于每个 x ,我们希望方程预测的值 y^\hat y 与真实值 yy 的差异越小越好,这里有 m 个样本,我们把 m 个样本的误差平方和作为整体的误差 loss:

loss=min(12i=1m(y^iyi)2) loss = min(\frac 12 \sum_{i=1}^m (\hat y_i - y_i)^2)

其中 yiy_i 表示 xix_i 的真实价格,而 y^i\hat y_i 表示 xix_i 在方程上预测的值,12\frac12 是为了求解方便。

多元线性回归

现在你的方程只需要输入面积就可以得到房价,朋友很满意。但他感觉你的方程太笼统了,房价不仅与面积有关,还和房子的地段、房龄、装修甚至绿化都有关系,你能不能再帮他建立一个方程,综合房子的面积、房龄、位置等因素,预测房屋的价格。

为此你又上网搜集了如下数据。

深度学习系列1:从线性回归说起

变量多了,但道理是相通的,我们需要找到一个含有 n 个变量的方程:

y=w1x1+w2x2+...+wnxn+b y = w_1x_1 + w_2x_2 + ... + w_nx_n + b

矩阵形式

y=[w1wn][x1xn]+b y = \begin{bmatrix}w_{1} & \dots & w_{n}\end{bmatrix} \begin{bmatrix}x_{1} \\ \vdots \\ x_{n}\end{bmatrix} + b

因为有 m 个样本,m 个样本的矩阵形式

[y1ym]=[w1wn][x1x1mxnxnm]+b \begin{bmatrix}y_{1} & \dots & y_{m}\end{bmatrix} = \begin{bmatrix}w_{1} & \dots & w_{n}\end{bmatrix} \begin{bmatrix}x_{1} & \dots & x_{1m}\\ \vdots &\ddots & \vdots \\ x_{n} & \dots & x_{nm}\end{bmatrix} + b

也即

Y1m=W1nXnm+b Y_{1m} = W_{1n} * X_{nm} + b

其中:

  • nn 表示变量维度
  • mm 表示样本个数
  • xix_i 表示不同的变量
  • wiw_i 表示变量的权重
  • b 表示偏移量。

和一元线性回归一样,我们希望方程预测的值 y^\hat y 与真实值 yy 的差异越小越好,所以需要把 m 个样本的误差加起来作为整体的误差 loss:

loss=min(12i=1m(y^iyi)2) loss = min(\frac12\sum_{i=1}^m (\hat y_i - y_i)^2)

其中 yiy_i 表示 xix_i 的真实价格,而 y^i\hat y_i 表示 xix_i 在方程上预测的值。

求解线性回归方程

接下来看看通过一组数据如何找到误差最小的 (W,b) 从而确定线性回归方程。

问题描述

求解参数 w,b,使得矩阵方程

Y1m=W1nXnm+b Y_{1m} = W_{1n} * X_{nm} + b
的 loss 最小。

loss=min(12i=1m(y^iyi)2) loss = min(\frac12\sum_{i=1}^m (\hat y_i - y_i)^2)

线性回归的求解方法通常有两种,最小二乘法和梯度下降法。

最小二乘法

最小二乘法直接求解方程的偏导数为 0 的点,因为凸函数偏导数为 0 的驻点即为最小值点。

深度学习系列1:从线性回归说起
损失函数 Loss

Loss=12i=1m(y^iyi)2=12(WX+bY)2 \begin{aligned} Loss &= \frac12\sum_{i=1}^m (\hat y_i - y_i)^2 \\ &= \frac12(WX + b - Y)^2 \end{aligned}

求 W, b 的偏导数
LossW=12(WX+bY)2W=1m(WX+bY)XT \begin{aligned} \frac{\partial Loss}{\partial W} &= \frac{\partial \frac12(WX + b - Y)^2}{\partial W} \\ &= \frac 1m(WX + b - Y)X^T \end{aligned}
Lossb=12(WX+bY)2b=1m(WX+bY) \begin{aligned} \frac{\partial Loss}{\partial b} &= \frac{\partial \frac12(WX + b - Y)^2}{\partial b} \\ &= \frac 1m(WX + b - Y) \end{aligned}

令两个偏导数都为 0,可以得出
W=(Yb)XT(XXT)1b=1n(YWX) \begin{aligned} W &= (Y-b)X^T(XX^T)^{-1} \\ b &= \frac 1n (Y - WX) \end{aligned}

梯度下降法

梯度下降法是一个逐步逼近的过程,每次沿着导数下降的方向行走一个步长,最终到达最低点。

深度学习系列1:从线性回归说起

  1. 先随机生成 W,b
  2. 求dW, db,这一步同最小二乘法
    dW=1m(WX+bY)XTdb=1m(WX+bY) \begin{aligned} dW &= \frac 1m(WX + b - Y)X^T \\ db &= \frac 1m(WX + b - Y) \end{aligned}
  3. 更新 W,b
    W=WαdWb=bαdb \begin{aligned} W &= W - \alpha\,dW \\ b &= b - \alpha\,db \end{aligned}

其中 α\alpha 为每次更新的步长, 又叫做学习率。

这样经过多轮后,方程逼近最小值,W, b 逼近最优值。

后记

线性回归先聊到这里,我们注意到线性回归的预测结果是连续的值,比如房价。那么对于分类问题比如某套房子是否值得买,又应该怎样求解呢?下次我们就一起来聊聊解决二分类问题的逻辑回归。

欢迎关注本人公众号《大数据茶馆》,用大白话畅聊大数据。

来的都是客,欢迎您常来坐坐~

深度学习系列1:从线性回归说起