最近,有人问我如何使用未标记的数据对深度神经网络进行预训练,这意味着,不是使用较小的随机数初始化模型权重,而是通过预先训练的模型(使用未标记的数据来设置初始权重) )。
好吧,从直觉上来说,我有点理解,它可能有助于解决梯度消失的问题,并且在没有太多可用标签数据的情况下可以缩短训练时间。但是,我仍然真的不知道该怎么做,如何用未标记的数据训练神经网络?是SOM还是Boltzmann机器?
有人听说过吗?如果是,您能否提供一些链接到资料或论文。我好奇。非常感谢!
答案 0 :(得分:2)
有很多方法可以从未标记的数据中进行深度学习。分层预训练是由Geoff Hinton的小组在2000年代开发的,尽管通常这种做法并不受欢迎。
更现代的无监督深度学习方法包括自动编码器,变体自动编码器和生成对抗网络。我不会深入探讨所有细节,但是其中最简单的自动编码器通过将未标记的输入压缩为低维实值表示形式,并使用此压缩表示形式来重构原始输入来工作。直观地讲,可以有效地用于重新创建输入的压缩 code 可能会捕获所述输入的一些有用功能。有关说明和更详细的说明,请参见here。您选择的深度学习库中还提供了许多示例。
我认为从某种意义上讲,任何列出的方法都可以用作预训练,例如,为诸如分类之类的区分性任务准备网络,尽管我不知道这是一种特别常见的做法。初始化方法,激活功能和其他优化技巧通常可以先进地完成,而无需复杂的初始化过程。