当前位置: 首页 > 知识库问答 >
问题:

如何训练和微调完全无监督的深层神经网络?

焦光霁
2023-03-14

在场景1中,我有一个多层稀疏自动编码器,它试图再现我的输入,所以我的所有层都使用随机启动的权重进行训练。没有监督层,在我的数据上,这没有学到任何相关信息(代码运行良好,经过验证,因为我已经在许多其他深层神经网络问题中使用过它)

在场景2中,我只是在贪婪的逐层训练中训练多个自动编码器,类似于深度学习(但最终没有监督步骤),每一层都在前一个自动编码器的隐藏层的输出上。他们现在将分别学习一些模式(正如我从可视化权重中看到的那样),但并不像我对单层AE的期望那样出色。

所以我决定尝试一下,现在连接到一个多层AE中的预训练层是否比随机初始化版本的性能更好。正如您所看到的,这与深层神经网络中微调步骤的想法相同。

但是在我的微调过程中,所有层的神经元似乎都迅速收敛到一个完全相同的模式,最终什么也学不到。

问:训练完全无监督的多层重建神经网络的最佳配置是什么?先分层,然后进行某种微调?为什么我的配置不起作用?

共有1个答案

姬歌者
2023-03-14

经过一些测试,我想出了一种方法,似乎可以得到很好的结果,正如您所期望的那样,通过“微调”,它可以提高所有层的性能:

就像正常情况一样,在贪婪的逐层学习阶段,每个新的自动编码器都会尝试重建之前自动编码器隐藏层的激活。然而,最后一个自动编码器(即微调期间多层自动编码器的最后一层)不同,这一层将使用前一层的激活,并尝试重建“全局”输入(即馈送到第一层的原始输入)。

这样,当我连接所有层并将它们训练在一起时,多层自动编码器将在最终输出中真正重建原始图像。我发现学习到的特征有了巨大的改进,即使没有监督步骤。

我不知道这是否应该以某种方式符合标准实现,但我以前在任何地方都没有发现这个技巧。

 类似资料:
  • 第 10 章介绍了人工神经网络,并训练了我们的第一个深度神经网络。 但它是一个非常浅的 DNN,只有两个隐藏层。 如果你需要解决非常复杂的问题,例如检测高分辨率图像中的数百种类型的对象,该怎么办? 你可能需要训练更深的 DNN,也许有 10 层,每层包含数百个神经元,通过数十万个连接来连接。 这不会是闲庭信步: 首先,你将面临棘手的梯度消失问题(或相关的梯度爆炸问题),这会影响深度神经网络,并使较

  • 第 10 章介绍了人工神经网络,并训练了第一个深度神经网络。 但它非常浅,只有两个隐藏层。 如果你需要解决非常复杂的问题,例如检测高分辨率图像中的数百种类型的对象,该怎么办? 你可能需要训练更深的 DNN,也许有 10 层或更多,每层包含数百个神经元,通过数十万个连接相连。 这可不像公园散步那么简单,可能碰到下面这些问题: 你将面临棘手的梯度消失问题(或相关的梯度爆炸问题):在反向传播过程中,梯度

  • 是否有方法按层(而不是端到端)训练卷积神经网络,以了解每一层对最终架构性能的贡献?

  • 校验者: @不将就 翻译者: @夜神月 2.13.1. 限制波尔兹曼机 Restricted Boltzmann machines (RBM)(限制玻尔兹曼机)是基于概率模型的无监督非线性特征学习器。当用 RBM 或 RBMs 中的层次结构提取的特征在馈入线性分类器(如线性支持向量机或感知机)时通常会获得良好的结果。 该模型对输入的分布作出假设。目前,scikit-learn 只提供了 Berno

  • 在本章中,我们将了解可以使用TensorFlow框架实现的神经网络训练的各个方面。 以下几个建议,可以评估 - 1. 反向传播 反向传播是计算偏导数的简单方法,其中包括最适合神经网络的基本形式的合成。 2. 随机梯度下降 在随机梯度下降中,批处理是示例的总数,用户用于在单次迭代中计算梯度。到目前为止,假设批处理已经是整个数据集。最好的例子是谷歌规模; 数据集通常包含数十亿甚至数千亿个示例。 3.

  • 我有一个关于卷积神经网络()训练的问题。 我成功地使用tensorflow训练了一个网络,它获取一个输入图像(1600像素),然后输出三个匹配的类中的一个。 使用不同的培训课程测试网络,效果良好。然而当我给它一个不同的第四个图像(不包含任何经过训练的3个图像)时,它总是返回一个随机匹配到其中一个类。 我的问题是,如何训练网络来分类图像不属于这三个训练图像中的任何一个?类似的例子是,如果我针对mni