贪婪的逐层预训练已经过时了吗?

人工智能 神经网络
2021-10-23 07:23:06

我正在研究使用贪婪的逐层预训练来初始化我的网络的权重。

只是为了清楚起见:我指的是使用逐渐更深的自动编码器来逐渐教网络在当时的一层输入的更抽象的表示。

但是,阅读这里,我读到:

尽管如此,使用现代方法(例如更好的激活函数、权重初始化、梯度下降的变体和正则化方法)可能会获得更好的性能。

今天,我们现在知道,训练完全连接的深度架构不需要贪婪的逐层预训练,但无监督预训练方法是第一个成功的方法。

那么我的问题是:如果我正在构建一个已经使用“现代”技术的网络,例如 ReLU 激活、批量标准化、亚当优化器等,那么好用的贪婪的逐层预训练是否无用?或者它仍然可以在网络初始化中提供优势吗?

1个回答

这取决于。它可以给你一个推动力,或者它不能。

直觉上,如果网络初始化正确,我预计它实际上会损害性能(我认为优化器不是瓶颈,因为它们在两种方法中都会产生相同的效果)。

理想世界:我们将网络作为一个整体进行优化,以在编码器的顺序层上获得更好的粗粒度特征

多年前的现实:深度网络在向前或向后传播信息方面存在问题(例如:消失/爆炸激活和消失/爆炸梯度)。

  • 解决方案:将训练分解为迭代方案,在每个优化步骤中不需要向后信息传播很远
    • 缺点:每一步都在寻找一个贪婪的解决方案,而不是一个深入的解决方案。

今天的现实:根据领域,有各种出版物讨论如何规避这个问题(例如:残差网络、He 初始化、修复初始化、批处理规范、不同的激活函数等......)

  • 解决方案:我们可以在没有顺序分层训练的情况下训练深度 AE,并且通常会获得更好的结果,因为模型和优化方案允许形成深度表示。

我希望这有助于对此事有某种形式的直觉。