原理

数据集增强

让机器学习模型泛化得更好的最好办法是使用更多的数据进行训练。当然,在实践中,我们拥有的数据量是很有限的。解决这个问题的一种方法是创造假数据并添加到训练集中。对于一些机器学习任务,创建新的假数据相当简单。

对于分类来说这种方法是最简单的。分类器需要一个复杂的高维输入x,并用单个类别标识y概括x。这意味着分类面临的一个主要任务是要对各种各样的变化保持不变。我们可以轻易通过转换训练集中的x来生成新的(x,y)对。

这种方法对于其他许多任务来说并不那么容易。例如,除非我们已经解决了密度估计问题,否则在密度估计任务中生成新的假数据是很困难的。

数据集增强对一个具体的分类问题来说是特别有效的方法:对象识别。图像是高维的并包括各种巨大的变化因素,其中有许多可以轻易地模拟。即使模型已经使用卷积和池化技术对部分平移保持不变,沿训练图像每个方向平移几个像素的操作通常可以大大改善泛化。许多其他操作如旋转图像或缩放图像也已被证明非常有效。

我们必须小心,不能使用会改变类别的转换。例如,光学字符识别任务需要认识到“b”和“d”以及“6”和“9”的区别。所以对这些任务来说,水平翻转和旋转180°并不是合适的数据集增强方式。

能保持我们希望的分类不变,但不容易执行的转换也是存在的。例如,平面外绕轴转动难以通过简单的集合运算在输入像素上实现。

在神经网络的输入层注入噪声(sietsma and Dow,1991)也可以看作数据增强的一种方式。对于许多分类甚至一些回归任务而言,即使小的随机噪声被加到输入,任务仍应该是能够被解决的。然而,神经网络被证明对噪声不是非常健壮(Tang and Eliasmith,2010)。改善神经网络健壮性的方法之一是简单地将随机噪声添加到输入再进行训练。输入噪声注入是一些无监督学习算法的一部分,如去噪自编码器(Vincent et al., 2008a)。向隐藏单元施加噪声也是可行的,这可以被看作在多个抽象层上进行的数据集增强。Poole et al. (2014)最近表明,噪声的幅度被细心调整后,该方法是非常高效的。我们将在之后介绍一个强大的正则化策略Dropout,该策略可以看作通过与噪声相乘构建新输入的过程。

在比较机器学习基准测试的结果时,考虑其采取的数据集增强是很重要的。通常情况下,人工设计的数据集增强学习方案可以大大减少机器学习技术的泛化误差。将一个机器学习算法的性能与另一个进行比较时,对照实验是必要的。在比较机器学习算法A和机器学习算法B时,应该确保这两个算法使用同一人工转换的数据后表现良好。假设算法A在没有数据集增强时表现不佳,而B结合大量人工转换的数据后表现良好。在这样的情况下,很可能是合成转换引起了性能改进,而不是机器学习算法B比算法A更好。有时候,确定实验是否已经适当控制需要主观判断。例如,向输入注入噪声的机器学习算法是执行数据集增强的一种形式。通常,普适操作(例如,向输入添加高斯噪声)被认为是机器学习算法的一部分,而特定于一个应用领域(如随机地裁剪图像)的操作被认为是独立的预处理步骤。

噪声鲁棒性

上面已经提出将噪声作用于输入,作为数据集增强策略。对于某些模型而言,向输入添加方差极小的噪声等价于对权重施加范数惩罚(Bishop,1995a,b)。在一般情况下,注入噪声远比简单地收缩参数强大,特别是噪声被添加到隐藏单元时会更加强大。向隐藏单元添加噪声是值得单独讨论的重要话题。Dropout算法是这种做法的主要发展方向。

另一种正则化模型的噪声使用方式是将其加到权重。这种技术主要用于循环神经网络(Jim et al., 1996; Graves, 2011)。这可以被解释为关于权重的贝叶斯推断的随机实现。贝叶斯学习过程将权重视为不确定的,并且可以通过概率分布表示这种不确定性。向权重添加噪声是反映这种不确定性的一种使用的随机方法。

在某些假设下,施加于权重的噪声可以被解释为与更传统的正则化形式等同,鼓励要学习的函数保持稳定。我们研究回归的情形,也就是训练将一组特征x映射成一个标量的函数\(\hat{y}(x)\),并使用最小二乘代价函数衡量模型预测值\(\hat{y}(x)\)与真实值y的误差:

\[J=E_{p(x,y)}[(\hat{y}(x) - y)^2]\]

训练集包含m对标注样例\({(x^{(1)}, y^{(1)}), ..., (x^{(m)}, y^{(m)})}\)。

现在我们假设对每个输入表示,网络权重添加随机扰动\(\epsilon_w \sim N(\epsilon; 0, \eta I)\)。想象我们有一个标注的l层MLP。我们将扰动模型记为\(\hat{y}_{\in w}(x)\)。尽管有噪声注入,我们仍然希望减小网络输出误差的平方。因此目标函数变为:

\[\begin{align} \tilde{J}_W &= E_{p(x,y,\in w)}[(\hat{y}_{\in w}(x)-y)^2] \\ &= E_{p(x,y, \in w)}[\hat{y}^2_{\in w}(x) - 2y\hat{y}_{\in w}(x) + y^2]\\ \end{align}\]

对于小的\(\eta\),最小化带权重噪声(方差\(\eta I\))的J等同于最小化附加正则化项:\(\eta E_{p(x,y)}[\| \bigtriangledown_W \hat{y}(x)\|^2]\)的J。这种形式的正则化鼓励参数进入权重小扰动对输出相对影响较小的参数空间区域。换句话说,它推动模型进入对权重小的变化相对不敏感的区域,找到的点不只是极小点,还是由平坦区域所包围的极小点(Hochreiter and Schmidhuber, 1995)。在简化的线性回归中(例如,\(\hat{y}(x) = w^Tx+b\)),正则项退化为\(\eta E_{p(x)}[\| x\|^2]\),这与函数的参数无关,因此不会对\(\tilde{J}_w\)关于模型参数的梯度有影响。

向输出目标注入噪声

大多数数据集的y标签都有一定错误。错误的y不利于最大化\(log p(y \mid x)\)。避免这种情况的一种方法是显示地对标签上的噪声进行建模。例如,我们可以假设,对于一些小常数\(\Epsilon\),训练集标记y是正确的概率是\(1-\Epsilon\),以\(\Epsilon\)的概率)任何其他可能的标签也可能是正确的。这个假设很容易就能解析地与代价函数结合,而不用显示地抽取噪声样本。例如,标签平滑(label smoothing)通过把确切分类目标从0和1替换成\(\frac{\Epsilon}{k-1}\)和\(1-\Epsilon\),正则化具有k个输出的softmax函数的模型。标准交叉熵损失可以用在这些非确切目标的输出上。使用softmax函数和明确目标的最大似然学习可能永远不会收敛——softmax函数永远无法真正预测0概率或1概率,因此它会继续学习越来越大的权重,使预测更极端。使用如权重衰减等其他正则化策略能够防止这种情况。标签平滑的优势是能够防止模型追求确切概率而不影响模型学习正确分类。这种策略自20世纪80年代就已经被使用,并在现代神经网络继续保持显著特色(Szegedy et al., 2015)。