一些激活函数

一些激活函数

  • 摘要
  • 激活函数分类
  • 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.mfbz.cn/a/716231.html

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

相关文章

短链接生成器排名前三!长链接转化成短链接工具有哪些?

在现今的网络营销环境中&#xff0c;短链接的应用越来越广泛。它不仅能简化长链接&#xff0c;提高分享效果&#xff0c;还能提升企业品牌形象和用户体验。于是&#xff0c;市场上涌现出众多短链接生成工具。本文将为您揭秘短链接生成器排名前三的产品&#xff0c;帮您找到最适…

ABB工业喷涂机器人保养,轻松搞定!

小伙伴都知道机器人在长时间的使用下&#xff0c;难免遇到一些机械手故障。一旦发生了机器人故障&#xff0c;会影响整个生产线的作业&#xff0c;那么怎么才能做到防止机器人的故障率发生呢&#xff1f;定期的保养与维护显得尤为重要&#xff0c;一个好的维修保养服务商也很重…

yml配置文件快速上手

yml配置文件快速上手 springboot中&#xff0c;有三种文件可以作为配置文件 xml文件(不推荐&#xff0c;臃肿)application.propertis文件&#xff08;层次不够分明&#xff09;yml文件&#xff08;推荐&#xff0c;层次分明&#xff0c;语法简洁&#xff09; yml文件的基本语…

【递归、搜索与回溯】记忆化搜索

一、经验总结 以斐波那契数为例引入今天的主角&#xff1a;记忆化搜索和动态规划 题目链接 509. 斐波那契数 - 力扣&#xff08;LeetCode&#xff09; 题目描述 算法原理 编写代码 //解法二&#xff1a;递归->记忆化搜索 class Solution {int mem[31]; //备忘录 public…

揭秘未来:用线性回归模型预测一切的秘密武器!

线性回归模型 1. 引言2. 理论基础2.1 线性回归模型的定义与原理原理与关键假设模型参数估计 2.2 模型评估指标2.2.1 残差分析2.2.2 拟合优度指标2.2.3 统计检验 3. 应用场景3.1. 金融领域中的应用3.2. 医疗健康领域中的应用3.3. 其他领域的应用 4. 实例分析4.1、数据集选择4.2、…

目标检测算法YOLOv10简介

YOLOv10由Ao Wang等人于2024年提出&#xff0c;论文名为&#xff1a;《YOLOv10: Real-Time End-to-End Object Detection》&#xff0c;论文见&#xff1a;https://arxiv.org/pdf/2405.14458 &#xff1b;源码见: https://github.com/THU-MIG/yolov10 以下内容主要来自论文&a…

Open To Buy(OTB)计划:零售业者的库存管理利器

在当今快速变化的服装市场中&#xff0c;如何高效、精准地进行商品管理成为了服装企业竞争的关键。OTB&#xff08;Open-to-Buy&#xff09;作为一种有效的商品管理方法&#xff0c;在企业管理中扮演着至关重要的角色。它基于预算、商品计划以及市场需求等多维度因素&#xff0…

《优化接口设计的思路》系列:第1篇—什么是接口缓存

一、缓存的定义&#xff1a; 缓存是一种存储数据的技术&#xff0c;用于提高数据访问的速度和效率。缓存通常存储在内存中&#xff0c;因为内存访问速度远快于磁盘和网络。数据接口通常会使用缓存技术&#xff0c;以降低对后端数据存储和处理的压力&#xff0c;提高系统性能。…

CSAPP -lecture01

##01COURSE OVERVIEW int or not intergers ,float and not reals that you need to understand what the system dose ,what make it run wll,what make it run poorly .in order to be able to do that kind of optimization

期货到底难在哪里?

第一难&#xff1a;使用杠杠&#xff0c;杠杠放大的其实是你性格、天赋和技能上的弱点&#xff0c;同时相应缩小你这三个方面的优点&#xff1b;第二难&#xff1a;双向交易。如果只能做多&#xff0c;理论上你每次交易将有50%的概率盈利。现在既能做多又能做空&#xff0c;只剩…

Semantic Kernel 直接调用本地大模型与阿里云灵积 DashScope

本文主要介绍如何在无需网关&#xff0c;无需配置 HttpClient 的情况下&#xff0c;使用 Semantic Kernel 直接调用本地大模型与阿里云灵积 DashScope 等 OpenAI 接口兼容的大模型服务。 1. 背景 一直以来&#xff0c;我们都在探索如何更好地利用大型语言模型&#xff08;LLM&…

如何快速搭建产业数字化生态链?

如何快速搭建产业数字化生态链&#xff1f;这是当下许多企业都在思索的关键问题。 首先&#xff0c;要明确自身的核之心优势与定位&#xff0c;找到在数字化生态中的独特价值。 加强与产业链上下游企业的合作与协同&#xff0c;打破信息壁垒&#xff0c;实现资源共享与互补。 注…

重生奇迹mu圣导师介绍

出生地&#xff1a;勇者大陆 性 别&#xff1a;男 擅 长&#xff1a;统率&宠物使用 转 职&#xff1a;祭师&#xff08;3转&#xff09; 介 绍&#xff1a;当玩家账号中有一个Lv250以上角色时&#xff0c;便可以创建职业为圣导师的新角色&#xff0c;圣导师每升一级获得…

最适合程序员的编程字体,漂亮、独特、优雅!(2024-06-17)

Monaco Monaco 字体是一款专为编程和代码编辑设计的等宽字体&#xff0c;以其简洁明了的无衬线设计风格、高可读性和清晰的字符区分度&#xff0c;受到开发者们的青睐&#xff0c;Mac 自带 Monaco 字体。 Consolas Consolas 是一款等宽无衬线字体&#xff0c;专为编程和代码编…

C#语言入门详解 --- 方法(含传值 输出 引用 数组)

方法 方法标准式 <Access Specifier> <Return Type> <Method Name>(Parameter List) { Method Body } 让我们逐一对每一个模块进行解释&#xff1a; Access Specifier&#xff1a;访问修饰符&#xff0c;这决定了接下来的主题的可见性&#xff0c;包含p…

基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[3]-参数配置详细版

基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[3]-参数配置详细版 在开始参数配置之前,先执行以下脚本 python copy_config_example.py该脚本将会将所有config目录下的配置文件样例复制一份到config目录下,方便开发者进行配置。 接着,开发者可以根据自己的需求,对…

20个超实用的VS Code扩展(2024年版)

大家好&#xff0c;今天小程给大家带来一篇关于 VS Code 扩展的文章。VS Code 这几年做得是风生水起&#xff0c;可以算得上是微软的良心产品&#xff0c;其最大的优势就是拥有众多高质量的扩展。在本文中&#xff0c;将向大家推荐一些我认为在 2024 年对开发者来说又实用又好用…

GPT_AI高速发展中什么是Prompt提示词?

提示词&#xff08;Prompt&#xff09;是给大语言模型&#xff08;以下简称模型&#xff09;的输入文本&#xff0c;用于指定模型应该执行什么样的任务并生成什么样的输出。 提示词发挥了“提示” 模型 应该做什么的作用。设计高质量的提示词需要根据目标任务和模型能力进行精…

动态 ETL 管道:使用非结构化 IO 将 AI 与 MinIO 和 Weaviate 的 Web

在现代数据驱动的环境中&#xff0c;网络是一个无穷无尽的信息来源&#xff0c;为洞察力和创新提供了巨大的潜力。然而&#xff0c;挑战在于提取、构建和分析这片浩瀚的数据海洋&#xff0c;使其具有可操作性。这就是Unstructured-IO 的创新&#xff0c;结合MinIO的对象存储和W…

hadoop搭建本地hive库保姆级教程

安装本地hive 安装的前提是hadoop完全分布式可以正常的跑起来 第一部分&#xff1a;安装mysql8.0 1.安装wget工具 yum -y install wget2.通过wget工具下载mysql源文件 注意&#xff1a;以下版本过高&#xff0c;后面安装MySQL源会失败&#xff0c;所以建议刚开始尝试换成…