在一篇关于汽车编码器深入学习的文献中,人们说这些网络在2006年到2010年被用于深层神经网络初始化。
有人能解释一下是怎么做到的吗?
发布于 2018-02-06 10:36:59
有几种不同的技术。其中一个流行的是堆叠的自动编码器,每一层都是单独训练的。
从本质上讲,这是通过逐步增长的自动编码器,一次两层(一个编码层,加上等效的解码层),然后在每个步骤的成长完成训练。
如果从固定的培训集中学习,则可以将整个数据集的编码表示存储到培训的下一阶段,从而在构建层时节省一些计算。
在对每个编码器层分别进行训练之后,您可以使用自动编码器的编码器部分的权重作为深度神经网络的起始权重。从直觉上讲,这是有意义的,因为您知道可以用来重构输入,并且通常是压缩的,所以理论上应该从培训数据中提取出显著的细节。在这些预先训练的层之上,您可以添加一个或两个新的层来实现任何需要最终NN执行的分类或回归任务。然后,你会用贴标签的数据进行训练--这类似于微调网络和现在仍然在做的转移学习。
这个训练前阶段的结果可能是值得的。如果您有大量未标记的数据和相对较少的标记数据,那么它仍然是一种有效的技术。然而,ReLU的引入和对体重初始化的谨慎控制意味着深层网络通常可以被更直接地训练。最近的增加,如跳过连接和批量正常化,进一步改善了更直接的培训方法。
下面是一个代码示例,使用TensorFlow。
https://datascience.stackexchange.com/questions/27511
复制相似问题