序言
深度学习领域中,自编码器( Autoencoder \text{Autoencoder} Autoencoder)作为一种无监督学习技术,凭借其独特的结构在数据降维、特征提取、异常检测及数据去噪等方面展现出强大的能力。正则自编码器,作为自编码器家族中的重要一员,通过引入额外的约束或正则化项,不仅实现了对输入数据的有效重构,更在此基础上学习了数据更为紧凑和有意义的表示。这一特性使得正则自编码器在避免过拟合、提升模型泛化能力方面尤为突出,为处理高维、复杂数据提供了新的视角和方法。
正则自编码器(Regularized Autoencoder)
- 编码维数小于输入维数的欠完备自编码器可以学习数据分布最显著的特征。我们已经看到,如果这类自编码器被赋予过大的容量,它就不能学到任何有用的信息。
- 如果隐藏编码的维数允许与输入相等,或隐藏编码维数大于输入的过完备 ( overcomplete \text{overcomplete} overcomplete) 情况下,会发生类似的问题。在这些情况下,即使是线性编码器和线性解码器也可以学会将输入复制到输出,而学不到任何有关数据分布的有用信息。
- 理想情况下,根据要建模的数据分布的复杂性,选择合适的编码维数和编码器、解码器容量,就可以成功训练任意架构的自编码器。
- 正则自编码器提供这样做的可能。
- 正则自编码器使用的损失函数可以鼓励模型学习其他特性(除了将输入复制到输出),而不用限制使用浅层的编码器和解码器以及小的编码维数来限制模型的容量。
- 这些特性包括稀疏表示、表示的小导数、以及对噪声或输入缺失的鲁棒性。
- 即使模型容量大到足够学习一个简单的复制功能,非线性且过完备的正则自编码器仍然能学到一些与数据分布相关的有用信息。
- 除了这里所描述的方法(正则化自编码器最自然的解释),几乎任何带有潜变量并配有一个推断过程(计算给定输入的潜在表示)的生成模型,都可以看作是自编码器的一种特殊形式。
- 强调与自编码器联系的两个生成建模方法是 Helmholtz \text{Helmholtz} Helmholtz机 ( Hinton et al., 1995b \text{Hinton et al., 1995b} Hinton et al., 1995b) 的衍生模型,如变分自编码器和生成随机网络。
- 这些模型能自然地学习大容量、对输入过完备的有用编码,而不需要正则化。
- 这些编码显然是有用的,因为这些模型被训练为近似训练数据的最大概率而不是将输入复制到输出。
稀疏自编码器
- 稀疏自编码器简单地在训练时结合编码层的系数惩罚 Ω ( h ) \Omega(\boldsymbol{h}) Ω(h)和重构误差:
L ( x , g ( f ( x ) ) ) + Ω ( h ) L(\boldsymbol{x},g(f(\boldsymbol{x})))+\Omega(\boldsymbol{h}) L(x,g(f(x)))+Ω(h) — 公式1 \quad\textbf{---\footnotesize{公式1}} —公式1 - 其中 g ( h ) g(\boldsymbol{h}) g(h)是解码器的输出,通常 h \boldsymbol{h} h是编码器的输出,即 h = f ( x ) \boldsymbol{h}=f(\boldsymbol{x}) h=f(x)。
- 稀疏自编码器通常用于学习特征,以便用于其他任务如分类。
- 稀疏正则化的自编码器必须反映训练数据集的独特统计特征,而不是简单地充当恒等函数。
- 以这种方式训练,执行附带稀疏惩罚的复制任务可以得到能学习有用特征的模型。
- 我们可以简单地将惩罚项 Ω ( h ) \Omega(\boldsymbol{h}) Ω(h) 视为加到前馈网络的正则项,这个前馈网络的主要任务是将输入复制到输出(无监督学习的目标),并尽可能地根据这些稀疏特征执行一些监督学习任务(根据监督学习的目标)。
- 不像其他正则项如权重衰减,这个正则化没有直观的贝叶斯解释。
- 如
应用数学与机器学习基础 - 贝叶斯统计篇 - 最大后验(MAP)估计
描述,权重衰减和其他正则惩罚可以被解释为一个 MAP \text{MAP} MAP近似贝叶斯推断,正则化的惩罚对应于模型参数的先验概率分布。 - 这种观点认为,正则化的最大似然对应最大化 p ( θ ∣ x ) p(\boldsymbol{\theta}\mid\boldsymbol{x}) p(θ∣x),相当于最大化 log p ( x ∣ θ ) + log p ( x ∣ θ ) \log p(\boldsymbol{x}\mid\boldsymbol{\theta})+\log p(\boldsymbol{x}\mid\boldsymbol{\theta}) logp(x∣θ)+logp(x∣θ)。 log p ( x ∣ θ ) \log p(\boldsymbol{x}\mid\boldsymbol{\theta}) logp(x∣θ) 即通常的数据似然项,参数的对数先验项 log p ( θ ) \log p(\boldsymbol{\theta}) logp(θ)则包含了对 θ \boldsymbol{\theta} θ 特定值的偏好。
- 这种观点在
应用数学与机器学习基础 - 贝叶斯统计篇
有所描述。 - 正则自编码器不适用这样的解释是因为正则项取决于数据,因此根据定义上(从文字的正式意义)来说,它不是一个先验。
- 我们仍可以认为这些正则项隐式地表达了对函数的偏好。
- 我们可以认为整个稀疏自编码器框架是对带有潜变量的生成模型的近似最大似然训练,而不将稀疏惩罚视为复制任务的正则化。
- 假如我们有一个带有可见变量 x和潜变量 h \boldsymbol{h} h 的模型,且具有明确的联合分布 p model ( x , h ) = p model ( h ) p model ( x ∣ h ) p_{\text{model}}(\boldsymbol{x},\boldsymbol{h})=p_{\text{model}}(\boldsymbol{h})p_{\text{model}}(\boldsymbol{x}\mid\boldsymbol{h}) pmodel(x,h)=pmodel(h)pmodel(x∣h)。
- 我们将 p model ( h ) p_{\text{model}}(\boldsymbol{h}) pmodel(h) 视为模型关于潜变量的先验分布,表示模型看到 x \boldsymbol{x} x 的信念先验。
- 这与我们之前使用 ‘‘先验’’ 的方式不同,之前指分布 p ( θ ) p(\boldsymbol{\theta}) p(θ) 在我们看到数据前就对模型参数的先验进行编码。
- 对数似然函数可分解为:
log p model ( x ) = log ∑ h ( h , x ) \log p_{\text{model}}(\boldsymbol{x})=\log \sum\limits_h(\boldsymbol{h},\boldsymbol{x}) logpmodel(x)=logh∑(h,x) — 公式2 \quad\textbf{---\footnotesize{公式2}} —公式2 - 我们可以认为自编码器使用一个高似然值 h \boldsymbol{h} h 的点估计近似这个总和。
- 这类似于稀疏编码生成模型(
线性因子模型 - 稀疏编码篇
),但 h \boldsymbol{h} h 是参数编码器的输出,而不是从优化结果推断出的最可能的 h \boldsymbol{h} h。 - 从这个角度看,我们根据这个选择的 h \boldsymbol{h} h,最大化如下:
log p model ( h , x ) = log p model ( h ) + log p model ( x ∣ h ) \log p_{\text{model}}(\boldsymbol{h},\boldsymbol{x})=\log p_{\text{model}}(\boldsymbol{h})+\log p_{\text{model}}(\boldsymbol{x}\mid\boldsymbol{h}) logpmodel(h,x)=logpmodel(h)+logpmodel(x∣h) — 公式3 \quad\textbf{---\footnotesize{公式3}} —公式3 - log p model ( h ) \log p_{\text{model}}(\boldsymbol{h}) logpmodel(h)项能被稀疏诱导。如 Laplace \text{Laplace} Laplace先验, p model ( h i ) = λ 2 e − λ ∣ h i ∣ p_{\text{model}}(h_i)=\frac{\lambda}{2}e^{-\lambda |h_i|} pmodel(hi)=2λe−λ∣hi∣ — 公式4 \quad\textbf{---\footnotesize{公式4}} —公式4
- 对应于绝对值稀疏惩罚。将对数先验表示为绝对值惩罚,我们得到:
Ω ( h ) = λ ∑ i ∣ h i ∣ \Omega(\boldsymbol{h})=\lambda\sum\limits_i |h_i| Ω(h)=λi∑∣hi∣ — 公式5 \quad\textbf{---\footnotesize{公式5}} —公式5
− log p model ( h ) = ∑ i ( λ ∣ h i ∣ − log λ 2 ) = Ω ( h ) + const -\log p_{\text{model}}(\boldsymbol{h})=\sum\limits_i (\lambda|h_i|-\log \frac{\lambda}{2})=\Omega(\boldsymbol{h})+\text{const} −logpmodel(h)=i∑(λ∣hi∣−log2λ)=Ω(h)+const — 公式6 \quad\textbf{---\footnotesize{公式6}} —公式6 - 这里的常数项只跟 λ \lambda λ 有关。通常我们将 λ \lambda λ 视为超参数,因此可以丢弃不影响参数学习的常数项。
- 其他如 Student-t \text{Student-t} Student-t先验也能诱导稀疏性。
- 从稀疏性导致 p model ( h ) p_{\text{model}}(\boldsymbol{h}) pmodel(h) 学习成近似最大似然的结果看,稀疏惩罚完全不是一个正则项。
- 这仅仅影响模型关于潜变量的分布。
- 这个观点提供了训练自编码器的另一个动机:这是近似训练生成模型的一种途径。
- 这也给出了为什么自编码器学到的特征是有用的另一个解释:它们描述的潜变量可以解释输入。
- 这类似于稀疏编码生成模型(
- 稀疏自编码器的早期工作 ( Ranzato et al., 2007a, 2008 \text{Ranzato et al., 2007a, 2008} Ranzato et al., 2007a, 2008) 探讨了各种形式的稀疏性,并提出了稀疏惩罚和 log Z \log Z logZ 项(将最大似然应用到无向概率模型 p ( x ) = 1 Z p ~ ( x ) p(\boldsymbol{x}) = \frac{1}{Z}\tilde{p}(\boldsymbol{x}) p(x)=Z1p~(x)时产生)之间的联系。
- 这个想法是最小化 log Z \log Z logZ 防止概率模型处处具有高概率,同理强制稀疏可以防止自编码器处处具有低的重构误差。
- 这种情况下,这种联系是对通用机制的直观理解而不是数学上的对应。
- 在数学上更容易解释稀疏惩罚对应于有向模型 p model ( h ) p model ( x ∣ h ) p_{\text{model}}(\boldsymbol{h})p_{\text{model}}(\boldsymbol{x}\mid\boldsymbol{h}) pmodel(h)pmodel(x∣h)中的 log p model ( h ) \log p_{\text{model}}(\boldsymbol{h}) logpmodel(h)。
- Glorot et al. (2011b) \text{Glorot et al. (2011b)} Glorot et al. (2011b) 提出了一种在稀疏(和去噪)自编码器的 h \boldsymbol{h} h 中实现真正为零的方式。该想法是使用整流线性单元产生编码层。基于将表示真正推向零(如绝对值惩罚)的先验,可以间接控制表示中零的平均数量。
去噪自编码器
-
除了向代价函数增加一个惩罚项,我们也可以改变重构误差项得到一个能学到有用信息的自编码器。
-
传统的自编码器最小化以下目标: L ( x , g ( f ( x ) ) ) L(\boldsymbol{x},g(f(\boldsymbol{x}))) L(x,g(f(x))) — 公式7 \quad\textbf{---\footnotesize{公式7}} —公式7
-
其中 L L L是一个损失函数,衡量 g ( f ( x ) ) g(f(\boldsymbol{x})) g(f(x))与 x \boldsymbol{x} x的不相似性,如它们不相似度的 L 2 L^2 L2范数。如果模型被赋予足够的容量, L L L仅仅鼓励 g ∘ f g\circ f g∘f学成一个恒等函数。
-
相反,去噪自编码器 ( denoising autoencoder, DAE \text{denoising autoencoder, DAE} denoising autoencoder, DAE) 最小化: L ( x , g ( f ( x ~ ) ) ) L(\boldsymbol{x},g(f(\tilde{\boldsymbol{x}}))) L(x,g(f(x~))) — 公式8 \quad\textbf{---\footnotesize{公式8}} —公式8
其中 x ~ \tilde{\boldsymbol{x}} x~是被某种噪声损坏 x \boldsymbol{x} x的副本。因此去噪自编码器必须撤消这些损坏,而不是简单地复制输入。 -
Alain and Bengio (2013) \text{Alain and Bengio (2013)} Alain and Bengio (2013) 和 Bengio et al. (2013d) \text{Bengio et al. (2013d)} Bengio et al. (2013d) 指出去噪训练过程强制 f f f 和 g g g隐式地学习 p data ( x ) p_{\text{data}}(x) pdata(x) 的结构。
- 因此去噪自编码器也是一个通过最小化重构误差获取有用特性的例子。
- 这也是将过完备、高容量的模型用作自编码器的一个例子——只要小心防止这些模型仅仅学习一个恒等函数。
惩罚导数作为正则
- 另一正则化自编码器的策略是使用一个类似稀疏自编码器中的惩罚项 Ω \Omega Ω:
L ( x , g ( f ( x ) ) ) + Ω ( h , x ) L(\boldsymbol{x},g(f(\boldsymbol{x})))+\Omega(\boldsymbol{h},\boldsymbol{x}) L(x,g(f(x)))+Ω(h,x) — 公式9 \quad\textbf{---\footnotesize{公式9}} —公式9
但 Ω \Omega Ω的形式不同: Ω ( h , x ) = λ ∑ i ∥ ∇ x h i ∥ 2 \Omega(\boldsymbol{h},\boldsymbol{x})=\lambda\sum\limits_i \Vert \nabla_x h_i \Vert^2 Ω(h,x)=λi∑∥∇xhi∥2 — 公式10 \quad\textbf{---\footnotesize{公式10}} —公式10 - 这迫使模型学习一个在 x \boldsymbol{x} x 变化小时目标也没有太大变化的函数。
- 因为这个惩罚只对训练数据适用,它迫使自编码器学习可以反映训练数据分布信息的特征。
- 这样正则化的自编码器被称为收缩自编码器 ( contractive autoencoder, CAE \text{contractive autoencoder, CAE} contractive autoencoder, CAE)。
- 这种方法与去噪自编码器、流形学习和概率模型存在一定理论联系。
总结
- 正则自编码器通过巧妙地结合传统自编码器的重构能力与正则化策略,成功地在无标签数据的情况下挖掘出了数据的内在结构和特征。其设计核心在于通过正则化项对编码过程施加限制,迫使模型学习到的表示更加稀疏、平滑或具有特定的统计特性,从而有效减少了模型复杂度,提高了数据的表示效率和模型的泛化能力。无论是在图像处理、自然语言处理还是其他领域,正则自编码器都展现出了广阔的应用前景和巨大的研究价值。
- 随着深度学习技术的不断发展,正则自编码器及其变体将继续在数据科学领域发挥重要作用,推动更多创新应用的诞生。
往期内容回顾
应用数学与机器学习基础 - 贝叶斯统计篇
线性因子模型 - 稀疏编码篇