我已经实现了一个简单的神经网络框架,它只支持多层感知器和简单的反向传播。它适用于线性分类和通常的 XOR 问题,但对于正弦函数逼近,结果并不令人满意。
我基本上试图用一个由 6-10 个神经元组成的隐藏层来近似正弦函数的一个周期。该网络使用双曲正切作为隐藏层的激活函数和输出的线性函数。结果仍然是对正弦波的一个相当粗略的估计,并且需要很长时间来计算。
我查看了encog以供参考,但即使如此,我也无法通过简单的反向传播使其工作(通过切换到弹性传播,它开始变得更好,但仍然比这个类似问题中提供的超级光滑的 R 脚本差得多)。那么我真的在尝试做一些不可能的事情吗?用简单的反向传播(没有动量,没有动态学习率)不可能近似正弦吗?R中神经网络库使用的实际方法是什么?
编辑:我知道即使使用简单的反向传播(如果您对初始权重非常幸运) ,也绝对有可能找到足够好的近似值,但实际上我更想知道这是否是一种可行的方法。与我的实现甚至 encog 的弹性传播相比,我链接到的 R 脚本似乎收敛得非常快和健壮(在 40 个 epoch 中只有很少的学习样本)。我只是想知道是否可以做一些事情来改进我的反向传播算法以获得相同的性能,或者我是否必须研究一些更高级的学习方法?