
使用自动编码器和
GAN
的表征学习和生成学习
|
501
到目前为止,为了强制自动编码器学习有趣的特征,我们限制了编码层的大小,使其成
为不完整自动编码器。实际上,还有许多其他类型的约束可以使用,包括使编码层与输
入一样大甚至更大,从而成为一个完整自动编码器。现在让我们看看其中一些方法。
17.6 去噪自动编码器
强制自动编码器学习有用特征的另一种方法是向其输入中添加噪声,训练它来恢复原始
的无噪声输入。这个想法自 1980 年代开始就存在(在 Yann LeCun 1987 年的硕士论文中
提到过)。在 2008 年的论文中
注 5
,Pascal Vincent 等人表明自动编码器也可以用于特征
提取。在 2010 年的论文中
注 6
,Vincent 等人提出了堆叠式去噪自动编码器。
12
噪声可以是添加到输入的纯高斯噪声,也可以是随机关闭的输入,就像 dropout(在第
11 章中介绍)一样。图 17-8 显示了这两种方法。
输出
输入 输入
输出
隐藏层 3
隐藏层 1 隐藏层 1
隐藏层 2 隐藏层 2
隐藏层 3
Dropout高斯噪声
图 17-8:具有高斯噪声(左)或 dropout(右)的去噪自动编码器
实现很简单直接:这是一个常规的堆叠式自动编码器,在编码器的输入中附加了一个
Dropout 层(或者你可以改用 GaussianNoise 层)。回想一下,Dropout 层仅在训
练期间处于激活状态(GaussianNoise 层也是如此):
dropout_encoder = keras.models.Sequential([ ...