一文详解深度学习最常用的 10 个激活函数

【深度学习理论】(3) 激活函数 各位同学好,最近学习了CS231N斯坦福计算机视觉公开课,讲的太精彩了,和大家分享一下。 激活函数的作用是把神经元的输入线性求和后,放入非线性的激活函数中激活,正因为有非线性的激活函数,神经网络才能拟合非线性的决策边界,解决非线性的分类和回归问题 1. Sigmoid 函数 作用:将负无穷到正无穷的输入,映射到0到1之间。 公式: 若x=0,函数值=0.5,;若x很大时,函数值非常接近1;若x很小时,函数值非常接近0 特点: (1)将负无穷到正无穷的任何输入,都挤压成0到1之间的一个数 阅读详情

                                                                            Fly-AI竞赛服务平台 flyai.com

在开始学习之前推荐大家可以多在         FlyAI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。 

 激活函数是神经网络模型重要的组成部分,本文作者Sukanya Bag从激活函数的数学原理出发,详解了十种激活函数的优缺点。

激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。

在人工神经网络中,一个节点的激活函数定义了该节点在给定的输入或输入集合下的输出。标准的计算机芯片电路可以看作是根据输入得到开(1)或关(0)输出的数字电路激活函数。因此,激活函数是确定神经网络输出的数学方程式,本文概述了深度学习中常见的十种激活函数及其优缺点。

首先我们来了解一下人工神经元的工作原理,大致如下:

上述过程的数学可视化过程如下图所示:

 

1. Sigmoid 激活函数

 

 

Sigmoid 函数的图像看起来像一个 S 形曲线。

函数表达式如下:

在什么情况下适合使用 Sigmoid 激活函数呢?

Sigmoid 函数的输出范围是 0 到 1。由于输出值限定在 0 到 1,因此它对每个神经元的输出进行了归一化;

用于将预测概率作为输出的模型。由于概率的取值范围是 0 到 1,因此 Sigmoid 函数非常合适;

梯度平滑,避免「跳跃」的输出值;

函数是可微的。这意味着可以找到任意两个点的 sigmoid 曲线的斜率;

明确的预测,即非常接近 1 或 0。

Sigmoid 激活函数有哪些缺点?

倾向于梯度消失;

函数输出不是以 0 为中心的,这会降低权重更新的效率;

Sigmoid 函数执行指数运算,计算机运行得较慢。

 

2. Tanh / 双曲正切激活函数

 

 

tanh 激活函数的图像也是 S 形,表达式如下:

 

 

tanh 是一个双曲正切函数。tanh 函数和 sigmoid 函数的曲线相对相似。但是它比 sigmoid 函数更有一些优势。

 

首先,当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重更新。二者的区别在于输出间隔,tanh 的输出间隔为 1,并且整个函数以 0 为中心,比 sigmoid 函数更好;

在 tanh 图中,负输入将被强映射为负,而零输入被映射为接近零。

 

注意:在一般的二元分类问题中,tanh 函数用于隐藏层,而 sigmoid 函数用于输出层,但这并不是固定的,需要根据特定问题进行调整。

 

3. ReLU 激活函数

 

 

ReLU 激活函数图像如上图所示,函数表达式如下:

 

 

ReLU 函数是深度学习中较为流行的一种激活函数,相比于 sigmoid 函数和 tanh 函数,它具有如下优点:

 

当输入为正时,不存在梯度饱和问题。

计算速度快得多。ReLU 函数中只存在线性关系,因此它的计算速度比 sigmoid 和 tanh 更快。

 

当然,它也有缺点:

Dead ReLU 问题。当输入为负时,ReLU 完全失效,在正向传播过程中,这不是问题。有些区域很敏感,有些则不敏感。但是在反向传播过程中,如果输入负数,则梯度将完全为零,sigmoid 函数和 tanh 函数也具有相同的问题;

我们发现 ReLU 函数的输出为 0 或正数,这意味着 ReLU 函数不是以 0 为中心的函数。

 

4. Leaky ReLU

它是一种专门设计用于解决 Dead ReLU 问题的激活函数:

 

ReLU vs Leaky ReLU

 

为什么 Leaky ReLU 比 ReLU 更好?

 

 

Leaky ReLU 通过把 x 的非常小的线性分量给予负输入(0.01x)来调整负值的零梯度(zero gradients)问题;

leak 有助于扩大 ReLU 函数的范围,通常 a 的值为 0.01 左右;

Leaky ReLU 的函数范围是(负无穷到正无穷)。

 

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

 

5. ELU 

 

ELU vs Leaky ReLU vs ReLU

 

ELU 的提出也解决了 ReLU 的问题。与 ReLU 相比,ELU 有负值,这会使激活的平均值接近零。均值激活接近于零可以使学习更快,因为它们使梯度更接近自然梯度。

 

 

显然,ELU 具有 ReLU 的所有优点,并且:

没有 Dead ReLU 问题,输出的平均值接近 0,以 0 为中心;

ELU 通过减少偏置偏移的影响,使正常梯度更接近于单位自然梯度,从而使均值向零加速学习;

ELU 在较小的输入下会饱和至负值,从而减少前向传播的变异和信息。

一个小问题是它的计算强度更高。与 Leaky ReLU 类似,尽管理论上比 ReLU 要好,但目前在实践中没有充分的证据表明 ELU 总是比 ReLU 好。

 

6. PReLU(Parametric ReLU)

 

 

PReLU 也是 ReLU 的改进版本:

 

 

看一下 PReLU 的公式:参数α通常为 0 到 1 之间的数字,并且通常相对较小。

如果 a_i= 0,则 f 变为 ReLU

如果 a_i> 0,则 f 变为 leaky ReLU

如果 a_i 是可学习的参数,则 f 变为 PReLU

 

PReLU 的优点如下:

在负值域,PReLU 的斜率较小,这也可以避免 Dead ReLU 问题。

与 ELU 相比,PReLU 在负值域是线性运算。尽管斜率很小,但不会趋于 0。

 

7. Softmax

 

 

Softmax 是用于多类分类问题的激活函数,在多类分类问题中,超过两个类标签则需要类成员关系。对于长度为 K 的任意实向量,Softmax 可以将其压缩为长度为 K,值在(0,1)范围内,并且向量中元素的总和为 1 的实向量。

 

 

Softmax 与正常的 max 函数不同:max 函数仅输出较大值,但 Softmax 确保较小的值具有较小的概率,并且不会直接丢弃。我们可以认为它是 argmax 函数的概率版本或「soft」版本。

Softmax 函数的分母结合了原始输出值的所有因子,这意味着 Softmax 函数获得的各种概率彼此相关。

Softmax 激活函数的主要缺点是:

在零点不可微;

负输入的梯度为零,这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元。

 

8. Swish 

 

 

函数表达式:y = x * sigmoid (x)

Swish 的设计受到了 LSTM 和高速网络中 gating 的 sigmoid 函数使用的启发。我们使用相同的 gating 值来简化 gating 机制,这称为 self-gating。

self-gating 的优点在于它只需要简单的标量输入,而普通的 gating 则需要多个标量输入。这使得诸如 Swish 之类的 self-gated 激活函数能够轻松替换以单个标量为输入的激活函数(例如 ReLU),而无需更改隐藏容量或参数数量。

Swish 激活函数的主要优点如下:

「无界性」有助于防止慢速训练期间,梯度逐渐接近 0 并导致饱和;(同时,有界性也是有优势的,因为有界激活函数可以具有很强的正则化,并且较大的负输入问题也能解决);

导数恒 > 0;

平滑度在优化和泛化中起了重要作用。

 

9. Maxout

 

 

在 Maxout 层,激活函数是输入的较大值,因此只有 2 个 maxout 节点的多层感知机就可以拟合任意的凸函数。

单个 Maxout 节点可以解释为对一个实值函数进行分段线性近似 (PWL) ,其中函数图上任意两点之间的线段位于图(凸函数)的上方。

Maxout 也可以对 d 维向量(V)实现:

 

 

假设两个凸函数 h_1(x) 和 h_2(x),由两个 Maxout 节点近似化,函数 g(x) 是连续的 PWL 函数。

因此,由两个 Maxout 节点组成的 Maxout 层可以很好地近似任何连续函数。

 

10. Softplus

 

 

Softplus 函数:f(x)= ln(1 + exp x)

Softplus 的导数为f ′(x)=exp(x) / ( 1+exp⁡ x )= 1/ (1 +exp(−x )),也称为 logistic / sigmoid 函数。

Softplus 函数类似于 ReLU 函数,但是相对较平滑,像 ReLU 一样是单侧抑制。它的接受范围很广:(0, + inf)。


更多精彩内容请访问FlyAI-AI竞赛服务平台;为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台;每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

挑战者,都在FlyAI!!!

常用的激活函数(Sigmoid、Tanh、ReLU等) 目录一、激活函数定义二、梯度消失与梯度爆炸 1.什么是梯度消失与梯度爆炸2.梯度消失的根本原因3.如何解决梯度消失与梯度爆炸问题 三、常用激活函数1.Sigmoid2.Tanh3.ReLU4.Leaky ReLU5.ELU6.softmax7.Swish 激活函数 (Activation functions) 对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到神经网络中。在下图中,输入的 inputs 通过加权,求和后,还被作用了一个函数f,这 阅读详情

相关推荐

史上最全激活函数总结篇(持续更新ing......)

激活函数系列中提及到的激活函数包括:Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish、ELU、SELU、GELU、Softmax、Softplus、Mish、Maxout、HardSigmoid、HardTanh、Hardswish、HardShrink、SoftShrink、TanhShrink、RReLU、CELU、ReLU6、Threshold、Sinc、GLU、SwiGLU、GTU、Bilinear、ReGLU、GEGLU、Softmin、Softmax2d、Logs

走在深度学习前沿的小宋 1万+

常用的激活函数

激活函数(Activation Function)是一种添加到人工神经网络中的函数。其主要作用是对所有的隐藏层和输出层添加一个非线性的操作,使得神经网络的输出更为复杂、表达能力更强。如果没有激活函数,那么再多层的神经网络也只能处理线性可分问题。

weixin_50644076的博客 2982

TensorFlow深度学习实战(3)——深度学习中常用激活函数详解

激活函数是神经网络中至关重要的一部分,它决定了神经元的输出以及神经网络模型的非线性特性。没有激活函数,神经网络就会变成一个简单的线性模型,无法处理复杂的任务。因此,激活函数的选择直接影响神经网络的表达能力和学习效果。

盼小辉丶的博客 1万+

深度学习中常见的10种激活函数(Activation Function)总结

​ 激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端,旨在帮助网络学习数据中的复杂模式。 ​

不想学习的打工人的博客 12万+

Keras深度学习实战(4)——深度学习中常用激活函数和损失函数详解

使用激活函数可以实现网络的高度非线性,这对于建模输入和输出之间的复杂关系非常关键,只有加入了非线性激活函数之后,深度神经网络才具备了令人惊异的非线性映射学习能力。 利用损失函数计算损失值,模型就可以通过反向传播去更新各个参数,通过降低真实值与预测值之间的损失,使得模型计算得到的预测值趋近于真实值,从而达到模型训练的目的。激活函数和损失函数是神经网络中十分重要的组件,本节介绍深度学习中常用的激活函数和损失函数。.........

盼小辉丶的博客 1万+

PyTorch深度学习实战(4)——常用激活函数和损失函数详解

激活函数和损失函数是深度学习模型中重要组成部分,激活函数和损失函数的选择很大程度上决定了深度神经网络的性能和精度,需要根据具体问题的特点和数据分布等因素进行选择。在本节中,将介绍深度学习中常见的激活函数和损失函数,并说明不同函数的常见应用场景。

盼小辉丶的博客 1万+

深度学习领域最常用的10个激活函数,一文详解数学原理及优缺点

深度学习领域最常用的10个激活函数,一文详解数学原理及优缺点 转自:数据派THU 激活函数是神经网络模型重要的组成部分,本文作者Sukanya Bag从激活函数的数学原理出发,详解了十种激活函数的优缺点。 激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。 在人工神经网络中,一个节点的激活函数定义了该节点在给定的输入或输入集合下的输出。标准的计算机芯片电路可以

SmartLab307的博客 1006

【编号326】全国地灾数据全国25万多个地质灾害点空间分布数据

全国地质灾害点分布数据涵盖25万多个各类灾害点信息,为灾害防治提供重要依据。通过分析灾害分布规律,可识别高风险区,指导监测预警、应急避险和基础设施建设。多地成功案例(如湖北兴山崩塌避险、重庆长寿滑坡预警、湖南"挪床行动")证明,提前预警和科学防治能有效避免人员伤亡。云南省2024年通过预警体系成功避让31起灾害,保护1342人生命安全。这些实践表明,地质灾害防治需结合科技手段与群防体系,实现早预警、早处置。

千奇百怪无奇不有 1472

【激活函数】深度学习领域最常用的10个激活函数,一文详解数学原理及优缺点...

点击上方,选择星标,每天给你送干货! 来源:机器之心、信息网络工程研究中心 本文从激活函数的数学原理出发,详解了十种激活函数的优缺点。 激活函数是神经网络模型重要的组成部分,本文作者Suk...

zenRRan的博客 741

STM32开发 -- GPIO详解

之前有简单讲过GPIO工作模式和寄存器,还是有点没搞明白。这次需要全方位的看一下了。 一、数据手册 1、STM32F105RC引脚说明 可知:STM32F105RC 一共有4组IO口 一共16X3+3=51个IO GPIOA0~A15 GPIOB0~B15 GPIOC0~C15 GPIOD0~D2 2、程序定义 GPIO端口号 STM32F1...

不积跬步,无以至千里 5万+

OpenCV计算机视觉实战(12)——图像金字塔与特征缩放

图像金字塔技术通过对原始图像按不同分辨率进行多层次表示,不仅能提升计算效率,还能为图像融合、检测与识别提供多尺度特征。高斯金字塔 (Gaussian Pyramid) 用于构建多级低通图像,拉普拉斯金字塔 (Laplacian Pyramid) 则提取各层之间的细节信息。本节将深入介绍如何使用 OpenCV 构建高斯与拉普拉斯金字塔,并以经典的图像融合案例,展示图像金字塔在特征缩放与融合中的强大应用。

qq_30167691的博客 1404

【深度学习】深度学习中的10类激活函数

深度学习中常用的的激活函数包括了:sigmoid、tanh、ReLU 、Leaky Relu、RReLU、softsign、softplus。 激活函数可以分为两大类: 饱和激活函数:sigmoid、 tanh 非饱和激活函数:ReLU 、Leaky Relu 、ELU【指数线性单元】、PReLU【参数化的ReLU 】、RReLU【随机ReLU】 相对于饱和激活函数,使用“非...

Nieson2012的专栏 2204

【误码率仿真】基于matlab 小波变换OFDM误码率仿真

其中,与传统的 OFDM 相比,小波变换 OFDM 在进行调制和解调时,使用的是小波变换函数。需要注意的是,由于小波变换函数将频域信号转换为时域信号,因此与传统 OFDM 不同,小波变换 OFDM 中的信号需要在时域上添加循环前缀。与传统的 OFDM 不同,小波变换 OFDM 使用小波函数作为基函数,而非正弦函数作为基函数,因此可以在保持子载波正交性的同时,让子载波之间的带宽变得更加均匀。在频域进行信号加权,然后进行小波逆变换,得到时域信号。在接收端进行信号接收,去掉循环前缀并进行小波变换得到频域信号。

Fanjufei的博客 662

一文搞懂激活函数

1、什么是激活函数 神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。 2、激活函数的用途(为什么需要激活函数)? 1. 对于y=ax+b 这样的函数,当x的输入很大时,y的输出也是无限大小的,经过多层网络叠加后,值更加膨胀的没边了,这显然不符合我们的预期,很多情况下我们希...

ytusdc的博客 1万+

线程池详解(通俗易懂超级好)

目标 【理解】线程池基本概念 【理解】线程池工作原理 【掌握】自定义线程池 【应用】java内置线程池 【应用】使用java内置线程池完成综合案例 线程池 线程池基础 线程池使用 线程池综合案例 4.学员练习 5.线程池总结 概念介绍 1:什么是线程池 2:为什么使用线程池 3:线程池有哪些优势 什么是池 什么是线程池 线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runna.

拉格朗日的学习笔记 12万+

微信小程序 - 最新详细实现“全局实时监听页面发生跳转“ 当页面跳转后立即捕捉并触发某个操作或调用处理函数,小程序整个项目无时无刻只要路由发生变化改变了就能监听,时刻检测页面URL变化(获取路由数据)

微信小程序,vue2,vue3,监听路由,如何监听路由发生变化,如何watch监听路由,怎么全局监听页面发生变化,实现当页面路由发生变化时执行一个函数,当路由变化时执行一些操作执行一段代码,怎么监听路由变化时触发一个函数,监听页面变化,页面间的跳转如何监听,页面跳转时怎么拿到路由及参数,页面路由变化时拿到参数和url,使用watch监听路由变化,页面跳转后怎么触发事件,怎么监听页面跳转,监听页面跳转并拿到路由url路径,小程序怎么全局定义一个专门监听路由的函数,小程序怎么无时无刻实时监听路由页面跳转,监听当

🏆 前端领域优质创作者 4476

激活函数(Relu,sigmoid,Tanh,softmax)详解

总结了常用的激活函数,如何在工程实践中合理选择激活函数。

m0_53675977的博客 3万+

【优化模型】求解混合整数线性规划 MILP 问题

混合整数线性规划(Mixed Integer Linear Programming,MILP)是一类优化问题,其中目标函数和约束条件均为线性,并且包含整数变量。MILP 在实际应用中具有广泛的应用,可以解决很多实际问题,如生产调度、网络设计、资源分配等。f — 系数向量。系数向量,指定为实数向量或实数数组。intcon — 整数约束组成的向量。整数约束组成的向量,指定为正整数向量。intcon 中的值指示决策变量 x 中应取整数值的分量。A — 线性不等式约束。线性不等式约束,指定为实矩阵。

Fanjufei的博客 2499

常用激活函数总结(深度学习)

常用激活函数总结

weixin_44646390的博客 2万+

从你的全世界路过---陌陌X-SIGN还原

我们上期介绍了hook 接口方式,今天我分析so 层。学习是为了复杂的事情简单化。不用如此繁琐。跟进native_sdbyecbu37x这个函数,我们f5看伪代码 v13 = sign(v9, v10, v11, a6); 跟进这个函数 代码如下(示例): 2.代码贴入 SHA消息摘要java代码如下: java 代码如下(示例): 总结 算法,结合动态调试!

任雪飘的博客 2302

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

常用的激活函数合集(详细版)

从激活函数的公式及导函数、图像、优缺点或特点来描述了激活函数,以及总结了激活函数之间的优势,并且提供了pytorch的代码案例,以便于大家快速上手。

caip12999203000的博客 5万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 更深、更轻量级的Transformer!Facebook提出:DeLighT
下一篇: 人工智能十年回顾:CNN、AlphaGo、GAN……它们曾这样改变世界
iFlyAI
博客等级 码龄9年 238粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值