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

时间:2012-07-24 09:19:26

标签: artificial-intelligence neural-network backpropagation

我有一个关于反向传播的快速问题。我正在看以下内容:

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))

无论神经元激活/转移功能如何,错误都是否起作用?

2 个答案:

答案 0 :(得分:10)

你需要这个的原因是你正在计算神经元输入的导出的错误函数

当你通过链式规则获取导数时,你需要乘以神经元激活函数的导数(恰好是一个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)

答案 1 :(得分:0)

sigmoid函数的选择决不是任意的。基本上,您试图在给定样本的情况下估计类标签的条件概率。如果你取绝对值,你就会做出不同的事情,你会得到不同的结果。

对于本主题的实际介绍,我建议您查看Andrew Ng教授的在线机器学习课程

https://www.coursera.org/course/ml

以及Christopher Bishop教授关于该主题的深入研究的书

http://www.amazon.com/Neural-Networks-Pattern-Recognition-Christopher/dp/0198538642/ref=sr_1_1?ie=UTF8&qid=1343123246&sr=8-1&keywords=christopher+bishop+neural+networks