常用激活函数总结

news/2024/9/30 8:24:45 标签: 机器学习, 深度学习, 人工智能, python

文章目录

  • 什么是激活函数
  • 激活函数的作用
  • 常用激活函数
    • 1.Sigmoid函数
    • 2.Softmax函数
    • 3.Tanh函数
    • 4.Relu函数
    • 5.LeakyRelu函数
    • 6.PRelu函数
    • 7.ELU函数
    • 8.SELU函数


什么是激活函数

激活函数,通俗讲,就是一个函数,针对某个神经元,就是将输入经过这个激活函数后,得到输出。

激活函数的作用

激活函数用在神经网络中,目的是增加非线性,使神经网络可以学习任意非线性的函数。

常用激活函数

1.Sigmoid函数

Sigmoid公式如下:
f ( x ) = 1 1 + e − x f(x)=\frac{1}{1+e^{-x}} f(x)=1+ex1
Sigmoid输出范围是[0,1]内的实数,比较适用于二分类的类别情况,但实际中已经很少使用了。

  • 优点:
    梯度平滑,比较容易求导,可以避免模型在训练过程中出现突变的情况。
  • 缺点:
    (1)容易出现梯度消失。sigmoid函数求导后结果都是小于0.25的,所以反向传播时,不断的相乘,会是乘积结果渐渐趋于0,那么这个神经元就不起作用了,即出现了梯度消失,那么神经网络可能就不学习了
    (2)sigmoid函数是指数运算,比较耗时和耗资源
    (3)sigmoid函数输出并不是以0为中心,梯度可能会向特定方向移动,这样就会降低权重更新的效率(其实这句话我有点不咋理解,可能从图中看是当x=0时,y值不是0
    图形如下:
    在这里插入图片描述

2.Softmax函数

Softmax公式如下:
f ( x ) = e x i ∑ i e x i f(x)=\frac{e^{x_i}}{\sum_ie^{x_i}} f(x)=iexiexi
Softmax输出范围是[0,1]内的实数,且所有输出值的总和为1,常用于多分类任务中。

  • 优点:
    (1)输出可以被解释为概率,易于理解和解释,非常适合多分类任务
    (2)归一化输出,将任何实数向量转换为一个有效的概率分布,其中所有输出值都是非负的,并且总和为1
    (3)梯度特性,在训练过程中,当一个类别的输出接近1时,其梯度会减小,这有助于减缓学习过程,防止过度调整
  • 缺点:
    (1)计算时需要计算指数,计算效率低
    (2)当输入特征的值非常大或非常小的时候,Softmax函数可能会遇到数值稳定性问题,如溢出或下溢
    (3)梯度消失,当训练样本中一个类别的概率远大于其他类别时,梯度可能会非常小,导致梯度消失问题,从而减慢学习过程
    图形如下:
    在这里插入图片描述

3.Tanh函数

Tanh公式如下:
f ( x ) = e x − e − x e x + e − x f(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} f(x)=ex+exexex
Tanh输出范围是[-1,1]内的实数,Tanh是Sigmoid函数的变形,即 t a n h ( x ) = 2 s i g m o i d ( 2 x ) − 1 tanh(x)=2sigmoid(2x)-1 tanh(x)=2sigmoid(2x)1,但Tanh是以零为中心的,实际应用中Tanh会比sigmoid更好一些,但是饱和神经情况下,Tanh还是会存在梯度消失问题,适合负输入将被强映射为负,而零输入被映射为接近零的情况。

  • 优点:
    (1)比sigmoid更好些,是以0为中心,梯度可能就不会向特定方向移动,这样就不会降低权重更新的效率

  • 缺点:
    (1)仍然会出现梯度饱和,即当输入-∞和+∞时,激活函数值无限接近-1和1,即神经元发挥不出作用了
    (2)指数运算,耗时耗资源

图形如下:
在这里插入图片描述

4.Relu函数

Relu公式如下:
f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)
Tanh输出范围是[0,+∞]内的实数,输出不是以0为中心。

  • 优点:
    (1)解决了部分梯度消失问题,当输入值为正时,神经元不会饱和
    (2)由于其线性、非饱和性质,relu容易收敛
    (3)复杂度低,不需要指数运算
  • 缺点:
    (1)函数输出并不是以0为中心,梯度可能会向特定方向移动,这样就会降低权重更新的效率
    (2)出现神经元死亡问题,即当输入为负,可能会出现梯度消失问题,输入为负数,经relu后变为0,神经元失效,对任何输入都无响应,导致参数永远不会被更新了

图形如下:
在这里插入图片描述

5.LeakyRelu函数

LeakyRelu公式如下:
f ( x ) = m a x ( α x , x ) f(x)=max(αx,x) f(x)=max(αx,x)
Tanh输出范围是[-∞,+∞]内的实数,输出不是以0为中心。

  • 优点:
    (1)减少梯度消失问题,当输入值为正时,神经元不会饱和;当输入为负时,不会出现Relu的神经元死亡问题,即结果为0的情况
    (2)由于其线性、非饱和性质,relu容易收敛
    (3)复杂度低,不需要指数运算
  • 缺点:
    (1)函数中的α是恒定值,需要经先验知识,人工赋值(常设0.01)
    (2)有些近似线性,导致在复杂分类任务中效果不好
    图形如下:
    在这里插入图片描述

6.PRelu函数

PRelu公式如下:
f ( x ) = { α x , x < 0 x , x ≥ 0 } f(x)=\left\{ \begin{matrix} αx,x<0 \\ x,x≥0 \end{matrix} \right\} f(x)={αx,x0x,x0}
PRelu输出范围是[-∞,+∞]内的实数,输出不是以0为中心。与Relu、LeakyRelu和PRelu不同的是,ELU的负半轴是一个指数函数不是一条直线。

  • 优点:
    (1)α是通过学习得到的,不是手动设置的确定值,更能灵活适应各种情况
    (2)减少梯度消失问题,当输入值为正时,神经元不会饱和;当输入为负时,不会出现Relu的神经元死亡问题,即结果为0的情况
    (3)由于其线性、非饱和性质,relu容易收敛
    (4)复杂度低,不需要指数运算
  • 缺点:
    (1)有些近似线性,导致在复杂分类任务中效果不好
    图形如下:
    在这里插入图片描述

7.ELU函数

ELU公式如下:
f ( α , x ) = { α ( e x − 1 ) , x ≤ 0 x , x > 0 } f(α,x)=\left\{ \begin{matrix} α(e^x-1),x≤0 \\ x,x>0 \end{matrix} \right\} f(α,x)={α(ex1),x0x,x0}
ELU输出范围是[-α,+∞]内的实数,输出不是以0为中心。

  • 优点:
    (1)减少梯度消失问题,当输入值为正时,神经元不会饱和;当输入为负时,不会出现Relu的神经元死亡问题,即结果为0的情况,有助于减轻梯度消失问题,从而改善深层网络的训练效率
    (3)输出均值接近0,有助于数据的中心化,减少训练过程中的偏置偏移,加速学习过程
    (4)在整个定义域内连续可导,尤其是原点处连续,能够加速函数收敛
  • 缺点:
    (1)计算时需要计算指数,计算效率低
    (2)α是根据先验知识手动设置的确定值
    图形如下:
    在这里插入图片描述

8.SELU函数

SELU公式如下:
f ( α , x ) = λ { α ( e x − 1 ) , x ≤ 0 x , x > 0 } f(α,x)= \lambda \left\{ \begin{matrix} α(e^x-1),x≤0 \\ x,x>0 \end{matrix} \right\} f(α,x)=λ{α(ex1),x0x,x0}
ELU输出范围是[-2,+∞]内的实数,输出不是以0为中心。其中,λ=1.0507,α=1.6733。SELU激活函数是在自归一化网络(SNN)中定义的,通过调整均值和方差来实现内部的归一化,这种内部归一化比外部归一化更快,这使得网络能够更快得收敛。

  • 优点:
    (1)自归一化。能够使输出的均值和方差接近1,有助于解决梯度消失和梯度爆炸问题,适合难以使用批量归一化的深度神经网络结构(如SNN 自归一化神经网络)
    (2)无需额外归一化技术,可以减少或消除批量归一化等额外归一化需求,简化模型结构和训练过程
  • 缺点:
    (1)计算时需要计算指数,计算效率低
    (2)自归一化属性依赖特定网络初始化方法和网络结构,在某些复杂模型结构中不适用或效果不明显
    图形如下:
    在这里插入图片描述
    针对上述常用激活函数的场景汇总如下:
  • Sigmoid:
    • 使用场景: 二分类问题中的输出层,因为输出值在0到1之间,可以表示为概率。
    • 优点: 输出值在0和1之间,具有概率解释。
    • 缺点: 容易受到梯度消失的影响,不适合深层网络。
  • Softmax:
    • 使用场景: 多分类问题中的输出层,将输出转换为概率分布。
    • 优点: 输出可以解释为概率,并且所有输出值的和为1。
    • 缺点: 计算复杂度较高,同样容易受到梯度消失的影响。
  • Tanh (双曲正切):
    • 使用场景: 隐藏层,输出值在-1到1之间,可以提供零中心化的数据。
    • 优点: 输出值中心化,有助于数据的处理。
    • 缺点: 仍然容易受到梯度消失的影响。
  • ReLU (Rectified Linear Unit):
    • 使用场景: 隐藏层,因为计算简单且可以缓解梯度消失问题。
    • 优点: 计算效率高,可以加速神经网络的训练。
    • 缺点: 存在死亡ReLU问题,即对于负输入,梯度为0。
  • LeakyReLU:
    • 使用场景: 隐藏层,当输入为负时,有一个非零的梯度
    • 优点: 解决了ReLU的死亡神经元问题。
    • 缺点: 需要手动设置泄漏参数。
  • PReLU (Parametric ReLU):
    • 使用场景: 隐藏层,泄漏参数可以通过训练学习得到。
    • 优点: 泄漏参数可学习,可能比LeakyReLU更有效。
    • 缺点: 增加了模型的参数量。
  • ELU (Exponential Linear Unit):
    • 使用场景: 隐藏层,对于负数输入有一个非零的输出,有助于激活神经元。
    • 优点: 可以缓解梯度消失问题,输出均值为零。
    • 缺点: 计算复杂度比ReLU高。
  • SELU (Scaled Exponential Linear Unit):
    • 使用场景: 隐藏层,特别是在那些需要自归一化和不需要额外归一化技术的网络中。
    • 优点: 自归一化,有助于加快收敛速度。
    • 缺点: 需要仔细的参数初始化。

还有一些别的激活函数,如:Swish和Mish,这俩不太常用,可以详看篇博客:
https://blog.csdn.net/qq_42691298/article/details/126590726,注意:这篇博客里的softmax函数图像是错误的。
(如有问题,欢迎指出,一起学习,一起交流! 常总结,常复盘)


http://www.niftyadmin.cn/n/5684716.html

相关文章

解决R语言bug ‘sh‘ is not recognized as an internal or external command

安装源码包‘httr2’ trying URL ‘https://cran.rstudio.com/src/contrib/httr2_1.0.5.tar.gz’ Content type ‘application/x-gzip’ length 230632 bytes (225 KB) downloaded 225 KB installing source package ‘httr2’ … ** package ‘httr2’ successfully unpacked…

paypal支付v2.0(php)支付代码

第一步&#xff1a;获取access_token: <?php$clientId ; // 替换为你的 PayPal Client ID $clientSecret ; // 替换为你的 PayPal Client Secret// PayPal API 请求的 URL $url "https://api-m.sandbox.paypal.com/v1/oauth2/token";// 初始化 cURL $ch …

SpringCloud-Alibaba第二代微服务快速入门

1.简介 Spring Cloud Alibaba其实是阿里的微服务解决方案&#xff0c;是阿里巴巴结合自身微服务实践,开源的微服务全家桶&#xff0c;在Spring Cloud项目中孵化成为Spring Cloud的子项目。第一代的Spring Cloud标准中很多组件已经停更,如&#xff1a;Eureak,zuul等。所以Sprin…

【MySQL】数据库中的内置函数

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 目录 函数 日期函数 字符串函数 数学函数 ​编辑 其它函数 MySQL数据库提供了大量的内置函数&#xff0c;这些函数可以帮助你执行各种操作&#xff0c;如字符串处理、数值计算、日期和时间处理等&#xff01; 函数…

前端vue-form表单的验证

form表单验证的完整步骤

SpringBoot启动过程简述 和 SpringCloud 的五大组键

一&#xff0c;Spring Boot启动过程简述如下&#xff1a; 1&#xff0c;启动类&#xff1a;标有 SpringBootApplication 注解的类是Spring Boot应用的入口点。 2&#xff0c;SpringBootApplication注解是一个复合注解&#xff0c;包含SpringBootConfiguration &#xff08;表…

golang web笔记-3.响应ResponseWriter

简介 从服务器向客户端返回响应需要使用 ResponseWriter&#xff0c;ResponseWriter是一个接口&#xff0c;handler用它来返回响应。 ResponseWriter常用方法 Write&#xff1a;接收一个byte切片作为参数&#xff0c;然后把它写入到响应的body中。如果Write被调用时&a…

手机USB连接不显示内部设备,设备管理器显示“MTP”感叹号,解决方案

进入小米驱动下载界面&#xff0c;等小米驱动下载完成后&#xff0c;解压此驱动文件压缩包。 5、小米USB驱动安装方法&#xff1a;右击“计算机”&#xff0c;从弹出的右键菜单中选择“管理”项进入。 6、在打开的“计算机管理”界面中&#xff0c;展开“设备管理器”项&…