为什么必须在反向传播神经网络中使用非线性激活函数 (nonlinear activation function)

我一直在阅读神经网络的一些东西,我理解单层神经网络的一般原理,我理解对传统层的需求,但为什么使用非线性激活函数?

我一直在阅读神经网络的一些东西,我理解单层神经网络的一般原理,我理解对传统层的需求,但为什么使用非线性激活函数?

这个问题后面跟着这个:What is a derivative of the activation function used for in backpropagation?

200

激活函数的目的是将非线性引入网络

反过来,这允许您对响应变量(又名目标变量,类标签或分数)进行建模,该变量随解释变量非线性变化

非线性意味着输出不能从输入的线性组合中再现(这与呈现直线的输出不同-这个词是仿射)。

另一种思考方式:在网络中没有非线性激活函数的情况下,一个 NN,无论它有多少层,都会像一个单层感知器一样,因为将这些层相加会给你另一个线性函数(参见上面的定义)。

>>> in_vec = NP.random.rand(10)
>>> in_vec
  array([ 0.94,  0.61,  0.65,  0.  ,  0.77,  0.99,  0.35,  0.81,  0.46,  0.59])
>>> # common activation function, hyperbolic tangent
>>> out_vec = NP.tanh(in_vec)
>>> out_vec
 array([ 0.74,  0.54,  0.57,  0.  ,  0.65,  0.76,  0.34,  0.67,  0.43,  0.53])

在 backprop (双曲正切) 中使用的常用激活函数,其计算结果为-2 到 2:

enter image description here

67

可以使用线性激活函数,但是在非常有限的情况下。实际上,为了更好地理解激活函数,重要的是看普通最小二乘或简单的线性回归。线性回归旨在找到最佳权重,当与输入结合使用时,这些权重会在解释变量和目标变量之间产生最小的垂直影响。简而言之,如果预期的输出反映了如下所示的线性回归,则可以使用线性激活函数:(下图)。

enter image description here

激活函数不能是线性的,因为具有线性激活函数的神经网络只能在一层之间有效,因为它们的结构有多复杂。网络的输入通常是线性变换 (输入 * 权重),但现实世界和问题是非线性的。为了使输入数据非线性,我们使用称为激活函数的非线性映射。激活函数是一个决策函数,它确定一个特定神经特征的存在。

26

如果我们只允许在神经网络中使用线性激活函数,则输出将只是输入的linear transformation,不足以形成universal function approximator。这样的网络只能表示为矩阵乘法,您将无法从这样的网络中获得非常有趣的行为。

对于所有神经元都具有仿射激活函数(即形式为f(x) = a*x + c的激活函数,其中ac是常数,这是线性激活函数的推广),这只会导致affine transformation从输入到输出,这也不是很令人兴奋。

神经网络可以很好地包含具有线性激活函数的神经元,例如在输出层中,但是这些需要在网络的其他部分中具有非线性激活函数的神经元。

注意:一个有趣的例外是 DeepMind 的synthetic gradients,他们使用一个小型神经网络来给定激活值的反向传播过程中的梯度,他们发现他们可以使用没有隐藏层并且只有线性激活的神经网络。

22

A feed-forward neural network with linear activation and any number of hidden layers is equivalent to just a linear neural neural network with no hidden layer. For example lets consider the neural network in figure with two hidden layers and no activation enter image description here

y = h2 * W3 + b3 
  = (h1 * W2 + b2) * W3 + b3
  = h1 * W2 * W3 + b2 * W3 + b3 
  = (x * W1 + b1) * W2 * W3 + b2 * W3 + b3 
  = x * W1 * W2 * W3 + b1 * W2 * W3 + b2 * W3 + b3 
  = x * W' + b'

我们可以做最后一步,因为几个线性变换的组合可以用一个变换代替,几个偏置项的组合只是一个偏置。即使我们添加一些线性激活,结果也是一样的。

因此,我们可以用单层神经网络代替该神经网络。这可以扩展到n层。这表明添加层根本不会增加线性神经网络的逼近能力。我们需要非线性激活函数来近似非线性函数,并且大多数现实世界中的问题都是高度复杂和非线性的。实际上,当激活函数是非线性的时,可以证明具有足够多的隐藏单元的两层神经网络是近似的。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(357)
与网站的连接已重置。错误代码:INET_E_DOWNLOAD_FAILURE
上一篇
需要在GoogleWorkspace的“目录”文件夹中创建联系人
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(25条)