我有一个关于反向传播的简单问题。我正在看以下内容:
http://www4.rgu.ac.uk/files/chapter3%20-%20bp.pdf
在这篇论文中,它说计算神经元的误差为
Error = 输出(i) * (1 - 输出(i)) *(目标(i)-输出(i))
我把方程中我不明白的部分用粗体字标出。论文中称,输出(i) * (1 - 输出(i))由于 sigmoid 函数,需要术语 - 但我仍然不明白为什么这是必要的。
使用会有什么问题
Error = abs(Output(i) - Target(i))
?
误差函数是否与神经元激活/传递函数无关?
您需要这个的原因是您正在计算误差函数的导数关于神经元的输入。
当你通过链式法则求导数时,你需要乘以神经元激活函数的导数(恰好是一个 sigmoid)
这是重要的数学。
通过链式法则计算神经元输入误差的导数:
E = -(target - output)^2
dE/dinput = dE/doutput * doutput/dinput
计算 doutput/dinput:
output = sigmoid (input)
doutput/dinput = output * (1 - output) (derivative of sigmoid function)
所以:
dE/dinput = 2 * (target - output) * output * (1 - output)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)