She*_*ock 5 artificial-intelligence backpropagation neural-network
我有一个关于反向传播的快速问题.我在看以下内容:
http://www4.rgu.ac.uk/files/chapter3%20-%20bp.pdf
在本文中,它说计算神经元的误差为
错误= 输出(i)*(1 - 输出(i))*(目标(i) - 输出(i))
我把方程的一部分用粗体来理解.在论文中,它说由于sigmoid函数需要输出(i)*(1 - 输出(i))项 - 但我仍然不明白为什么这将是nessecary.
使用会有什么问题
Error = abs(Output(i) - Target(i))
Run Code Online (Sandbox Code Playgroud)
?
无论神经元激活/转移功能如何,错误功能都是?
mik*_*era 11
你需要这个的原因是你正在计算误差函数相对于神经元输入的导数.
当您通过链规则获取导数时,您需要乘以神经元激活函数的导数(恰好是sigmoid)
这是重要的数学.
通过链规则计算神经元输入的误差导数:
E = -(target - output)^2
dE/dinput = dE/doutput * doutput/dinput
Run Code Online (Sandbox Code Playgroud)
计算doutput/dinput:
output = sigmoid (input)
doutput/dinput = output * (1 - output) (derivative of sigmoid function)
Run Code Online (Sandbox Code Playgroud)
因此:
dE/dinput = 2 * (target - output) * output * (1 - output)
Run Code Online (Sandbox Code Playgroud)