激活函数总结(二):ELU、SELU、GELU激活函数

激活函数总结(二):ELU、SELU、GELU激活函数

  • 1 引言
  • 2. 激活函数
    • 2.1 ELU(Exponential Linear Unit)激活函数
    • 2.2 SELU(Scaled Exponential Linear Unit)激活函数
    • 2.3 GELU激活函数
  • 3. 总结

1 引言

在上篇文章中已经介绍了过去大家较为常见的激活函数 (SigmoidTanhReLULeaky ReLUPReLUSwish)。在这篇文章中,会接着上文提到的众多激活函数继续进行介绍,给大家带来更多不常见的激活函数的介绍。这里放一张激活函数的机理图:
在这里插入图片描述

最后,对于文章中没有提及到的激活函数,大家可以通过评论指出,作者会在后续的文章中进行添加补充。

2. 激活函数

2.1 ELU(Exponential Linear Unit)激活函数

论文链接:https://arxiv.org/pdf/1511.07289.pdf
ELU激活函数是对ReLU激活函数的改进版本,解决了ReLU在负数区域出现的梯度截断问题。ELU的定义和数学图像分别如下所示:
E L U ( x ) = { x i f x > = 0 α ( e x − 1 ) i f x < 0 ELU(x)=\left\{ \begin{matrix} x \quad \quad \quad \quad \quad \quad if \quad x >= 0 \\ \alpha (e^x - 1) \quad \quad \quad if \quad x < 0 \end{matrix} \right. ELU(x)={xifx>=0α(ex1)ifx<0在这里插入图片描述
优点:

  • 它在所有点上都是连续的和可微的。
  • 与其他线性非饱和激活函数(如 ReLU 及其变体)相比,它有着更快的训练时间。
  • 与 ReLU 不同,它没有神经元死亡的问题。 这是因为 ELU 的梯度对于所有负值都是非零的。
  • 作为非饱和激活函数,它不会遇到梯度爆炸或消失的问题。
  • 与其他激活函数(如 ReLU 和变体、Sigmoid 和双曲正切)相比,它实现了更高的准确性。

缺点:

  • 计算速度慢。与 ReLU 及其变体相比,由于负输入涉及非线性,因此计算速度较慢
  • 无法避免梯度爆炸问题;
  • 神经网络不学习 α \alpha α 值。

注意:对于ELU激活函数,之前看到一个博主的实验中曾介绍了:ReLU+BN的效果远远大于 ELU 的效果 同时远大于 ELU+BN的效果!! 所以,这里对于ELU激活函数不做评价,大家可以作为常用激活的一个补充!

2.2 SELU(Scaled Exponential Linear Unit)激活函数

论文链接:https://arxiv.org/pdf/1706.02515.pdf

SELU(Scaled Exponential Linear Unit)激活函数是2017年提出的一种激活函数。SELU是对ELU激活函数的改进,通过引入自标准化机制,使得神经网络的隐藏层在训练过程中可以自动地保持输出的均值和方差接近于1。SELU激活函数的定义和数学图像分别如下所示:
S E L U ( x ) = s c a l e   ∗ { x i f x > 0 α ( e x − 1 ) i f x < = 0 SELU(x)=scale \ * \left\{ \begin{matrix} x \quad \quad \quad \quad \quad \quad if \quad x > 0 \\ \alpha (e^x - 1) \quad \quad \quad if \quad x <= 0 \end{matrix} \right. SELU(x)=scale {xifx>0α(ex1)ifx<=0在这里插入图片描述
其中, s c a l e scale scale α \alpha α 是用户定义的两个超参数,通常设置为:
s c a l e = 1.0507 α = 1.67326 scale = 1.0507 \\ \alpha = 1.67326 scale=1.0507α=1.67326

SELU激活函数具有以下特点:

  • 自标准化:SELU激活函数引入了自标准化机制,使得神经网络的输出在训练过程中保持均值和方差接近于1。这有助于解决神经网络中的梯度爆炸和梯度消失问题,从而使得深层网络更容易训练。
  • 激活范围:SELU激活函数在输入为负数时具有指数增长,而在输入为正数时近似于线性。这种非线性特性使得SELU在某些情况下比ReLU等激活函数表现更好。
  • 高斯分布:SELU激活函数的输出在输入接近于0时接近于高斯分布,这有助于提高神经网络的泛化能力。

需要注意的是,SELU激活函数在某些情况下可能并不适用于所有任务和网络结构。在使用SELU时,还需要注意初始化参数的设置,因为它对于网络的输出分布有严格的要求。如果不合适地使用SELU,可能会导致网络输出的均值和方差不稳定,从而影响模型的性能。

总的来说,SELU激活函数是一种值得尝试的激活函数,但是要小心其不稳定的情况!!!

2.3 GELU激活函数

论文链接:https://arxiv.org/pdf/1606.08415.pdf

GELU激活函数是一种平滑的激活函数,与Gaussian(高斯分布)相关联。GELU激活函数在输入为负数时逼近于0,输入为正数时逼近于线性激活。GELU的定义和数学图像分别如下所示:
G E L U ( x ) = 0.5 ∗ x ∗ ( 1 + t a n h ( 2 / π ∗ ( x + 0.044715 ∗ x 3 ) ) ) GELU(x) = 0.5 * x * (1 + tanh(\sqrt{2 / \pi} * (x + 0.044715 * x^3))) GELU(x)=0.5x(1+tanh(2/π (x+0.044715x3)))在这里插入图片描述
优点:

  • 平滑性:GELU是一种平滑的激活函数,在所有点上都是可导的,没有梯度截断问题。这使得在使用基于梯度的优化算法时更加稳定,有助于提高神经网络的训练效率。
  • 近似线性:对于较大的输入值,GELU函数的输出值近似于输入值。这使得它在某些情况下可以起到线性激活函数的作用,有利于模型在一定程度上保持线性特性
  • 高斯分布:GELU激活函数的输出在输入接近于0时接近于高斯分布,这有助于提高神经网络的泛化能力,使得模型更容易适应不同的数据分布。

缺点:

  • 计算开销:GELU激活函数的计算相对复杂,涉及到指数、平方根和双曲正切等运算,因此在计算资源有限的情况下可能会带来较大的计算开销。
  • 趋向于线性:对于较大的输入值,GELU函数的输出趋向于线性,可能会导致一些非线性特性的丢失

当前,GELU激活函数广泛应用于各个领域!!!尤其是在transformer模型中更为普遍!!!

3. 总结

到此,使用 激活函数总结(二) 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果存在没有提及的激活函数也可以在评论区提出,后续会对其进行添加!!!!

如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/66221.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UI自动化测试之Jenkins配置

背景&#xff1a; 团队下半年的目标之一是实现自动化测试&#xff0c;这里要吐槽一下&#xff0c;之前开发的测试平台了&#xff0c;最初的目的是用来做接口自动化测试和性能测试&#xff0c;但由于各种原因&#xff0c;接口自动化测试那部分功能整个废弃掉了&#xff0c;其中…

深度学习,计算机视觉任务

目录 计算机视觉任务 1.K近邻算法 2.得分函数 3.损失函数的作用 4.向前传播整体流程 5.反向传播计算方法 计算机视觉任务 机器学习的流程&#xff1a; 数据获取 特征工程 建立模型 评估与应用 计算机视觉&#xff1a; 图像表示&#xff1a;计算机眼中的图像&#…

HCIA---路由器--静态路由

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.路由器简介 路由器是一种网络设备&#xff0c;用于将数据包从一个网络发送到另一个网络…

python基础3——流程控制

文章目录 一、操作符1.1 比较操作符1.2 逻辑操作符1.3 成员操作符1.4 身份操作符 二、流程控制2.1 条件判断2.2 循环语句2.2.1 for循环2.2.2 while循环 2.3 continue与break语句2.4 文件操作函数 三、函数3.1 定义函数3.2 作用域3.3 闭包3.4 函数装饰器3.5 内建函数 一、操作符…

stm32与上位机电脑间最快的通信方式是什么?

对于小型多关节机械臂的控制电路设计&#xff0c;选择合适的通信方式可以提高MCU与上位机之间的实时性。以下是一些在STM32上常用的通信方式&#xff0c;你可以根据你的具体需求选择适合的&#xff1a; 串口通信&#xff08;UART&#xff09;&#xff1a;串口通信是一种常见的…

Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

目录 一、SpringBootApplication 二、SpringBootConfiguration 三、EnableAutoConfiguration 四、ComponentScan 一、SpringBootApplication SpringBootApplication是Spring Boot框架的核心注解之一&#xff0c;它用于标识一个主配置类&#xff0c;通常是项目的入口类。该…

selenium常见等待机制及其特点和使用方法

目录 1、强制等待 2、隐式等待 3、显式等待 1、强制等待 强制等待是在程序中直接调用Thread.sleep(timeout) ,来完成的&#xff0c;该用法的优点是使用起来方便&#xff0c;语法也比较简单&#xff0c;缺点就是需要强制等待固定的时间&#xff0c;可能会造成测试的时间过…

诺瓦星云面试汇总

1、C语言向一个内存地址写值&#xff0c; int main() {int value 42;int *ptr (int *)0x12345678; // Replace with the desired memory address*ptr value 2、申请释放内存 申请内存int *dynamicArray (int*)malloc(size *sizeof(int));释放内存 free(dynamicArray)…

网络编程——MAC地址、IP地址和子网掩码

MAC地址、IP地址和子网掩码 一、MAC地址&#xff1a;硬件身份证 1、MAC地址的概念 MAC地址&#xff0c;即媒体访问控制地址&#xff08;Media Access Control Address&#xff09;&#xff0c;是一个用于唯一标识网络设备的物理地址。每个网络接口卡&#xff08;NIC&#xf…

go错误集(持续更新)

1.提示以下报错 Build Error: go build -o c:\Users\Administrator\Desktop__debug_bin2343731882.exe -gcflags all-N -l . go: go.mod file not found in current directory or any parent directory; see ‘go help modules’ (exit status 1) 解决办法&#xff1a; go …

Android Framework底层原理之WMS的启动流程

一 概述 今天&#xff0c;我们介绍 WindowManagerService&#xff08;后续简称 WMS&#xff09;的启动流程&#xff0c;WMS 是 Android 系统中&#xff0c;负责窗口显示的的服务。在 Android 中它也起着承上启下的作用。 如下图&#xff0c;就是《深入理解 Android》书籍中的…

《Kali渗透基础》14. 无线渗透(四)

kali渗透 1&#xff1a;相关工具1.1&#xff1a;Aircrack-ng1.1.1&#xff1a;airmon-ng1.1.2&#xff1a;airodump-ng1.1.3&#xff1a;aireplay-ng1.1.4&#xff1a;airolib-ng1.1.5&#xff1a;bessid-ng 1.2&#xff1a;JTR1.3&#xff1a;Evil Twin Attacker1.4&#xff1…

clickhouse调研报告2

由Distributed表发送分片数据 clickhouse分区目录合并 clickhouse副本协同流程 clickhouse索引查询逻辑 clickhouse一级索引生成逻辑(两主键) clickhouse的data目录下包含如下目录: [root@brfs-stress-01 201403_10_10_0]# ll /data01/clickhouse/data total 4 drwxr-x---…

【webpack】动态配置cdn,多模板入口项目搭建

动态配置多模板 按照这个模板创建项目 安装glob,获取目录下的文件名称 封装方法utilsConfig&#xff0c;动态生产 page // pages 多入口配置 const path require("path");// glob 是 webpack 安装时依赖的一个第三方模块&#xff0c;该模块允许你使用 * 等符号, …

RaabitMQ(三) - RabbitMQ队列类型、死信消息与死信队列、懒队列、集群模式、MQ常见消息问题

RabbitMQ队列类型 Classic经典队列 这是RabbitMQ最为经典的队列类型。在单机环境中&#xff0c;拥有比较高的消息可靠性。 经典队列可以选择是否持久化(Durability)以及是否自动删除(Auto delete)两个属性。 Durability有两个选项&#xff0c;Durable和Transient。 Durable表…

图像 检测 - DETR: End-to-End Object Detection with Transformers (arXiv 2020)

图像 检测 - DETR: End-to-End Object Detection with Transformers - 端到端目标检测的Transformers&#xff08;arXiv 2020&#xff09; 摘要1. 引言2. 相关工作2.1 集预测2.2 Transformers和并行解码2.3 目标检测 3. DETR模型References 声明&#xff1a;此翻译仅为个人学习…

【VisualGLM】大模型之 VisualGLM 部署

目录 1. VisualGLM 效果展示 2. VisualGLM 介绍 3. VisualGLM 部署 1. VisualGLM 效果展示 VisualGLM 问答 原始图片 2. VisualGLM 介绍 VisualGLM 主要做的是通过图像生成文字&#xff0c;而 Stable Diffusion 是通过文字生成图像。 一种方法是将图像当作一种特殊的语言进…

SAS-数据集SQL水平合并

一、SQL水平合并基本语法 sql的合并有两步&#xff0c;step1&#xff1a;进行笛卡尔乘积运算&#xff0c;第一个表的每一行合并第二个表的每一行&#xff0c;即表a有3行&#xff0c;表b有3行&#xff0c;则合并后3*39行。笛卡尔过程包含源数据的所有列&#xff0c;相同列名会合…

mysql进阶篇(二)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

3.2用互斥元保护共享数据

概述 于是&#xff0c;你有一个类似于上一节中链表那样的共享数据结构&#xff0c;你想要保护它免于竞争条件以及可能因此产生的不变量损坏。如果你可以将所有访问该数据结构的代码块标记为互斥的&#xff08;mutually exclusive)&#xff0c;岂不是很好&#xff1f;如果任何线…