我正在迈出神经网络的第一步,为此我正在试验一个非常简单的单层、单输出感知器,它使用 sigmoidal 激活函数。每次使用以下方法呈现训练示例时,我都会在线更新我的权重:
weights += learningRate * (correct - result) * {input,1}
这weights
是一个长度为 n 的向量,它还包含来自偏置神经元(-阈值)的权重,result
是在给定 时由感知器计算的结果(并使用 sigmoid 处理)input
,correct
是正确的结果,并且{input,1}
是输入1(来自偏置神经元的固定输入)。现在,当我尝试训练感知器执行逻辑 AND 时,权重不会收敛很长时间,而是会保持类似的增长,并且它们与阈值保持大约 -1.5 的比率,例如三个权重在顺序:
5.067160008240718 5.105631826680446 -7.945513136885797
...
8.40390853077094 8.43890306970281 -12.889540730182592
我希望感知器停止在 1、1、-1.5。
除了这个看起来与学习中缺少的停止条件有关的问题之外,如果我尝试使用恒等函数作为激活函数,我得到的权重值会上下波动:
0.43601272528257057 0.49092558197172703 -0.23106430854347537
我得到了类似的结果tanh
。我无法对此作出解释。
谢谢图努兹_