Kri*_*tof 3 machine-learning neural-network unsupervised-learning autoencoder deep-learning
在场景 1 中,我有一个多层稀疏自动编码器,它试图重现我的输入,因此我的所有层都与随机启动的权重一起训练。没有监督层,在我的数据上这没有学到任何相关信息(代码工作正常,经过验证,因为我已经在许多其他深度神经网络问题中使用了它)
在场景 2 中,我只是在类似于深度学习的贪婪逐层训练中训练多个自动编码器(但最终没有监督步骤),每一层都在前一个自动编码器的隐藏层的输出上。他们现在将分别学习一些模式(正如我从可视化权重中看到的),但并不像我从单层 AE 中所期望的那样出色。
所以我决定尝试现在连接到 1 个多层 AE 的预训练层是否可以比随机初始化版本表现更好。如您所见,这与深度神经网络中微调步骤的想法相同。
但是在我的微调过程中,所有层的神经元似乎都没有得到改进,而是迅速收敛到一个完全相同的模式,最终什么也没学到。
问题:训练完全无监督的多层重建神经网络的最佳配置是什么?首先分层,然后进行某种微调?为什么我的配置不起作用?
经过一些测试后,我想出了一种方法,该方法似乎可以提供非常好的结果,并且正如您对“微调”所期望的那样,它提高了所有层的性能:
就像往常一样,在贪婪的逐层学习阶段,每个新的自动编码器都会尝试重建前一个自动编码器隐藏层的激活。然而,最后一个自动编码器(在微调期间将是我们多层自动编码器的最后一层)是不同的,这个自动编码器将使用前一层的激活并尝试重建“全局”输入(即原始输入被送到第一层)。
这样,当我连接所有层并将它们训练在一起时,多层自动编码器将在最终输出中真正重建原始图像。我发现即使没有监督步骤,学习的特征也有了巨大的改进。
我不知道这是否应该以某种方式与标准实现相对应,但我以前从未在任何地方找到过这个技巧。