- L1规范化
- L2规范化
- 弃权
- 人为扩展训练样本
L1规范化
这个方法是在未规范化的代价函数上加上一个权重绝对值的和:
然后使用一个因子进行量化调整,其中
可以称为规范化参数,
就是训练集合的大小。
规划化有时候也被称为权重衰减,它的主要功能就是为了在最小化原始代价函数与寻找小的权重之间找个折中,两部分之间相对的重要程度就由来控制,
越小,就偏向于最小化原始代价函数,反之,就偏向于小的权重。
至于为什么规范化可以减轻过度拟合,粗略的讲,规范化有助于训练小的权重,大的权重容易将训练数据中的噪声过于放大,从而影响模型在测试数据上的泛化能力,小的权重则不会因为一个微小的变动导致结果的大幅度变化,而是由训练数据中最普遍易泛化的特征共同作用。这边主要讲解减轻过度拟合的方法,具体为什么规范化可以减轻过度拟合,在以后的博客中会专门写一篇文章解释。
L2规范化
L2规范化与L1规范化有些类似,这个方法是在未规范化的代价函数上加上所有权重平方的和:
虽然两种规范化有类似的地方,不过我们也需要理解一下L1规范化训练的网络和L2规范化训练的网络不同的行为,对L1规范化代价函数求偏导:
其中就是
的正负号,即
是正数时为+1,而
是负数时为-1。
对L1规范化的网络进行更新的规则就是:
对L2规范化代价函数求偏导:
对L2规范化的网络进行更新的规则就是:
在两种情形下,规范化的效果就是缩小权重。两种规范化都惩罚大的权重,但权重缩小的方式不同。
在L1规范化中,权重通过一个常量向0进行缩小,而L2规范化中,权重通过一个和
成比例的量进行缩小。所以,当一个特定的权重绝对值
很大时,L1规范化的权重缩小远比L2规范化要小得多。相反,房一个特定的权重绝对值
很小时,L1规范化的权重缩小远比L2规范化要大得多。
最终结果就是:L1规范化倾向于聚集网络的权重比较小的时候,而L2规范化则倾向于权重比较大时。
弃权
弃权是一种相当激进的技术,并不依赖于对代价函数的修改,而是改变了网络本身。假设我们尝试训练一个网络:
特别的,假设我们有一个训练数据和对应的目标输出。通常我们会通过在网络中前向传播,然后进行反向传播来确定对梯度的贡献。使用弃权技术,我们会随机(临时)的删除一半的隐藏神经元,同时让输入层和输出层的神经元保持不变。在此之后,我们会得到最终如下所示的神经网络:
虚圈表示删除的隐藏神经元。
我们在一个小批量的数据上前向传播,通过修改后的网络,然后反向传播结果,同样通过这个修改后的网络,对有关的权重和偏置进行更新。然后重置弃权的神经元,选择一个新的随机的隐藏神经元的子集进行删除,在其他的小批量数据上重复这个过程步骤,更新权重和偏置。
通过不断的重复,我们会学到一个权重和偏置的集合。由于这些权重和偏置是在一半的隐藏神经元被弃权的情形下学到的,为了补偿这个,我们将隐藏神经元的偏置以及出去的权重减半。
启发式的看,当我们弃权掉不同的神经元集合时,就好比在训练不同的神经网络。所以,弃权过程就如同大量不同网络的效果的平均。不同的网络会以不同的方式过度拟合,所以弃权的网络的效果会减轻过度拟合。
人为扩展训练数据
训练好的神经网络,增加训练数据是一个稳定有效的方式,因为更少的数据意味着我们的网络接触更少的信息变化。如果我们使用大量更多的训练数据,那么,我们可能会得到更好的性能,即使是用简单的网络。
获取更多的数据代价很大,在实践中常常是很难使用的。不过,还有一种方法能够获得近似的效果,那就是人为扩展训练数据。比如图像识别,对已有的图像进行旋转、转换、扭曲,还有一种特殊的为了模仿手部肌肉的随机抖动的图像扭曲方法。比如语音识别,可以通过增加噪声来扩展训练数据。
一般就是通过应用反应真实世界变化的操作来扩展训练数据。