我是神经网络和一般编程的新手。我用java编写了一个神经网络,我正在查看足球数据。我有两个输入:
1)主队战胜n场比赛2)客场球队战胜n场比赛
使用“标准统计模型”,人们可以仅使用这两个数字来预测一场比赛中将出现的目标数量,并具有合理的准确性。然而,当我试图训练我的神经网络来预测目标数量时,它根本不收敛:(
我正在使用遗传算法来训练网络,这是最初几代中最适合的个体,种群规模为100,000:
1) 0.1407408056662556 2) 0.13406266176967252 3) 0.13406267600215235 4) 0.1338753567259805 5) 0.13280257001618265 6) 0.13275165964860766 7) 0.1319768652096691 8) 0.13161029326238236
现在我知道它看起来像是在收敛,但它正在以令人痛苦的缓慢速度收敛,我在许多代人中多次运行过这种情况,它不会低于0.13。
我使用的是一个前馈神经网络,具有10个神经元的隐藏层和一个输出神经元。我在隐藏层使用双曲正切sigmoid函数,在输出层使用sigmoid函数。我将目标数除以10,得到0到1之间的输出。
在我开始运行这个程序之前,我假设NN的性能会优于简单的统计模型,但它并不接近。我的问题是:
从结果可以看出,代码中是否存在某个地方的错误?我是否需要对网络架构进行更改?我是否需要以某种方式更改网络输入/训练数据?
我已经试着找出这个问题已经有一段时间了,这让我精神错乱。我们非常感谢你的每一次演讲。
非常感谢。
发布于 2012-02-12 01:38:40
很可能你得到的是这样的神经网络配置所能达到的最好的结果。存在现有的NN实现,例如Weka中的多层感知器。如果你有很好的分析工具,并且确信你得到的结果不是由于实现错误而得到的,那么开始尝试这些方法会更好。
https://stackoverflow.com/questions/9235976
复制