在反向传播中使用sigmoid函数计算错误

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)