当前位置: 首页 > news >正文

深度学习_神经网络激活函数

🚀 激活函数全解析:从基础到高阶


🧩 一、激活函数的核心作用回顾

激活函数的作用是:

  • 引入非线性 → 使神经网络能拟合复杂映射
  • 控制梯度传播 → 避免梯度爆炸或消失
  • 影响训练速度、收敛性与性能

⚙️ 二、基础激活函数

1️⃣ Sigmoid 激活函数

定义公式

σ(x)=11+e−x\sigma(x) = \frac{1}{1 + e^{-x}}σ(x)=1+ex1
输出范围: (0,1)(0, 1)(0,1)

导数公式

σ′(x)=σ(x)⋅(1−σ(x))\sigma'(x) = \sigma(x) \cdot (1 - \sigma(x))σ(x)=σ(x)(1σ(x))
最大导数值出现在 x=0x=0x=0,此时:
σ′(0)=0.25\sigma'(0) = 0.25σ(0)=0.25

特点与理解
  • 将输入"压缩"到 (0,1)(0, 1)(0,1),像是概率映射器
  • 中间区域(约 −2∼2-2 \sim 222)变化最显著,两侧快速进入饱和区
优缺点
优点缺点
平滑可导,输出连续容易梯度消失(导数 ≤0.25\le 0.250.25
输出有界,便于概率建模输出非零均值 (>0)(>0)(>0),会造成梯度偏移
常用于输出层(二分类)不适合深层网络(梯度衰减严重)
应用场景
  • 二分类输出层(如 logistic 回归、二分类神经网络)
  • 中间层中几乎被 ReLU 完全替代

2️⃣ Softmax 激活函数

定义公式

对于一个向量 z=[z1,z2,…,zk]\mathbf{z} = [z_1, z_2, \ldots, z_k]z=[z1,z2,,zk],第 iii 个分量的 Softmax 输出为:
Softmax(zi)=ezi∑j=1kezj\text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{k} e^{z_j}}Softmax(zi)=j=1kezjezi

特征与性质
  • 将实数向量映射为一个概率分布(所有分量相加 =1= 1=1
  • 强调最大值,使得模型学会"选择"
  • 对数稳定版本(避免数值溢出):
    Softmax(zi)=ezi−max⁡(z)∑jezj−max⁡(z)\text{Softmax}(z_i) = \frac{e^{z_i - \max(\mathbf{z})}}{\sum_j e^{z_j - \max(\mathbf{z})}}Softmax(zi)=jezjmax(z)ezimax(z)
优缺点
优点缺点
输出概率分布,便于多分类对大值敏感,可能过度"确定"
可与交叉熵自然结合容易数值溢出(需 log⁡-sum-exp⁡\log\text{-sum}\text{-}\explog-sum-exp 稳定化)
应用场景
  • 多分类输出层
  • NLP 模型的 注意力机制中的 attention weights\text{attention weights}attention weights

3️⃣ ReLU(Rectified Linear Unit)

定义公式

ReLU(x)=max⁡(0,x)\text{ReLU}(x) = \max(0, x)ReLU(x)=max(0,x)
导数:
ReLU′(x)={1,x>00,x≤0\text{ReLU}'(x) = \begin{cases} 1, & x > 0 \\ 0, & x \leq 0 \end{cases}ReLU(x)={1,0,x>0x0

特点
  • 保留正值,抑制负值
  • 计算简单,只有比较和赋值操作
  • 稀疏激活(很多神经元输出 000
优缺点
优点缺点
计算高效,收敛快负区间梯度为 000,易导致"神经元死亡"
缓解梯度消失问题不可导点在 000(但影响可忽略)
保持非线性输出非零均值(有偏移)
应用场景
  • 几乎所有深度网络(CNN、MLP、Transformer)
  • 特别是卷积层后的默认选择

4️⃣ Leaky ReLU(带泄露的 ReLU)

为了解决 ReLU "死亡"问题,提出了 Leaky ReLU。

定义公式

LeakyReLU(x)={x,x>0αx,x≤0\text{LeakyReLU}(x) = \begin{cases} x, & x > 0 \\ \alpha x, & x \leq 0 \end{cases}LeakyReLU(x)={x,αx,x>0x0
其中 α\alphaα 通常取 0.010.010.01 或一个小的正值。

导数

LeakyReLU′(x)={1,x>0α,x≤0\text{LeakyReLU}'(x) = \begin{cases} 1, & x > 0 \\ \alpha, & x \leq 0 \end{cases}LeakyReLU(x)={1,α,x>0x0

特点与优缺点
优点缺点
避免神经元死亡(负梯度不会为 000α\alphaα 需调参
简单高效,梯度连续α\alphaα 太大,会破坏稀疏性
应用场景
  • 深层 CNN
  • 对训练稳定性要求高的场景
  • GANs(生成对抗网络)中广泛使用

⚙️ 三、高阶激活函数

1️⃣ GELU(Gaussian Error Linear Unit)

GELU 激活函数通过将输入 xxx 乘以标准正态分布的累积分布函数 Φ(x)\Phi(x)Φ(x) 来实现"概率门控"。

定义公式

GELU(x)=x⋅Φ(x)\text{GELU}(x) = x \cdot \Phi(x)GELU(x)=xΦ(x)

其中 Φ(x)\Phi(x)Φ(x) 是标准正态分布的累积分布函数(CDF):
Φ(x)=12[1+erf(x2)]\Phi(x) = \frac{1}{2}\left[1 + \text{erf}\left(\frac{x}{\sqrt{2}}\right)\right]Φ(x)=21[1+erf(2x)]

📘 近似形式(方便计算):
GELU(x)≈0.5x[1+tanh⁡(2π(x+0.044715x3))]\text{GELU}(x) \approx 0.5x \left[1 + \tanh\left(\sqrt{\frac{2}{\pi}} (x + 0.044715x^3)\right)\right]GELU(x)0.5x[1+tanh(π2(x+0.044715x3))]

直观理解

ReLU 是简单地将负数"砍掉";GELU 则是按概率"软裁剪":

  • xxx 越大,Φ(x)\Phi(x)Φ(x) 越接近 111(输出接近 xxx
  • xxx 越小,Φ(x)\Phi(x)Φ(x) 越接近 000(输出接近 000

因此,它提供了一个平滑的、概率驱动的非线性变换。

公式曲线对比
函数特征是否平滑是否非线性
ReLU\text{ReLU}ReLUmax⁡(0,x)\max(0, x)max(0,x)否(拐点不光滑)
GELU\text{GELU}GELUx⋅Φ(x)x \cdot \Phi(x)xΦ(x)✅ 是✅ 是

📈 GELU\text{GELU}GELUReLU\text{ReLU}ReLU 平滑得多,因此在反向传播时梯度不会突变。

优缺点
优点缺点
平滑可导,梯度传播更稳定计算量比 ReLU\text{ReLU}ReLU 大(涉及 tanh⁡\tanhtanh / erf\text{erf}erf
对小输入保留部分信息(不完全"砍掉")理论分析复杂
在 BERT、Transformer 中显著提升效果
典型应用场景
  • BERT / GPT / Transformer 系列 默认使用 GELU\text{GELU}GELU
  • Vision Transformer (ViT)
  • 任何希望提升模型平滑性与表达能力的深层网络

2️⃣ Swish 激活函数

Swish 是一种"自门控"激活函数,由 Google 提出,并在 EfficientNet\text{EfficientNet}EfficientNet 中得到广泛应用。

定义公式

Swish(x)=x⋅σ(βx)\text{Swish}(x) = x \cdot \sigma(\beta x)Swish(x)=xσ(βx)

其中 σ(x)\sigma(x)σ(x) 是 Sigmoid 函数:
σ(x)=11+e−x\sigma(x) = \frac{1}{1 + e^{-x}}σ(x)=1+ex1

β=1\beta = 1β=1,则简写为:
Swish(x)=x⋅σ(x)\text{Swish}(x) = x \cdot \sigma(x)Swish(x)=xσ(x)

直观理解

Swish\text{Swish}Swish 的行为也是由自身输入 xxx 决定的:

  • 小输入会被抑制(因为 σ(x)\sigma(x)σ(x) 小于 0.50.50.5
  • 大输入接近线性输出(因为 σ(x)→1\sigma(x) \to 1σ(x)1
  • 中间区域平滑过渡
特点与优势
特性描述
平滑且非单调ReLU\text{ReLU}ReLU 更柔和,对小负值也保留部分信息
自适应门控机制输出由自身决定,具有轻微"记忆"特征
可微分反向传播时梯度连续稳定
优缺点
优点缺点
连续可导,梯度稳定计算量大于 ReLU\text{ReLU}ReLU
对负值保留部分激活理论解释相对复杂
实验性能强于 ReLU\text{ReLU}ReLU(如 EfficientNet\text{EfficientNet}EfficientNet
应用场景
  • EfficientNet\text{EfficientNet}EfficientNetMobileNetV3\text{MobileNetV3}MobileNetV3
  • Transformer 变体
  • 深层或轻量网络中需要平滑激活的场景

🔬 四、GELU vs Swish 对比总结

特性GELU\text{GELU}GELUSwish\text{Swish}Swish
定义x⋅Φ(x)x \cdot \Phi(x)xΦ(x)x⋅σ(x)x \cdot \sigma(x)xσ(x)
平滑性✅ 高✅ 高
计算复杂度较高 (erf/tanh⁡\text{erf}/\tanherf/tanh)中等 (sigmoid\text{sigmoid}sigmoid)
理论基础源于概率论(正态分布)经验发现
单调性非单调非单调
应用Transformer、BERTEfficientNet、MobileNetV3
性能稍优于 Swish\text{Swish}Swish稍低但计算更快

📊 五、激活函数对比总结表

激活函数公式输出范围导数范围优点缺点常用场景
Sigmoid1/(1+e−x)1/(1+e^{-x})1/(1+ex)(0,1)(0,1)(0,1)(0,0.25](0, 0.25](0,0.25]平滑,概率输出梯度消失二分类输出层
Softmaxezi/∑ezje^{z_i} / \sum e^{z_j}ezi/ezj(0,1),∑=1(0,1), \sum=1(0,1),=1概率分布数值不稳定多分类输出层
ReLUmax⁡(0,x)\max(0,x)max(0,x)[0,∞)[0,\infty)[0,){0,1}\{0,1\}{0,1}高效不饱和死亡神经元主流 CNN\text{CNN}CNN 激活
Leaky ReLUx(x>0),αx(x≤0)x\ (x>0), \alpha x\ (x\leq 0)x (x>0),αx (x0)(−∞,∞)(-\infty,\infty)(,){α,1}\{\alpha,1\}{α,1}防死区需调 α\alphaαGAN、CNN
Swishx⋅σ(x)x \cdot \sigma(x)xσ(x)(−∞,∞)(-\infty,\infty)(,)平滑梯度稳定EfficientNet\text{EfficientNet}EfficientNet
GELUx⋅Φ(x)x \cdot \Phi(x)xΦ(x)(−∞,∞)(-\infty,\infty)(,)平滑表现最优复杂Transformer\text{Transformer}Transformer

💡 六、形象口诀总结

🔹 Sigmoid:压成概率线
🔹 Softmax:多选一概率
🔹 ReLU:负的砍掉
🔹 Leaky ReLU:留一点负梯度
🔹 Swish:小负留一线
🔹 GELU:概率来决定
🔹 Soft 平滑不突变,梯度流得远


🎯 七、选择指南

基础选择原则:

  • 输出层:分类用 Sigmoid/Softmax,回归用线性
  • 隐藏层:ReLU 系列是默认起点
  • 高级场景:Transformer 用 GELU,轻量网络考虑 Swish
  • 问题网络:梯度消失尝试 Leaky ReLU,不稳定尝试 Swish/GELU

现代推荐:

  • 默认选择:ReLU(简单高效)
  • 进阶选择:GELU(Transformer 系列)
  • 轻量网络:Swish(EfficientNet 系列)
  • 特殊场景:Leaky ReLU(GANs、深层 CNN)
  • 请添加图片描述
http://www.dtcms.com/a/606768.html

相关文章:

  • js 原型链分析
  • 深圳网站订制开发qq做我女朋友好吗网站
  • 好用的土木建筑网站uni做网站首页
  • C语言变量与内存深度解析
  • Cesium 大数据量优化加载方案
  • 网站卖东西怎么做粉丝帮女流做的网站
  • 网站站外引流怎么做有什么做视频的免费素材网站好
  • Visual Studio Code安装
  • 短剧小程序开发全攻略:技术选型与实现思路
  • 淘宝客网站用什么软件做php网站上传教程
  • LSTM论文解读
  • 基于Python+Django+双协同过滤豆瓣电影推荐系统 协同过滤推荐算法 爬虫 大数据毕业设计(源码+文档)✅
  • 建设一个商城式网站可以吗网站列表效果
  • Telegram营销工具技术指南:构建高效社群运营体系
  • Python3 列表详解
  • 太极指令集架构(TCIS)v1.1与主流指令集比较研究报告
  • 自己怎么创网站做网站需要人在看吗
  • Java语言编译器 | 深入理解Java编译器的工作原理及优化方法
  • 【算法】主流算法
  • 深圳商城软件开发如何做好网站内容优化
  • 建设网站前的市场分析怎么写西安营销网站建设
  • 南充网站建设服务汕头网站排名推广
  • SpringMVC执行流程源码分析之二
  • 网站查询备案网站群建设调研报告
  • TreeSet的排序方式
  • FILE的本质
  • 5.5、Python-字符串去重
  • (论文速读)基于拉曼光谱深度学习的改进拉曼半定量分析成像去噪方法
  • 自然的算法:从生物进化到智能优化 —— 遗传算法的诗意与硬核“
  • wp企业网站模板网站模块建设方案