【问题标题】:Calculate the error using a sigmoid function in backpropagation在反向传播中使用 sigmoid 函数计算误差
【发布时间】:2012-07-22 14:07:30
【问题描述】:

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

http://www4.rgu.ac.uk/files/chapter3%20-%20bp.pdf

在这篇论文中,它说要计算神经元的误差为

错误 = 输出(i) * (1 - 输出(i)) * (目标(i) - 输出(i))

我已将方程式中我不理解的部分用粗体表示。在论文中,它说由于 sigmoid 函数需要 Output(i) * (1 - Output(i)) 项 - 但我仍然不明白为什么这是必要的。

使用会有什么问题

Error = abs(Output(i) - Target(i))

?

误差函数是否与神经元激活/传递函数无关?

【问题讨论】:

  • ⁺¹ 对于这篇好论文 - 找不到比错误函数及其在最后一层的应用更深入地解释反向传播的单一文本。

标签: artificial-intelligence neural-network backpropagation


【解决方案1】:

您需要这个的原因是您正在计算相对于神经元输入的误差函数的导数

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

【讨论】:

  • 感谢您的澄清 - 在论文中我提到它说这是因为 sigmoid 函数而需要的。如果我使用任何其他功能,我还需要这样做吗?
  • 您仍然需要这样做,但根据您使用的功能,衍生部分会有所不同。在最简单的情况下,如果你有一个线性函数,doutput/dinput 只是 1。
  • 对所有成本函数都适用,而不仅仅是二次成本吗?
  • @I159 是的,这适用于任何成本函数。显然,成本函数有一些理想的属性(平滑导数、梯度过零的单个最大值等)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-02
    • 2016-05-09
    • 1970-01-01
    • 2014-04-22
    • 2016-09-19
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    相关资源
    最近更新 更多