machine-learning - 为什么要对卷积神经网络进行预训练

标签 machine-learning computer-vision neural-network

反向传播神经网络通常存在梯度消失的问题。 我发现卷积神经网络(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?

提前致谢。

最佳答案

  1. 预训练是一种正则化技术。它提高了模型的泛化准确性。由于网络暴露于大量数据(我们在许多任务中都有大量无监督数据),因此权重参数被传递到更可能代表整体数据分布的空间,而不是过度拟合基础数据的特定子集分配。神经网络,尤其是那些具有大量隐藏单元的高模型表示能力的神经网络,往往会过度拟合您的数据,并且容易受到随机参数初始化的影响。此外,由于初始层以监督方式正确初始化,梯度稀释问题不再那么严重。这就是为什么预训练被用作监督任务的初始步骤,监督任务通常采用梯度下降算法。

  2. CNN 与其他神经网络有着同样的命运。需要调整的参数太多;最佳输入补丁大小、隐藏层数量、每层特征图数量、池化和步幅大小、归一化窗口、学习率等。因此,与其他机器学习技术相比,模型选择问题相对困难。大型网络的训练要么在 GPU 上要么在 CPU 集群上进行。

关于machine-learning - 为什么要对卷积神经网络进行预训练,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26423668/

相关文章:

python - 多参数Tensorflow分类程序

computer-vision - 计算机视觉数据集

linux - ffmpeg:加载共享库时出错:libopenh264.so.5

python - 使用 keras 神经网络逼近具有多维输出的函数

python - Scikit-learn Ridge 分类器 : extracting class probabilities

lua - 在Torch/Lua中,加载保存的模型和使用Xavier权重初始化方法有什么区别?

python - TimeDistributed 一次多个层

tensorflow - 多 GPU 架构、梯度平均 - 模型不太准确?

machine-learning - weka 是否在交叉验证中平衡跨类的训练/测试集?

java - 使用计算机视觉进行 Android 数独求解器