加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 无法理解神经网络

发布时间:2020-12-17 02:02:55 所属栏目:百科 来源:网络整理
导读:我正在尝试使用神经网络来解决问题.我从Coursera上提供的机器学习课程中了解到它们,并很高兴地发现FANN是神经网络的 Ruby实现,所以我没有必要重新发明飞机. 但是,我真的不明白为什么FANN给我这么奇怪的输出.根据我从课堂上学到的知识, 我有一组匹配结果的训
我正在尝试使用神经网络来解决问题.我从Coursera上提供的机器学习课程中了解到它们,并很高兴地发现FANN是神经网络的 Ruby实现,所以我没有必要重新发明飞机.

但是,我真的不明白为什么FANN给我这么奇怪的输出.根据我从课堂上学到的知识,

我有一组匹配结果的训练数据.给予玩家一个数字,给他们的对手一个数字,结果是1为赢,0为亏.由于心烦意乱,数据有点嘈杂,但并非如此.我的目标是找出哪些评级差距更容易受到干扰 – 例如,我的直觉告诉我,评级较低的匹配往往会导致更多的不安,因为评级不太准确.

所以我得到了大约100个例子的训练集.每个例子是(评级,delta)=> 1/0.所以这是一个分类问题,但实际上并不是我认为适用于逻辑回归类型的图表,神经网络似乎更正确.

我的代码开始了

training_data = RubyFann::TrainData.new(:inputs => inputs,:desired_outputs => outputs)

然后我建立了神经网络

network = RubyFann::Standard.new(
  :num_inputs=>2,:hidden_neurons=>[8,8,8],:num_outputs=>1)

在课堂上,我了解到合理的默认设置是每个隐藏层具有相同数量的单位.由于我真的不知道如何使用这个或者我正在做什么,所以我选择了默认设置.

network.train_on_data(training_data,1000,1,0.15)

然后最后,我以增量的方式经历了一组样本输入评级,并且在每个增量处增加增量,直到结果从>切换. 0.5至< 0.5,我认为大概是0和大约1,虽然它们更像是0.45和0.55. 当我跑这一次时,每次输入都给我0.我使用相同的数据再次运行两次,并且负数的下降趋势和正数的增加趋势,完全相反的预测. 我想也许我没有包含足够的功能,所以我添加了(评级** 2和delta ** 2).不幸的是,我每次都开始获得每个输入的起始增量或最大增量. 我真的不明白为什么我会得到如此不同的结果或Ruby-FANN告诉我的,部分是因为我不理解图书馆而且我怀疑,因为我刚开始学习神经网络并且遗漏了某些东西大而明显.我没有足够的培训数据,是否需要包含更多功能,问题是什么?如何修复或学习如何做得更好?

解决方法

用参数玩一点怎么样?起初我强烈建议只有两层……在某个地方应该有数学证明它足以解决许多问题.如果你有太多的神经元你的NN将没有足够的时代来真正学到东西..所以你也可以玩多个时代以及gama ..我认为在你的情况下它是0.15 ..如果你使用更大一点值得你的NN应该学得更快一点(不要害怕尝试0.3甚至0.7),正确的gama值通常取决于权重的间隔或输入规范化.

您的NN最有可能显示出如此不同的结果,因为在每次运行中都有新的初始化,然后有完全不同的网络,它将以与前一个不同的方式学习(不同的权重将具有更高的值,因此NN的不同部分将学习相同事情).

我不熟悉这个库我只是在写NN的一些经验.希望这些东西能帮助..

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读