【问题标题】:How to find dynamically the depth of a network in Convolutional Neural Network如何在卷积神经网络中动态查找网络的深度
【发布时间】:2015-06-15 06:08:03
【问题描述】:

我一直在寻找一种自动方法来决定我应该将多少层应用于我的网络,具体取决于数据和计算机配置。我在网上搜索,但我找不到任何东西。可能是我的关键字或查找方式有误。

你有什么想法吗?

【问题讨论】:

  • 我认为(目前)没有一种万能的解决方案。例如。将Krizhevsky's 卷积网络与GoogLeNet 进行比较。两者都处理相同的 ImageNet 数据集,但 Krizhevsky 的网络使用 7 层,而 GoogLeNet 使用 22 层(或更多,取决于您的计数方式)。
  • 这肯定会很好......不幸的是,找到什么配置有效大约是问题的一半。另一半的大部分人正在弄清楚你的数据......并获得足够的数据。如果您需要经验法则,请解决您的问题并使用与您的问题最接近的已知网络设计。如果是小黑白图像,请尝试几个 MNIST 网络。小彩色图像,试试 CIFAR。更大的彩色图像,尝试人们共享的众多 imagenet 网络之一。下一步是修改它以满足您的需求......输入/输出,学习率。调整过滤器大小很棘手......小心!

标签: machine-learning neural-network convolution deep-learning conv-neural-network


【解决方案1】:

神经网络的层数或深度是其超参数之一

这意味着它是一个无法从数据中学习到的量,但您应该在尝试拟合您的数据集之前选择它。根据Bengio

我们定义一个超 学习算法 A 的参数作为变量 在将 A 实际应用到数据之前设置, 一个不是由学习算法直接选择的 规律本身。

有三种主要方法可以找出超参数的最佳值。前两个在我链接的论文中得到了很好的解释。

  • 手动搜索。使用众所周知的黑魔法,研究人员通过试错法选择最佳值。
  • 自动搜索。研究人员依靠自动化程序来加快搜索速度。
  • Bayesian optimization.

更具体地说,向深度神经网络添加更多层可能会提高性能(减少泛化误差),当它与训练数据过拟合时会提高到一定数量。

因此,在实践中,您应该使用 4 层训练您的 ConvNet,尝试添加一个隐藏层并再次训练,直到您看到一些过度拟合。当然,需要一些强大的正则化技术(例如 dropout)。

【讨论】:

    猜你喜欢
    • 2014-08-24
    • 2015-04-09
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 2016-09-13
    • 2017-01-01
    • 1970-01-01
    相关资源
    最近更新 更多