网站手机端做app,wordpress整站搬家教程,wordpress 主题缩略图,视频网站建设策划书线性回归线性回归案例提出问题模型定义模型训练(1) 训练数据(2) 损失函数(3) 优化算法模型预测线性回归的表示方法神经网络图矢量计算小结线性回归案例
线性回归输出是一个连续值#xff0c;因此适用于回归问题。回归问题在实际中很常见#xff0c;如预测房屋价格、气温、销…
线性回归线性回归案例提出问题模型定义模型训练(1) 训练数据(2) 损失函数(3) 优化算法模型预测线性回归的表示方法神经网络图矢量计算小结线性回归案例
线性回归输出是一个连续值因此适用于回归问题。回归问题在实际中很常见如预测房屋价格、气温、销售额等连续值的问题。
提出问题
目标是预测一栋房子的售出价格假设价格只取决于面积和房龄这两个因素。
模型定义
设房屋的面积为 x1x_1x1房龄为 x2x_2x2售出价格为 yyy。我们需要建立基于输入 x1x_1x1 和 x2x_2x2 来计算输出 yyy 的表达式也就是模型model。顾名思义线性回归假设输出与各个输入之间是线性关系 y^x1w1x2w2b\hat{y} x_1 w_1 x_2 w_2 b y^x1w1x2w2b 其中 w1w_1w1 和 w2w_2w2 是权重weightbbb 是偏差bias且均为标量。它们是线性回归模型的参数parameter。模型输出 y^\hat{y}y^ 是线性回归对真实价格 yyy 的预测或估计。我们通常允许它们之间有一定误差。
模型训练
接下来我们需要通过数据来寻找特定的模型参数值使模型在数据上的误差尽可能小。这个过程叫作模型训练model training。下面我们介绍模型训练所涉及的3个要素。
(1) 训练数据
我们通常收集一系列的真实数据例如多栋房屋的真实售出价格和它们对应的面积和房龄。我们希望在这个数据上面寻找模型参数来使模型的预测价格与真实价格的误差最小。 在机器学习术语里
该数据集被称为训练集training set一栋房屋被称为一个样本sample其真实售出价格叫作标签label用来预测标签的两个因素叫作特征feature。特征用来表征样本的特点。
假设我们采集的样本数为 nnn索引为 iii 的样本的特征为 x1(i)x_1^{(i)}x1(i) 和 x2(i)x_2^{(i)}x2(i)标签为 y(i)y^{(i)}y(i)。对于索引为 iii 的房屋线性回归模型的房屋价格预测表达式为 y^(i)x1(i)w1x2(i)w2b\hat{y}^{(i)} x_1^{(i)} w_1 x_2^{(i)} w_2 b y^(i)x1(i)w1x2(i)w2b
(2) 损失函数
在模型训练中我们需要衡量价格预测值与真实值之间的误差。通常我们会选取一个非负数作为误差且数值越小表示误差越小。使用均方误差(MSE)。它在评估索引为 iii 的样本误差的表达式为
ℓ(i)(w1,w2,b)12(y^(i)−y(i))2\ell^{(i)}(w_1, w_2, b) \frac{1}{2} \left(\hat{y}^{(i)} - y^{(i)}\right)^2ℓ(i)(w1,w2,b)21(y^(i)−y(i))2
其中常数 12\frac 1 221 使对平方项求导后的常数系数为1这样在形式上稍微简单一些。显然误差越小表示预测价格与真实价格越相近且当二者相等时误差为0。 通常我们用训集中所有样本误差的平均来衡量模型预测的质量即
ℓ(w1,w2,b)1n∑i1nℓ(i)(w1,w2,b)1n∑i1n12(x1(i)w1x2(i)w2b−y(i))2\ell(w_1, w_2, b) \frac{1}{n} \sum_{i1}^n \ell^{(i)}(w_1, w_2, b) \frac{1}{n} \sum_{i1}^n \frac{1}{2}\left(x_1^{(i)} w_1 x_2^{(i)} w_2 b - y^{(i)}\right)^2 ℓ(w1,w2,b)n1i1∑nℓ(i)(w1,w2,b)n1i1∑n21(x1(i)w1x2(i)w2b−y(i))2
在模型训练中我们希望找出一组模型参数记为 w1∗,w2∗,b∗w_1^*, w_2^*, b^*w1∗,w2∗,b∗来使训练样本平均损失最小
w1∗,w2∗,b∗argminw1,w2,bℓ(w1,w2,b)w_1^*, w_2^*, b^* \underset{w_1, w_2, b}{\arg\min} \ell(w_1, w_2, b) w1∗,w2∗,b∗w1,w2,bargminℓ(w1,w2,b)
(3) 优化算法
在优化算法中小批量随机梯度下降mini-batch stochastic gradient descent在深度学习中被广泛使用。它的算法很简单先选取一组模型参数的初始值如随机选取接下来对参数进行多次迭代使每次迭代都可能降低损失函数的值。在每次迭代中先随机均匀采样一个由固定数目训练数据样本所组成的小批量mini-batchB\mathcal{B}B然后求小批量中数据样本的平均损失有关模型参数的导数梯度最后用此结果与预先设定的一个正数的乘积作为模型参数在本次迭代的减小量。
在训练本节讨论的线性回归模型的过程中模型的每个参数将作如下迭代
w1←w1−η∣B∣∑i∈B∂ℓ(i)(w1,w2,b)∂w1w1−η∣B∣∑i∈Bx1(i)(x1(i)w1x2(i)w2b−y(i)),w2←w2−η∣B∣∑i∈B∂ℓ(i)(w1,w2,b)∂w2w2−η∣B∣∑i∈Bx2(i)(x1(i)w1x2(i)w2b−y(i)),b←b−η∣B∣∑i∈B∂ℓ(i)(w1,w2,b)∂bb−η∣B∣∑i∈B(x1(i)w1x2(i)w2b−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} w1w2b←w1−∣B∣ηi∈B∑∂w1∂ℓ(i)(w1,w2,b)w1−∣B∣ηi∈B∑x1(i)(x1(i)w1x2(i)w2b−y(i)),←w2−∣B∣ηi∈B∑∂w2∂ℓ(i)(w1,w2,b)w2−∣B∣ηi∈B∑x2(i)(x1(i)w1x2(i)w2b−y(i)),←b−∣B∣ηi∈B∑∂b∂ℓ(i)(w1,w2,b)b−∣B∣ηi∈B∑(x1(i)w1x2(i)w2b−y(i)).
在上式中∣B∣|\mathcal{B}|∣B∣ 代表每个小批量中的样本个数批量大小batch sizeη\etaη 称作学习率learning rate并取正数。需要强调的是这里的批量大小和学习率的值是人为设定的并不是通过模型训练学出的因此叫作超参数hyperparameter。我们通常所说的“调参”指的正是调节超参数例如通过反复试错来找到超参数合适的值。在少数情况下超参数也可以通过模型训练学出。本书对此类情况不做讨论。
模型预测
模型训练完成后我们将模型参数 w1,w2,bw_1, w_2, bw1,w2,b 在优化算法停止时的值分别记作 w^1,w^2,b^\hat{w}_1, \hat{w}_2, \hat{b}w^1,w^2,b^。注意这里我们得到的并不一定是最小化损失函数的最优解 w1∗,w2∗,b∗w_1^*, w_2^*, b^*w1∗,w2∗,b∗而是对最优解的一个近似。然后我们就可以使用学出的线性回归模型 x1w^1x2w^2b^x_1 \hat{w}_1 x_2 \hat{w}_2 \hat{b}x1w^1x2w^2b^ 来估算训练数据集以外任意一栋面积平方米为x1x_1x1、房龄年为x2x_2x2的房屋的价格了。这里的估算也叫作模型预测、模型推断或模型测试。
线性回归的表示方法
我们已经阐述了线性回归的模型表达式、训练和预测。下面我们解释线性回归与神经网络的联系以及线性回归的矢量计算表达式。
神经网络图
在深度学习中我们可以使用神经网络图直观地表现模型结构。为了更清晰地展示线性回归作为神经网络的结构下图使用神经网络图表示本节中介绍的线性回归模型。神经网络图隐去了模型参数权重和偏差。 在上图所示的神经网络中输入分别为 x1x_1x1 和 x2x_2x2因此输入层的输入个数为2。输入个数也叫特征数或特征向量维度。图中网络的输出为 ooo输出层的输出个数为1。需要注意的是我们直接将图中神经网络的输出 ooo 作为线性回归的输出即 y^o\hat{y} oy^o。由于输入层并不涉及计算按照惯例上图所示的神经网络的层数为1。所以线性回归是一个单层神经网络。输出层中负责计算 ooo 的单元又叫神经元。在线性回归中ooo 的计算依赖于 x1x_1x1 和 x2x_2x2。也就是说输出层中的神经元和输入层中各个输入完全连接。因此这里的输出层又叫全连接层fully-connected layer或稠密层dense layer。
矢量计算
让我们再次回到本节的房价预测问题。如果我们对训练数据集里的3个房屋样本索引分别为1、2和3逐一预测价格将得到 y^(1)x1(1)w1x2(1)w2b,y^(2)x1(2)w1x2(2)w2b,y^(3)x1(3)w1x2(3)w2b.\begin{aligned} \hat{y}^{(1)} x_1^{(1)} w_1 x_2^{(1)} w_2 b,\\ \hat{y}^{(2)} x_1^{(2)} w_1 x_2^{(2)} w_2 b,\\ \hat{y}^{(3)} x_1^{(3)} w_1 x_2^{(3)} w_2 b. \end{aligned} y^(1)y^(2)y^(3)x1(1)w1x2(1)w2b,x1(2)w1x2(2)w2b,x1(3)w1x2(3)w2b.
现在我们将上面3个等式转化成矢量计算。设
y^[y^(1)y^(2)y^(3)],X[x1(1)x2(1)x1(2)x2(2)x1(3)x2(3)],w[w1w2]\boldsymbol{\hat{y}} \begin{bmatrix} \hat{y}^{(1)} \\ \hat{y}^{(2)} \\ \hat{y}^{(3)} \end{bmatrix},\quad \boldsymbol{X} \begin{bmatrix} x_1^{(1)} x_2^{(1)} \\ x_1^{(2)} x_2^{(2)} \\ x_1^{(3)} x_2^{(3)} \end{bmatrix},\quad \boldsymbol{w} \begin{bmatrix} w_1 \\ w_2 \end{bmatrix} y^⎣⎡y^(1)y^(2)y^(3)⎦⎤,X⎣⎢⎡x1(1)x1(2)x1(3)x2(1)x2(2)x2(3)⎦⎥⎤,w[w1w2]
对3个房屋样本预测价格的矢量计算表达式为y^Xwb,\boldsymbol{\hat{y}} \boldsymbol{X} \boldsymbol{w} b,y^Xwb, 其中的加法运算使用了广播机制参见2.2节。例如
a torch.ones(3)
b 10
print(a b)输出
tensor([11., 11., 11.])广义上讲当数据样本数为 nnn特征数为 ddd 时线性回归的矢量计算表达式为 y^Xwb\boldsymbol{\hat{y}} \boldsymbol{X} \boldsymbol{w} b y^Xwb 其中模型输出 y^∈Rn×1\boldsymbol{\hat{y}} \in \mathbb{R}^{n \times 1}y^∈Rn×1 批量数据样本特征 X∈Rn×d\boldsymbol{X} \in \mathbb{R}^{n \times d}X∈Rn×d权重 w∈Rd×1\boldsymbol{w} \in \mathbb{R}^{d \times 1}w∈Rd×1 偏差 b∈Rb \in \mathbb{R}b∈R。相应地批量数据样本标签 y∈Rn×1\boldsymbol{y} \in \mathbb{R}^{n \times 1}y∈Rn×1。设模型参数 θ[w1,w2,b]⊤\boldsymbol{\theta} [w_1, w_2, b]^\topθ[w1,w2,b]⊤我们可以重写损失函数为 ℓ(θ)12n(y^−y)⊤(y^−y)\ell(\boldsymbol{\theta})\frac{1}{2n}(\boldsymbol{\hat{y}}-\boldsymbol{y})^\top(\boldsymbol{\hat{y}}-\boldsymbol{y}) ℓ(θ)2n1(y^−y)⊤(y^−y)
小批量随机梯度下降的迭代步骤将相应地改写为 θ←θ−η∣B∣∑i∈B∇θℓ(i)(θ),\boldsymbol{\theta} \leftarrow \boldsymbol{\theta} - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \nabla_{\boldsymbol{\theta}} \ell^{(i)}(\boldsymbol{\theta}), θ←θ−∣B∣ηi∈B∑∇θℓ(i)(θ),
其中梯度是损失有关3个为标量的模型参数的偏导数组成的向量 ∇θℓ(i)(θ)[∂ℓ(i)(w1,w2,b)∂w1∂ℓ(i)(w1,w2,b)∂w2∂ℓ(i)(w1,w2,b)∂b][x1(i)(x1(i)w1x2(i)w2b−y(i))x2(i)(x1(i)w1x2(i)w2b−y(i))x1(i)w1x2(i)w2b−y(i)][x1(i)x2(i)1](y^(i)−y(i))\nabla_{\boldsymbol{\theta}} \ell^{(i)}(\boldsymbol{\theta}) \begin{bmatrix} \frac{ \partial \ell^{(i)}(w_1, w_2, b) }{\partial w_1} \\ \frac{ \partial \ell^{(i)}(w_1, w_2, b) }{\partial w_2} \\ \frac{ \partial \ell^{(i)}(w_1, w_2, b) }{\partial b} \end{bmatrix} \begin{bmatrix} x_1^{(i)} (x_1^{(i)} w_1 x_2^{(i)} w_2 b - y^{(i)}) \\ x_2^{(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 - y^{(i)} \end{bmatrix} \begin{bmatrix} x_1^{(i)} \\ x_2^{(i)} \\ 1 \end{bmatrix} (\hat{y}^{(i)} - y^{(i)}) ∇θℓ(i)(θ)⎣⎢⎢⎡∂w1∂ℓ(i)(w1,w2,b)∂w2∂ℓ(i)(w1,w2,b)∂b∂ℓ(i)(w1,w2,b)⎦⎥⎥⎤⎣⎢⎡x1(i)(x1(i)w1x2(i)w2b−y(i))x2(i)(x1(i)w1x2(i)w2b−y(i))x1(i)w1x2(i)w2b−y(i)⎦⎥⎤⎣⎢⎡x1(i)x2(i)1⎦⎥⎤(y^(i)−y(i))
小结
和大多数深度学习模型一样对于线性回归这样一种单层神经网络它的基本要素包括模型、训练数据、损失函数和优化算法。既可以用神经网络图表示线性回归又可以用矢量计算表示该模型。应该尽可能采用矢量计算以提升计算效率。 注本节除了代码之外与原书基本相同原书传送门