深度学习在实践中的应用瓶颈

机器算法验证 机器学习 深度学习 深度信念网络
2022-03-12 12:05:32

看了很多深度学习论文后,一种粗略的感觉是,为了获得超常的性能,训练网络存在很多技巧。从行业应用的角度来看,除了google、facebook等大科技公司的精英研究团队外,很难开发出这种技巧。那么在实践中应用深度学习算法的最佳方法是什么。任何想法和建议将不胜感激。

2个回答

诚然,用于提高性能的一些细节被视为技巧,您并不总是知道这些技巧是否会为您的数据和网络带来相同的改进。

您肯定需要的一些东西:

  • 数据,很多
  • GPU可以让你更快地运行实验,并在更短的时间内尝试更多的东西。
  • 学习曲线分析。最后归结为测试集的性能,但是查看训练和测试指标,您可以找出性能不佳的原因。强烈的偏见?从太多隐藏节点过度拟合?
  • 激活函数我不认为知道您需要哪种激活功能是一种技巧。ReLU 有一个关键特征,即它们不会像 sigmoid 和 tanh 那样饱和。具有 ReLU 的神经元将不再具有类似概率的输出,但是对于中间层的神经元,无论如何您都不需要它。您获得的优势是减轻梯度的消失或爆炸并加速收敛。
  • 正则化可能适用于技巧,但如果您使用任何主流深度学习库,您可以通过 dropout 获得现成的正则化实现。
  • 数据增强。您基本上是在综合扩展数据集,而不会增加手动注释的成本。关键是通过实际有意义的转换来扩充数据。这样网络就可以看到它在测试阶段或部署到产品中时可能遇到的数据变体。对于视觉数据,水平翻转是微不足道的,并增加了很多增益。抖动可能取决于数据的类型以及它的噪声程度。
  • 潜入超参数探索可能会令人沮丧。从小型网络和简单的培训程序开始。较小的网络训练起来更快。当您看到过度拟合的迹象时添加更多层。
  • 良好的初始化随机初始化适用于衡量网络的收敛能力,但不一定会导致最佳性能。同时,继续迭代可能会导致网络对训练数据过度拟合。如果可能,请使用已经学习了表示的预训练网络并将其微调到您的数据集。无监督预训练是另一种方法,它可以允许监督训练过程从权重空间中更有希望的位置开始。
  • 审查技巧。了解这个技巧的真正作用。一篇描述用于提高网络性能的小细节的论文将关注这一新方面。这篇论文可能是作者一直在从事的一系列项目的一部分。这个技巧的背景可能并不总是很清楚,但对于作者来说,这不是一个技巧,而是一种解决他们遇到的问题的技术。有时出现一种技术并被视为一种技巧,然后有人会分析它的影响并描述它的功能。例如,这个技巧相当于更多人熟悉的 L2 正则化。我们可以决定是应该尝试这种新技术还是坚持我们已经知道的 L2 正则化。很多这些技巧都试图解决深度学习中的问题,比如过拟合的风险,昂贵的计算、过度参数化和高度冗余的权重。值得花时间了解这些技巧的真正作用。通过了解他们试图解决的问题,我们可以判断不同技巧的适用性,并选择在我们可能存在的限制条件下效果很好的技巧(例如,计算能力小,数据集小)

这是一本有趣的书Neural Networks: Tricks of the Trade,这是该书的 2012 年更新版本。许多神经网络先驱的文章。

ypx 很好地谈到了许多培训的实际问题,所以谈谈你提出的其他问题:许多精英工业实验室仍在发布他们的结果。例如,Microsoft Research 的团队刚刚赢得了 ImageNet 2015,他们发布了一份技术报告,描述了他们的新深度网络模块:Deep Residual Learning for Image Recognition,谷歌团队也发布了他们的 Inception 架构,Going Deeper with Convolutions在不平凡的程度上,机器学习(目前)仍然存在一种分享重大创新的文化。可能是因为关键是访问数据。谷歌和 Facebook 只是可以访问我们没有的数据。很难说有多少功劳归于原始算法创新,又有多少功劳归于海量数据。

至于未来会发生什么?很难说。鉴于这些数据驱动的公司已经变得多么有价值以及市场的竞争程度,很多人提出了这个问题。但就目前而言,我认为工业研究实验室共享和不共享的内容已经达到了足够好的平衡。我理解他们没有分享他们确切的代码实现。但他们确实分享了一些非常新颖的创新。

寻找发表重要结果并阅读、阅读、阅读的研究人员。我相信 Yann LeCun 在 Reddit 上的 AMA,他提到他是一个贪婪的读者。我相信这是最重要的。在可行的情况下,尝试重新创建他们的基准,或将他们的方法应用于预算范围内的数据集。

我认为无论您身在何处或您的生活站位如何,这是保持敏锐并继续发展您的技能的最佳方式。成为一个贪婪的读者,实现事物并建立直觉。我个人没有参加 ImageNet 比赛的资源,但阅读所有表现最好的 ImageNet 组的文章对我有很大帮助。