神经网络 | 常见的激活函数

Hi,大家好,我是半亩花海。本文主要介绍神经网络中必要的激活函数的定义、分类、作用以及常见的激活函数的功能。


目录

一、激活函数定义

二、激活函数分类

三、常见的几种激活函数

1. Sigmoid 函数

(1)公式

(2)图像

(3)优点与不足

2. Tanh 函数

(1)公式

(2)图像

(3)优点与不足

3. ReLU 函数

(1)公式

(2)图像

(3)优点与不足

4. Softmax 函数

(1)公式

(2)图像

(3)特点与不足


一、激活函数定义

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

激活函数是神经网络中的一种非线性变换,它定义在每个神经元上,将神经元输入信号转换为输出信号。在深度学习中,激活函数非常重要,因为它们使神经网络能够捕捉到非线性关系,从而能够更好地逼近复杂的函数或映射。

下图展示了一个神经元是如何输入激活函数以及如何得到该神经元最终的输出:


二、激活函数分类

激活函数可以分成两类——饱和激活函数非饱和激活函数

  • 饱和激活函数: Sigmoid、 Tanh...
  • 非饱和激活函数:  ReLU 、Leaky Relu  、ELU、PReLU、RReLU...

了解一下饱和

假设 h(x) 是一个激活函数。

  • 当我们的 n 趋近于正无穷,激活函数的导数趋近于 0,那么我们称之为右饱和

\lim_{n \to +\infty }h'(x)=0

  • 当我们的 n 趋近于负无穷,激活函数的导数趋近于 0,那么我们称之为左饱和

\lim_{n \to -\infty }h'(x)=0

当一个函数既满足左饱和又满足右饱和的时候我们就称之为饱和,典型的函数有 Sigmoid、Tanh 函数。

  • 反之,不满足以上条件的函数则称为非饱和激活函数。
    • Sigmoid 函数需要一个实值输入压缩至 [0,1] 的范围。
    • tanh 函数需要讲一个实值输入压缩至 [-1, 1] 的范围。

相对于饱和激活函数,使用非饱和激活函数优势在于两点:

  • 非饱和激活函数能解决深度神经网络(层数非常多)带来的梯度消失问题。
  • 使用非饱和激活函数能加快收敛速度。

三、常见的几种激活函数

在深度学习中,最常用的激活函数包括 Sigmoid函数、ReLU函数(Rectified Linear Unit)、Tanh 函数、Softmax 函数等。这些激活函数不同的特点和优缺点,应根据具体的问题选择合适的激活函数。

例如:Sigmoid 函数在输出处的值域为 [0,1],可以将输出解释为概率,因此常用于二分类问题;ReLU 函数在输入为负数时输出为 0,可以有效地解决梯度消失问题,因此广泛应用于卷积神经网络中。

1. Sigmoid 函数

(1)公式

Sigmoid 激活函数的数学表达式为:

f(x)=\frac{1}{1+e^{-x}}

导数表达式为:

f'(x)=\frac{e^{-x}}{(1+e^{-x})^{2}}=f(x)(1-f(x))

(2)图像

(3)优点与不足

Sigmoid 优点:

  • 值域为 [0, 1],非常适合作为模型的输出函数用于输出一个 (0,1) 范围内的概率值,可用于将预测概率作为输出的模型,比如用于表示二分类的类别或者用于表示置信度
  • Sigmoid 函数的输出范围是 0 到 1。由于输出值限定在 0 到 1,因此它对每个神经元的输出进行了归一化
  • 该函数是连续可导的(即可微),可以提供非常平滑的梯度值,防止模型训练过程中出现突变的梯度(即避免“跳跃”的输出值)。

Sigmoid 不足:

  • 从其导数的函数图像上可以看到,其导数的最大值只有 0.25,而且当 x 在 [-5, 5] 的范围外时其导数值就已经几乎接近于 0 了。这种情况会导致训练过程中神经元处于一种饱和状态,反向传播时其权重几乎得不到更新,从而使得模型变得难以训练,这种现象被称为梯度消失问题。
  • 输出不是以 0 为中心而是都大于 0 的(这会降低权重更新的效率),这样下一层的神经元会得到上一层输出的全正信号作为输入,所以 Sigmoid 激活函数不适合放在神经网络的前面层而一般是放在最后的输出层中使用。
  • 需要进行指数运算(计算机运行得较慢),计算量大及计算复杂度高,训练耗时;指数的越大其倒数就越小,容易产生梯度消失。

2. Tanh 函数

(1)公式

Tanh 激活函数的数学表达式为:

f(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}=\frac{2}{1+e^{-2x}}-1

导数表达式为:

f'(x)=\frac{4}{(e^{x}+e^{-x})^{2}}=1-[f(x)]^{2}

(2)图像

(3)优点与不足

Tanh 优点:

  • 在分类任务中,双曲正切函数(Tanh)逐渐取代 Sigmoid 函数作为标准的激活函数,其具有很多神经网络所钟爱的特征。它是完全可微分的,反对称,对称中心在原点
  • 输出是 S 型曲线,具备打破网络层与网络层之间的线性关系,可以把网络层输出非线形地映射到 (−1,1) 区间里。负输入将被强映射为负,而零输入被映射为接近零;Tanh 的输出间隔为 1 且值域是以 0 为中心的 [-1,1](可以解决 Sigmoid 激活函数输出不以 0 为中心的问题。)
  • 在一般的二元分类问题中,Tanh 函数一般用于隐藏层,而 Sigmoid 函数用于输出层,但这并不是固定的,需要根据特定问题进行调整。

Tanh 不足:

  • 当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重更新。
  • Tanh 函数也需要进行指数运算,所以其也会存在计算复杂度高且计算量大的问题。
  • 当神经网络的层数增多的时候,由于在进行反向传播的时候,链式求导,多项相乘,函数进入饱和区(导数接近于零的地方)就会逐层传递,这种现象被称为梯度消失

3. ReLU 函数

(1)公式

ReLU 激活函数的数学表达式为:

f(x)=max(x, 0)=\left\{\begin{matrix}x,x\geq 0 & & \\ 0,x< 0 & & \end{matrix}\right.

导数表达式为:

f(x)=\left\{\begin{matrix}1,x\geq 0 & & \\ 0,x< 0 & & \end{matrix}\right.

(2)图像

(3)优点与不足

① ReLU 优点:

  • ReLU 函数在正输入时是线性的,收敛速度快,计算速度快,同时符合恒等性的特点。当输入为正时,由于导数是1,能够完整传递梯度,不存在梯度消失的问题(梯度饱和问题)。
  • 计算速度快。ReLU 函数中只存在线性关系且无论是函数还是其导数都不包含复杂的数学运算,因此它的计算速度比 Sigmoid 和 Tanh 更快。
  • 当输入大于0时,梯度为1,能够有效避免链式求导法则梯度相乘引起的梯度消失和梯度爆炸;计算成本低。
  • 它保留了 step 函数的生物学启发(只有输入超出阈值时神经元才激活),不过当输入为正的时候,导数不为零,从而允许基于梯度的学习(尽管在 x=0 的时候,导数是未定义的)。当输入为负值的时候,ReLU 的学习速度可能会变得很慢,甚至使神经元直接无效。因为此时输入小于零而梯度为零,从而其权重无法得到更新,在剩下的训练过程中会一直保持静默。

② ReLU 不足:

  • ReLU 的输入值为负的时候,输出始终为 0,其一阶导数也始终为 0,这样会导致神经元不能更新参数,也就是神经元不学习了,这种现象叫做“Dead Neuron”。为了解决 ReLU 函数这个缺点,在 ReLU 函数的负半区间引入一个泄露(Leaky)值,所以称为 Leaky ReLU 函数。
  • 与 Sigmoid 一样,其输出不是以 0 为中心的(ReLU 的输出为 0 或正数)。
  • ReLU 在小于 0 的时候梯度为零,导致了某些神经元永远被抑制,最终造成特征的学习不充分;这是典型的 Dead ReLU 问题,所以需要改进随机初始化,避免将过多的负数特征送入ReLU。

4. Softmax 函数

(1)公式

Softmax 激活函数的数学表达式为:

f(x)=\frac{e^{x_{i}}}{\sum_{i=0}^{n}e^{x_{i}}}

这里使用梯度无法求导,所以导函数图像是一个 y=0 的直线。

(2)图像

(3)特点与不足

① Softmax 特点:

  • 在零点不可微,负输入的梯度为零。这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元。
  • 将预测结果转化为非负数、预测结果概率之和等于1。
  • 经过使用指数形式的 Softmax 函数能够将差距大的数值距离拉的更大。在深度学习中通常使用反向传播求解梯度进而使用梯度下降进行参数更新的过程,而指数函数在求导的时候比较方便.

② Softmax 不足:

使用指数函数,当输出值非常大的话,计算得到的数值也会变的非常大,数值可能会溢出

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

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

相关文章

问题:创业者在组建创业团队时,在个人特征和动机方面更应该注重创业者的( ) #知识分享#微信#媒体

问题&#xff1a;创业者在组建创业团队时&#xff0c;在个人特征和动机方面更应该注重创业者的&#xff08; &#xff09; 参考答案如图所示

hook函数——useState

useState useState是React中的一个Hook函数&#xff0c;用于在函数组件中添加状态。基本使用语法如下&#xff1a; const [state, setState] useState(initialState) state&#xff1a;表示当前状态的值setState&#xff1a;更新状态的函数initialState&#xff1a;初始状态…

为什么是0.1uF电容?

旁路电容是电子设计中常用的电容器之一&#xff0c;主要用于过滤电源噪声和稳定电源电压。在实际应用中&#xff0c;0.1uF电容器是最常用的旁路电容值之一&#xff0c;那么为什么常用旁路电容是0.1uF而不是其他值&#xff1f;这个值又是怎么来的呢&#xff1f;本文将深入探讨这…

基于微信小程序的校园二手交易平台

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

UDP 用户数据报协议

目录 1 UDP 1.1 UDP 的主要特点 1.1.1 UDP 是面向报文的 1.1.2 UDP 通信和端口号的关系 1.2 UDP 的首部格式 1.2.1 UDP 基于端口的分用 1.3 UDP抓包 1 UDP UDP 只在 IP 的数据报服务之上增加了一些功能&#xff1a; 1.复用和分用 2.差错检测 1.1 UDP 的主要特点 1.无连…

PSM-Net根据Stereo图像生成depth图像

一、新建文件夹 在KITTI数据集下新建depth_0目录 二、激活anaconda环境 conda activate pt14py37三、修改submission.py文件 3.1 KITTI数据集路径 parser.add_argument(--datapath, default/home/njust/KITTI_DataSet/00/, helpselect model)3.2 深度图像输出路径 save…

Vision Pro新机测评!“这才是MR硬件该有的模样!”

期盼很久的Vision Pro终于到了&#xff0c;小编迫不及待地体验了一把&#xff0c;效果相当非常震撼&#xff0c;操作非常丝滑&#xff0c;画面非常清晰…来不急解释了&#xff0c;快和小编一起来看一下吧~ 新机一到公司&#xff0c;为解大家对Vision Pro 的“相思之苦”&#x…

一篇文章理解时间复杂度和空间复杂度

今天也是很开心的学到了数据结构&#xff0c;也是打算把我自己对知识的理解给写出来了。第一篇数据结构开始咯。开始之前我们先理解一个概念。 什么是算法效率&#xff1f; 算法效率是指算法执行的速度或完成任务所需的资源&#xff08;如时间和空间&#xff09;的度量。它通…

Pymysql之Cursor常用API

Cursor常用API 1、cursor.execute(query, argsNone)&#xff1a;执行sql语句。 参数: query (str)&#xff1a;sql语句。 args (tuple, list or dict)&#xff1a;sql语句中如果有变量&#xff0c;或者格式化输出&#xff0c;会在这里填充数据。 Returns&#xff1a;返…

日志报错 git -c dif.mnemonicprefix=false -c core.guotepath=false 解决方法

前言: 在进行下面操作前,必须确保,你是否安装了Git。 查看Git 在命令行窗口中输入`git --version`: 如果这个命令成功显示了Git的版本信息,这表明Git已经被安装。 1. 使用Sourcetree SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端…

react将选中文本自动滑动到容器可视区域内

// 自动滚动到可视区域内useEffect(() > {const target ref;const wrapper wrapperRef?.current;if (target && wrapperRef) {const rect target.getBoundingClientRect();const wrapperRect wrapper.getBoundingClientRect();const isVisible rect.bottom &l…

NLP入门系列—词嵌入 Word embedding

NLP入门系列—词嵌入 Word embedding 2013年&#xff0c;Word2Vec横空出世&#xff0c;自然语言处理领域各项任务效果均得到极大提升。自从Word2Vec这个神奇的算法出世以后&#xff0c;导致了一波嵌入&#xff08;Embedding&#xff09;热&#xff0c;基于句子、文档表达的wor…

幻兽帕鲁服务器全自动部署教程,小白也能轻松上手

幻兽帕鲁太火了&#xff0c;官方palworld服务器不稳定&#xff1f;不如自建服务器&#xff0c;基于腾讯云幻兽帕鲁服务器成本32元全自动部署幻兽帕鲁服务器&#xff0c;超简单有手就行&#xff0c;全程自动化一键部署10秒钟即可搞定&#xff0c;无需玩家手动部署幻兽帕鲁游戏程…

深入探索:缓冲区溢出漏洞及其防范策略

在网络安全的广阔领域中&#xff0c;缓冲区溢出漏洞一直是一个重要的议题。这种漏洞&#xff0c;如果被恶意利用&#xff0c;可能会导致严重的安全问题&#xff0c;包括数据泄露、系统崩溃&#xff0c;甚至可能被攻击者利用来执行恶意代码。在本文中&#xff0c;我们将深入探讨…

【stm32】hal库学习笔记-ADC模数转换(超详细)

【stm32】hal库学习笔记-ADC模数转换&#xff08;超详细&#xff09; 本篇章介绍了ADC实现电压检测的三种方式 ADC原理及选型 ADC将连续的模拟电压信号转换为二进制的数字信号 选型参数 速度&#xff08;采样频率&#xff09; 功耗 精度 转换原理 ADC hal库驱动函数 普通…

一文读懂转融通

最近多家公司都在讲解关于转融通要求。今天我们就来详细聊聊&#xff01; 转融通是一种证券借贷机制&#xff0c;它允许机构投资者在融资融券交易中借入或借出证券。 具体来说&#xff0c;机构投资者可以向券商借入证券&#xff0c;或者将持有的证券借给券商&#xff0c;以扩大…

VScode实现文件、函数自动添加注释说明信息

常规的手动注释费时费力&#xff0c;不方便&#xff0c;拖慢开发进度&#xff0c;甚至影响开发者心情&#xff0c;因此需要实现自动注释&#xff0c;不仅能减少工作量&#xff0c;也能让编写的代码更加的规范整洁&#xff0c;易于理解。 在VScode的插件搜索栏中&#xff0c;查…

STM32学习笔记——看门狗

目录 一、看门狗概述 1、看门狗工作原理 2、独立看门狗IWDG主要性能&#xff1a; 二、看门狗相关寄存器 1、IWDG_KR (Independent Watchdog_Key Register) 关键词寄存器 2、IWDG_PR (Independent Watchdog_Prescaler Register) 预分频寄存器 3、IWDG_RLR (Independent W…

懒人精灵 之 Lua 捕获 json解析异常 ,造成的脚本停止.

Time: 2024年2月8日20:21:17 by:MemoryErHero 1 异常代码 Expected value but found T_END at character 12 异常代码 Expected value but found T_OBJ_END at character 223 处理方案 - 正确 json 示范 while true do--Expected value but found T_END at character 1--Ex…

鄂尔多斯交警推进东康快线“恶劣天气高影响路段优化工程”,全面提升科技赋能实战水平!

2023年5月29日&#xff0c;三部门联合印发《2023年省级恶劣天气高影响路段优化提升气象保障工作方案》&#xff08;以下简称《工作方案》&#xff09;&#xff0c;持续推动恶劣天气交通预警处置试点成果和优化提升工作经验在第二批试点路段上推广应用。 【安装在东康快线上的应…