激活是不是仅用于非线性?

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。

【讨论】:

以上是关于激活是不是仅用于非线性?的主要内容,如果未能解决你的问题,请参考以下文章

激活函数总结

三深度学习基础3(激活函数1)

常用激活函数比较

TensorFlow 神经网络相关函数

TensorFlow基础激活函数

激活函数