首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >建立xor函数的神经网络

建立xor函数的神经网络
EN

Data Science用户
提问于 2016-05-04 14:55:36
回答 3查看 35.2K关注 0票数 14

众所周知,1层网络不能预测xor函数,因为它不是线性可分的。我试图创建一个2层网络,使用逻辑sigmoid函数和backprop来预测xor。我的网络在输入层有2个神经元(1个偏置),隐藏层有2个神经元和1个偏置,输出神经元1个。令我惊讶的是,这是不可能的。如果我添加了一个新的层,所以我有一个具有输入(2+1)、hidden1 (2+1)、hidden2 (2+1)和输出的3层网络,那么它就能工作。另外,如果我保持一个2层网络,但是我把隐藏层的大小增加到4个神经元+1的偏置,它也会收敛。有什么原因可以解释为什么有3个或更少隐藏神经元的2层网络不能模拟xor函数吗?

EN

回答 3

Data Science用户

回答已采纳

发布于 2017-07-29 08:05:27

是的,是有原因的。这与你如何初始化你的体重有关。

有16个局部极小值的收敛概率最高,在0.5-1之间。

这是一篇分析xor问题的论文:学习异或:探索经典问题的空间,Bland,1998年。

票数 9
EN

Data Science用户

发布于 2016-05-04 15:33:35

一个包含两个神经元的隐层网络应该足以分离异或问题。第一个神经元充当OR门,第二个神经元充当非和门。把这两个神经元加起来,如果它们超过阈值,它就是阳性的。你可以通过调整阈值的偏差来使用线性决策神经元。对于0/1输入,非和门的输入应为负值。这张图片应该更清楚,连接上的值是重量,神经元中的值是偏倚的负数。例如,对于input1=0 / input2=1,隐藏神经元1将是sign function(0*1 + 1*1 - 0.5) == 1,这意味着它通过OR门。决策函数充当0/1决策(或者只是符号函数在这种情况下也起作用)。

图片感谢“Abhranil博客”

票数 10
EN

Data Science用户

发布于 2016-05-04 21:18:20

如果您使用的是基本梯度下降(没有其他优化,例如动量)和最小网络2输入、2个隐藏神经元、1个输出神经元,那么肯定可以训练它学习XOR,但它可能非常棘手和不可靠。

  • 你可能需要调整学习速度。最常见的错误是把它设置得太高,这样网络就会振荡或发散,而不是学习。
  • 使用批处理或在线梯度下降来训练最小的网络可能需要惊人的大量时间。可能需要几千个周期。
  • 在如此低的权重(只有6)的情况下,有时随机初始化可以创建一个很容易被卡住的组合。因此,您可能需要尝试,检查结果,然后重新开始。我建议您使用种子随机数生成器进行初始化,并调整种子值,如果错误值被卡住而没有改进。
票数 5
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/11589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档