为啥要对卷积神经网络进行预训练
Posted
技术标签:
【中文标题】为啥要对卷积神经网络进行预训练【英文标题】:why pretraining for convolutional neural networks为什么要对卷积神经网络进行预训练 【发布时间】:2014-12-12 22:58:35 【问题描述】:通常反向传播NN存在梯度消失的问题。 我发现卷积神经网络 (CNN) 如何摆脱这种消失的梯度问题(为什么?)。
此外,在一些论文中,还讨论了一些用于 CNN 的预训练方法。 有人可以解释一下吗?
(1) the resons for pretraining in CNN and
(2) what are the problems/limitations with CNN?
(3) any relavent papers talking about the limitation of CNN?
提前致谢。
【问题讨论】:
只是关于第一点。 CNN 作为其他类型的深度学习方法尝试学习许多节点和层,这会削弱反向传播算法的能力。输出节点中 10% 的误差差异可能导致第一层更新 0.000001%。预训练(无监督方法)不会遇到这个问题,并且可用于在使用反向传播进行微调(并将模式与我们所需的输出相关联)之前更新网络以获得有意义的权重。 尝试在交叉验证中查找此内容:stats.stackexchange.com/search?q=cnn 【参考方案1】:预训练是一种正则化技术。它提高了模型的泛化精度。由于网络暴露于大量数据(我们在许多任务中有大量无监督数据),权重参数被带到一个更有可能代表整体数据分布的空间,而不是过度拟合基础数据的特定子集分配。神经网络,尤其是那些具有大量隐藏单元的高模型表示能力的网络,往往会过度拟合您的数据,并且容易受到随机参数初始化的影响。此外,由于初始层以监督方式正确初始化,梯度稀释问题不再那么严重。这就是为什么预训练被用作监督任务的初始步骤,通常使用梯度下降算法进行。
CNN 与其他神经网络有着相同的命运。参数太多需要调优;最佳输入块大小、隐藏层数、每层特征图数、池化和步幅大小、归一化窗口、学习率等。因此,与其他 ML 技术相比,模型选择问题相对困难。大型网络的训练要么在 GPU 上进行,要么在 CPU 集群上进行。
【讨论】:
我不确定其他神经网络,但我相信 CNN 还不能有效地在集群上进行训练。它通常在 GPU 上完成。我当然希望得到纠正。 我在集群上训练它们,这显然不是一种有效的方法。但是,关于如何在没有 GPU 的大型机器上训练深度网络的工作仍在进行中。如果你好奇,我会推荐你看这篇论文:cs.stanford.edu/people/ang/…以上是关于为啥要对卷积神经网络进行预训练的主要内容,如果未能解决你的问题,请参考以下文章