1.线性回归 linear-regression
1.1 一个简化模型
问题引入:房价预测,究竟什么决定着房价。
简化模型为: y = w 1 x 1 + w 2 + w 3 + b y=w_1x_1+w_2+w_3+b y=w1x1+w2+w3+b
1.2 线性模型
1.2.1 模型公式定义
- 给定n为输入: x = [ x 1 , x 2 , . . . , x n ] T \mathbf{x}=[x_1,x_2,...,x_n]^T x=[x1,x2,...,xn]T
- 线性模型中有一个n维权重和一个标量偏差
w = [ w 1 , w 2 , . . . , w n ] T , b \mathbf{w}=[w_1,w_2,...,w_n]^T,b w=[w1,w2,...,wn]T,b
-
输出是输入的加权和
y = w 1 x 1 + w 2 x 2 + . . . + w n x n + b y = w_1x_1+w_2x_2+...+w_nx_n+b y=w1x1+w2x2+...+wnxn+b
-
向量版本: y = < w , x > + b y = < \mathbf{w,x} >+b y=<w,x>+b
1.2.2 线性模型可以看做是单层神经网络
由于带权重的层只有一个,所以是单层神经网络
1.2.3 衡量预估质量
-
比较真实值和预估值,例如房屋售价和估价
-
假设y是真实值,$ \hat{y}$是估计值,我们可以比较
ι ( y , y ^ ) = 1 2 ( y − y ^ ) 2 \iota(y,\hat{y})=\frac{1}{2}(y-\hat{y})^2 ι(y,y^)=21(y−y^)2,这个叫做平方损失
这里的 1 2 \frac{1}{2} 21是为了求导时消去
1.3 训练数据
对于训练数据,理论上越多越好,但是现实中往往不是这样,没有足够的训练样本,之后会有深入的讨论,这里先不提。
参数学习
- 其实就是就算估计值和真实值之间的平方损失。
- 目标就是找到参数w和b使得损失函数的值最小
显示解
由于是线性模型所以存在显示解,即最优解可以直接求出来(线性模型也是唯一有最优解的模型,之后的模型都是没有最优解的)
- 将偏差加入权重,即使输入样本X和参数w能够完成矩阵乘法
1.4 总结
- 线性回归是对n维输入的加权,外加偏差
- 使用平方损失来衡量预测值和真实值的差异
- 线性回归有显示解
- 线性回归可以看做是单层神经网络
2.基础优化方法
2.1 梯度下降
一个模型没有显示解的时候怎么办呢?解决方法:首先随机挑选一个初始值w,之后根据规则进行迭代
按照负梯度的值下降,负梯度是下降最快的方向,走的步长就是学习率。学习率是一个超参数。这样的好处就是不用管显示解,按照这个算法进行就可了。
比如:我下山的时候,不沿着大路走,而是每走一步都是沿着最陡峭的方向走,这样一步步走到山脚。
选择学习率
- 不能太小,太小了就需要很多步才能到达,而计算梯度是一件很贵的事情。计算梯度基本上是模型中最贵的部分,一般不能太多次梯度计算。
- 不能太大,震荡
小批量随机梯度下降
- 在整个训练集上算梯度太贵
- 一个深度神经网络模型可能需要数分钟至数小时
- 那么我们就可以采用随机b个样本来近似损失
- 1 b ∑ l ( x i , y i , w ) \frac{1}{b}\sum l(\mathbf{x_i},y_i,\mathbf{w}) b1∑l(xi,yi,w)
- b是批量大小,另外一个重要的超参数
梯度的计算复杂度是和样本大小线性相关的,批量大小也不能太大和太小。
总结
- 梯度下降通过不断沿着反梯度方向更新参数求解
- 小批量随机梯度下降是深度学习默认的求解方法
- 两个重要的超参数是批量大小和学习率
3.线性回归的实现
分为从0开始实现和使用api实现,实际运用中都是采用后者,但是从零开始实现有利于更加清晰滴理解线性回归的实现过程
见 01-linear-regression-impl