为了学习的目的,我实现了一个简单的神经网络框架,它只支持多层感知器和简单的反向传播。对于线性分类和通常的XOR问题,它的工作原理没问题,但对于正弦函数逼近,结果并不令人满意。用神经网络逼近正弦函数
我基本上试图用一个由6-10个神经元组成的隐藏层来逼近正弦函数的一个周期。网络使用双曲线切线作为隐藏层的激活函数和输出的线性函数。结果仍然是对正弦波的相当粗略的估计,需要很长的时间来计算。
我看着encog参考,但即使有,我不能把它简单的反向传播的工作(通过切换到弹性传播它开始变得更好,但仍比提供in this similar question超光滑[R脚本的方式更糟糕)。那么我是否真的想做一些不可能的事情?用简单的反向传播(无动量,没有动态学习速率)是否无法逼近正弦? R中神经网络库使用的实际方法是什么?
编辑:我知道这肯定是可能找到一个足够好的近似,即使简单的反向传播(如果你与你的初始权重非常幸运),但其实我更想知道这是否是一个可行的办法。与我的实现相比,我链接到的R脚本看起来似乎非常快速且稳健地收敛(在40个时期,只有很少的学习样本),甚至是encog的弹性传播。我只是想知道我是否可以做些什么来改进反向传播算法以获得相同的性能,还是需要研究一些更高级的学习方法?
你有没有得到它的工作?面对同样的问题。 –
不要这么想,但是因为这是4年前,所以不能真正回忆所有的细节。上面提到的nnet包是用C实现的,只有700行代码,然后一些R包装在它的上面。也许看看会给你一些想法。 – Muton