我有一个关于反向传播的快速问题。我正在看以下内容:
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))
无论神经元激活/转移功能如何,错误都是否起作用?
答案 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教授关于该主题的深入研究的书