基本元素
数据集称为训练数据集(training data set) 或训练集(training set)。
每行数据(比如一次房屋交易相对应的数据)称为样本(sample),也可以称为数据点(data point)或数据样本(data instance)。
我们把试图预测的目标(比如预测房屋价格)称为标签(label)或目标(target)。
预测所依据的自变量(面积和房龄)称为特征(feature)或协变量(covariate)。
通常,我们使用 n n n 来表示数据集中的样本数。对索引为 i i i 的样本,其输入表示为 x ( i ) = [ x 1 ( i ) , x 2 ( i ) ] T \mathbf{x}^{(i)}=[\mathbf{x}_1^{(i)},\mathbf{x}_2^{(i)}]^T x(i)=[x1(i),x2(i)]T,其对应的标签是 y ( i ) y^{(i)} y(i)。
线性模型
在机器学习领域,我们通常使用的是高维数据集,建模时采用线性代数表示法会比较方便。当我们的输入包含
d
d
d 个特征时,我们将预测结果
y
^
\hat{y}
y^ (通常使用“尖角”符号表示
y
y
y 的估计值)表示为:
y
^
=
w
1
x
1
+
.
.
.
+
w
d
x
d
+
b
\hat{y}=w_1x_1+...+w_dx_d+b
y^=w1x1+...+wdxd+b
将所有特征放到向量
x
∈
R
\mathbf{x}\in\mathbb{R}
x∈R 中,并将所有权重放到向量
w
∈
R
d
\mathbf{w}\in\mathbb{R^d}
w∈Rd 中,我们可以用点积形式来简洁地表达模型:
y
^
=
w
T
x
+
b
\hat{y}=\mathbf{w}^T\mathbf{x}+b
y^=wTx+b
对于特征集合
X
\mathbf{X}
X,预测值
y
^
∈
R
n
\hat{y}\in\mathbb{R^n}
y^∈Rn 可以表示为:
y
^
=
X
T
w
+
b
\hat{y}=\mathbf{X}^T\mathbf{w}+b
y^=XTw+b
损失函数
当样本
i
i
i 的预测值为
y
^
(
i
)
\hat{y}^{(i)}
y^(i) ,其相应的真实标签为
y
(
i
)
y^{(i)}
y(i) 时,平方误差可以定义为以下公式:
l
(
i
)
=
(
w
,
b
)
=
1
2
(
y
^
(
i
)
−
y
(
i
)
)
2
l^{(i)}=(\mathbf{w},b)=\frac{1}{2}(\hat{y}^{(i)}-y^{(i)})^2
l(i)=(w,b)=21(y^(i)−y(i))2
为了度量模型在整个数据集上的质量,我们需计算在训练集
n
n
n 个样本上的损失均值(也等价于求和):
L
(
w
,
b
)
=
1
n
∑
i
=
1
n
l
(
i
)
(
w
,
b
)
=
1
n
∑
i
=
1
n
1
2
(
w
T
x
(
i
)
+
b
−
y
(
i
)
)
2
L(\mathbf{w},b)=\frac{1}{n}\sum_{i=1}^{n}l^{(i)}(\mathbf{w},b)=\frac{1}{n}\sum_{i=1}^{n}\frac{1}{2}(\mathbf{w}^T\mathbf{x}^{(i)}+b-y^{(i)})^2
L(w,b)=n1i=1∑nl(i)(w,b)=n1i=1∑n21(wTx(i)+b−y(i))2
在训练模型时,我们希望寻找一组参数
(
w
∗
,
b
∗
)
(\mathbf{w}^*,b^*)
(w∗,b∗),这组参数能最小化在所有训练样本上的总损失。如下式:
w
∗
,
b
∗
=
arg
min
w
,
b
L
(
w
,
b
)
\mathbf{w}^*,b^*=\mathop{\arg\min}\limits_{\mathbf{w},b} L(\mathbf{w},b)
w∗,b∗=w,bargminL(w,b)
解析解
线性回归的解可以用一个公式简单地表达出来,显示解:
w
∗
=
(
X
T
X
)
−
1
X
T
y
\mathbf{w}^*=(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^Ty
w∗=(XTX)−1XTy
随机梯度下降
我们用到一种名为梯度下降(gradient descent)的方法,这种方法几乎可以优化所有深度学习模型。它通过不断地在损失函数递减的方向上更新参数来降低误差。
梯度下降最简单的用法是计算损失函数(数据集中所有样本的损失均值) 关于模型参数的导数(在这里也可以称为梯度)。但实际中的执行可能会非常慢:因为在每一次更新参数之前,我们必须遍历整个数据集。因此,我们通常会在每次需要计算更新的时候随机抽取一小批样本,这种变体叫做小批量随机梯度下降(minibatch stochastic gradient descent)。
在每次迭代中,我们首先随机抽样一个小批量batch size
B
B
B,它是由固定数量的训练样本组成的。然后,我们计算小批量的平均损失关于模型参数的导数(也可以称为梯度)。最后,我们将梯度乘以一个预先确定的正数学习率
η
\eta
η,并从当前参数的值中减掉。
我们用下面的数学公式来表示这一更新过程(
∂
\partial
∂ 表示偏导数):
(
w
,
b
)
←
(
w
,
b
)
−
η
∣
B
∣
∑
i
∈
B
∂
(
w
,
b
)
l
(
i
)
(
w
,
b
)
(\mathbf{w},b)\leftarrow(\mathbf{w},b)-\frac{\eta}{|B|}\sum_{i\in B}\partial_{(\mathbf{w},b)}l^{(i)}(\mathbf{w},b)
(w,b)←(w,b)−∣B∣ηi∈B∑∂(w,b)l(i)(w,b)
事实上,更难做到的是找到一组参数,这组参数能够在我们从未见过的数据上实现较低的损失,这一挑战被称为泛化(generalization)。