线性回归的基本内容
以房价预测来解释线性回归的基本要素。
模型定义
设房屋的面积为 x 1 x_1 x 1 ,房龄为 x 2 x_2 x 2 ,售出价格为 y y y 。我们需要建立基于输入 x 1 x_1 x 1 和 x 2 x_2 x 2 来计算输出 y y y 的表达式,也就是模型(model)。
y ^ = x 1 w 1 + x 2 w 2 + b
\hat{y} = x_1 w_1 + x_2 w_2 + b
y ^ = x 1 w 1 + x 2 w 2 + b
其中 w 1 w_1 w 1 和 w 2 w_2 w 2 是权重(weight),b b b 是偏差(bias),且均为标量。它们是线性回归模型的参数(parameter)。模型输出 y ^ \hat{y} y ^ 是线性回归对真实价格 y y y 的预测或估计。我们通常允许它们之间有一定误差。
模型训练
训练就是通过数据来寻找特定的模型参数,使模型在数据集上的误差尽可能小。
训练数据
我们通常收集一系列的真实数据,例如多栋房屋的真实售出价格和它们对应的面积和房龄。在机器学习术语里,该数据集被称为训练数据集(training data set)或训练集(training set),一栋房屋被称为一个样本(sample),其真实售出价格叫作标签(label),用来预测标签的两个因素叫作特征(feature)。特征用来表征样本的特点。
假设我们采集的样本数为 n n n ,索引为 i i i 的样本的特征为 x 1 ( i ) x_1^{(i)} x 1 ( i ) 和 x 2 ( i ) x_2^{(i)} x 2 ( i ) ,标签为 y ( i ) y^{(i)} y ( i ) 。对于索引为 i i i 的房屋,线性回归模型的房屋价格预测表达式为
y ^ ( i ) = x 1 ( i ) w 1 + x 2 ( i ) w 2 + b
\hat{y}^{(i)} = x_1^{(i)} w_1 + x_2^{(i)} w_2 + b
y ^ ( i ) = x 1 ( i ) w 1 + x 2 ( i ) w 2 + b
损失函数
在模型训练中,我们需要衡量价格预测值与真实值之间的误差。通常我们会选取一个非负数作为误差,且数值越小表示误差越小。一个常用的选择是平方函数。它在评估索引为 i i i 的样本误差的表达式为
ℓ ( i ) ( w 1 , w 2 , b ) = 1 2 ( y ^ ( i ) − y ( i ) ) 2 \ell^{(i)}(w_1, w_2, b) = \frac{1}{2} \left(\hat{y}^{(i)} - y^{(i)}\right)^2 ℓ ( i ) ( w 1 , w 2 , b ) = 2 1 ( y ^ ( i ) − y ( i ) ) 2
其中常数 1 2 \frac 1 2 2 1 使对平方项求导后的常数系数为1,这样在形式上稍微简单一些。在机器学习里,将衡量误差的函数称为损失函数(loss function)。这里使用的平方误差函数也称为平方损失(square loss)。
通常,我们用训练数据集中所有样本误差的平均来衡量模型预测的质量,即
ℓ ( w 1 , w 2 , b ) = 1 n ∑ i = 1 n ℓ ( i ) ( w 1 , w 2 , b ) = 1 n ∑ i = 1 n 1 2 ( x 1 ( i ) w 1 + x 2 ( i ) w 2 + b − y ( i ) ) 2
\ell(w_1, w_2, b) =\frac{1}{n} \sum_{i=1}^n \ell^{(i)}(w_1, w_2, b) =\frac{1}{n} \sum_{i=1}^n \frac{1}{2}\left(x_1^{(i)} w_1 + x_2^{(i)} w_2 + b - y^{(i)}\right)^2
ℓ ( w 1 , w 2 , b ) = n 1 i = 1 ∑ n ℓ ( i ) ( w 1 , w 2 , b ) = n 1 i = 1 ∑ n 2 1 ( x 1 ( i ) w 1 + x 2 ( i ) w 2 + b − y ( i ) ) 2
在模型训练中,我们希望找出一组模型参数,记为 w 1 ∗ , w 2 ∗ , b ∗ w_1^*, w_2^*, b^* w 1 ∗ , w 2 ∗ , b ∗ ,来使训练样本平均损失最小:
w 1 ∗ , w 2 ∗ , b ∗ = arg min w 1 , w 2 , b ℓ ( w 1 , w 2 , b )
w_1^*, w_2^*, b^* = \underset{w_1, w_2, b}{\arg\min} \ell(w_1, w_2, b)
w 1 ∗ , w 2 ∗ , b ∗ = w 1 , w 2 , b arg min ℓ ( w 1 , w 2 , b )
优化算法
当模型和损失函数形式较为简单时,上面的误差最小化问题的解可以直接用公式表达出来。这类解叫作解析解(analytical solution)。然而,大多数深度学习模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值。这类解叫作数值解(numerical solution)。
在求数值解的优化算法中,小批量随机梯度下降(mini-batch stochastic gradient descent)在深度学习中被广泛使用。它的算法很简单:先选取一组模型参数的初始值,如随机选取;接下来对参数进行多次迭代,使每次迭代都可能降低损失函数的值。在每次迭代中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch)B \mathcal{B} B ,然后求小批量中数据样本的平均损失有关模型参数的导数(梯度),最后用此结果与预先设定的一个正数的乘积作为模型参数在本次迭代的减小量。
在训练本节讨论的线性回归模型的过程中,模型的每个参数将作如下迭代:
w 1 ← w 1 − η ∣ B ∣ ∑ i ∈ B ∂ ℓ ( i ) ( w 1 , w 2 , b ) ∂ w 1 = w 1 − η ∣ B ∣ ∑ i ∈ B x 1 ( i ) ( x 1 ( i ) w 1 + x 2 ( i ) w 2 + b − y ( i ) ) , w 2 ← w 2 − η ∣ B ∣ ∑ i ∈ B ∂ ℓ ( i ) ( w 1 , w 2 , b ) ∂ w 2 = w 2 − η ∣ B ∣ ∑ i ∈ B x 2 ( i ) ( x 1 ( i ) w 1 + x 2 ( i ) w 2 + b − y ( i ) ) , b ← b − η ∣ B ∣ ∑ i ∈ B ∂ ℓ ( i ) ( w 1 , w 2 , b ) ∂ b = b − η ∣ B ∣ ∑ i ∈ B ( x 1 ( i ) w 1 + x 2 ( i ) w 2 + b − y ( i ) ) .
\begin{aligned}
w_1 &\leftarrow w_1 - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \frac{ \partial \ell^{(i)}(w_1, w_2, b) }{\partial w_1} = w_1 - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}}x_1^{(i)} \left(x_1^{(i)} w_1 + x_2^{(i)} w_2 + b - y^{(i)}\right),\\
w_2 &\leftarrow w_2 - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \frac{ \partial \ell^{(i)}(w_1, w_2, b) }{\partial w_2} = w_2 - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}}x_2^{(i)} \left(x_1^{(i)} w_1 + x_2^{(i)} w_2 + b - y^{(i)}\right),\\
b &\leftarrow b - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \frac{ \partial \ell^{(i)}(w_1, w_2, b) }{\partial b} = b - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}}\left(x_1^{(i)} w_1 + x_2^{(i)} w_2 + b - y^{(i)}\right).
\end{aligned}
w 1 w 2 b ← w 1 − ∣ B ∣ η i ∈ B ∑ ∂ w 1 ∂ ℓ ( i ) ( w 1 , w 2 , b ) = w 1 − ∣ B ∣ η i ∈ B ∑ x 1 ( i ) ( x 1 ( i ) w 1 + x 2 ( i ) w 2 + b − y ( i ) ) , ← w 2 − ∣ B ∣ η i ∈ B ∑ ∂ w 2 ∂ ℓ ( i ) ( w 1 , w 2 , b ) = w 2 − ∣ B ∣ η i ∈ B ∑ x 2 ( i ) ( x 1 ( i ) w 1 + x 2 ( i ) w 2 + b − y ( i ) ) , ← b − ∣ B ∣ η i ∈ B ∑ ∂ b ∂ ℓ ( i ) ( w 1 , w 2 , b ) = b − ∣ B ∣ η i ∈ B ∑ ( x 1 ( i ) w 1 + x 2 ( i ) w 2 + b − y ( i ) ) .
在上式中,∣ B ∣ |\mathcal{B}| ∣ B ∣ 代表每个小批量中的样本个数(批量大小,batch size),η \eta η 称作学习率(learning rate)并取正数。需要强调的是,这里的批量大小和学习率的值是人为设定的,并不是通过模型训练学出的,因此叫作超参数(hyperparameter)。我们通常所说的“调参”指的正是调节超参数,例如通过反复试错来找到超参数合适的值。在少数情况下,超参数也可以通过模型训练得到。
参考
动手学pytorch