【问题标题】:Tensorflow: how to find good neural network architectures/hyperparameters?Tensorflow:如何找到好的神经网络架构/超参数?
【发布时间】:2016-05-31 04:27:36
【问题描述】:

我一直在使用 tensorflow 来处理各种我认为这些天被认为相当容易的事情。 Captcha 破解,基本的 OCR,我在大学的 AI 教育中记得的东西。它们是相当大的问题,因此并不适合有效地尝试不同的 NN 架构。

您可能知道,Joel Grus 在 TensorFlow 中推出了 FizzBu​​zz。 TLDR:从数字的二进制表示(即 12 位编码数字)学习为 4 位(none_of_the_others,可被 3 整除,可被 5 整除,可被 15 整除)。对于这个玩具问题,您可以快速比较不同的网络。

所以我一直在尝试一个简单的前馈网络并编写了一个程序来比较各种架构。像一个 2 层隐藏层前馈网络,然后是 3 层,不同的激活函数,......大多数架构,嗯,很烂。他们获得接近 50-60 的成功率并保持在那里,与您进行多少培训无关。

一些表现非常好。例如,每个具有 23 个神经元的 sigmoid 激活双隐藏层工作得非常好(在 2000 个训练时期后正确率为 89-90%)。不幸的是,任何接近它的东西都非常糟糕。从第二层或第一层中取出一个神经元,它的正确率下降到 30%。将其从第一层中取出也是如此……单个隐藏层,20 个激活的 tanh 神经元也做得很好。但大多数都只有一半多一点的性能。

现在考虑到对于实际问题,我实际上无法对不同架构进行这类研究,有没有办法让好的架构保证正常工作?

【问题讨论】:

    标签: tensorflow data-science


    【解决方案1】:

    您可能会发现 Yoshua Bengio 在 Practical Recommendations for Gradient-Based Training of Deep Architectures 上的论文有助于了解有关超参数及其设置的更多信息。

    如果您特别要求获得更多保证成功的设置,我建议您阅读批量标准化。我发现它降低了错误选择学习率和权重初始化的失败率。

    有些人也不鼓励使用像 sigmoid() 和 tanh() 这样的非线性函数,因为他们会遇到梯度消失问题

    【讨论】:

      猜你喜欢
      • 2020-09-29
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 2018-09-21
      • 2010-09-30
      • 1970-01-01
      相关资源
      最近更新 更多