【发布时间】:2017-05-23 08:37:55
【问题描述】:
我写了一个神经网络, 它主要基于 James McCaffrey https://visualstudiomagazine.com/articles/2015/04/01/back-propagation-using-c.aspx 的神经网络(已修复错误)我遇到了各种 Git 项目和书籍,使用他的代码 当他为 MS 研究工作时,我认为他的工作会很好,也许不是最重要的(它不是在 cuda 之上运行),但我可以阅读它的代码,尽管我不喜欢它。他的样本处理的数据集与我的问题非常相似。
我的目标是解决一些图像分类问题(基于像素信息的数据集) 这个问题不容易重现,但我设法创建了一个包含 50 个好的场景和 50 个坏的场景的数据集。当在散点图中绘制测量值时,两组都有很多模糊的边界重叠。我自己无法从中做出什么,这对我来说太模糊了。由于每个样本有 5 个输入,我想知道神经网络是否能够找到内部关系并解决我的模糊数据分类问题。
而且它确实做到了.. 好吧,我猜。
取决于权重的播种(我达到了 80%)、节点的数量和学习的时间;我的训练分数在 90% 到 85% 左右,最近是 95%
首先我使用了权重的随机初始化。 然后我玩了节点的数量。 我玩的是学习率、动量和重量衰减。 他们从(得分 85 到 90%):
// as in the example code i used
int maxEpochs = 100000;
double learnRate = 0.05;
double momentum = 0.01;
double weightDecay = 0.0001;
到(得分 95%)
int maxEpochs = 100000;
double learnRate = 0.02; //had a huge effect
double momentum = 0.01;
double weightDecay = 0.001; //had a huge effect
与更改网络的随机初始化和更改上述常量相比,节点数量的影响较小,这让我有点惊讶。
然而这让我感到好奇。
- 一般来说,95% 是高分吗? (不确定限制在哪里,但我认为这也取决于数据集,虽然我对 95% 感到惊讶,但我想知道是否可以将其调整到 97%。
- 隐藏节点的数量,我应该尽量减少它们吗? 目前它是 5:9:3,但我曾经使用 5:6:3 的网络获得过类似的分数。
- 神经网络通过改变初始随机种子权重(不同的起始种子)来获得模型而产生很大的评分影响是否正常;因为我认为训练会克服开始的情况。
【问题讨论】:
标签: machine-learning neural-network backpropagation