我已经构建了自己的神经网络,但是遇到了奇怪的问题。
这个网络是一个相当简单的前馈1-N-1网络,使用反向传播学习。Sigmoid被用作激活函数。
我的训练集由随机值生成,范围在[-PI,PI]之间,并且它们的[0,1]-缩放正弦值(这是因为"Sigmoid-net"只产生[0,1]之间的值,而未缩放的正弦函数产生[-1,1]之间的值)。
使用该训练集,并将网络设置为1-10-1,学习速率为0.5,一切都很好,网络按照应有的方式学习正弦函数。 但是..如果我完全相同地为余弦函数做所有事情,则网络无法学习它。 无论隐藏层大小或学习速率设置如何。
有任何想法吗? 我错过了什么吗?
这个网络是一个相当简单的前馈1-N-1网络,使用反向传播学习。Sigmoid被用作激活函数。
我的训练集由随机值生成,范围在[-PI,PI]之间,并且它们的[0,1]-缩放正弦值(这是因为"Sigmoid-net"只产生[0,1]之间的值,而未缩放的正弦函数产生[-1,1]之间的值)。
使用该训练集,并将网络设置为1-10-1,学习速率为0.5,一切都很好,网络按照应有的方式学习正弦函数。 但是..如果我完全相同地为余弦函数做所有事情,则网络无法学习它。 无论隐藏层大小或学习速率设置如何。
有任何想法吗? 我错过了什么吗?
编辑:我的问题似乎与this小程序中所见的问题相似。除非首先教一些“更容易”的内容(例如二次函数的1400个周期),否则它似乎无法学习正弦函数。小程序中的所有其他设置都可以保留为初始设置。因此,在正弦或余弦的情况下,似乎需要增强权重,至少在某种程度上正确方向,才能找到解决方案。为什么会这样呢?