线性回归&基础优化算法

线性回归

导入:

美国买房 价格的影响因素: 卧室个数 卫生间个数 房屋大小 据此给出一个价格

影响因素记为关键因素 成交价记为y 权重为w 偏差为b
关键因素:x1,x2,x3关键因素: x_1, x_2, x_3 关键因素:x1​,x2​,x3​

y=w1x1+w2x2+w3x3+by = w_1x_1 + w_2x_2 + w_3x_3 + b y=w1​x1​+w2​x2​+w3​x3​+b

引入线性模型

给定n维输入x=[x1,x2,…,xn]T给定n维输入\,\,\,\,\,\mathbf{x}=[x_1, x_2,\ldots,x_n]^T 给定n维输入x=[x1​,x2​,…,xn​]T

线性模型有一个n维权重和一个标量偏差
w=[w1,w2,…,wn]T,b\mathbf{w} = [w_1,w_2,\ldots,w_n]^T, \,\,\,\,b w=[w1​,w2​,…,wn​]T,b
输出的是y即加权和
y=w1x1+w2x2+⋯+wnxn+by=w_1x_1+w_2x_2+\cdots+w_nx_n+b y=w1​x1​+w2​x2​+⋯+wn​xn​+b

如果用向量来表示的话是y=<w,x>+b如果用向量来表示的话是\,\,\,y=<\mathbf{w},\,\mathbf{x}>+b 如果用向量来表示的话是y=<w,x>+b

线性模型可以看作是单层的神经网络 即仅有一层输入层 箭头代表权重

衡量预估质量

用于衡量偏差 比较典型的是平方损失
假设y为真实值,y^是估计值,我们比较l(y,y^)=12(y−y^)2假设y为真实值,\hat{y}是估计值,我们比较\,\,\,l(y,\hat{y})=\frac{1}{2}(y-\hat{y})^2 假设y为真实值,y^​是估计值,我们比较l(y,y^​)=21​(y−y^​)2

训练数据

​ 收集一些数据点决定参数值,在此例子中我们寻找过去六个月卖的房子,训练数据通常越多越好,在数量不足时会有一些算法进行处理

在这里我们设有n个样本,记
X=[x1,x2,…,xn]Ty=[y1,y2,…,yn]T\mathbf{X}=[\mathbf{x_1},\mathbf{x_2},\ldots,\mathbf{x_n}]^T\,\,\,\,\,\,\,\,\,\mathbf{y}=[y_1,y_2,\ldots,y_n]^T X=[x1​,x2​,…,xn​]Ty=[y1​,y2​,…,yn​]T

参数学习

  1. 训练损失
    l(X,y,w,b)=12n∑i=1n(yi−<xi,w>−b)2=12n∣∣y−Xw−b∣∣2l(\mathbf{X},\mathbf{y},\mathbf{w},b)=\frac{1}{2n}\sum_{i=1}^n(y_i-<\mathbf{x}_i,\mathbf{w}>-b)^2=\frac{1}{2n}||\mathbf{y}-\mathbf{Xw}-b||^2 l(X,y,w,b)=2n1​i=1∑n​(yi​−<xi​,w>−b)2=2n1​∣∣y−Xw−b∣∣2
    这是我们要训练的函数,即我们会将参数Xy代入得到关于wb的函数

  2. 最小化损失
    w∗,b∗=argmin⁡w,bl(X,y,w,b)\mathbf{w}^*,b^*=arg\,\min_{\mathbf{w},b}\,l(\mathbf{X},\mathbf{y},\mathbf{w},b) w∗,b∗=argw,bmin​l(X,y,w,b)

  3. 显示解

    ​ 值得注意的是,线性模型是有显示解的,也是课程里唯一有显示解、最优解的模型。

    ​ 我们可以将偏差加入权重向量,具体做法是在输入矩阵末尾加入全1行向量,在权重向量末尾添加b,道理比较浅显。

    ​ 在此前提下,损失函数对权重向量求导,由于损失函数是个凸函数,最优解在导函数为0是取得。

基础优化算法

梯度下降

  1. 挑选初始值 $w_0 $

  2. t迭代
    wt=wt−1−ηδlδwt−1\mathbf{w}_t=\mathbf{w}_{t-1}-\eta\frac{\delta l}{\delta \mathbf{w}_{t-1}} wt​=wt−1​−ηδwt−1​δl​

    • 沿梯度方向增加损失函数值 自然沿反方向会减少值
    • 学习率:步长 是一个超参数

​ 事实上,每一个黄色箭头相当于迭代一次,沿梯度下降最快的方向前进一个步长。

​ 注意:选择学习率不能太小(计算代价太大,容易陷入局部最优解)

​ 也不能太大(容易发生震荡现象)

小批量随机梯度下降

  • 由于在整个训练集上算梯度太贵

  • 我们选择随机采样b个样本 i1,i2,…,ibi_1,i_2,\ldots,i_bi1​,i2​,…,ib​ 来近似损失
    1b∑i∈Ibl(Xi,yi,w)\frac{1}{b}\sum_{i\in I_b}l(\mathbf{X}_i,y_i,\mathbf{w}) b1​i∈Ib​∑​l(Xi​,yi​,w)

    • b为批量大小,是另一个重要的超参数

小规模随机梯度下降的优点是采用样本近似,在一定程度上会降低内存消耗

需要注意的是批量大小的选择同样要适中,后续会有对其选择的讲解

代码实现(不调包版)