激活函数总结(四):Hard系列激活函数补充(HardSigmoid、HardTanh、Hardswish)

news2024/12/23 18:09:08

激活函数总结(四):Hard系列激活函数补充

  • 1 引言
  • 2 激活函数
    • 2.1 HardSigmoid激活函数
    • 2.2 HardTanh激活函数
    • 2.3 Hardswish激活函数
  • 3. 总结

1 引言

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

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

2 激活函数

2.1 HardSigmoid激活函数

HardSigmoid(硬Sigmoid)激活函数是一种近似于Sigmoid函数的非线性激活函数。HardSigmoid 激活函数通过对Sigmoid函数进行修剪和缩放,使其更加接近于一个分段线性函数。其数学表达式和数学图像分别如下所示:
H a r d S i g m o i d ( x ) = m a x ( 0 , m i n ( 1 , α ∗ x + β ) ) HardSigmoid(x) = max(0, min(1, α * x + β)) HardSigmoid(x)=max(0,min(1,αx+β)) 在这里插入图片描述
其中, α α α 是斜率参数, β β β 是偏移参数。通常情况下, α α α 取值为1/6, β β β 取值为1/3,这样 HardSigmoid 函数在x取值在[-3, 3]范围内比较接近于Sigmoid函数。对于超出这个范围的输入,其输出将被限制在0和1之间

优点:

  • 更加高效:相比于Sigmoid函数,HardSigmoid函数计算更加简单,因为它只涉及最大值、最小值和简单的线性变换。这使得HardSigmoid函数在一些资源有限的设备上更容易实现,并且可以减少计算负担
  • 计算稳定:sigmoid函数的输入在绝对值较大时,其输出会趋近于0或1,导致梯度消失;而hardsigmoid的输出在0和1之间波动,避免了这种情况
  • 增加稀疏性:由于hardsigmoid的输出是截断的,超过一定阈值的输入将被截断成1,从而增加了神经元对输入的敏感程度,有利于网络产生稀疏表示

缺点:

  • 非光滑性:HardSigmoid是一个分段线性函数,在某些点上存在不连续性。这意味着在这些点上梯度不连续,可能导致优化过程中出现问题。在反向传播时,梯度的不连续性可能会影响训练的稳定性,增加收敛时间,甚至导致模型无法收敛。
  • 信息丢失:由于HardSigmoid对输入进行硬剪裁,将超过一定范围的值限制在0和1之间,因此它会导致部分信息的丢失。这可能会对模型的表达能力产生一定的负面影响,尤其是对于那些需要更精确输出的任务。
  • 缺乏灵活性:HardSigmoid是一个固定形状的激活函数,其斜率和偏移参数在大多数情况下是固定的。这使得它相对缺乏灵活性,难以适应复杂的数据分布或任务。
  • 不适用于梯度爆炸问题:HardSigmoid虽然在某些情况下有助于缓解梯度消失问题,但对于梯度爆炸问题并没有提供明显的改进。在深度神经网络中,梯度爆炸问题可能导致训练不稳定或无法收敛。

当前还是ReLU的天下,连续的激活函数往往更令人喜欢!!!HardSigmoid几乎没见人用过。。。

2.2 HardTanh激活函数

HardTanh(硬切线激活函数)是一种非线性激活函数,它是Tanh函数的一种变体。与标准的Tanh函数相比,HardTanh函数进行了简单的截断和缩放,使其更接近于一个分段线性函数。其数学表达式和数学图像分别如下所示:
H a r d T a n h ( x ) = m a x ( − 1 , m i n ( 1 , x ) ) HardTanh(x) = max(-1, min(1, x)) HardTanh(x)=max(1,min(1,x))在这里插入图片描述

该函数将输入x限制在区间[-1, 1]之间。在输入小于-1时,输出值将被固定为-1,在输入大于1时,输出值将被固定为1。只有当输入在[-1, 1]之间时,HardTanh函数才对输入进行线性变换。

优点:

  • 简单性:HardTanh函数的计算非常简单,只涉及最大值、最小值和简单的线性变换,因此在硬件加速或资源受限的设备上实现起来相对容易。
  • 非线性性:尽管HardTanh函数在输入在[-1,1]之间是线性的,但它在输入小于-1和大于1时是非线性的,因此可以引入一些非线性特性,有助于提高模型的表达能力。
  • 有界输出:HardTanh函数的输出范围被限制在[-1, 1]之间,这有助于避免梯度爆炸和梯度消失问题,并提供更稳定的训练过程。

缺点:

  • 非光滑性:HardTanh是一个分段线性函数,在某些点上存在不连续性。这意味着在这些点上梯度不连续,可能导致优化过程中出现问题。类似于HardSigmoid,梯度的不连续性可能会影响训练的稳定性,并增加收敛时间。
  • 信息丢失:HardTanh对输入进行硬剪裁,将超过一定范围的值限制在固定的范围内(通常为-1和1之间)。这会导致一些信息的丢失,特别是对于那些需要更大范围输出的任务,HardTanh可能无法准确地表示输出。
  • 硬剪裁的影响:HardTanh的硬剪裁可能导致梯度的消失问题,尤其是在较深的神经网络中。当输入位于硬剪裁的边界附近时,梯度可能变得非常小,导致模型的学习速度减慢甚至停止学习。
  • 不适用于梯度爆炸问题:类似于HardSigmoid,HardTanh对于梯度爆炸问题并没有提供明显的改进。在深度神经网络中,梯度爆炸问题可能导致训练不稳定或无法收敛。
  • 参数缺少:HardTanh激活函数通常不具有可调整的参数,这使得它在某些情况下缺乏灵活性。无法调整参数可能会导致HardTanh难以适应复杂的数据分布或任务。

同样地,对于不连续的HardTanh激活函数,几乎没有人使用。。。

2.3 Hardswish激活函数

论文链接:https://arxiv.org/abs/1905.02244

HardSwish(硬切线激活函数)是一种近似于Swish激活函数的非线性激活函数。HardSwish激活函数在2017年提出,是对Swish函数进行修剪和缩放,使其更加接近于一个分段线性函数。其数学表达式和数学图像分别如下所示:
H a r d S w i s h ( x ) = { 0 i f x < = − 3 x i f x > = + 3 x   ∗ ( x + 3 ) / 6 o t h e r w i s e HardSwish(x)=\left\{ \begin{matrix} \quad \quad \quad 0 \quad \quad \quad if \quad x <= -3 \\ \quad \quad \quad x \quad \quad \quad if \quad x >= +3 \\ x \ * (x+3)/6 \quad \quad otherwise \end{matrix} \right. HardSwish(x)= 0ifx<=3xifx>=+3x (x+3)/6otherwise在这里插入图片描述
优点:

  • 可在嵌入式上使用:swish非线性激活函数提高了检测精度,但不适合在嵌入式移动设备上使用,因为“S”型函数在嵌入式移动设备上的计算成本更高,求导较为复杂,在量化时计算较慢。而hardswish非线性激活函数与swish函数相比:在准确性上没有明显差别,但从部署在嵌入式移动设备上而言具有多重优势
  • 数值稳定性好:在量化模式下,它消除了由于近似Sigmoid形的不同实现而导致的潜在数值精度损失
  • 计算速度快:在实践中,hardswish激活函数可以实现为分段功能,以减少内存访问次数,从而大大降低了等待时间成本。

缺点:
虽然相比于swish具有较快的计算速度,但是相比ReLU6仍存在计算量较大的问题。

设计之初是为了应用于移动端,在MobileNetV3、YOLOv5中都有应用。其本身具有与Swish差不多的性能,且更快。因此,是一个当前较为流行的激活函数。

3. 总结

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

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

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

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

相关文章

ruoyi-cloud微服务新建子模块

ruoyi-cloud微服务新建子模块 1、复制system模块 直接复制 modules下面已有的system模块&#xff0c;改名为 test 2、在modules下的 pom.xml文件中添加子模块 3、进入 test模块修改 pom.xml 把原有的system 修改成test 4、修改对应的包名、目录名和启动应用程序为test 5、修…

zustand:基于 Flux 模型实现的小型、快速和可扩展的状态管理

目录 ReactStep 1&#xff1a;安装Step 2&#xff1a;Store 初始化Step3&#xff1a;Store 绑定组件&#xff0c;就完成了!效果图 VueStep 1: 安装Step 2: Store 初始化Step 3: Store 绑定组件&#xff0c;就完成了!效果图 微前端为什么你需要 zustand-pub &#xff1f;安装ste…

使用基于jvm-sandbox的对三层嵌套类型的改造

使用基于jvm-sandbox的对三层嵌套类型的改造 问题背景 先简单介绍下基于jvm-sandbox的imock工具&#xff0c;是Java方法级别的mock&#xff0c;操作就是监听指定方法&#xff0c;返回指定的mock内容。 jvm-sandbox 利用字节码操作和自定义类加载器的技术&#xff0c;将原始方法…

【RabbitMQ与SpringBoot集成测试收发消息】

【RabbitMQ与SpringBoot集成测试收发消息】 一、环境说明二、实验步骤三、小结 一、环境说明 安装环境&#xff1a;虚拟机VMWare Centos7.6 Maven3.6.3 JDK1.8RabbitMQ版本&#xff1a;rabbitmq-server-3.8.8-1.el7.noarch.rpm编程工具Idea 运行JDK为17 二、实验步骤 在Rab…

无货源多功能跨境商城智能搭建--软件制作+程序开发

随着全球电子商务的快速发展&#xff0c;跨境贸易已经成为一种新的商业趋势。在这个背景下&#xff0c;建立一个多功能跨境人工智能商城数据处理平台&#xff0c;不仅可以提高跨境电商的运营效率&#xff0c;还可以增强用户的购物体验&#xff0c;进一步推动跨境贸易的发展。本…

LinuxC编程——进程

目录 一、概念1.1 程序1.2 进程 二、特点⭐⭐⭐三、进程段四、进程分类五、进程状态六、进程状态转换图七、函数接口1. 创建子进程2. 回收进程资源3. 退出进程4. 获取进程号 八、守护进程 一、概念 进程和程序是密不可分的两组概念&#xff0c;相对比&#xff0c;便于理解。 1.…

春秋云镜 CVE-2022-21661

春秋云镜 CVE-2022-21661 wordpress < 5.8.3 存在sql注入漏洞 靶标介绍 2022年1月6日&#xff0c;wordpress发布了5.8.3版本&#xff0c;修复了一处核心代码WP_Query的sql注入漏洞。WP_Query是wordpress定义的一个类&#xff0c;允许开发者编写自定义查询和使用不同的参数…

安装Ubuntu,创建分区时无EFI系统分区选项的解决方法

电脑型号&#xff1a;联想小新Air2021 操作系统&#xff1a;windows10 硬盘&#xff1a;一块512G固态 如题&#xff0c;安装Ubuntu&#xff0c;在创建分区时&#xff0c;“用于”栏 没有“EFI系统分区”选项&#xff0c;导致在重启电脑后&#xff0c;发现直接进了Windows系统…

STM32芯片的内部架构介绍

STM32芯片由内核和片上外设两部分组成。STM32F103采用Cortex-M3内核&#xff0c;该内核由ARM公司设计。芯片生产厂商ST则负责在内核之外设计部件并生产整个芯片。这些内核之外的部件被称为核外外设或片上外设&#xff0c;如GPIO、USART&#xff08;串口&#xff09;、I2C、SPI等…

Cookie和Session详解及区别

目录 1&#xff0c;会话跟踪技术的概述 2&#xff0c;Cookie 2.1 Cookie的基本使用 1.概念 2.Cookie的工作流程 3.Cookie的基本使用 3.1 发送Cookie 3.2 获取Cookie 3.3设置Cookie存活时间 3&#xff0c;Session 3.1 Session的基本使用 3.2Session销毁 4.cookie和s…

plt绘制实测值与预测值的散点图

# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from matplotlib.pyplot import MultipleLocator""" 输出观测值和模型预测值之间的拟合曲线,即拟合模型 决定系数R2&#xff0c;有拟合曲线公式&#xff0c;有1:1线 ""&…

笔记顶顶顶顶

这里写目录标题 基础**1. 说下计算机网络体系结构****2. OSI七层模型各自的功能是什么&#xff1f;**3. **说一下每一层对应的网络协议有哪些&#xff1f;**4. 那么数据在各层之间是怎么传输的呢&#xff1f; 应用层5. 从浏览器地址栏输入 url 到显示主页的过程&#xff1f;6. …

【24择校指南】南京大学计算机考研考情分析

南京大学(A) 考研难度&#xff08;☆☆☆☆☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分数人数统计&#xff09;、院校概况、23初试科目、23复试详情、参考书目、各科目考情分析、各专业考情分析。 正文2178字&#xff0c;预计阅读&#xff1a;6分…

计算机基础知识二

1、八进制 逢八进一。用8个计数符号表示&#xff0c;0、1、2、3、4、5、6、7。 2、八进制转二进制 规则&#xff1a;3位二进制转换1位八进制数。1位八进制数转换3位二进制数。 例如&#xff1a; 10011101B , 0.1101010011B 转换成八进制数。 3、十六进制 用16个计数符号0、1、…

【刷题笔记8.10】LeetCode题目:有效括号

LeetCode题目&#xff1a;有效括号 1、题目描述&#xff1a; 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同…

深度学习阶段性回顾

本文针对过去两周的深度学习理论做阶段性回顾&#xff0c;学习资料来自吴恩达老师的2021版deeplearning.ai课程&#xff0c;内容涵盖深度神经网络改善一直到ML策略的章节。视频链接如下&#xff1a;吴恩达深度学习视频链接 &#xff08;注&#xff1a;本文出自深度学习初学者&a…

SAP ABAP 批量CC01 创建ECN的物料和BOM 清单(RFC: CCAP_ECN_CREATE)

效果如下&#xff1a; 源代码&#xff1a; *&---------------------------------------------------------------------* *& Report ZCYCLE054 *&---------------------------------------------------------------------* *&批量CC01 *&----------------…

docker的服务/容器缺少vim问题

背景/问题&#xff1a; docker的服务/容器缺少vim问题 在docker的mysql服务中安装Vim 1、执行apt-get update root6d8d17e320a0:/# apt-get update问题:文件下载失败 Err:1 http://security.debian.org/debian-security buster/updates InRelease Temporary failure resolv…

MyBatis的XML配置文件

Mybatis的开发有两种方式&#xff1a; 注解 XML配置文件 通过XML配置文件的形式来配置SQL语句&#xff0c;这份儿XML配置文件在MyBatis当中也称为XML映射文件。 导学&#xff1a;在MyBatis当中如何来定义一份儿XML映射文件&#xff1f; 在MyBatis当中&#xff0c;定义XML…

uniapp文件下载并预览

大概就是这样的咯&#xff0c;文件展示到页面上&#xff0c;点击文件下载并预览该文件&#xff1b; 通过点击事件handleDownLoad(file.path)&#xff0c;file.path为文件的地址&#xff1b; <view class"files"><view class"cont" v-for"(…