跳到主要内容

用线性单元做回归

线性单元对输入作仿射组合,预测一个实数。本页推导平方损失的梯度,不使用经典感知机的硬阈值激活或按误分类更新的规则。

用线性单元做回归

训练通过调整权重和偏置,使选定损失最小化。这就是线性回归,不是神经元的生物学模型。《动手学深度学习》也采用相同的线性输出和半平方损失约定。

数学表示

给定输入 x1,x2,...,xnx_1, x_2, ..., x_n、对应权重 w1,w2,...,wnw_1, w_2, ..., w_n 及偏置项 bb,线性单元的输出 y^\hat{y} 为:

y^=i=1nwixi+b\hat{y} = \sum_{i=1}^n w_i x_i + b

在线性回归中,y^\hat{y} 即为预测值,例如预测房屋价格。

损失函数

回归常用均方误差(MSE)。这里取其一半,以简化求导:

L(y,y^)=12Ni=1N(yiy^i)2L(y, \hat{y}) = \frac{1}{2N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2

其中 yiy_i 为真实值,y^i\hat{y}_i 为预测值,NN 为样本数。

梯度下降

梯度下降算法

为最小化损失函数,梯度下降按以下规则更新参数:

  • wi(new)=wi(old)αLwiw_i^{(new)} = w_i^{(old)} - \alpha \frac{\partial L}{\partial w_i}
  • b(new)=b(old)αLbb^{(new)} = b^{(old)} - \alpha \frac{\partial L}{\partial b}

这里 α\alpha 是学习率,控制优化过程中的步长。

导数计算

参数更新依赖损失函数对各参数的导数,需通过链式法则求解。对于简单的二次损失函数(L=12(yy^)2L = \frac{1}{2}(y - \hat{y})^2),推导如下:

损失函数对预测值的导数

dLdy^=(yy^)\frac{dL}{d\hat{y}} = - (y - \hat{y})

预测值对参数的偏导数

  • 对偏置(bb):
dy^db=1\frac{d\hat{y}}{db} = 1
  • 对权重(w1w_1):
dy^dw1=x1\frac{d\hat{y}}{dw_1} = x_1
  • 对权重(w2w_2):
dy^dw2=x2\frac{d\hat{y}}{dw_2} = x_2

链式法则应用

结合上述结果,计算损失函数对各参数的梯度:

  • 对偏置(bb):
dLdb=dLdy^dy^db=(yy^)\frac{dL}{db} = \frac{dL}{d\hat{y}} \cdot \frac{d\hat{y}}{db} = - (y - \hat{y})
  • 对权重(w1w_1):
dLdw1=dLdy^dy^dw1=(yy^)x1\frac{dL}{dw_1} = \frac{dL}{d\hat{y}} \cdot \frac{d\hat{y}}{dw_1} = - (y - \hat{y}) \cdot x_1
  • 对权重(w2w_2):
dLdw2=dLdy^dy^dw2=(yy^)x2\frac{dL}{dw_2} = \frac{dL}{d\hat{y}} \cdot \frac{d\hat{y}}{dw_2} = - (y - \hat{y}) \cdot x_2

更新规则

将导数代入梯度下降公式,参数迭代更新如下:

  • w1(new)=w1(old)α[(yy^)x1]w_1^{(new)} = w_1^{(old)} - \alpha \cdot [ - (y - \hat{y}) \cdot x_1 ]
  • w2(new)=w2(old)α[(yy^)x2]w_2^{(new)} = w_2^{(old)} - \alpha \cdot [ - (y - \hat{y}) \cdot x_2 ]
  • b(new)=b(old)α[(yy^)]b^{(new)} = b^{(old)} - \alpha \cdot [ - (y - \hat{y}) ]

通过反复迭代,梯度下降使 w1,w2w_1, w_2bb 收敛至使损失函数最小的值,从而降低预测误差。

总结

链式法则将损失的导数与预测的导数分开。同一方法可以扩展到非线性网络,但这里的模型关于输入仍是仿射的。

从单个样本到一个批次

公式中的 1/21/2 使损失等于均方误差的一半,求导时正好抵消平方项产生的 22。令 ii 为样本下标、jj 为特征下标,ri=y^iyir_i=\hat y_i-y_i,则全批次梯度为

Lwj=1Nirixij,Lb=1Niri.\frac{\partial L}{\partial w_j}=\frac1N\sum_i r_i x_{ij},\qquad \frac{\partial L}{\partial b}=\frac1N\sum_i r_i.

前面的标量公式对应 N=1N=1。取 x=(2,1)x=(2,-1)y=3y=3,所有参数初始为零,则 r=3r=-3,梯度为 (L/w1,L/w2,L/b)=(6,3,3)(\partial L/\partial w_1,\partial L/\partial w_2,\partial L/\partial b)=(-6,3,-3)。用 α=0.1\alpha=0.1 同时更新,得到 (w1,w2,b)=(0.6,0.3,0.3)(w_1,w_2,b)=(0.6,-0.3,0.3)。预测值变为 1.81.8,半平方损失从 4.54.5 降到 0.720.72

批量训练时,先用同一组参数计算并平均样本梯度,再更新。特征固定时,这个二次目标函数凸,但权重唯一还要求设计矩阵列满秩。收敛仍需要合适的步长。单个线性单元不能表达任意非线性关系,训练损失低也不能证明它对新数据预测得好。

探索关联打开关联网络