正则化
1. 定义
在机器学习中,许多策略被显式设计来减少测试误差(可能会增大训练误差为代价),这些策略被统称为正则化。常用的正则化方法简介如下表:
正则化方法 | 简介 |
---|---|
正则化项 | 通过在经验损失上加上模型参数向量的罚项来防止模型过拟合,常用的有 和 范数。 |
Dropout | 通过随机 Mask 掉隐藏层的神经元,使得训练过程中实际训练了一堆的子网络,而最终测试用的整个网络相当于是很多子网络的集成,增加了模型的泛化性。 |
标签平滑 | 标签平滑是通过将传统的 one-hot 编码的 硬标签软化,即用软标签 替代硬标签(),从而防止模型过度自信而导致模型过拟合。 |
早停 | 在模型训练开始过拟合的时候(即测试误差开始不降反增),中止模型训练。 |
2. 正则化项
正则化项(也称罚项)常常加在经验风险上,一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。用公式化描述如下:
其中,第一项是经验风验,第二项是正则化项, 为调整两者之间关系的函数。正则化项可以取不同的形式,比如,回归问题中,损失函数是平方损失,则正则化项可以是:
- 参数向量的 范数:;
- 参数向量的 范数:。
正则化的作用是选择经验风险与模型复杂度同时较小的模型。
3. Dropout
Dropout 的思想是在训练过程中,按照设定的伯努利分布,随机移除部分隐藏层的神经元,即暂时 Mask 掉一些输出。假设某一隐藏层的输出为 ,则 Dropout 后的输出为:
其中, 为采样向量,其中符从伯努利分布 , 是设定的 Dropout 率; 为按元素乘积。此是 就相当于覆盖在 的 Mask 向量。在测试过程中,则使用完整的网络模型,但是模型的参数需要乘以 (不然测试时相当于突然多出了 比例神经元的输出值)。
Dropout 有效的原因在于,在每次 mini-batch 的训练过程中,随机 Mask 掉 比例的神经元相当于每次都训练了不同的网络,最终测试的网络相当于是一系列网络的集成,因此泛化性会更好。
4. 标签平滑
在分类问题中,一般都是使用 one-hot 编码的标签向量,即设定标签向量中目标类别概率为 ,非目标类别概率为 。并且,一般都是使用交叉熵损失函数,即先将输出过一遍 Softmax 函数,然后使用交叉熵函数 计算损失。其中, 是模型输出取 Softmax 后的结果。但这样存在一个问题,使用 Softmax 后,如果要求输出向量中目标类别概率尽可能接近 ,则那一项就要趋于 ,即实际模型需要对分类概率过度自信,而这会导致模型过拟合。为此,标签平滑的正则化方法被提出。其主要结合了均匀分布,用平滑后的标签向量 来替代原来的 one-hot 标签向量 :
其中, 为多分类的类别总数, 是一个较小的超参数(一般取 )。使用标签平滑后的分布就相当于在真实分布中加入了噪声,避免模型对于正确标签过度自信,从而避免模型出现过拟合,提高了模型的泛化能力。有关标签平滑的更详细实验分析参见论文:When Does Label Smoothing Help?。
5. 早停
另一种最简单的正则化方法是,在模型训练开始过拟合的时候(即测试误差开始不降反增),中止模型训练。这种早停的策略,有一些文章给出了一些实验分析。比如,Deep Image Prior 这篇文章就提出,神经网络可能本身就是先学习到图像的语义特征,然后才过分地学习图像细节导致过拟合。