激活函数讲解

  大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。

  本文主要介绍了激活函数讲解,希望能对同学们有所帮助。

1. sigmoid

sigmoid是很常用的非线性激活函数,其取值范围为[0,1],连续可导函数,因此,实际应用中可以把sigmoid的结果当成概率值。典型例子如逻辑回归
在这里插入图片描述
  sigmoid的导数为:
在这里插入图片描述
  图像如下:
在这里插入图片描述

  • 当 z 值非常大或者非常小时,sigmoid函数的导数 g′(z) 将接近 0 。这会导致权重 W 的梯度接近 0 ,使得梯度更新十分缓慢,即梯度消失(sigmoid后值都在0-1之间,此时的导数值在0.2-0.25之间,一层层传递下去缩小的程度越来越大)。梯度消失的原因可见博客:https://blog.csdn.net/qq_37667364/article/details/88806870
  • 函数的输出不是以0为均值(均值0.5),将不便于下层的计算。sigmoid函数可用在网络最后一层,作为输出层进行二分类,尽量不在隐藏层
  • sigmoid也会导致梯度爆炸,但概率较小。
    sigmoid的输出为一概率值,对于二分类问题很常见;多分类问题中softmax更为普遍

2. softmax

假设一数组Z, z i z_i zi表示Z中第i个元素,元素个数为n,则输出:
S i = e z i ∑ j e z j S_i = \frac{e^{z_i}}{\sum\limits{j}e^{z_j}} Si=jezjezi,其中j=1,2,…,n
在这里插入图片描述
softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!
下面我们将 e z i e^{z_i} ezi简写成 e i e^i ei对softmax的损失函数进行求导:
在这里插入图片描述
在这里插入图片描述

3. tanh

在这里插入图片描述
tanh函数在 0 附近很短一段区域内可看做线性的。由于tanh函数均值为 0 ,因此弥补了sigmoid函数均值为 0.5 的缺点。取值范围为负无穷到正无穷。
在这里插入图片描述
tanh函数的缺点同sigmoid函数的第一个缺点一样,当 z 很大或很小时,g′(z) 接近于 0 ,会导致梯度很小,权重更新非常缓慢,即梯度消失问题,但它解决了Sigmoid函数的不是zero-centered输出问题。

4. Relu

R e l u = m a x ( 0 , x ) Relu = max(0,x) Relu=max(0,x)
在这里插入图片描述

在这里插入图片描述
ReLU函数其实就是一个取最大值函数,在0处不可导,但是我们可以取sub-gradient

  • ReLU函数的优点:
    - 在输入为正数的时候(对于大多数输入 z 空间来说),不存在梯度消失问题。
    - 计算速度要快很多。ReLU函数只有线性关系,不管是前向传播还是反向传播,都比sigmod和tanh要快很多。(sigmod和tanh要计算指数,计算速度会比较慢)
    - 收敛速度远快于sigmoid和tanh
  • ReLU函数的缺点:
    - 当输入为负时,梯度为0,会产生梯度消失问题。
    - Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。

实际使用过程中,可以优先尝试Relu

5. Leaky ReLU函数(PReLU)

f ( x ) = m a x ( α x , x ) f(x)=max(αx,x) f(x)=max(αx,x)
在这里插入图片描述

6. ELU

在这里插入图片描述
ELU和PRelu类似,都是为解决relu梯度消失的问题,理论上好于ReLU,但在实际使用中并没有证据证明ELU总是优于ReLU。且实际使用中还是以ReLU为主。

参考链接:https://www.cnblogs.com/lliuye/p/9486500.html
https://blog.csdn.net/tyhj_sf/article/details/79932893
https://blog.csdn.net/bitcarmanlee/article/details/82320853

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的喵喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值