神经网络:使用Encog进行分类

3
我正在尝试使用神经网络解决分类问题。由于我正在使用Scala的JVM,因此选择了Encog 3.x库。如果有更好的库可以处理这个问题,请告诉我。
我一直在使用弹性反向传播算法。我有一个隐藏层,例如3个输出神经元,分别对应3个目标类别。因此,理想的输出应该是1/0/0、0/1/0或0/0/1。现在的问题是训练试图最小化误差,例如,如果理想输出为1/0/0,则将0.6/0.2/0.2变成0.8/0.1/0.1。但是,由于我选择最高值作为预测的类别,所以这对我来说并不重要,我希望训练能够更加努力地减少错误预测次数。
因此,我学习到应该将softmax函数用作输出(虽然我不确定这是否会成为第四层,或者我只需用softmax替换第三层的激活函数),然后让训练减少交叉熵。现在我认为这个交叉熵需要计算整个网络或整个输出层,但是可以自定义的ErrorFunction根据神经元逐个计算误差(读取理想输入和实际输入的数组,写入误差值的数组)。那么,如何使用Encog(或其他基于JVM的库)进行交叉熵最小化呢?
1个回答

0

我也在使用Encog,但是在Java中,虽然我认为这并没有什么实质性的区别。我有类似的问题,据我所知,你必须编写自己的函数来最小化交叉熵。

而据我所理解,softmax应该只是替换您的第三层。


如何编写正确的交叉熵最小化误差函数,这正是问题所在。有什么想法吗?如果您有Java实现,那就太好了。 - herman
你好,这两个链接已经失效了。你有 HeatonResearch 上这两个页面的最新链接吗? - Shamit Verma
抱歉,我找不到它。 - mstechly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接