From eff5b86bd1035bb1a48e87d2b6e24ebf95312e44 Mon Sep 17 00:00:00 2001 From: swordyork Date: Thu, 2 Mar 2017 10:11:39 +0800 Subject: [PATCH] update md; update format --- Chapter14/autoencoders.tex | 6 +- Chapter2/linear_algebra.tex | 2 +- README.md | 2 +- applied_math_and_machine_learning_basics.tex | 2 +- .../2016-12-02-Chapter2_linear_algebra.md | 4 +- .../2016-12-14-Chapter14_autoencoders.md | 138 +++++++++--------- 6 files changed, 78 insertions(+), 76 deletions(-) diff --git a/Chapter14/autoencoders.tex b/Chapter14/autoencoders.tex index 6305e9b..4f3739b 100644 --- a/Chapter14/autoencoders.tex +++ b/Chapter14/autoencoders.tex @@ -6,7 +6,7 @@ \chapter{\glsentrytext{AE}} \firstgls{AE}内部有一个\gls{hidden_layer} $\Vh$,可以产生\firstgls{code}表示输入。 该网络可以看作由两部分组成:一个由函数$ \Vh = f(\Vx)$表示的\gls{encoder}和一个生成\gls{reconstruction}的\gls{decoder} $\Vr=g(\Vh)$。 \figref{fig:chap14_autoencoder}展示了这种架构。 -如果一个\gls{AE}只是简单地学会将处处设置为$g(f(\Vx)) =\Vx$,那么这个\gls{AE}就没什么特别的用处。。 +如果一个\gls{AE}只是简单地学会将处处设置为$g(f(\Vx)) =\Vx$,那么这个\gls{AE}就没什么特别的用处。 相反,我们不应该将\gls{AE}设计成输入到输出完全相等。 这通常需要向\gls{AE}强加一些约束,使它只能近似地复制,并只能复制与训练数据相似的输入。 这些约束强制模型考虑输入数据的哪些部分需要被优先复制,因此它往往能学习到数据的有用特性。 @@ -104,7 +104,7 @@ \subsection{\glsentrytext{sparse}\glsentrytext{AE}} 我们可以简单地将惩罚项$\Omega(\Vh)$视为加到\gls{feedforward_network}的正则项,这个\gls{feedforward_network}的主要任务是将输入复制到输出(\gls{unsupervised_learning}的目标),并尽可能地根据这些\gls{sparse}特征执行一些\gls{supervised_learning}任务(根据\gls{supervised_learning}的目标)。 -不像其它正则项如\gls{weight_decay}——没有直观的贝叶斯解释。。 +不像其它正则项如\gls{weight_decay}——没有直观的贝叶斯解释。 如\secref{sec:maximum_a_posteriori_map_estimation}描述,\gls{weight_decay}和其他正则惩罚可以被解释为一个\glssymbol{MAP}近似贝叶斯\gls{inference},\gls{regularization}的惩罚对应于模型参数的先验概率分布。 这种观点认为,\gls{regularization}的最大似然对应最大化$p(\Vtheta \mid \Vx)$, 相当于最大化$\log p(\Vx \mid \Vtheta) + \log p(\Vtheta)$。 $\log p(\Vx \mid \Vtheta)$即通常的数据似然项,参数的对数先验项$\log p(\Vtheta)$则包含了对$\Vtheta$特定值的偏好。 这种观点在\secref{sec:bayesian_statistics}有所描述。 @@ -221,7 +221,7 @@ \section{表示能力、层的大小和深度} \gls{universal_approximation_theorem}保证至少有一层\gls{hidden_layer}且\gls{hidden_unit}足够多的\gls{feedforward_neural_network}能以任意精度近似任意函数(在很大范围里),这是非平凡深度(至少有一层\gls{hidden_layer})的一个主要优点。 -这意味着具有单\gls{hidden_layer}的\gls{AE}在数据域内能表示任意逼近数据的恒等函数。 +这意味着具有单\gls{hidden_layer}的\gls{AE}在数据域内能表示任意近似数据的恒等函数。 但是,从输入到\gls{code}的映射是浅层的。 这意味这我们不能任意添加约束,比如约束\gls{code}\gls{sparse}。 深度\gls{AE}(\gls{encoder}至少包含一层额外\gls{hidden_layer})在给定足够多的\gls{hidden_unit}的情况下,能以任意精度近似任何从输入到\gls{code}的映射。 diff --git a/Chapter2/linear_algebra.tex b/Chapter2/linear_algebra.tex index f4d550d..57c60cc 100644 --- a/Chapter2/linear_algebra.tex +++ b/Chapter2/linear_algebra.tex @@ -90,7 +90,7 @@ \section{标量、向量、矩阵和张量} (\MA^\top)_{i,j}= \SA_{j,i}. \end{equation} -\begin{figure}[!htb] +\begin{figure}[!bht] \ifOpenSource \centerline{\includegraphics{figure.pdf}} \else diff --git a/README.md b/README.md index 88b2f57..30add29 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ | [第十一章 实用方法](https://via.hypothes.is/https://exacity.github.io/deeplearningbook-chinese/Chapter11_practical_methodology/) | @liber145 | @wheaio, @angrymidiao | | 需要校对 | | [第十二章 应用](https://via.hypothes.is/https://exacity.github.io/deeplearningbook-chinese/Chapter12_applications/) | @swordyork, @futianfan | @wheaio | @corenel | 等待合并 | | [第十三章 线性因子模型](https://via.hypothes.is/https://exacity.github.io/deeplearningbook-chinese/Chapter13_linear_factor_models/) | @futianfan | @ZhiweiYang | | 需要校对 | -| [第十四章 自编码器](https://via.hypothes.is/https://exacity.github.io/deeplearningbook-chinese/Chapter14_autoencoders/) | @swordyork | @zizhan, ljl | @Seaball, @huangpingchun | 等待合并 | +| [第十四章 自编码器](https://exacity.github.io/deeplearningbook-chinese/Chapter14_autoencoders/) | @swordyork | | @Seaball, @huangpingchun | 完成合并 | | [第十五章 表示学习](https://via.hypothes.is/https://exacity.github.io/deeplearningbook-chinese/Chapter15_representation_learning/) | @liber145 | @cnscottzheng | | 需要校对 | | [第十六章 深度学习中的结构化概率模型](https://via.hypothes.is/https://exacity.github.io/deeplearningbook-chinese/Chapter16_structured_probabilistic_modelling/) | @futianfan | @cnscottzheng | | 需要校对 | | [第十七章 蒙特卡罗方法](https://via.hypothes.is/https://exacity.github.io/deeplearningbook-chinese/Chapter17_monte_carlo_methods/) | @futianfan | @zhangyafeikimi | | 需要校对 | diff --git a/applied_math_and_machine_learning_basics.tex b/applied_math_and_machine_learning_basics.tex index 5bf470b..28e0a6f 100644 --- a/applied_math_and_machine_learning_basics.tex +++ b/applied_math_and_machine_learning_basics.tex @@ -11,7 +11,7 @@ \part{应用数学与机器学习基础} 我们需要指定代表某些信念的模型、设计衡量这些信念与现实对应程度的\gls{cost_function}以及使用训练算法最小化这个\gls{cost_function}。 -这个基本框架是广泛多样的\gls{ML}算法的基础,包括非深度的\gls{ML}方法。 +这个基本框架是广泛多样的\gls{ML}算法的基础,其中也包括非深度的\gls{ML}方法。 在本书的后续部分,我们将在这个框架下开发\gls{DL}算法。 \input{Chapter2/linear_algebra.tex} diff --git a/docs/_posts/2016-12-02-Chapter2_linear_algebra.md b/docs/_posts/2016-12-02-Chapter2_linear_algebra.md index 3f1bd96..35c3743 100644 --- a/docs/_posts/2016-12-02-Chapter2_linear_algebra.md +++ b/docs/_posts/2016-12-02-Chapter2_linear_algebra.md @@ -92,7 +92,7 @@ share: false (\MA^\top)_{i,j}= \SA_{j,i}. \end{equation} -\begin{figure}[!htb] +\begin{figure}[!bht] \ifOpenSource \centerline{\includegraphics{figure.pdf}} \else @@ -583,7 +583,7 @@ $L^1$范数可以简化如下: 在这里,矩阵$\MA$有两个标准正交的特征向量,对应特征值为$\lambda_1$的$\Vv^{(1)}$以及对应特征值为$\lambda_2$的$\Vv^{(2)}$。 (左)我们画出了所有的单位向量$\Vu\in\SetR^2$的集合,构成一个单位圆。 (右)我们画出了所有的$\MA\Vu$点的集合。 -通过观察$\MA$拉伸单位圆的方式,我们可以看到它能够将$\Vv^{(i)}$方向的空间拉伸了$\lambda_i$倍。 } +通过观察$\MA$拉伸单位圆的方式,我们可以看到它将$\Vv^{(i)}$方向的空间拉伸了$\lambda_i$倍。 } \end{figure} diff --git a/docs/_posts/2016-12-14-Chapter14_autoencoders.md b/docs/_posts/2016-12-14-Chapter14_autoencoders.md index 0a52c23..f372b74 100644 --- a/docs/_posts/2016-12-14-Chapter14_autoencoders.md +++ b/docs/_posts/2016-12-14-Chapter14_autoencoders.md @@ -5,23 +5,23 @@ share: false --- 自编码器是神经网络的一种,经过训练后能尝试将输入复制到输出。 自编码器内部有一个隐藏层 $\Vh$,可以产生编码表示输入。 -该网络可以看作由两部分组成:一个编码器函数$ \Vh = f(\Vx)$和一个生成重构的解码器 $\Vr=g(\Vh)$。 +该网络可以看作由两部分组成:一个由函数$ \Vh = f(\Vx)$表示的编码器和一个生成重构的解码器 $\Vr=g(\Vh)$。 \fig?展示了这种架构。 -如果一个自编码器学会简单地设置$g(f(\Vx)) =\Vx$,那么这个自编码器就不会特别有用。 -相反,自编码器应该被设计成不能学会完美地复制。 -这通常需要强加一些约束,使自编码器只能近似地复制,并只能复制类似训练数据的输入。 -这些约束强制模型划定输入数据不同方面的主次顺序,因此它往往能学习到数据的有用特性。 +如果一个自编码器只是简单地学会将处处设置为$g(f(\Vx)) =\Vx$,那么这个自编码器就没什么特别的用处。 +相反,我们不应该将自编码器设计成输入到输出完全相等。 +这通常需要向自编码器强加一些约束,使它只能近似地复制,并只能复制与训练数据相似的输入。 +这些约束强制模型考虑输入数据的哪些部分需要被优先复制,因此它往往能学习到数据的有用特性。 -现代自编码器将编码器和解码器的思想推广,将其中的确定函数推广为随机映射$p_{\text{encoder}} (\Vh \mid \Vx)$和$p_{\text{decoder}}(\Vx \mid \Vh)$。 +现代自编码器将编码器和解码器的概念推而广之,将其中的确定函数推广为随机映射$p_{\text{encoder}} (\Vh \mid \Vx)$和$p_{\text{decoder}}(\Vx \mid \Vh)$。 数十年间,自编码器的想法一直是神经网络历史景象的一部分~{cite?}。 传统自编码器被用于降维或特征学习。 -近年来,自编码器与潜变量模型理论的联系将自编码器带到了生成建模的前沿,我们将在\chap?看到更多细节。 -自编码器可以被看作是前馈网络的一种特殊情况,并且可以使用完全相同的技术进行训练,通常使用minibatch梯度下降法(基于反向传播计算的梯度)。 -不像一般的前馈网络,自编码器也可以使用再循环训练{cite?},这是一种基于比较原始输入和重构输入激活的学习算法。 -相比反向传播算法,再循环算法从生物学上看似更有道理,但很少用于机器学习。 +近年来,自编码器与潜变量模型理论的联系将自编码器带到了生成式建模的前沿,我们将在\chap?揭示更多细节。 +自编码器可以被看作是前馈网络的一个特例,并且可以使用完全相同的技术进行训练,通常使用minibatch梯度下降法(其中梯度基于反向传播计算)。 +不同于一般的前馈网络,自编码器也可以使用再循环训练{cite?},这种学习算法基于比较原始输入的激活和重构输入的激活。 +相比反向传播算法,再循环算法更具生物学意义,但很少用于机器学习应用。 \begin{figure}[!htb] \ifOpenSource @@ -40,7 +40,7 @@ share: false # 欠完备自编码器 将输入复制到输出听起来没什么用,但我们通常不关心解码器的输出。 -相反,我们希望通过训练自编码器对输入进行复制的任务使$\Vh$获得有用的特性。 +相反,我们希望通过训练自编码器对输入进行复制而使$\Vh$获得有用的特性。 从自编码器获得有用特征的一种方法是限制$\Vh$的维度比$\Vx$小,这种编码维度小于输入维度的自编码器称为欠完备自编码器。 @@ -51,18 +51,18 @@ share: false \begin{align} L(\Vx, g(f(\Vx))), \end{align} -其中$L$是一个损失函数,衡量$g(f(\Vx))$与$\Vx$的不相似性,如均方误差。 +其中$L$是一个损失函数,惩罚$g(f(\Vx))$与$\Vx$的差异,如均方误差。 -当解码器是线性的且$L$是均方误差,欠完备的自编码器会学习出与PCA相同生成子空间。 -在这种情况下,自编码器学到了训练数据的主元子空间(执行复制任务的副效用)。 +当解码器是线性的且$L$是均方误差,欠完备的自编码器会学习出与PCA相同的生成子空间。 +这种情况下,自编码器在训练来执行复制任务的同时学到了训练数据的主元子空间。 -因此拥有非线性编码函数$f$和非线性解码器函数$g$的自编码器能够学习出更强大的PCA非线性推广。 -不幸的是,如果编码器和解码器被赋予太大的容量,自编码器会执行复制任务而捕捉不到任何有关数据分布的有用信息。 -从理论上说,我们可以想象只有一维编码的自编码器,但具有一个非常强大的非线性编码器,能够将每个训练数据$\Vx^{(i)}$表示为编码 $~i$。 -解码器可以学习将这些整数索引映射回特定训练样本的值。 -这种特定情形不会在实践中发生,但它清楚地说明,如果自编码器的容量太大,那训练来执行复制任务的自编码器可能无法学习到数据集的任何有用信息。 +因此拥有非线性编码器函数$f$和非线性解码器函数$g$的自编码器能够学习出更强大的PCA非线性推广。 +不幸的是,如果编码器和解码器被赋予过大的容量,自编码器会执行复制任务而捕捉不到任何有关数据分布的有用信息。 +从理论上说,我们可以设想这样一个自编码器,它只有一维编码,但它具有一个非常强大的非线性编码器,能够将每个训练数据$\Vx^{(i)}$表示为编码 $~i$。 +而解码器可以学习将这些整数索引映射回特定训练样本的值。 +这种特定情形不会在实际情况中发生,但它清楚地说明,如果自编码器的容量太大,那训练来执行复制任务的自编码器可能无法学习到数据集的任何有用信息。 @@ -70,7 +70,7 @@ share: false # 正则自编码器 编码维数小于输入维数的欠完备自编码器可以学习数据分布最显著的特征。 -我们已经看到,如果这类自编码器被赋予过大的容量,它就不能学到任何有用的信息。 +我们已经知道,如果赋予这类自编码器过大的容量,它就不能学到任何有用的信息。 如果隐藏编码的维数允许与输入相等,或隐藏编码维数大于输入的过完备情况下,会发生类似的问题。 @@ -78,16 +78,16 @@ share: false 理想情况下,根据要建模的数据分布的复杂性,选择合适的编码维数和编码器、解码器容量,就可以成功训练任意架构的自编码器。 -正则自编码器提供这样做的可能。 -正则自编码器使用的损失函数可以鼓励模型学习其他特性(除了将输入复制到输出),而不用限制使用浅层的编码器和解码器以及小的编码维数来限制模型的容量。 +正则自编码器提供这样的能力。 +正则自编码器使用的损失函数可以鼓励模型学习其他特性(除了将输入复制到输出),而不必限制使用浅层的编码器和解码器以及小的编码维数来限制模型的容量。 这些特性包括稀疏表示、表示的小导数、以及对噪声或输入缺失的鲁棒性。 -即使模型容量大到足够学习一个简单的复制功能,非线性且过完备的正则自编码器仍然能学到一些与数据分布相关的有用信息。 +即使模型容量大到足以学习一个无意义的恒等函数,非线性且过完备的正则自编码器仍然能够从数据中学到一些关于数据分布的有用信息。 除了这里所描述的方法(正则化自编码器最自然的解释),几乎任何带有潜变量并配有一个推断过程(计算给定输入的潜在表示)的生成模型,都可以看作是自编码器的一种特殊形式。 -强调与自编码器联系的两个生成建模方法是Helmholtz机~{cite?}的衍生模型,如变分自编码器(\sec?)和生成随机网络(\sec?)。 -这些模型能自然地学习大容量、对输入过完备的有用编码,而不需要正则化。 -这些编码显然是有用的,因为这些模型被训练为近似训练数据的最大概率而不是将输入复制到输出。 +强调与自编码器联系的两个生成式建模方法是Helmholtz机~{cite?}的衍生模型,如变分自编码器(\sec?)和生成随机网络(\sec?)。 +这些变种(或衍生)自编码器能够学习出高容量且过完备的模型,进而发现输入数据中有用的结构信息,并且也无需对模型进行正则化。 +这些编码显然是有用的,因为这些模型被训练为近似训练数据的概率分布而不是将输入复制到输出。 % confusing @@ -101,18 +101,18 @@ share: false 其中$g(\Vh)$是解码器的输出,通常$\Vh$是编码器的输出,即$\Vh = f(\Vx)$。 -稀疏自编码器通常用于学习特征,以便用于其他任务如分类。 +稀疏自编码器一般用来学习特征,以便用于像分类这样的任务。 稀疏正则化的自编码器必须反映训练数据集的独特统计特征,而不是简单地充当恒等函数。 以这种方式训练,执行附带稀疏惩罚的复制任务可以得到能学习有用特征的模型。 我们可以简单地将惩罚项$\Omega(\Vh)$视为加到前馈网络的正则项,这个前馈网络的主要任务是将输入复制到输出(无监督学习的目标),并尽可能地根据这些稀疏特征执行一些监督学习任务(根据监督学习的目标)。 -不像其他正则项如权重衰减,这个正则化没有直观的贝叶斯解释。 +不像其它正则项如权重衰减——没有直观的贝叶斯解释。 如\sec?描述,权重衰减和其他正则惩罚可以被解释为一个MAP近似贝叶斯推断,正则化的惩罚对应于模型参数的先验概率分布。 这种观点认为,正则化的最大似然对应最大化$p(\Vtheta \mid \Vx)$, 相当于最大化$\log p(\Vx \mid \Vtheta) + \log p(\Vtheta)$。 $\log p(\Vx \mid \Vtheta)$即通常的数据似然项,参数的对数先验项$\log p(\Vtheta)$则包含了对$\Vtheta$特定值的偏好。 这种观点在\sec?有所描述。 正则自编码器不适用这样的解释是因为正则项取决于数据,因此根据定义上(从文字的正式意义)来说,它不是一个先验。 -我们仍可以认为这些正则项隐式地表达了对函数的偏好。 +虽然如此,我们仍可以认为这些正则项隐式地表达了对函数的偏好。 @@ -167,15 +167,15 @@ p_{\text{model}}(h_i) = \frac{\lambda}{2} e^{-\lambda | h_i |}, ## 去噪自编码器 -除了向代价函数增加一个惩罚项,我们也可以改变重构误差项得到一个能学到有用信息的自编码器。 +除了向代价函数增加一个惩罚项,我们也可以通过改变重构误差项来获得一个能学到有用信息的自编码器。 传统的自编码器最小化以下目标 \begin{align} L(\Vx, g(f(\Vx))), \end{align} -其中$L$是一个损失函数,衡量$g(f(\Vx))$与$\Vx$的不相似性,如它们不相似度的$L^2$范数。 -如果模型被赋予足够的容量,$L$仅仅鼓励$g \circ f$学成一个恒等函数。 +其中$L$是一个损失函数,惩罚$g(f(\Vx))$与$\Vx$的差异,如它们彼此差异的$L^2$范数。 +如果模型被赋予过大的容量,$L$仅仅使得$g \circ f$学成一个恒等函数。 相反,去噪自编码器最小化 @@ -223,18 +223,18 @@ p_{\text{model}}(h_i) = \frac{\lambda}{2} e^{-\lambda | h_i |}, 回忆\sec?,其中提到加深前馈网络有很多优势。 这些优势也同样适用于自编码器,因为它也属于前馈网络。 -此外,编码器和解码器自身都是一个前馈网络,因此这两个部分也能各自从深度中获得好处。 +此外,编码器和解码器各自都是一个前馈网络,因此这两个部分也能各自从深度结构中获得好处。 -通用近似定理, %万能逼近定理保证至少有一层隐藏层且隐藏单元足够多的前馈神经网络能以任意精度近似任意函数(在很大范围里),这是非平凡深度的一个主要优点。 -这意味着单层隐藏层的自编码器在数据范围能表示任意接近数据的恒等函数。 +通用近似定理, %万能逼近定理保证至少有一层隐藏层且隐藏单元足够多的前馈神经网络能以任意精度近似任意函数(在很大范围里),这是非平凡深度(至少有一层隐藏层)的一个主要优点。 +这意味着具有单隐藏层的自编码器在数据域内能表示任意近似数据的恒等函数。 但是,从输入到编码的映射是浅层的。 这意味这我们不能任意添加约束,比如约束编码稀疏。 -编码器至少包含一层额外隐藏层的深度自编码器能够在给定足够多隐藏单元的情况,以任意精度近似任何从输入到编码的映射。 +深度自编码器(编码器至少包含一层额外隐藏层)在给定足够多的隐藏单元的情况下,能以任意精度近似任何从输入到编码的映射。 -深度可以指数地减少表示某些函数的计算成本。 +深度可以指数地降低表示某些函数的计算成本。 深度也能指数地减少学习一些函数所需的训练数据量。 读者可以参考\sec?巩固深度在前馈网络中的优势。 @@ -248,7 +248,7 @@ p_{\text{model}}(h_i) = \frac{\lambda}{2} e^{-\lambda | h_i |}, # 随机编码器和解码器 -自编码器仅仅是一个前馈网络,可以使用与传统前馈网络相同的损失函数和输出单元。 +自编码器本质上是一个前馈网络,可以使用与传统前馈网络相同的损失函数和输出单元。 如\sec?中描述,设计前馈网络的输出单元和损失函数普遍策略是定义一个输出分布$p(\Vy \mid \Vx) $并最小化负对数似然$-\log p(\Vy \mid \Vx)$。 @@ -260,14 +260,15 @@ p_{\text{model}}(h_i) = \frac{\lambda}{2} e^{-\lambda | h_i |}, 给定一个隐藏编码 $\Vh$,我们可以认为解码器提供了一个条件分布$p_{\text{model}}(\Vx \mid \Vh)$。 接着我们根据最小化$-\log p_{\text{decoder}}(\Vx \mid \Vh)$来训练自编码器。 损失函数的具体形式视$p_{\text{decoder}}$的形式而定。 -就传统的前馈网络来说,我们通常使用线性输出单元参数化高斯分布的均值(如果$\Vx$是实的)。 +就传统的前馈网络来说,如果$\Vx$是实值的,那么我们通常使用线性输出单元参数化高斯分布的均值。 在这种情况下,负对数似然对应均方误差准则。 -类似地,二值$\Vx$对应参数由sigmoid单元确定的Bernoulli分布,离散的$\Vx$对应softmax分布等等。 -为了便于计算概率分布,我们通常认为输出变量与给定$\Vh$是条件独立的,但一些技术(如混合密度输出)可以解决输出相关的建模。 +类似地,二值$\Vx$对应于一个Bernoulli分布,其参数由sigmoid输出单元确定的。 +而离散的$\Vx$对应softmax分布,以此类推。 +在给定$\Vh$的情况下,为了便于计算概率分布,输出变量通常被视为是条件独立的,但一些技术(如混合密度输出)可以解决输出相关的建模。 -为了更彻底地区别之前看到的前馈网络,我们也可以将\textbf{编码函数}(encoding function)~$f(\Vx)$的概念推广为\textbf{编码分布}(encoding distribution)~$ p_{\text{encoder}}(\Vh \mid \Vx)$, 如\fig?中所示。 +为了更彻底地与我们之前了解到的前馈网络相区别,我们也可以将\textbf{编码函数}(encoding function)~$f(\Vx)$的概念推广为\textbf{编码分布}(encoding distribution)~$ p_{\text{encoder}}(\Vh \mid \Vx)$, 如\fig?中所示。 \begin{figure}[!htb] \ifOpenSource @@ -287,8 +288,8 @@ p_{\text{encoder}}(\Vh \mid \Vx) = p_{\text{model}}(\Vh\mid\Vx) \begin{align} p_{\text{decoder}}(\Vx \mid \Vh) = p_{\text{model}}(\Vx\mid\Vh). \end{align} -一般情况下,编码器和解码器的分布没有必要与一个唯一的联合分布$p_{\text{model}}(\Vx, \Vh)$的条件分布相容。 -{Alain-et-al-arxiv2015}指出将编码器和解码器作为去噪自编码器训练,能使它们渐近地相容(有足够的容量和样本)。 +通常情况下,编码器和解码器的分布没有必要是与唯一一个联合分布$p_{\text{model}}(\Vx, \Vh)$相容的条件分布。 +{Alain-et-al-arxiv2015}指出,在保证足够的容量和样本的情况下,将编码器和解码器作为去噪自编码器训练,能使它们渐近地相容。 @@ -335,7 +336,7 @@ $p_{\text{reconstruct}} (\Vx \mid \tilde \Vx) = p_{\text{decoder}}(\Vx \mid\Vh)$ ## 得分估计 得分匹配{cite?}是最大似然的代替。 -它提供了概率分布的一致估计,鼓励模型在各个数据点$\Vx$上获得与数据分布相同的得分。 +它提供了概率分布的一致估计,促使模型在各个数据点$\Vx$上获得与数据分布相同的得分。 在这种情况下,得分是一个特定的梯度场: \begin{align} \nabla_{\Vx} \log p(\Vx) . @@ -365,16 +366,16 @@ $g(f(\tilde \Vx))$对可能产生$\tilde \Vx$的原始点$\Vx$的质心进行估 } \end{figure} -去噪地训练一类采用高斯噪声和均方误差作为重构误差的特定去噪自编码器(sigmoid隐藏单元, 线性重构单元),与训练一类特定的被称为RBM的无向概率模型是等价的{cite?}。 +对一类采用高斯噪声和均方误差作为重构误差的特定去噪自编码器(具有sigmoid隐藏单元和线性重构单元)的去噪训练过程,与训练一类特定的被称为RBM的无向概率模型是等价的{cite?}。 这类模型将在\sec?给出更详细的介绍;对于现在的讨论,我们只需知道这个模型能显式的给出$p_{\text{model}}(\Vx; \Vtheta)$。 -当RBM使用去噪得分匹配~{cite?}训练时,它的学习算法与训练对应的去噪自编码器是等价的。 +当RBM使用去噪得分匹配算法~{cite?}训练时,它的学习算法与训练对应的去噪自编码器是等价的。 在一个确定的噪声水平下,正则化的得分匹配不是一致估计量;相反它会恢复分布的一个模糊版本。 然而,当噪声水平趋向于0且训练样本数趋向与无穷时,一致性就会恢复。 我们将会在\sec?更详细地讨论去噪得分匹配。 自编码器和RBM还存在其他联系。 -得分匹配应用于RBM后,其代价函数将等价于重构误差结合类似CAE惩罚的正则项 {cite?}。 +在RBM上应用得分匹配后,其代价函数将等价于重构误差结合类似CAE惩罚的正则项 {cite?}。 {Bengio+Delalleau-2009}指出自编码器的梯度是对RBM对比散度训练的近似。 @@ -415,13 +416,13 @@ $g(f(\tilde \Vx))$对可能产生$\tilde \Vx$的原始点$\Vx$的质心进行估 目前为止我们所讨论的仅限于去噪自编码器如何学习表示一个概率分布。 -更一般的,我们可能希望使用自编码器作为生成模型,并从该分布中进行采样。 +更一般的,我们可能希望使用自编码器作为生成模型,并从其分布中进行采样。 这将在\sec?中讨论。 -## 历史观点 +## 历史展望 采用MLP去噪的想法可以追溯到{Lecun-these87}和{Gallinari87}的工作。 {Behnke-2001}也曾使用循环网络对图像去噪。 @@ -429,11 +430,11 @@ $g(f(\tilde \Vx))$对可能产生$\tilde \Vx$的原始点$\Vx$的质心进行估 然而,"去噪自编码器"的命名指的不仅仅是学习去噪,而且可以学到一个好的内部表示(作为学习去噪的副效用)。 这个想法提出较晚{cite?}。 学习到的表示可以被用来预训练更深的无监督网络或监督网络。 -与稀疏自编码器、稀疏编码、收缩自编码器等正则化的自编码器类似, DAE的动机是允许使用容量非常大的编码器,同时防止在编码器和解码器学习一个毫无用处的恒等函数 。 +与稀疏自编码器、稀疏编码、收缩自编码器等正则化的自编码器类似, DAE的动机是允许学习容量很高的编码器,同时防止在编码器和解码器学习一个无用的恒等函数 。 -在引入现代DAE之前,{Inayoshi-and-Kurita-2005}探讨了与一些相同的方法和相同的目标。 -他们在监督目标的情况下最小化重构误差 ,并在监督MLP的隐藏层注入噪声,通过引入重构误差和注入噪声提升泛化能力。 +在引入现代DAE之前,{Inayoshi-and-Kurita-2005}探索了其中一些相同的方法和目标。 +他们除了在监督目标的情况下最小化重构误差之外,还在监督MLP的隐藏层注入噪声,通过引入重构误差和注入噪声提升泛化能力。 然而,他们的方法基于线性编码器,因此无法学习到现代DAE能学习的强大函数族。 @@ -442,7 +443,7 @@ $g(f(\tilde \Vx))$对可能产生$\tilde \Vx$的原始点$\Vx$的质心进行估 # 使用自编码器学习流形 -如\sec?描述,自编码器跟其他很多机器学习算法一样,也应用了将数据集中在一个低维流形或者一小组这样的流形的思想。 +如\sec?描述,自编码器跟其他很多机器学习算法一样,也利用了数据集中在一个低维流形或者一小组这样的流形的思想。 其中一些机器学习算法仅能学习到在流形上表现良好但给定不在流形上的输入会导致异常的函数。 自编码器进一步借此想法,旨在学习流形的结构。 @@ -452,7 +453,7 @@ $g(f(\tilde \Vx))$对可能产生$\tilde \Vx$的原始点$\Vx$的质心进行估 流形的一个重要特征是切平面的集合。 $d$维流形上的一点$\Vx$,切平面由能张成流形上允许变动的局部方向的$d$维基向量给出。 -如\fig?所示,这些局部方向说明了我们能如何微小地改变$\Vx$而一直处于流形上。 +如\fig?所示,这些局部方向决定了我们能如何微小地变动$\Vx$而保持于流形上。 \begin{figure}[!htb] \ifOpenSource @@ -480,7 +481,7 @@ $n$维流形在每个点处都具有$n$维切平面。 所有自编码器的训练过程涉及两种推动力的折衷: \begin{enumerate} + 学习训练样本$\Vx$的表示 $\Vh$使得$\Vx$能通过解码器近似地从$\Vh$中恢复。 -$\Vx$是从训练数据挑出的事实是关键的,因为这意味着在自编码器不需要成功重构不属于数据生成分布下的输入。 +$\Vx$是从训练数据挑出的这一事实很关键,因为这意味着在自编码器不需要成功重构不属于数据生成分布下的输入。 + 满足约束或正则惩罚。 这可以是限制自编码器容量的架构约束,也可以是加入到重构代价的一个正则项。 这些技术一般倾向那些对输入较不敏感的解。 @@ -489,13 +490,14 @@ $\Vx$是从训练数据挑出的事实是关键的,因为这意味着在自编 显然,单一的推动力是无用的——从它本身将输入复制到输出是无用的,同样忽略输入也是没用的。 -相反,两种推动力结合是有用的,因为它们迫使隐藏的表示能捕获有关数据分布结构的信息。 +相反,两种推动力结合是有用的,因为它们驱使隐藏的表示能捕获有关数据分布结构的信息。 重要的原则是,自编码器必须有能力表示\emph{重构训练实例所需的变化}。 如果该数据生成分布集中靠近一个低维流形,自编码器能隐式产生捕捉这个流形局部坐标系的表示:仅在$\Vx$周围关于流形的相切变化需要对应于$\Vh=f(\Vx)$中的变化。 因此,编码器学习从输入空间$\Vx$到表示空间的映射,映射仅对沿着流形方向的变化敏感,并且对流形正交方向的变化不敏感。 -\fig?中一维的例子说明,为了使重构函数对数据点周围的扰动输入不敏感,我们可以让自编码器恢复流形的结构。 +\fig?中一维的例子说明,我们可以通过构建对数据点周围的输入扰动不敏感的重构函数,使得自编码器恢复流形结构。 + \begin{figure}[!htb] \ifOpenSource @@ -516,7 +518,7 @@ $\Vx$是从训练数据挑出的事实是关键的,因为这意味着在自编 -对比其他方法是有用且受启发的,可以了解自编码器为什么对流形学习是有用的。 +为了理解自编码器可用于流形学习的原因,我们可以将自编码器和其他方法进行对比。 学习表征流形最常见的是流形上(或附近)数据点的表示。 对于特定的实例,这样的表示也被称为嵌入。 它通常由一个低维向量给出,具有比这个流形的"外围"空间更少的维数。 @@ -557,7 +559,7 @@ $\Vx$是从训练数据挑出的事实是关键的,因为这意味着在自编 } \end{figure} -然而,{Bengio+Monperrus-2005}指出了这些局部非参数方法应用于流形学习的根本困难:如果流形不是很光滑(它们有许多波峰、波谷和弯曲),为覆盖其中的每一个变化,我们可能需要非常多的训练样本,导致没有能力泛化到没见过的变化。 +然而,{Bengio+Monperrus-2005}指出了这些局部非参数方法应用于流形学习的根本困难:如果流形不是很光滑(它们有许多波峰、波谷和曲折),为覆盖其中的每一个变化,我们可能需要非常多的训练样本,导致没有能力泛化到没见过的变化。 实际上,这些方法只能通过内插,概括相邻实例之间流形的形状。 不幸的是,AI问题中涉及的流形可能具有非常复杂的结构,难以仅从局部插值捕获特征。 考虑\fig?转换所得的流形样例。 @@ -693,7 +695,7 @@ PSD训练过程正则化解码器,使用$f(\Vx)$可以推断出良好编码的 在PSD的实际应用中,迭代优化仅在训练过程中使用。 -模型被部署后,参数编码器 $f$用于计算学习好的特征。 +模型被部署后,参数编码器 $f$用于计算已经习得的特征。 相比通过梯度下降推断$\Vh$,计算$f$是很容易的。 因为$f$是一个可微带参函数,PSD模型可堆叠,并用于初始化其他训练准则的深度网络。 @@ -705,19 +707,19 @@ PSD训练过程正则化解码器,使用$f(\Vx)$可以推断出良好编码的 自编码器已成功应用于降维和信息检索任务。 降维是表示学习和深度学习的第一批应用之一。 -它是研究自编码器早期动机之一。 -例如, {Hinton-Science2006}训练了一个堆叠RBM,然后利用它们的权重初始化一个深度自编码器并逐渐变小隐藏层,在30个单元的瓶颈处达到极值。 +它是研究自编码器早期驱动力之一。 +例如, {Hinton-Science2006}训练了一个栈式RBM,然后利用它们的权重初始化一个隐藏层逐渐减小的深度自编码器,终结于30个单元的瓶颈。 生成的编码比30维的PCA产生更少的重构误差,所学到的表示更容易定性解释,并能联系基础类别,这些类别表现为分离良好的集群。 低维表示可以提高许多任务的性能,例如分类。 小空间的模型消耗更少的内存和运行时间。 -据{Salakhutdinov+Hinton2007-small}和{Torralba+Fergus+Weiss-2008}观察,降维的许多形式是跟彼此邻近的样本语义相关的。 -映射到低维空间能帮助泛化提示了这个想法。 +据{Salakhutdinov+Hinton2007-small}和{Torralba+Fergus+Weiss-2008}观察,许多降维的形式会将语义上相关的样本置于彼此邻近的位置。 +映射到低维空间所提供的线索有助于泛化。 -从降维中比普通任务受益更多的是信息检索,即在数据库中查询类似条目的任务。 -此任务从降维获得类似其他任务的一般益处,同时在某些种低维空间中的搜索变得极为高效。 +相比普通任务,信息检索从降维中获益更多,此任务需要找到数据库中类似查询的条目。 +此任务不仅和其他任务一样从降维中获得一般益处,还使某些低维空间中的搜索变得极为高效。 特别的,如果我们训练降维算法生成一个低维且\emph{二值}的编码,那么我们就可以将所有数据库条目在哈希表映射为二值编码向量。 这个哈希表允许我们返回具有相同二值编码的数据库条目作为查询结果进行信息检索。 我们也可以非常高效地搜索稍有不同条目,只需反转查询编码的各个位。 @@ -732,5 +734,5 @@ sigmoid单元必须被训练为到达饱和,对所有输入值都接近0或接 -学习哈希函数的思想已在其他数个方向进一步探讨,包括改变损失训练表示的想法,其中所需优化的损失与哈希表中查找附近样本的任务有更直接的联系{cite?}。 +学习哈希函数的思想已在其他多个方向进一步探讨,包括改变损失训练表示的想法,其中所需优化的损失与哈希表中查找附近样本的任务有更直接的联系{cite?}。