我一直在断断续续地使用tensorflow来做各种事情,我想这些天来我认为这些事情相当容易。验证码破解,基本的OCR,我在大学接受AI教育时记得的事情。它们是相当大的问题,因此不适合在不同的NN体系结构中进行有效的实验。
正如您可能知道的,Joel Grus在tensorflow中推出了FizzBuzz。TLDR:从数字的二进制表示中学习(即。12位)编码为4位(none_of_the_others,可被3整除,可被5整除,可被15整除)。对于这个玩具问题,您可以快速比较不同的网络。
因此,我一直在尝试一个简单的前馈网络,并编写了一个程序来比较各种架构。比如一个2隐层的前馈网络,然后是3层,不同的激活函数,...大多数架构,嗯,都很烂。它们的成功率接近50-60,并保持在那里,与你做了多少训练无关。
有几个人表现得很好。例如,一个有23个神经元的乙状结肠激活的双隐藏层工作得很好(经过2000次训练后,准确率为89-90%)。不幸的是,任何接近它的东西都是相当糟糕的。从第二层或第一层中取出一个神经元,它的正确率会下降到30%。把它从第一层中拿出来也是一样的…单个隐藏层,20个神经元的tanh激活也做得很好。但大多数人的表现只有一半多一点。
现在,考虑到对于实际问题,我不能实际地对不同的体系结构进行这些类型的研究,有没有方法可以保证好的体系结构工作?
发布于 2016-05-31 19:54:13
您可能会发现Yoshua Bengio在Practical Recommendations for Gradient-Based Training of Deep Architectures上的论文有助于您了解有关超参数及其设置的更多信息。
如果您特别要求设置具有更多保证成功的设置,我建议您阅读有关批处理规范化的内容。我发现它降低了学习率和权重初始化的错误选择的失败率。
有些人还不鼓励使用像sigmoid()和tanh()这样的非线性函数,因为它们受到梯度消失问题的困扰。
https://stackoverflow.com/questions/37536833
复制相似问题