2012-07-26 65 views
20

我刚开始编程神经网络。我目前正在研究Backpropogation(BP)神经网络如何工作。虽然BP网络训练算法非常简单,但我无法找到关于算法工作原理的任何文本。更具体地说,我正在寻找一些数学推理来证明在神经网络中使用S型函数是合理的,并且是什么使他们模仿几乎所有的数据分布。为什么sigmoid函数在神经网络中工作?

谢谢!

回答

23

sigmoid函数在网络中引入了非线性。没有非线性激活功能,网络只能学习其输入线性组合的函数。结果被称为universal approximation theoremCybenko theorem,之后在1989年证明了它的先生。Wikipedia是一个很好的开始,它有一个链接到原始论文(证明有点牵扯虽然)。你使用sigmoid而不是其他的东西的原因是它是连续的,可微分的,它的导数计算速度很快(与tanh的导数相反,它具有相似的性质)并且有一个有限的范围(从0到1,独家)

+1

好的答案,但“持续(因此可微)”的假设不成立。例如:abs(x)在零处连续但不可微分。 – Michael 2014-09-24 00:42:55

+0

是的,编辑我的回答 – mbatchkarov 2014-09-24 09:03:42

+1

维基百科文章说这个,虽然:“库尔特Hornik在1991年表明,它不是激活函数的具体选择,而是多层前馈架构本身,它给予神经网络的潜力通用逼近器,输出单元总是假定为线性的。“* 事实上,它似乎没有提到需要非线性激活功能的任何内容。但是,这个定理的形式陈述确实会说“非恒定的,有界的,单调递增的连续函数” - 也许*有界*和单调部分意味着非线性? – Desty 2014-11-04 15:05:22