跳转至

动手学深度学习- 线性神经网络

本章介绍神经网络的整个训练过程, 包括:定义简单的神经网络架构、数据处理、指定损失函数和如何训练模型。

线性回归

\(\(\hat{\mathbf{y}}=\mathbf{X}\mathbf{w}+b\)\),在寻找最好的 model parameters之前,我们还需要:

  • 模型质量的度量方式
  • 能够更新模型以提高模型预测质量的方法

Loss Function

损失函数是拟合程度的度量,它能够量化目标的实际值与预测值之间的差距。通常选择非负数作为损失,数值越小表示损失越小。

梯度下降(gradient descent)几乎可以优化所有深度学习模型,它不断在损失函数递减的方向上来更新参数从而降低误差。

梯度下降最简单的用法是计算损失函数(数据集中所有样本的损失均值) 关于模型参数的导数(在这里也可以称为梯度)。 但实际中的执行可能会非常慢:因为在每一次更新参数之前,我们必须遍历整个数据集。通常会在每次需要计算更新的时候随机抽取一小批样本, 这种变体叫做小批量随机梯度下降(minibatch stochastic gradient descent)。

在每次迭代中,我们首先随机抽样一个小批量\(\(\Beta\)\), 它是由固定数量的训练样本组成的。 然后,我们计算小批量的平均损失关于模型参数的导数(也可以称为梯度)。 最后,我们将梯度乘以一个预先确定的正数η,并从当前参数的值中减掉。然后,我们计算小批量的平均损失关于模型参数的导数(也可以称为梯度)。 最后,我们将梯度乘以一个预先确定的正数\(\(\eta\)\),并从当前参数的值中减掉,这个数值就是学习率。

batch size和学习率通常是手动预先指定的超参数,调参(hyperparameter tuning)是选择超参数的过程。

泛化(generalization)是在未见过的数据上实现较低的损失,达到较好的拟合效果。

输入层中的输入数(或称为特征维度,feature dimensionality);通常在计算层数时不考虑输入层

每个输入都与每个输出(在本例中只有一个输出)相连, 称为全连接层(fully-connected layer)或称为稠密层(dense layer)

精度(accuracy)来评估模型的性能。 精度等于正确预测数与预测总数之间的比率。