确定神经网络感知器的偏差?

时间:2011-04-26 18:43:49

标签: artificial-intelligence neural-network

这是我开始理解神经网络时的一件事我不太明白最初设置“偏见”的原因是什么? 我理解Perceptron根据以下公式计算它的输出:

P * W + b> 0

然后你可以根据b = b + [G - O]计算学习模式,其中G是正确的输出,O是计算新偏差的实际输出(1或0)......但是关于初始偏见.....我真的不明白这是如何计算的,或者除了“猜测”之外应该使用什么初始值,是否有任何类型的公式?

请原谅,如果我误解了任何事情,在我实施自己的(糟糕的)之前,我仍然在学习整个神经网络的想法。

同样适用于学习率.....我的意思是大多数书籍,对于μ来说只是“选择一个”。

2 个答案:

答案 0 :(得分:9)

简短的回答是,取决于......

1)在大多数情况下(我相信)你可以像对待任何其他重量那样处理偏差(因此它可能会被初始化为一些小的随机值),并且会在你训练网络时得到更新。我们的想法是,所有的偏见和权重最终会聚合在一些有用的值上。

2)但是,您也可以手动设置权重(没有经过训练)以获得一些特殊行为:例如,您可以使用偏差使感知器表现得像逻辑门(假设二进制输入X1和X2是0或1,并且激活功能被缩放以给出0或1的输出。

或门:W1 = 1,W2 = 1,偏差= 0

AND门:W1 = 1,W2 = 1,Bias = -1

您可以使用AND和OR作为多层网络中的第一层来解决经典XOR problem,并将它们馈入第三个感知器,W1 = 3(来自OR门),W2 = -2(从AND门)和Bias = -2,像这样:

perceptron XOR

(注意:如果你的激活函数被缩放到-1 / + 1,即SGN函数,这些值会有所不同)


3)关于如何设置学习率,这也取决于(!)但我认为通常建议使用0.01之类的学习率。基本上你希望系统尽可能快地学习,但不要太快以至于权重无法正确收敛。

答案 1 :(得分:0)

由于@Richard已经回答了大部分问题,我只会详细说明学习率。从我读过的(并且它正在工作)有一个非常简单的公式,您可以使用它来更新每个迭代k的学习率,它是:

  

learningRate_k =常数/ k

这显然排除了第0次迭代,因为你将除以零。常数可以是你想要的任何东西(当然除了0,因为它没有任何意义:D)但最简单的自然是1所以你得到

  

learningRate_k = 1 / k

结果系列遵循两个基本规则:

  • lim_(t-> inf)从k = 1到t的SUM(learningRate_k)= inf
  • lim_(t-> inf)SUM从k = 1到t(learningRate_k ^ 2)< INF

请注意,感知器的收敛与学习率系列直接相关。它开始变大(对于k = 1你得1/1 = 1)并随着你的感知器的每次更新变得越来越小 - 因为在现实生活中 - 当你在开始时遇到一些新事物时你会学到很多但后来在你身上学得越来越少。