1

我已经浏览了所有代码,如果确实是问题所在,那么我不确定它是如何躲避我的。发布时间太长了,所以我会告诉你我的问题,我在修复什么,如果你有任何想法我还能搜索什么,我会非常感激!

好的,首先按照 haykin 的指示,将权重初始化为均值为零,方差等于该神经元输入数量的 1/平方根。

我已经给它一个简单的正弦波来学习。隐藏层中的权重似乎收敛,为该层中的每个神经元提供相同的输出......这使得输出神经元给出几乎固定的输出。

那么,可能是什么原因呢?首先,我检查了网络学习率是否导致它陷入局部最小值并增加了它,并尝试了有无动量。我发现它在一定程度上解决了这个问题,因为网络确实会产生正弦波。然而,不妥!:(

网络输出的幅度大约是从中心轴向上的高度的三分之一,并且不会低于。它看起来有点像你已经拾起正弦波,将其压扁三分之一,然后将其抬高以使其最低峰位于轴上。此外,顶峰都是平坦的......

从那以后我尝试改变网络拓扑结构,如果我添加另一个隐藏神经元(总共 3 个),它突然只会给出一个固定的输出。

4

1 回答 1

0

对于具有 sigmoid 激活函数的神经网络来说,正弦波不是一个简单的问题。3 个隐藏的神经元通常是不够的。看看这个例子:有 200 个隐藏节点来近似 [0, 2*pi] 内的正弦波。本例中的激活函数是:隐藏层中的逻辑 sigmoid 和输出层中的恒等函数。您始终应该在输出层中使用身份进行回归。

当你没有得到好的结果时,降低学习率也可能是有益的。有时梯度下降会在误差函数的陡峭区域之间振荡,因为学习率太大。

于 2013-04-29T07:05:17.460 回答