第七章 深度学习中的正则化
官网链接
2020-2-9 深度学习笔记7 - 深度学习中的正则化1(参数范数惩罚和范数惩罚约束)
2020-2-12 深度学习笔记7 - 深度学习中的正则化2(欠约束,数据集增强,噪声鲁棒性,输出目标注入噪声)
半监督学习
在半监督学习的框架下, P ( x ) P(x) P(x)产生的未标记样本和 P ( x , y ) P(x, y) P(x,y)中的标记样本都用于估计 P ( y ∣ x ) P(y \mid x) P(y∣x)或者根据 x x x预测 y y y。
在深度学习的背景下,半监督学习通常指的是学习一个表示 h = f ( x ) h = f(x) h=f(x)。 学习表示的目的是使相同类中的样本有类似的表示。
无监督学习可以为如何在表示空间聚集样本提供有用线索。 在输入空间紧密聚集的样本应该被映射到类似的表示。 在许多情况下,新空间上的线性分类器可以达到较好的泛化。 这种方法的一个经典变种是使用主成分分析作为分类前(在投影后的数据上分类)的预处理步骤。
我们可以构建这样一个模型,其中生成模型
P ( x ) P(x) P(x)或 P ( x , y ) P(x, y) P(x,y)与判别模型
P ( y ∣ x ) P(y \mid x) P(y∣x)共享参数,而不用分离无监督和监督部分。
多任务学习
多任务学习是通过合并几个任务中的样例(可以视为对参数施加的软约束)来提高泛化的一种方式。当模型的一部分被多个额外的任务共享时,这部分将被约束为良好的值,通常会带来更好的泛化能力。
下图展示了多任务学习的一种普遍形式。不同的监督任务共享相同的输入 x x x和中间表示层 h ( share ) h^{(\text{share})} h(share),能学习共同的因素池。
该模型通常可以分为两类相关的参数:
(1)具体任务的参数(只能从各自任务的样本中实现良好的泛化),如图中的上层。
(2)所有任务共享的通用参数(从所有任务的汇集数据中获益),如图中的下层。
因为共享参数,其统计强度可大大提高(共享参数的样本数量相对于单任务模式增加的比例),并能改善泛化和泛化误差的范围。
从深度学习的观点看,底层的先验知识为:能解释数据变化的因素中,某些因素是跨多个任务共享的。
提前终止-避免过拟合
由于神经网络强大的表示能力,当训练次数过多时会经常遭遇过拟合,即训练误差会随时间推移减少,而验证集误差会再次上升。
上图学习曲线显示负对数似然损失如何随时间变化(表示为遍历数据集的训练迭代数,或轮数(epochs))。在这个例子中,我们在MNIST上训练了一个maxout网络。我们可以观察到训练目标随时间持续减小,但验证集上的平均损失最终会再次增加,形成不对称的U形曲线。
这意味着我们只要返回使验证集误差最低的参数设置,就可以获得验证集误差更低的模型(并且因此有希望获得更好的测试误差)。当验证集上的误差在事先指定的循环次数内没有进一步改善时,算法就会终止。这种策略被称为提前终止
(early stopping)。
这可能是深度学习中最常用的正则化形式。它的流行主要是因为有效性和简单性。
提前终止是一种非常不显眼的正则化形式,几乎不需要改变基本训练过程、目标函数。而使用权重衰减则必须小心不能使用太多的权重衰减,否则容易陷入局部极小点。
【提前终止算法】
输入:n为评估间隔步数,p为patience(即观察到次更差的验证集表现后终止), θ 0 \theta_0 θ0为初始参数
过程:
1: 初始化 θ ← θ 0 \theta \leftarrow \theta_0 θ←θ0, i ← 0 i \leftarrow 0 i←0, j ← 0 j \leftarrow 0 j←0, v ← ∞ v \leftarrow \infty v←∞, θ ∗ ← θ \theta^* \leftarrow \theta θ∗←θ , i ∗ ← i i^* \leftarrow i i∗←i
2: w h i l e ( j < p ) d o while (j < p) do while(j<p)do
3: 运行训练算法n步,更新 θ 0 \theta_0 θ0。
4: i ← i + n i \leftarrow i + n i←i+n , v ’ ← V a l i d a t i o n S e t E r r o r ( θ ) v’ \leftarrow ValidationSetError(\theta) v’←ValidationSetError(θ)
5: i f ( v ’ < v ) if {(v’ < v)} if(v’<v) t h e n then then
6: j ← 0 j \leftarrow 0 j←0 , θ ∗ ← θ \theta^* \leftarrow \theta θ∗←θ , i ∗ ← i i^* \leftarrow i