【问题标题】:Determining Bias for Neural network Perceptrons?确定神经网络感知器的偏差?
【发布时间】:2011-08-13 06:57:53
【问题描述】:

这是我开始理解神经网络的一件事,我不太明白最初设置“偏差”的原因是什么? 我了解感知器根据以下内容计算其输出:

P * W + b > 0

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

如果我有任何错误,请原谅,在我实现自己的(蹩脚的)之前,我仍在学习整个神经网络的想法。

学习率也是如此......我的意思是大多数书籍,等等只是为 μ“挑一个”。

【问题讨论】:

    标签: artificial-intelligence neural-network


    【解决方案1】:

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

    1. 在大多数情况下(我相信),您可以像对待任何其他权重一样对待偏差(因此它可能会被初始化为一些小的随机值),并且它会在您训练网络时得到更新。这个想法是所有的偏差和权重最终都会收敛到一些有用的值集上。

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

    或门:W1=1, W2=1, Bias=0

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

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

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


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

    【讨论】:

      【解决方案2】:

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

      learningRate_k = 常数/k

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

      learningRate_k = 1/k

      生成的系列遵循两个基本规则:

      • lim_(t->inf) 从 k=1 到 t (learningRate_k) = inf 的总和
      • lim_(t->inf) 从 k=1 到 t 的总和 (learningRate_k^2)

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-02
        • 2016-09-08
        • 2019-03-10
        • 1970-01-01
        • 1970-01-01
        • 2017-12-06
        • 2017-04-25
        • 2018-08-30
        相关资源
        最近更新 更多