- 自动编码器的主要任务是什么?
- 特征提取
- 无人监督的预训练
- 维度降低
- 生成模型
- 异常检测(自动编码器通常不利于重建异常值)
- 假设你想训练一个分类器并且你有很多未标记的训练数据,但只有几千个标记的实例。 自动编码器如何提供帮助?你会怎么做?
如果你想训练一个分类器,你有很多未标记的训练数据,但只有几千个标记的实例,
- 你可以首先在完整数据集上训练深度自动编码器(标记为+未标记),
- 然后将其下半部分重新用于分类器(即,重复使用层到编码层,包括在内)并使用标记数据训练分类器。
如果标记数据很少,则可能需要在训练分类器时冻结重用的图层。
- 如果自动编码器完美地重建输入,它一定是一个好的自动编码器吗? 如何评估自动编码器的性能?
自动编码器完美地重建其输入的事实并不一定意味着它是一个好的自动编码器;也许它只是一个过度完备的自动编码器,它学会了将其输入复制到编码层然后再输出到输出。
事实上,即使编码层包含单个神经元,非常深的自动编码器也可以学习将每个训练实例映射到不同的编码(例如,第一个实例可以映射到0.001,第二个实例可以映射到0.002,第三个到0.003,依此类推),
- 它可以“用心”学习为每个编码重建正确的训练实例。
- 它可以完美地重建其输入,而无需真正学习数据中任何有用的模式。
在实践中,这种映射不太可能发生,但它说明了完美的重建不能保证自动编码器学到任何有用的东西。
但是,如果它产生非常糟糕的重建,那么它几乎可以保证是一个糟糕的自动编码器。
为了评估自动编码器的性能,一种选择是测量重建损失(例如,计算MSE,输出的均方减去输入)。
- 高重建损失是自动编码器坏的一个好兆头,
- 但低重建损失并不能保证它是好的。
你还应该根据自动编码器的用途来评估自动编码器。例如,如果你将其用于分类器的无监督预训练,那么你还应该评估分类器的性能。
- 什么是欠完备和过完备的自动编码器? 过度完整的自动编码器的主要风险是什么?超完备自动编码器的主要风险是什么?
欠完备自动编码器 - undercomplete autoencoder是其编码层小于输入和输出层的编码器。如果它更大,那么它是一个过度完整的自动编码器 - overcomplete autoencoder。
过度完整的自动编码器 - excessively undercomplete autoencoder的主要风险是它可能无法完成重建输入。
超完备自动编码器 - overcomplete autoencoder 的主要风险是它可能只是将输入复制到输出,而不学习任何有用的功能。
- 如何在堆叠自动编码器中绑定权重? 这样做有什么意义?
要将编码器层及其相应解码器层的权重联系起来,只需使解码器权重等于编码器权重的转置即可。
这将模型中的参数数量减少了一半,通常使训练收敛得更快,训练数据更少,并降低了过度拟合训练集的风险。
- 什么是可视化堆叠自动编码器下层学习的功能的常用技术? 更高层呢?
- 为了可视化由堆叠自动编码器的下层学习的特征,通常的技术是通过将每个权重向量重新整形为输入图像的大小来简单地绘制每个神经元的权重(例如,对于MNIST,重塑形状[784]至[28,28]的权重向量)。
- 为了可视化更高层学习的特征,一种技术是显示最能激活每个神经元的训练实例。
- 什么是生成模型? 你能说出一种生成型自动编码器吗?
生成模型是能够随机生成类似于训练实例的输出的模型。
例如,一旦在MNIST数据集上成功训练,生成模型可用于随机生成数字的真实图像。 输出分布通常类似于训练数据。
例如,由于MNIST包含每个数字的许多图像,因此生成模型将输出大致相同数量的每个数字的图像。
可以对一些生成模型进行参数化——例如,仅生成某些类型的输出。 生成自动编码器的一个例子是变分自动编码器。