激活是不是仅用于非线性?
Posted
技术标签:
【中文标题】激活是不是仅用于非线性?【英文标题】:Is activation only used for non-linearity ?激活是否仅用于非线性? 【发布时间】:2019-01-17 15:02:49 【问题描述】:激活是仅用于非线性问题还是同时用于这两个问题。我仍然很困惑为什么我们需要激活函数以及它如何提供帮助。
【问题讨论】:
Why must a nonlinear activation function be used in a backpropagation neural network?的可能重复 【参考方案1】:一般来说,这样的问题适合Stats Stackexchange 或Data Science Stackexchange,因为这是一个纯粹的理论问题,与编程没有直接关系(这就是 *** 的用途)。
无论如何,当您谈论“这两个问题”时,我假设您指的是线性可分和不可线性可分问题的类别。 事实上,函数中的非线性总是被使用,无论你试图用神经网络解决哪种问题。非线性作为激活函数的简单原因如下:
网络中的每一层都由一系列线性操作以及非线性组成。
正式地 - 这是你之前可能见过的东西 - 你可以将单层 F
的数学运算表达为:输入 h
为:
F(h) = Wh + b
其中W
表示权重矩阵,加上偏置b
。这个操作是纯顺序的,对于一个简单的多层感知器(有n
层并且没有非线性),我们可以写如下计算:
y = F_n(F_n-1(F_n-2(...(F_1(x))))
相当于
y = W_n W_n-1 W_n-2 ... W_1 x + b_1 + b_2 + ... + b_n
具体来说,我们注意到这些只是乘法和加法,我们可以以任何我们喜欢的方式重新排列;特别是,we could aggregate this into one uber-matrix W_p 和偏差 b_p,将其重写为一个公式:
y = W_p x + b_p
这与上面的多层感知器具有相同的表达能力,但本质上可以由单层建模! (虽然参数比以前少得多)。
在这个方程中引入非线性将简单的“构建块”F(h)
变成:
F(h) = g(Wh + b)
现在,重新制定一系列层不再可能了,然后非线性还允许我们approximate any arbitrary function。
编辑: 为了解决您的另一个问题(“它有什么帮助?”),我应该明确提到并非每个函数都是线性可分的,因此不能通过纯线性网络(即没有非线性)来解决。一个经典的简单示例是XOR operator。
【讨论】:
以上是关于激活是不是仅用于非线性?的主要内容,如果未能解决你的问题,请参考以下文章