LLM-01-第一章-预训练/神经网络的激活函数(一)概述

神经网络的激活函数(一)综述

激活函数(Activation Function)是人工神经网络中的一个关键组件,它的作用是为神经网络引入非线性因素。如果没有激活函数,神经网络无论有多少层,都只能表示输入和输出之间的线性关系,这大大限制了网络处理复杂问题的能力。激活函数通常在神经网络的每个神经元或节点上应用,它们帮助网络学习和表示复杂的函数。

发展历史

1. Sigmoid

Sigmoid函数是最早被广泛使用的激活函数之一,它的公式为:

Sigmoid函数的输出范围在0到1之间,Sigmoid函数的主要问题是在输入很大或很小的情况下,梯度会变得很小,这会导致梯度消失的问题,从而影响网络的训练效果。

历史背景:早在19世纪,数学家们就研究了类似的函数形式;在1986年,David Rumelhart、Geoffrey Hinton和Ronald Williams在提出多层感知器(MLP)和反向传播算法时,Sigmoid函数被广泛使用,因为它的导数形式简单,便于计算梯度。

2. Softmax

Softmax函数是一种常用的多分类激活函数,它的公式为:

Softmax函数的输出是一个概率分布,它将输入映射到一个概率分布上,使得每个类别的概率之和为1。Softmax函数通常用于多分类问题中的输出层。

历史背景:Softmax函数的概念来源于统计力学中的Boltzmann分布,它在20世纪中期开始被应用于神经网络中。

3. Tanh

Tanh函数是双曲正切函数,它的公式为:

Tanh函数的输出范围在-1到1之间, Tanh函数相对于Sigmoid函数来说,输出的范围更广,可以将输入映射到-1到1之间,从而减少梯度消失的问题。

历史背景:Tanh函数与双曲函数的研究可以追溯到18世纪。它在数学和工程学中有广泛的应用,特别是在信号处理和控制系统中。随着神经网络的发展,Tanh函数被引入作为一种激活函数。

4. ReLU

ReLU函数是修正线性单元函数,它的公式为:

ReLU函数在输入大于0时输出等于输入,否则输出为0。ReLU函数的优点是计算简单,收敛速度快,但它也存在一个问题,就是在输入小于0时,梯度为0,这会导致神经元无法更新权重,从而出现"神经元死亡"的问题。

提出时间: 2010年,由Vinod Nair和 Geoffrey Hinton在他们的论文《Rectified Linear Units Improve Restricted Boltzmann Machines》1中展示了ReLU在深度神经网络中的有效性。自此,ReLU成为了深度学习中最流行的激活函数之一。

5. Leaky ReLU

Leaky ReLU函数是ReLU函数的改进版本,它的公式为:

其中\\alpha是一个小于1的常数,通常取0.01。Leaky ReLU函数在输入小于0时,不再输出0,而是输出一个很小的值\\alpha x,这样可以避免ReLU函数的"神经元死亡"问题。

提出时间: 2013年,Leaky ReLU首次出现在论文《Rectifier Nonlinearities Improve Neural Network Acoustic Models》2中,该论文由Andrew L. Maas、Awni Y. Hannun和Andrew Y. Ng撰写.

6. PReLU

PReLU函数是带参数的ReLU函数,它的公式为:

其中\\alpha是一个可学习的参数,通常在训练过程中通过反向传播来更新。PReLU函数在输入小于0时,不再输出0,而是输出一个由参数\\alpha控制的值,这样可以更灵活地调整激活函数的形状。

提出时间: PReLU是由何凯明(Kaiming He)、张翔(Xiangyu Zhang)、任少卿(Shaoqing Ren)和孙剑(Jian Sun)在2015年的论文《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》3中提出的。

7. ELU

ELU函数是指数线性单元函数,它的公式为:

其中\\alpha是一个大于0的常数,通常取1。ELU函数在输入大于0时输出等于输入,否则输出一个由参数\\alpha控制的值,这样可以避免ReLU函数的"神经元死亡"问题,并且在输入小于0时,输出的值是连续的,有助于提高网络的稳定性。

提出时间: ELU激活函数是在2015年由Djork-Arné Clevert、Thomas Unterthiner和Sepp Hochreiter在论文《Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs)》4中提出的。

8. GLU

GLU函数是门控线性单元函数,它的公式为:

其中\\sigma(x)是Sigmoid函数,\\odot表示元素级乘法。GLU函数在输入上应用了门控机制,通过Sigmoid函数来控制输入的信息流动,从而提高网络的表达能力。

提出时间: GLU激活函数是在2017年由Yann Dauphin等人在论文《Language Modeling with Gated Convolutional Networks》5中提出的。

9. SELU

SELU函数是自归一化指数线性单元函数,它的公式为:

其中\\lambda和\\alpha是两个常数,通常取1.0507和1.6733。SELU函数在输入大于0时输出等于输入,否则输出一个由参数\\alpha控制的值,这样可以避免ReLU函数的"神经元死亡"问题,并且在输入小于0时,输出的值是连续的,有助于提高网络的稳定性。SELU函数还具有自归一化的性质,可以使得网络的输出保持稳定。

提出时间: SELU激活函数是在2017年由Günter Klambauer、Thomas Unterthiner、Andreas Mayr和Sepp Hochreiter在论文《Self-Normalizing Neural Networks》7中提出的。

10. GELU

GELU函数是高斯误差线性单元函数,它的公式为:

GELU函数在输入大于0时输出等于输入,否则输出一个由参数\\alpha控制的值,这样可以避免ReLU函数的"神经元死亡"问题,并且在输入小于0时,输出的值是连续的,有助于提高网络的稳定性。GELU函数在很多实际应用中表现出了比ReLU函数更好的性能。

提出时间: GELU激活函数是在2016年由Dan Hendrycks和Kevin Gimpel在论文《Gaussian Error Linear Units (GELUs)》中提出的。

11. Swish

Swish函数是自门控激活函数,它的公式为:

Swish函数在输入大于0时输出等于输入,否则输出一个由Sigmoid函数控制的值,这样可以避免ReLU函数的"神经元死亡"问题,并且在输入小于0时,输出的值是连续的,有助于提高网络的稳定性。Swish函数在很多实际应用中表现出了比ReLU函数更好的性能。

提出时间: Swish激活函数是在2017年由Google Brain团队在论文《Searching for Activation Functions》6中提出的。

12. Mish

Mish函数是自门控激活函数,它的公式为:

Mish函数在输入大于0时输出等于输入,否则输出一个由Sigmoid函数控制的值,这样可以避免ReLU函数的"神经元死亡"问题,并且在输入小于0时,输出的值是连续的,有助于提高网络的稳定性。Mish函数在很多实际应用中表现出了比ReLU函数更好的性能。

提出时间: Mish激活函数是在2019年由Diganta Misra在论文《Mish: A Self Regularized Non-Monotonic Neural Activation Function》中提出的。

13. SwiGLU

SwiGLU函数是自门控激活函数,它的公式为:

SwiGLU函数在输入大于0时输出等于输入,否则输出一个由Sigmoid函数控制的值,这样可以避免ReLU函数的"神经元死亡"问题,并且在输入小于0时,输出的值是连续的,有助于提高网络的稳定性。SwiGLU函数在很多实际应用中表现出了比ReLU函数更好的性能。

提出时间: SwiGLU激活函数是在2021年由DeepMind团队在论文《Scaling Vision Transformers》7中提出的。

相关推荐
m4Rk_5 小时前
【论文阅读】Agent 记忆机制(83):Inside Out——用可演化 PersonaTree 构建 Agent 的核心长期记忆
论文阅读·人工智能·学习·开源·github
运行时异常5 小时前
【WMS 仓储系统集成 AI Agent 实战】第 8 讲(终篇):生产部署与并发安全——Semaphore 放进 Flux.defer 的坑,压测抓了一晚上
人工智能·安全
杨杨杨大侠5 小时前
Jev、Kev、Laya:决策模型怎么选,什么时候需要微调?
人工智能·python·agent
代码方舟5 小时前
零信任架构实战:基于天远人企关联构建自动化供应链金融网关
运维·人工智能·架构·自动化
虹科网络安全6 小时前
“顶会”看安全(十八):超越越狱:揭示由能力边界模糊引发的 LLM 应用安全风险
人工智能·安全
Maiko Star6 小时前
* LangChain 提示词模板详解:ChatPromptTemplate 的使用与高级特性
java·人工智能·langchain
段一凡-华北理工大学6 小时前
大模型应用开发 100 天:Python + LLM 从入门到精通 day26~Prompt 调试与优化——A/B 测试与效果评估
windows·python·大模型·prompt·智能体·提示词工程·高炉智能化
鬓戈6 小时前
Rust 语言与 AI 应用生态调研及学习路径
人工智能·学习·rust
天远API6 小时前
零信任架构实战:基于天远人企关联构建自动化图谱网关
网络·人工智能·架构·自动化
爱吃提升6 小时前
文生视频模型发展趋势(2026)
人工智能·音视频