Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【激活函数合集】盘点当前最流行的激活函数及选择经验

【激活函数合集】盘点当前最流行的激活函数及选择经验

作者头像
BBuf
发布于 2020-02-26 05:22:40
发布于 2020-02-26 05:22:40
2.9K0
举报
文章被收录于专栏:GiantPandaCVGiantPandaCV

前言

在阅读DarkNet源码的时候发现作者定义了大量从古至今流行的损失函数,本着科普的态度我打算做一个全面的总结,所以就有了这篇文章。

激活函数有什么用?

提到激活函数,最想问的一个问题肯定是它是干什么用的?激活函数的主要作用是提供网络的非线性表达建模能力,想象一下如果没有激活函数,那么神经网络只能表达线性映射,此刻即便是有再多的隐藏层,其整个网络和单层的神经网络都是等价的。因此正式由于激活函数的存在,深度神经网络才具有了强大的非线性学习能力。接下来我们就来盘点一下当前有哪些流行的激活函数吧,这是一件非常有意义的事,希望你能接着读下去。

1. Sigmoid激活函数

  • 函数表达式:
  • 函数图像:

Sigmoid激活函数

  • 导数:
  • 优点:Sigmoid激活函数是应用范围最广的一类激活函数,具有指数形状,它在物理意义上最为接近生物神经元。另外,Sigmoid的输出是(0,1),具有很好的性质,可以被表示为概率或者用于输入的归一化等。可以看出,Sigmoid函数连续,光滑,严格单调,以(0,0.5)中心对称,是一个非常良好的阈值函数。当x趋近负无穷时,y趋近于0x趋近于正无穷时,y趋近于1x=0时,y=0.5。当然,在x超出[-6,6]的范围后,函数值基本上没有变化,值非常接近,在应用中一般不考虑。Sigmoid函数的导数是其本身的函数,即f′(x)=f(x)(1−f(x)),计算非常方便,也非常节省计算时间。
  • 缺点:Sigmoid最明显的缺点就是饱和性。从曲线图中看到,其两侧的导数逐渐趋近于0,即: 。我们将具有这种性质的激活函数叫作软饱和激活函数。具体的,饱和又可分为左饱和与右饱和。与软饱和对应的是硬饱和, 即f′(x)=0,当|x|>c,其中c为常数。sigmoid 的软饱和性,使得深度神经网络在二三十年里一直难以有效的训练,是阻碍神经网络发展的重要原因。另外,Sigmoid函数的输出均大于0,使得输出不是0均值,这称为偏移现象,这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。

2. TanH

  • 函数表达式:
  • 函数图像:

Tanh激活函数和它的导数

  • 导数:
  • 优点:与Sigmoid相比,它的输出均值是0,使得其收敛速度要比Sigmoid快,减少迭代次数。
  • 缺点:该导数在正负饱和区的梯度都会接近于0值(仍然具有软饱和性),会造成梯度消失。还有其更复杂的幂运算。

3. ReLU

  • 函数表达式:
  • 函数图像:

ReLU激活函数

  • 导数:当时,当时
  • 优点:ReLU的全称是Rectified Linear Units,是一种AlexNet时期才出现的激活函数。可以看到,当x<0时,ReLU硬饱和,而当x>0时,则不存在饱和问题。所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。这让我们能够直接以监督的方式训练深度神经网络,而无需依赖无监督的逐层预训练。
  • 缺点:随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。这种现象被称为“神经元死亡”。与Sigmoid类似,ReLU的输出均值也大于0,偏移现象和神经元死亡会共同影响网络的收敛性。

4. Leaky ReLU & PReLU

  • 函数表达式和导数:

Leaky ReLU

  • 函数图像:

Leaky ReLU激活函数

  • 特点:为了改善ReLU在时梯度为造成Dead ReLU,提出了Leaky ReLU使得这一问题得到了缓解。例如在我们耳熟能详的YOLOV3网络中就使用了Leaky ReLU这一激活函数,一般取。另外PReLU就是将Leaky ReLU公式里面的当成可学习参数参与到网络训练中。

5. ReLU6

  • 函数表达式:
  • 特点:ReLU6就是普通的ReLU但是限制最大输出值为6(对输出值做clip),这是为了在移动端设备float16的低精度的时候,也能有很好的数值分辨率,如果对ReLU的激活范围不加限制,输出范围为0到正无穷,如果激活值非常大,分布在一个很大的范围内,则低精度的float16无法很好地精确描述如此大范围的数值,带来精度损失。

6. ELU

  • 函数表达式:

ELU表达式

  • 函数图像:

ELU激活函数

  • 导数:当时,,当时,。
  • 特点:融合了sigmoid和ReLU,左侧具有软饱和性,右侧无饱和性。右侧线性部分使得ELU能够缓解梯度消失,而左侧软饱能够让ELU对输入变化或噪声更鲁棒。ELU的输出均值接近于零,所以收敛速度更快。在 ImageNet上,不加Batch Normalization 30层以上的ReLU网络会无法收敛,PReLU网络在MSRA的Fan-in (caffe )初始化下会发散,而 ELU 网络在Fan-in/Fan-out下都能收敛。关于Fan-in/Fan-out初始化请看附录的参考2链接。

7. SoftSign

  • 函数表达式:
  • 函数图像:

Softsign激活函数和它的导数

  • 导数:图中已经求出。
  • 特点:Softsign是tanh激活函数的另一个替代选择,从图中可以看到它和tanh的曲线极其相似,不过相比于tanh,Softsign的曲线更平坦,导数下降的更慢一点,这个特性使得它可以缓解梯度消失问题,可以更高效的学习。

8. SoftPlus

  • 函数表达式:
  • 函数图像:

SoftPlus激活函数及导数

  • 函数导数:SoftPlus激活函数的导数恰好就是sigmoid激活函数,即。
  • 优点:SoftPlus可以作为ReLu的一个不错的替代选择,可以看到与ReLU不同的是,SoftPlus的导数是连续的、非零的、无处不在的,这一特性可以防止出现ReLU中的“神经元死亡”现象。
  • 缺点:SoftPlus是不对称的,不以0为中心,存在偏移现象;而且,由于其导数常常小于1,也可能会出现梯度消失的问题。

9. SELU

  • 函数表达式:,也即是:
  • 特点:这个激活函数来自论文:https://arxiv.org/abs/1706.02515 。而这篇论文就是提出了这一激活函数,然后论文写了93页公式来证明只需要把激活函数换成SELU就能使得输入在经过一定层数之后变成固定的分布。。而这个函数实际上就是在ELU激活函数的基础上乘以了一个,但需要注意的是这个是大于1的。
  • 更详细的讨论可以见这里:https://www.zhihu.com/question/60910412

10. Swish

  • 函数表达式:,其中是个常数或可训练的参数.Swish 具备无上界有下界、平滑、非单调的特性。
  • 函数图像:

Swish激活函数

Swish激活函数导数

  • 特点:Swish 在深层模型上的效果优于 ReLU。例如,仅仅使用 Swish 单元替换 ReLU 就能把 Mobile NASNetA 在 ImageNet 上的 top-1 分类准确率提高 0.9%,Inception-ResNet-v的分类准确率提高 0.6%。当时,Swish激活函数变成线性函数.而当时,为0或1,这个时候Swish激活函数变成ReLU激活函数。因此Swish激活函数可以看做是介于线性函数与ReLU函数之间的平滑函数。

11. Maxout

  • 函数表达式:
  • 特点:Maxout模型实际上也是一种新型的激活函数,在前馈式神经网络中,Maxout的输出即取该层的最大值,在卷积神经网络中,一个Maxout特征图可以是由多个特征图取最值得到。Maxout的拟合能力是非常强的,它可以拟合任意的的凸函数。但是它和Dropout一样需要人为设定一个值。为了便于理解,假设有一个在第层有个节点层有个节点构成的神经网络。即:

神经网络

激活值,其中是激活函数,在这里代表內积。然后,。那么当我们对层使用Maxout(设定)然后再输出的时候,情况就发生了改变。网络就变成了:

使用了Maxout后的网络

此时网络形式上就变成上面的样子,用公式表现出来就是: 也就是说第层的激活值计算了次,可我们明明只需要个激活值,那么我们该怎么办?其实上面的叙述中已经给出了答案,取这个的最大值来作为最终的结果。

可以看到采用Maxout的话参数个数也增加了倍,计算开销会增大。

12. Mish

  • 函数表达式:
  • 函数图像:

MisH激活函数

  • 特点:这个激活函数是最新的SOTA激活函数,我还没具体使用和了解过这个激活函数,就暂时不总结这一个了。不过论文中提到,以上无边界(即正值可以达到任何高度)避免了由于封顶而导致的饱和,理论上对负值的轻微允许更好的梯度流,而不是像ReLU中那样的硬零边界,并且整个损失函数仍然保持了平滑性。
  • 论文名为:Mish: A Self Regularized Non-Monotonic Neural Activation Function

激活函数尝试经验

  • 首先使用ReLU,速度最快,然后观察模型的表现。
  • 如果ReLU效果不是很好,可以尝试Leaky ReLU或Maxout等变种。
  • 尝试tanh正切函数(以零点为中心,零点处梯度为1)。
  • 在深度不是特别深的CNN中,激活函数的影响一般不会太大。
  • Kaggle比赛,试试Mish?

附录

  • 参考1:https://www.cnblogs.com/missidiot/p/9378079.html
  • 参考2:https://keras-cn.readthedocs.io/en/latest/other/initializations/
  • 参考3:https://zhuanlan.zhihu.com/p/70810466
  • 参考4:https://www.cnblogs.com/makefile/p/activation-function.html
  • 参考5:https://www.cnblogs.com/missidiot/p/9378079.html
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GiantPandaCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
借助CodeBuddy对MCP从理解到实践
本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
languageX
2025/05/17
370
借助CodeBuddy对MCP从理解到实践
StarRocks MCP Server 开源发布:为 AI 应用提供强大分析中枢
过去,开发者要让大模型(LLM)使用数据库查询数据,往往需要开发专属插件、设计复杂的接口或手动构建 Prompt,这不仅费时费力,而且很难在不同模型之间复用。StarRocks MCP Server 提供了一个“通用适配器”接口,让各种 LLM(如 Claude、OpenAI、Gemini)都能标准化地访问 StarRocks,使得模型能够直接执行 SQL 查询并探索数据库内容,无需复杂的配置或集成。
StarRocks
2025/05/17
430
StarRocks MCP Server 开源发布:为 AI 应用提供强大分析中枢
MiniMax MCP Server – MiniMax 推出基于 MCP 的多模态生成服务器
MiniMax是一家专注于人工智能和机器学习技术的公司,特别是在生成式模型和自然语言处理领域。MCP(Multi-ModalContentPlatform)是该公司开发的一个技术平台,旨在提供强大的工具和框架,以支持多模态内容的生成。它通过统一的接口,整合了视频生成、图像生成、语音生成及声音克隆等多项AI能力。用户只需通过简单的文本输入,即可调用这些强大的功能,实现高质量的内容创作。
用户11594586
2025/05/18
270
MiniMax MCP Server – MiniMax 推出基于 MCP 的多模态生成服务器
爆火MCP的来时路:LLM开启超进化,从函数调用到通用上下文协议
2022年11月30日,ChatGPT的发布正式敲响了大语言模型(LLM,Large Language Models)时代的大门。而后的2023年,自然语言处理(NLP,Netural Language Process)技术飞速发展,LLM领域取得了诸多重大突破,这一年也被称为LLM元年。同年6月13日,OpenAI在gpt-4-turbo模型中首次引入函数调用(Function Calling)能力,为LLM突破纯文本交互边界迈出关键一步。而后的2024年11 月 25 日,Claude AI的开发商Anthropic开源的模型上下文协议(MCP,Model Context Protocol)通过建立规范化的模型间通信标准,进一步扩展了LLM应用的上限。2025年3月27日,OpenAI 宣布正式支持MCP,再次将MCP送上热搜... 在人工智能技术日新月异的今天,如何让模型更加智能、灵活地与现实系统或其他模型进行交互,已成为推动AI应用落地的关键课题。在接下来的内容中,本文将着重介绍函数调用与MCP出现的历史缘由以及必要性,并在文末结合腾讯广告API简单演示了MCP与业务结合的实践示例。
腾讯云开发者
2025/05/14
1970
爆火MCP的来时路:LLM开启超进化,从函数调用到通用上下文协议
一口气讲清楚:FC、MCP、A2A
前面几篇文章中,我介绍了AI大模型领域常见的几种专业术语,分别是:AGI、RAG、AIGC、LLM、MCP、EMB、向量库、训练集、多模态。了解基础概念和专业术语之后,有助于我们在工作和生活中深入学习和应用AI。
老_张
2025/05/12
1730
一口气讲清楚:FC、MCP、A2A
一文读懂:模型上下文协议(MCP)
Hello folks,我是 Luga,今天我们来聊一下人工智能应用场景 - 构建高效、灵活的计算架构的模型上下文协议(MCP)。
Luga Lee
2025/03/17
17K0
一文读懂:模型上下文协议(MCP)
一文详解模型上下文协议MCP
Anthropic 公司在 2024 年 11 月发布了模型上下文协议 (Model Context Protocol, MCP)。开发者社区最初对此反应积极,但很少有人意识到它的全部潜力。 快进到 2025 年 3 月,MCP 突然成为了人工智能领域最热门的话题。
致Great
2025/04/19
5030
一文详解模型上下文协议MCP
什么是MCP协议?MCP的技术架构与核心原理是什么?MCP封装了哪些协议?
在现代 AI 的发展中,模型与外部数据源和工具的交互变得越来越复杂。为了解决这个问题,Model Context Protocol (MCP) 被提出,它是一种开放标准,旨在为 AI 模型与外部资源之间提供统一的连接方式。由 Anthropic 于 2024 年推出,MCP 希望能够像 USB-C 接口一样成为 AI 系统与各种数据源和工具之间的“通用接口”。这意味着,不同的 AI 应用可以轻松与多种数据源、工具进行“即插即用”的连接,无需再为每种不同的数据源开发独立的集成方法。
猫头虎
2025/03/23
2K0
什么是MCP协议?MCP的技术架构与核心原理是什么?MCP封装了哪些协议?
RAG 与 MCP 如何以不同方式解决大模型的局限性
Claude 和 GPT-4o 等大型语言模型 (LLM) 功能强大,但也面临两个主要限制:它们包含的知识是时效性的(更具体地说,是在训练时点固定的),并且决定它们一次可以处理多少信息的上下文窗口是有限的。
致Great
2025/04/21
3120
RAG 与 MCP 如何以不同方式解决大模型的局限性
什么是MCP协议?AI Agent时代如何选择MCP协议?
在人工智能(AI)迅猛发展的今天,如何让大型语言模型(LLM)充分利用外部数据和工具已成为关键问题。MCP 协议(Model Context Protocol,模型上下文协议)作为一种开放标准,正以其统一、灵活且安全的设计,为解决数据孤岛和碎片化集成问题提供了一条全新的路径。本文将详细解析 MCP 协议的原理、架构、优势及在 AI Agent 时代下的应用前景,同时探讨如何从开放性、生态支持、安全性、易用性和性能等多个维度选择适合自身场景的 MCP 实现。
猫头虎
2025/03/08
2.4K0
什么是MCP协议?AI Agent时代如何选择MCP协议?
全面解析 Model Context Protocol(MCP)及其在 LangChain 中的实践:打造真正可用的本地AI助手
随着大语言模型(LLM)的广泛应用,AI 系统在处理复杂任务时,常常需要与外部数据源和工具进行交互。然而,传统的集成方式存在接口碎片化、上下文封闭、安全隐患和复用性差等问题。​
Lethehong
2025/05/07
5720
全面解析 Model Context Protocol(MCP)及其在 LangChain 中的实践:打造真正可用的本地AI助手
MCP:AI Agent和API之间缺失的环节
重磅!Anthropic推出开源标准MCP,标准化AI Agent的API访问!Speakeasy力推MCP Server Generation,连接LLM与API生态。对比OpenAPI,MCP是动态的Server-Client交互。Vercel、Dub已用上!未来或有更多AI巨头入局,LangChain、AutoGen等Agent框架迎来新机遇!
云云众生s
2025/03/15
2870
MCP:AI Agent和API之间缺失的环节
Model Context Protocol 是什么?它和 Function Calling、AI Agents 有哪些不同?
最近,正在关注 AI 应用开发的演进,尤其是在如何让模型更好地“使用工具”这个问题上。Function Calling、AI Agents、Retrieval-Augmented Generation(RAG)这些方案已经被广泛讨论和应用。而就在不久前,Anthropic 发布了一个全网爆火的新协议 —— Model Context Protocol(简称 MCP),我觉得它非常值得聊一聊。
不惑
2025/05/08
1490
Model Context Protocol 是什么?它和 Function Calling、AI Agents 有哪些不同?
从0到1玩转MCP:AI的「万能插头」,代码手把手教你!
在人工智能飞速发展的今天,LLM 的能力令人叹为观止,但其局限性也日益凸显 —— 它们往往被困于训练数据的「孤岛」,无法直接触及实时信息或外部工具。
机器之心
2025/04/07
3510
从0到1玩转MCP:AI的「万能插头」,代码手把手教你!
什么是MCP?本地如何开发MCP Server
MCP(Model Context Protocol)全称模型上下文协议,是由 Anthropic 推出的一种开放标准,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信协议。
叫我阿柒啊
2025/04/06
3.9K2
什么是MCP?本地如何开发MCP Server
一文详解模型上下文协议(MCP):打通大模型与业务场景的关键
暂且抛开MCP,这23年的时候开始搭建AI Agent智能体,对第三方插件API进行交互的时候,我就开始设想能不能自己做一个通用代码协议框架,以后AI团队统一用这个协议,方便大家code review,更好协作。AI要触及到业务就必然逃不过与业务端接口或是数据进行联通,但是之前都没有标准的交互协议,需要理解各个三方接口和协议是比较费时的事情,但如果有类似像Java工程开发标准,那么我们就很方便开发第三方接口了,不会存在那么多不同开发形态的代码,方便维护。MCP协议出现之后发现大家都在慢慢融入到开源协议框架中,故而再对一些不了解MCP的朋友详细解述这一框架协议,以后必然是以开源协议为主导的代码生态。
fanstuck
2025/03/27
2.2K2
一文详解模型上下文协议(MCP):打通大模型与业务场景的关键
MCP(Model Context Protocol)好比大模型外挂!
最近Anthropic主导发布了MCP(Model Context Protocol,模型上下文协议)后,着实真真火了一把。熟悉AI大模型的人对Anthropic应该不会陌生,Claude 3.5 Sonnet模型就是他们发布的,包括现在的最强编程AI模型 3.7 Sonnet。今天我们来刨析下什么是MCP,AI大模型下,需要MCP吗?
有一只柴犬
2025/03/23
7072
MCP(Model Context Protocol)好比大模型外挂!
MCP vs Function Calling,该如何选?
Hello folks,我是 Luga,今天我们来聊一下人工智能应用场景落地 - 如何为 LLM 集成选择合适的策略?
Luga Lee
2025/04/21
2671
MCP vs Function Calling,该如何选?
大模型系列——解读RAG
RAG 是2023年最流行的基于 LLM 的应用系统架构。有许多产品几乎完全建立在 RAG 之上,覆盖了结合网络搜索引擎和 LLM 的问答服务,到成千上万个数据聊天的应用程序。很多人将RAG和Agent 作为大模型应用的两种主流架构,但什么是RAG呢?RAG又涉及了哪些具体的技术呢?
半吊子全栈工匠
2024/02/06
20.4K1
大模型系列——解读RAG
一口气讲清楚:LLM、MCP、EMB
在很多介绍AI的文章中,会频繁出现一些名词,比如LLM、MCP、EMB。这些专业术语是什么意思,有什么作用,背后的技术原理又是什么,对普通人来说有点难以理解。
老_张
2025/04/16
3850
一口气讲清楚:LLM、MCP、EMB
推荐阅读
相关推荐
借助CodeBuddy对MCP从理解到实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档