14.2 正则自编码器
编码维数小于输入维数的欠完备自编码器可以学习数据分布最显著的特征。我们已经知道,如果赋予这类自编码器过大的容量,它就不能学到任何有用的信息。
如果隐藏编码的维数允许与输入相等,或隐藏编码维数大于输入的过完备(overcomplete)情况下,会发生类似的问题。在这些情况下,即使是线性编码器和线性解码器也可以学会将输入复制到输出,而学不到任何有关数据分布的有用信息。
理想情况下,根据要建模的数据分布的复杂性,选择合适的编码维数和编码器、解码器容量,就可以成功训练任意架构的自编码器。正则自编码器提供这样的能力。正则自编码器使用的损失函数可以鼓励模型学习其他特性(除了将输入复制到输出),而不必限制使用浅层的编码器和解码器以及小的编码维数来限制模型的容量。这些特性包括稀疏表示、表示的小导数以及对噪声或输入缺失的鲁棒性。即使模型容量大到足以学习一个无意义的恒等函数,非线性且过完备的正则自编码器仍然能够从数据中学到一些关于数据分布的有用信息。
除了这里所描述的方法(正则化自编码器最自然的解释),几乎任何带有潜变量并配有一个推断过程(计算给定输入的潜在表示)的生成模型,都可以看作自编码器的一种特殊形式。强调与自编码器联系的两个生成式建模方法是Helmholtz机(Hinton et al.,1995b)的衍生模型,如变分自编码器(第20.10.3节)和生成随机网络(第20.12节)。这些变种(或衍生)自编码器能够学习出高容量且过完备的模型,进而发现输入数据中有用的结构信息,并且也无须对模型进行正则化。这些编码显然是有用的,因为这些模型被训练为近似训练数据的概率分布而不是将输入复制到输出。
14.2.1 稀疏自编码器
稀疏自编码器简单地在训练时结合编码层的稀疏惩罚Ω(h)和重构误差:
其中g(h)是解码器的输出,通常h是编码器的输出,即h=f(x)。
稀疏自编码器一般用来学习特征,以便用于像分类这样的任务。稀疏正则化的自编码器必须反映训练数据集的独特统计特征,而不是简单地充当恒等函数。以这种方式训练,执行附带稀疏惩罚的复制任务可以得到能学习有用特征的模型。
我们可以简单地将惩罚项Ω(h)视为加到前馈网络的正则项,这个前馈网络的主要任务是将输入复制到输出(无监督学习的目标),并尽可能地根据这些稀疏特征执行一些监督学习任务(根据监督学习的目标)。不像其他正则项如权重衰减——没有直观的贝叶斯解释。如第5.6.1节描述,权重衰减和其他正则惩罚可以被解释为一个MAP近似贝叶斯推断,正则化的惩罚对应于模型参数的先验概率分布。这种观点认为,正则化的最大似然对应最大化p(θ|x),相当于最大化log p(x|θ)+log p(θ)。log p(x|θ)即通常的数据似然项,参数的对数先验项log p(θ)则包含了对θ特定值的偏好。这种观点在第5.6节有所描述。正则自编码器不适用这样的解释是因为正则项取决于数据,因此根据定义上(从文字的正式意义)来说,它不是一个先验。虽然如此,我们仍可以认为这些正则项隐式地表达了对函数的偏好。
我们可以认为整个稀疏自编码器框架是对带有潜变量的生成模型的近似最大似然训练,而不将稀疏惩罚视为复制任务的正则化。假如我们有一个带有可见变量x和潜变量h的模型,且具有明确的联合分布pmodel(x,h)=pmodel(h)pmodel(x|h)。我们将pmodel(h)视为模型关于潜变量的先验分布,表示模型看到x的信念先验。这与我们之前使用“先验”的方式不同,之前指分布p(θ)在我们看到数据前就对模型参数的先验进行编码。对数似然函数可分解为
我们可以认为自编码器使用一个高似然值h的点估计近似这个总和。这类似于稀疏编码生成模型(第13.4节),但h是参数编码器的输出,而不是从优化结果推断出的最可能的h。从这个角度来看,我们根据这个选择的h,最大化如下:
log pmodel(h)项能被稀疏诱导。如Laplace先验,
对应于绝对值稀疏惩罚。将对数先验表示为绝对值惩罚,我们得到
这里的常数项只跟λ有关。通常我们将λ视为超参数,因此可以丢弃不影响参数学习的常数项。其他如Student-t先验也能诱导稀疏性。从稀疏性导致pmodel(h)学习成近似最大似然的结果看,稀疏惩罚完全不是一个正则项。这仅仅影响模型关于潜变量的分布。这个观点提供了训练自编码器的另一个动机:这是近似训练生成模型的一种途径。这也给出了为什么自编码器学到的特征是有用的另一个解释:它们描述的潜变量可以解释输入。
稀疏自编码器的早期工作(Ranzato et al.,2007a,2008)探讨了各种形式的稀疏性,并提出了稀疏惩罚和log Z项(将最大似然应用到无向概率模型时产生)之间的联系。这个想法是最小化log Z防止概率模型处处具有高概率,同理强制稀疏可以防止自编码器处处具有低的重构误差。这种情况下,这种联系是对通用机制的直观理解而不是数学上的对应。在数学上更容易解释稀疏惩罚对应于有向模型pmodel(h)pmodel(x|h)中的log pmodel(h)。
Glorot et al.(2011b)提出了一种在稀疏(和去噪)自编码器的h中实现真正为零的方式。该想法是使用整流线性单元产生编码层。基于将表示真正推向零(如绝对值惩罚)的先验,可以间接控制表示中零的平均数量。
14.2.2 去噪自编码器
除了向代价函数增加一个惩罚项,我们也可以通过改变重构误差项来获得一个能学到有用信息的自编码器。
传统的自编码器最小化以下目标
其中L是一个损失函数,惩罚g(f(x))与x的差异,如它们彼此差异的L2范数。如果模型被赋予过大的容量,L仅仅使得g◦f学成一个恒等函数。
相反,去噪自编码器(denoising autoencoder,DAE)最小化
其中是被某种噪声损坏的x的副本。因此去噪自编码器必须撤销这些损坏,而不是简单地复制输入。
Alain and Bengio(2013)和Bengio et al.(2013c)指出去噪训练过程强制f和g隐式地学习pdata(x)的结构。因此,去噪自编码器也是一个通过最小化重构误差获取有用特性的例子。这也是将过完备、高容量的模型用作自编码器的一个例子——只要小心防止这些模型仅仅学习一个恒等函数。去噪自编码器将在第14.5节给出更多细节。
14.2.3 惩罚导数作为正则
另一正则化自编码器的策略是使用一个类似稀疏自编码器中的惩罚项Ω,
但Ω的形式不同:
这迫使模型学习一个在x变化小时目标也没有太大变化的函数。因为这个惩罚只对训练数据适用,它迫使自编码器学习可以反映训练数据分布信息的特征。
这样正则化的自编码器被称为收缩自编码器(contractive autoencoder,CAE)。这种方法与去噪自编码器、流形学习和概率模型存在一定理论联系。收缩自编码器将在第14.7节更详细地描述。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论