自动编码器是如何用于初始化深度神经网络的?

数据挖掘 深度学习 自动编码器
2022-03-08 19:20:02

在一篇关于自动编码器深度学习的文档中,据说这些网络在 2006 年到 2010 年被用于深度神经网络初始化。

有人可以解释这是怎么做到的吗?

1个回答

有几种不同的技术。一种流行的方法是堆叠式自动编码器,其中每一层都是单独训练的。

本质上,这是通过逐步增长自动编码器来完成的,一次两层(一个编码层,加上等效的解码层),然后在每个增长步骤进行完整的训练。

如果从固定的训练集中学习,您可以将整个数据集的编码表示存储为下一阶段训练的输入,从而在构建层时节省一些计算。

在分别训练每个编码器层之后,您可以使用自动编码器的编码器部分的权重作为深度 NN 的起始权重。直观地说,这是有道理的,因为您将拥有一个您知道可用于重建它的输入表示,并且通常是压缩的,因此理论上应该从训练数据群中提取显着细节。在这些预训练层之上,您可以添加一两个新层来实现您需要最终 NN 执行的任何分类或回归任务。然后你将使用标记数据进行训练——这类似于微调网络和如今仍在进行的迁移学习。

这个预训练阶段的结果可能是值得的。如果您有大量未标记的数据和相对少量的标记数据,它仍然是一种有效的技术。然而,ReLU 的引入和对权重初始化的仔细控制意味着通常可以更直接地训练深度网络。最近添加的诸如跳过连接和批量标准化进一步改进了更直接的训练方法。

这是一个使用 TensorFlow 的代码示例