一些激活函数

news2024/10/6 18:23:59

一些激活函数

  • 摘要
  • 激活函数分类
  • sigmoid
  • Tanh
  • Softsign
  • Softmax
  • ReLU
  • Softplus
  • Noisy ReLU
  • Leaky ReLU
  • PRelu
  • ELU
  • SELU
  • Swish
  • GELU
  • GLU
  • GEGLU
  • Mish
  • Maxout

摘要

本篇博客对一些激活函数进行总结,以便加深理解和记忆

激活函数分类

  • 饱和激活函数:sigmoid、tanh…

  • 非饱和激活函数:ReLU、LeakyRelu、ELU、PReLU、RReLU…

  • 饱和的概念:设激活函数f(x),当x趋近于正负无穷时,f(x)趋近于0

  • 非饱和激活函数的优点

    • 非饱和激活函数能解决深层网络带来的梯度消失问题
      • 非饱和激活函数有助于加快收敛速度

sigmoid

  • 公式: f ( x ) = 1 1 + e − x f(x)= \frac 1 {1+e^{-x}} f(x)=1+ex1
  • 导数公式: f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x)=f(x)(1-f(x)) f(x)=f(x)(1f(x))
  • 何时使用
    • 将模型的值压缩到[0,1]范围内的概率值,适用于二分类或置信度
    • 梯度平滑,便于求导
  • 缺点
    • 容易造成梯度消失。我们从导函数图像中了解到sigmoid的导数都是小于0.25的,那么在进行反向传播的时候,梯度相乘结果会慢慢的趋向于0。这样几乎就没有梯度信号通过神经元传递到前面层的梯度更新中,因此这时前面层的权值几乎没有更新,这就叫梯度消失。除此之外,为了防止饱和,必须对于权重矩阵的初始化特别留意。如果初始化权重过大,可能很多神经元得到一个比较小的梯度,致使神经元不能很好的更新权重提前饱和,神经网络就几乎不学习
    • 函数输出不是以 0 为中心的,梯度可能就会向特定方向移动,从而降低权重更新的效率
    • 执行指数运算,计算机运行得较慢,比较消耗计算资源

Sigmoid函数在历史上曾非常常用,但是现在它已经不太受欢迎,实际中很少使用

Tanh

  • 公式: f ( x ) = e x − e − x e x + e − x        ( = 2 s i g m o i d ( 2 x ) − 1 ) f(x) = \frac {e^x - e^{-x}} {e^x + e^{-x}} \;\;\;(=2sigmoid(2x)-1) f(x)=ex+exexex(=2sigmoid(2x)1)
  • 何时使用
    • 映射范围为[-1,1],且函数以0为中心,比sigmoid更好
    • 负输入将被强映射为负,而零输入被映射为接近零
  • 缺点
    • 仍然存在梯度饱和的问题
    • 依然进行的是指数运算

Softsign

  • 公式: f ( x ) = x 1 + ∣ x ∣ f(x) = \frac x {1+|x|} f(x)=1+xx
  • 导数: f ′ ( x ) = 1 ( 1 + ∣ x ∣ ) 2 f'(x)= \frac 1 {(1+|x|)^2} f(x)=(1+x)21
  • Softsign函数是Tanh函数的另一个替代选择,是反对称、去中心、可微分,并返回-1和1之间的值。其更平坦的曲线与更慢的下降导数表明它可以更高效地学习,比tTanh函数更好的解决梯度消失的问题
  • Softsign函数的导数的计算比Tanh函数更复杂

Softmax

  • 公式: f ( x ) = e X i ∑ i e X i f(x)= \frac {e^{X_i}} {\sum_i e^{X_i}} f(x)=ieXieXi

Softmax函数常在神经网络输出层充当激活函数,将输出层的值通过激活函数映射到0-1区间,将神经元输出构造成概率分布,用于多分类问题中

ReLU

  • 公式: f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)
  • 何时使用
    • ReLU解决了梯度消失的问题,当输入值为正时,神经元不会饱和
    • 由于ReLU线性、非饱和的性质,在SGD中能够快速收敛
    • 计算复杂度低,不需要进行指数运算
  • 缺点
    • 输出不是以0为中心的
    • Dead ReLU 问题。当输入为负时,梯度为0。这个神经元及之后的神经元梯度永远为0,不再对任何数据有所响应,导致相应参数永远不会被更新

训练神经网络的时候,一旦学习率没有设置好,第一次更新权重的时候,输入是负值,那么这个含有ReLU的神经节点就会死亡,再也不会被激活。所以,要设置一个合适的较小的学习率,来降低这种情况的发生

Softplus

  • 公式: f ( x ) = l o g ( 1 + e x ) f(x)=log(1+e^x) f(x)=log(1+ex)

Softplus函数可以看作是ReLU函数的平滑

Noisy ReLU

  • 公式: f ( x ) = m a x ( 0 , x + Y ) , Y   N ( 0 , σ ( x ) ) f(x)=max(0,x+Y),Y~N(0,σ(x)) f(x)=max(0,x+Y),Y N(0,σ(x))

ReLU被扩展以包括高斯噪声(Gaussian noise),在受限玻尔兹曼机解决计算机视觉任务中得到应用,实验结果表明Maxout与Dropout组合使用可以发挥比较好的效果

Leaky ReLU

  • 公式: f ( x ) = m a x ( a x , x ) f(x)=max(ax,x) f(x)=max(ax,x)
  • 何时使用
    • 解决了ReLU输入值为负时神经元出现的死亡的问题
    • Leaky ReLU线性、非饱和的性质,在SGD中能够快速收敛
    • 计算复杂度低,不需要进行指数运算
  • 缺点
    • 函数中的α,需要通过先验知识人工赋值(一般设为0.01)
    • 有些近似线性,导致在复杂分类中效果不好

从理论上讲,Leaky ReLU 具有 ReLU 的所有优点,而且 Dead ReLU 不会有任何问题,但在实际操作中,尚未完全证明 Leaky ReLU 总是比 ReLU 更好

PRelu

  • 公式
    f ( a , x ) = [ a x ,        x < 0 x , x ≥ 0 ] f(a,x) = \begin{bmatrix} ax,\;\;\;x<0\\x,x≥0 \end{bmatrix} f(a,x)=[ax,x<0x,x0]

PRelu激活函数也是用来解决ReLU带来的神经元坏死的问题。与Leaky ReLU激活函数不同的是,PRelu激活函数负半轴的斜率参数α 是通过学习得到的,而不是手动设置的恒定值

ELU

  • 公式

f ( a , x ) = [ a ( e x − 1 ) ,      x ≤ 0 x , x > 0 ] f(a,x)=\begin{bmatrix} a(e^x-1),\;\;x≤0\\x,x>0 \end{bmatrix} f(a,x)=[a(ex1),x0x,x0]

  • 何时使用
    • ELU试图将激活函数的输出均值接近于零,使正常梯度更接近于单位自然梯度,从而加快学习速度
    • ELU 在较小的输入下会饱和至负值,从而减少前向传播的变异和信息
  • 缺点
    • 计算的时需要计算指数,计算效率低

与Leaky ReLU和PRelu激活函数不同的是,ELU激活函数的负半轴是一个指数函数而不是一条直线

SELU

  • 公式

f ( a , x ) = λ [ a ( e x − 1 ) ,      x ≤ 0 x , x > 0 ] ,      λ = 1.0507 , a = 1.6733 f(a,x)=λ \begin{bmatrix} a(e^x-1),\;\;x≤0\\x,x>0 \end{bmatrix},\;\;λ=1.0507,a=1.6733 f(a,x)=λ[a(ex1),x0x,x0],λ=1.0507,a=1.6733

  • SELU 允许构建一个映射 g,其性质能够实现 SNN(自归一化神经网络)
  • SNN 不能通过ReLU、sigmoid 、tanh 和 Leaky ReLU 实现
  • 这个激活函数需要有:
    • 负值和正值,以便控制均值
    • 饱和区域(导数趋近于零),以便抑制更低层中较大的方差
    • 大于 1 的斜率,以便在更低层中的方差过小时增大方差
    • 连续曲线。后者能确保一个固定点,其中方差抑制可通过方差增大来获得均衡。通过乘上指数线性单元(ELU)来满足激活函数的这些性质,而且 λ>1 能够确保正值净输入的斜率大于 1

SELU激活函数是在自归一化网络中定义的,通过调整均值和方差来实现内部的归一化,这种内部归一化比外部归一化更快,这使得网络能够更快得收敛

Swish

  • 公式: f ( x ) = x ∗ s i g m o i d ( x ) f(x)=x*sigmoid(x) f(x)=xsigmoid(x)
  • Swish激活函数无界性有助于防止慢速训练期间,梯度逐渐接近 0 并导致饱和
  • 有界性也是有优势的,因为有界激活函数可以具有很强的正则化(防止过拟合, 进而增强泛化能力),并且较大的负输入问题也能解决
  • Swish激活函数在x=0附近更为平滑,而非单调的特性增强了输入数据和要学习的权重的表达能力

GELU

  • 公式
    f ( x ) = x ∗ p = x Φ ( x ) ,      Φ 为标准正态分布的积累分布函数 Φ ( x ) = 1 2 Π ∫ − ∞ x e − t 2 2 d t = 1 2 ( 1 + e r f ( x 2 ) ) e r f ( x ) = 1 Π ∫ − x x e − t 2 d t = 2 Π ∫ 0 x e − t 2 d t ,高斯误差函数 , 与 t a n h ( x ) 比较接近 f(x)=x*p=xΦ(x),\;\;Φ为标准正态分布的积累分布函数\\ Φ(x)=\frac 1 {\sqrt{2Π}} \int_{-∞}^xe^{-\frac {t^2} 2} dt = \frac 1 2(1+erf(\frac x {\sqrt 2}))\\ erf(x)=\frac 1 {\sqrt Π}\int_{-x}^xe^{-t^2}dt=\frac 2{\sqrt Π}\int_0^xe^{-t^2}dt,高斯误差函数,与 tanh(x) 比较接近 f(x)=xp=xΦ(x),Φ为标准正态分布的积累分布函数Φ(x)= 1xe2t2dt=21(1+erf(2 x))erf(x)=Π 1xxet2dt=Π 20xet2dt,高斯误差函数,tanh(x)比较接近
  • GELU(高斯误差线性单元)是一个非初等函数形式的激活函数,是RELU的变种,被GPT-2、BERT、RoBERTa、ALBERT 等NLP模型所采用,将ReLU及其变种与Dropout合二为一
  • GELU 与 Swish 激活函数的函数形式和性质非常相像,一个是固定系数 1.702,另一个是可变系数 β(可以是可训练的参数,也可以是通过搜索来确定的常数),两者的实际应用表现也相差不大

GLU

  • 公式
    G L U ( a , b ) = a ⊙ s i g m o i d ( b ) G L U ( x , W , V ) = s i g m o i d ( x W ) ⊙ x V GLU(a,b)=a⊙sigmoid(b)\\ GLU(x,W,V)=sigmoid(xW)⊙xV GLU(a,b)=asigmoid(b)GLU(x,W,V)=sigmoid(xW)xV
  • GLU通过门控机制对输出进行把控,像Attention一样可看作是对重要特征的选择。其优势是不仅具有通用激活函数的非线性,而且反向传播梯度时具有线性通道,类似ResNet残差网络中的加和操作传递梯度,能够缓解梯度消失问题
  • 由于 sigmoid和tanh的导数会downscaling,导致梯度消失问题。而GLU相比sigmoid多出一个线性乘积项,因此能够加速收敛

GEGLU

  • 公式
    G E G L U ( x , W , V ) = G E L U ( x W ) ⊙ x V GEGLU(x,W,V)=GELU(xW)⊙xV GEGLU(x,W,V)=GELU(xW)xV
  • GEGLU是GLU激活函数的变体,将GLU中的sigmoid替换为GELU,Google的T5 Transformer模型中对Feed-Forward Network采用了GEGLU,性能提升比较显著
  • 除了用GELU替代GLU中的sigmoid外,还可用ReLU、Swish等,甚至取消其中的激活函数(Bilinear(x, W, V) = xW · xV),但是这些变体相比GLU差异不是特别显著

Mish

  • 公式: f ( x ) = x ∗ t a n h ( l n ( 1 + e x ) ) f(x)=x*tanh(ln(1+e^x)) f(x)=xtanh(ln(1+ex))

Mish激活函数的函数图像与Swish激活函数类似,但要更为平滑一些,缺点是计算复杂度要更高一些

Maxout

  • 公式: h i ( x ) = m a x j ∈ [ 1 , k ] z i j , z i j = x T W i j + b i j , W ∈ R d ∗ m ∗ k h_i(x)=max_{j∈[1,k]}z_{ij},z_{ij}=x^TW_{ij}+b_{ij},W∈R^{d*m*k} hi(x)=maxj[1,k]zij,zij=xTWij+bij,WRdmk
  • 优点
    • 拟合能力非常强,可以拟合任意的凸函数
    • 具有ReLU的所有优点,线性、不饱和性
    • 没有ReLU的一些缺点,如:神经元的死亡
  • 缺点:每个神经元中有两组(w,b)参数,那么参数量就增加了一倍,导致了整体参数的数量激增

Maxout可以看做是在深度学习网络中加入一层激活函数层,包含一个参数k.这一层相比ReLU,sigmoid等,其特殊之处在于增加了k个神经元,然后输出激活值最大的值

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

欣九康诊疗系统助力诊所向数字化转型

数字化已经成为各行各业转型的重点方向&#xff0c;而为了不被时代所淘汰&#xff0c;医疗机构也势必要紧跟潮流&#xff0c;本人作为门诊部的负责人深知医疗机构要想实现数字化转型那么拥有一款便捷实用的医疗平台是必不可少的&#xff0c;近几年&#xff0c;随着国家大力支持…

table组件,前端如何使用table组件,打印数组数据,后端传输的数据应该如何打印

一、如何使用table&#xff0c;将数组数据打印出来 后端传来的数据&#xff0c;很大概率是一个List数组&#xff0c;我们必须用一个table组件&#xff0c;来打印这些数据。 table标签的介绍 在HTML中&#xff0c;table是常用组件之一&#xff0c;主要用来打印数组信息。 它的…

SpringBoot如何自定义启动Banner 以及自定义启动项目控制台输出信息 类似于若依启动大佛 制作教程

前言 Spring Boot 项目启动时会在控制台打印出一个 banner&#xff0c;下面演示如何定制这个 banner。 若依也会有相应的启动动画 _ooOoo_o8888888o88" . "88(| -_- |)O\ /O____/---\____. \\| |// ./ \\||| : |||// \/ _||||| -:- |||||- \| | \\…

基于DPU的云原生裸金属服务快速部署及存储解决方案

1. 背景介绍 1.1. 业务背景 在云原生技术迅速发展的当下&#xff0c;容器技术因其轻量级、可移植性和快速部署的特性而成为应用部署的主流选择&#xff0c;但裸金属服务器依然有其独特的价值和应用场景&#xff0c;是云原生架构中不可或缺的一部分。 裸金属服务器是一种高级…

Training language models to follow instructions with human feedback 论文阅读

论文原文&#xff1a;https://arxiv.org/pdf/2203.02155 论文简介 语言模型越大并不意味着它能更好的理解用户的意图&#xff0c;因此在这篇论文中&#xff0c;展示了根据人的反馈对模型进行微调&#xff0c;使得语言模型能够在各种人物上更好的理解用户的意图。在评估中&…

Linux系统之Ward服务器监控工具

Linux系统之Ward服务器监控工具 文章目录 Linux系统之Ward服务器监控工具介绍资源列表基础环境一、安装Java环境二、下载ward的jar包2.2、下载软件包 三、安装ward工具3.1、启动ward服务3.2、查看你后台启动任务3.3、监听ward服务端口 四、访问ward服务4.1、进入ward初始界面4.…

【可控图像生成系列论文(一)】MimicBrush 港大、阿里、蚂蚁集团合作论文解读

背景&#xff1a;考虑到用户的不同需求&#xff0c;图像编辑是一项实用而富有挑战性的任务&#xff0c;其中最困难的部分之一是准确描述编辑后的图像应该是什么样子。 创新点&#xff1a;在本文作者提出了一种新的编辑形式&#xff0c;称为模仿编辑&#xff0c;以帮助用户更方…

深入理解 Java 中的 volatile 关键字

暮色四合&#xff0c;晚风轻拂&#xff0c;湖面上泛起点点波光&#xff0c;宛如撒下了一片星河。 文章目录 前言一、CPU 三级缓存二、JMM三、并发编程正确性的基础四、volatile 关键字五、volatile 可见性六、volatile 有序性6.1 指令重排序6.2 volatile 禁止指令重排6.3 vola…

虚拟机使用桥接模式网络配置

1、获取本机的网络详细信息 windowr 输入cmd 使用ipconfig -all 一样即可 在自己的虚拟机中设置网络 虚拟机中的ip ---------192.168.36.*&#xff0c;不要跟自己的本机ip冲突 网关-----------192.168.36.254 一样即可 dns -----------一样即可&#xff0c;我多写了几个&am…

数字孪生智慧机场:引领航空未来

图扑数字孪生技术赋能智慧机场&#xff0c;实现运营管理和乘客服务的全面优化。实时数据监控与智能决策助力高效安全的航空体验&#xff0c;推动行业创新与发展。

网络安全:SQL注入防范

文章目录 网络安全&#xff1a;SQL注入防范引言防范措施概览使用参数化查询示例代码 输入验证和过滤示例代码 使用ORM框架示例代码 其他防范措施结语 网络安全&#xff1a;SQL注入防范 引言 在上一篇文章中&#xff0c;我们介绍了SQL注入攻击的基础知识。本文将重点讨论如何防…

【UML用户指南】-16-对高级结构建模-构件

目录 1、概念 2、构件与接口 3、可替换性 4、组织构件 5、端口 6、内部结构 6.1、部件 6.2、连接件 7、常用建模技术 7.1、对结构类建模 7.2、对API建模 构件是系统中逻辑的并且可替换的部分&#xff0c;它遵循并提供对一组接口的实现。好的构件用定义良好的接口来定…

来自工业界的知识库 RAG 服务(四),FinGLM 竞赛冠军项目详解

背景介绍 在 前一篇文章 中介绍过智谱组织的一个金融大模型 RAG 比赛 FinGLM 以及 ChatGLM反卷总局 团队的项目&#xff0c;这篇文章继续介绍下获得冠军的馒头科技的技术方案。 建议不了解比赛背景信息的可以先查看 来自工业界的知识库 RAG 服务(三)&#xff0c;FinGLM 竞赛获…

[YOLOv10涨点改进:注意力魔改 | 轻量级的 Mixed Local Channel Attention (MLCA),加强通道信息和空间信息提取能力]

本文属于原创独家改进:一种轻量级的Mixed Local Channel Attention (MLCA)模块,该模块考虑通道信息和空间信息,并结合局部信息和全局信息以提高网络的表达效果 1.YOLOv10介绍 论文:[https://arxiv.org/pdf/2405.14458] 代码: https://gitcode.com/THU-MIG/yolov10?utm_s…

基于R-Tree的地理空间数据分析加速

几年前&#xff0c;我正在做一个业余项目。我想创建一个 Web 应用程序&#xff0c;推荐当地的特色景点&#xff0c;例如咖啡馆、书店或隐藏的酒吧。我的想法是在地图上显示用户触手可及的所有兴趣点。我的数据集中有数十万个点&#xff0c;我必须巧妙地过滤用户给定范围内的数据…

DVWA - Brute Force

DVWA - Brute Force 等级&#xff1a;low ​ 直接上bp弱口令爆破&#xff0c;设置变量&#xff0c;攻击类型最后一个&#xff0c;payload为用户名、密码简单列表 ​ 直接run&#xff0c;长度排序下&#xff0c;不一样的就是正确的用户名和密码 ​ 另解&#xff1a; 看一下…

3DMAX网格插入插件使用方法讲解

3DMAX网格插入插件使用方法 3DMAX网格插入插件&#xff0c;在选择的面上安门窗、打螺丝、挖洞、插入眼耳口鼻及其它网格模型等可以分分钟搞定&#xff01;它通过将面选择替换为库中的资源来加快建模过程。非常适合硬网格和有机建模&#xff01; 【适用版本】 3dMax2013及更高版…

快速欧氏聚类与普通欧氏聚类比较

1、前言 文献《FEC: Fast Euclidean Clustering for Point Cloud Segmentation》介绍了一种快速欧氏聚类方法,大概原理可以参考如下图,具体原理可以参考参考文献。 2、时间效率比较:快速欧氏聚类VS普通欧氏聚类 网上搜集的快速欧式聚类,与自己手写的普通欧式聚类进行对比,…

网络知识:这些特殊的IP地址,具体的用途你都知道吗

目录 一、0.0.0.0 二、255.255.255.255 限制广播地址 三、127.0.0.1 本机地址 四、224.0.0.1 组播地址 五、169.254.x.x 六、10.x.x.x、172.16。x。x&#xff5e;172.31。x。x、192.168。x。x 私有地址 对于计算机网络来说&#xff0c;IP地址是非常重要的概念&#xff0c…

Objective-C 学习笔记 | 协议(property)

Objective-C 学习笔记 | 协议&#xff08;property&#xff09; Objective-C 学习笔记 | 协议&#xff08;property&#xff09; Objective-C 学习笔记 | 协议&#xff08;property&#xff09; iOS 应用经常会用 UITableView 实例来显示数据&#xff0c;但是它本身不包含数据…