激活函数

  1. 什么是激活函数
    神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。
  2. 为什么要用激活函数
    如果不用激励函数,在这种情况下每一层节点的输入都是上层输出的线性函数,很容易验证,无论神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了,那么网络的逼近能力就相当有限。正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。
  3. 有哪些激活函数
    1)sigmoid函数
    公式: f ( z ) = 1 1 + e x p ( − z ) f(z)=\frac1{1+exp(-z)} f(z)=1+exp(z)1曲线:

    特点:能够把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1。
    缺点:
    a) 激活函数计算量大,反向传播求误差梯度时,求导涉及除法
    b) 反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。
    下面解释为何会出现梯度消失:
    反向传播算法中,要对激活函数求导,sigmoid 的导数表达式为: f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x)=f(x)(1-f(x)) f(x)=f(x)(1f(x))
    sigmoid 原函数及导数图形如下:
    在这里插入图片描述
    由图可知,导数从 0 开始很快就又趋近于 0 了,易造成“梯度消失”现象。
    c) Sigmoid 的 output 不是0均值(即zero-centered)。这是不可取的,因为这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。产生的一个结果就是,如 x > 0 , f = w T x + b x>0,f=w^Tx+b x>0,f=wTx+b,那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。
    2)tanh函数
    公式: t a n h ( x ) = e x − e − x e x + e − x tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+exexex曲线:在这里插入图片描述
    tanh读作Hyperbolic Tangent,它解决了Sigmoid函数的不是zero-centered输出问题,然而,梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。
    3)公式: R e l u ( x ) = m a x ( 0 , x ) Relu(x)=max(0, x) Relu(x)=max(0,x)曲线:在这里插入图片描述
    优点:
    a) 解决了gradient vanishing问题 (在正区间)
    b) 计算速度非常快,只需要判断输入是否大于0
    c) 收敛速度远快于sigmoid和tanh
    缺点:
    a) ReLU的输出不是zero-centered
    b) Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。
    4)Leaky ReLU函数(PReLU)
    公式: P R e l u ( x ) = m a x ( α x , x ) PRelu(x)=max(\alpha x,x) PRelu(x)=max(αx,x)
    曲线:在这里插入图片描述
    为了解决Dead ReLU Problem,提出了将ReLU的前半段设为αx而非0,通常α=0.01。理论上来讲,Leaky ReLU有ReLU的所有优点,外加不会有Dead ReLU问题,但是在实际操作当中,并没有完全证明Leaky ReLU总是好于ReLU。
    5)softmax函数——用于多分类神经网络输出
    公式: f ( z ) = e z j ∑ k = 1 K e z k f(z)=\frac{e^{z_j}}{\sum^K_{k=1}e^{z_k}} f(z)=k=1Kezkezj
    在这里插入图片描述
    如果某一个 zj 大过其他 z, 那这个映射的分量就逼近于 1,其他就逼近于 0,主要应用就是多分类。softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值