我正在研究反向传播算法的实现。我到目前为止所实现的功能似乎有效,但我无法确定算法是否已经实现,这是我在网络训练测试中注意到的:
实施规范:
当我运行反向传播培训过程时:
答案 0 :(得分:2)
简短的回答是“不,很可能你的实施不正确”。由于错误成本非常高,您的网络无法进行培训。正如评论中所讨论的那样,您的网络受到vanishing gradient problem的严重影响,这在深层网络中是不可避免的。从本质上讲,您网络的第一层比后者学得慢得多。所有神经元在开始时都会得到一些随机权重,对吧?由于第一层几乎没有学到任何东西,因此大的初始错误会在整个网络中传播!
如何解决?从你的问题的描述看来,只有一个隐藏层的前馈网络应该能够做到这一点(如universal approximation theorem中所证明的那样)。
检查例如free online book by Michael Nielsen如果您想了解更多信息。
所以我从中了解到反向传播不能处理深度神经网络?还是有一些方法来防止这个问题?
它可以,但这绝不是一个微不足道的挑战。深度神经网络自60年代开始使用,但只有90%的研究人员提出了如何有效处理它们的方法。我建议阅读“神经网络:贸易技巧”的“高效BackProp”章节(由Y.A. LeCun等人撰写)。
以下是摘要:
f(x)=1.7159*(tanh(2/3x)
的网络:它不会在+1 / -1处饱和,而是在这些点处具有最高增益(二阶导数最大值)m^(-1/2)
给出的标准差的分布中随机抽取,其中m
是单位的输入数培训网络的首选方法应如下:
另外,我的一般评论: