神经网络的激活函数的作用,神经网络中激活函数的作用
温馨提示:这篇文章已超过528天没有更新,请注意相关的内容是否还可用!
一、激活函数的作用
激活函数(activation function)的作用是
去线性化
,神经网络节点的计算就是加权求和,再加上偏置项:
a i = ∑ i x i w i + b a_i=\\sum_ix_iw_i+b ai?=i∑?xi?wi?+b
这是一个线性模型,将这个计算结果传到下一个节点还是同样的线性模型。只通过线性变换,所有的隐含层的节点就无存在的意义。原因如下:假设每一层的权值矩阵用 W ( i ) W^{(i)} W(i)表示。那么存在一个 W ′ W\’ W′使:
W ′ = W ( 1 ) W ( 2 ) … W ( n ) W\’=W^{(1)}W^{(2)}…W^{(n)} W′=W(1)W(2)…W(n)
那么,n层隐含层就可以全部变成一个隐含层,隐含层的数量就没有任何意义。所以使用激活函数将其去线性化。种种情况下, W ′ = W ( 1 ) W ( 2 ) … W ( n ) W\’=W^{(1)}W^{(2)}…W^{(n)} W′=W(1)W(2)…W(n)不再成立,每层隐含层都有其存在的意义。
下面有更详细的解释,改内容来自《TensorFlow实战Google深度学习框架》(第2版)。
二、常用激活函数
人工神经网络中常用到激活函数(activation function):
ReLu
和
Sigmoid
。
2.1 ReLu
线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元。其函数表达式如下:
f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)
其函数图像图下:
其含义就是,如果输入的 x > 0 x>0 x>0,那么 f ( x ) = x f(x)=x f(x)=x;如果x 0 , f = w T x + b x>0,f=w^Tx+b x>0,f=wTx+b,那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。
当然了,如果按batch去训练,那么那个batch可能得到不同的信号,所以这个问题还是可以缓解一下的。因此,非0均值这个问题虽然会产生一些不好的影响,不过跟上面提到的梯度消失问题相比还是要好很多的。其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。
参考:https://blog.csdn.net/tyhj_sf/article/details/79932893
27795378
《神经网络的激活函数的作用,神经网络中激活函数的作用》来自互联网同行内容,若有侵权,请联系我们删除!
