深度学习查漏补缺:3.从 Sigmoid 到 GELU

news/2025/3/31 21:48:40/
1. Sigmoid
  • 定义f(x) = \frac{1}{1 + e^{-x}}
  • 范围: (0, 1)
  • 特性:
    • 非线性函数,将输入映射到 (0, 1) 区间,常用于二分类问题的输出层。
    • 导数平滑,但在 x 很大或很小时,梯度趋近于 0,导致“梯度消失”问题。
  • 优点: 输出具有概率解释。
  • 缺点: 不以零为中心,梯度消失问题限制了其在深层网络中的应用。

2. ReLU (Rectified Linear Unit)
  • 定义: f(x)=max⁡(0,x)
  • 范围: [0, ∞)
  • 特性:
    • 线性(分段),计算简单,收敛速度快。
    • 当 x<0 时,输出为 0,导数为 0,可能导致“神经元死亡”问题。
  • 优点: 缓解梯度消失,提升训练效率。
  • 缺点: 输出非零中心,可能导致偏置偏移;负值区域无梯度。

3. Leaky ReLU
  • 定义: f(x) = \max(\alpha x, x),其中 α 是一个小的正数(如 0.01)
  • 范围: (-∞, ∞)
  • 特性:
    • ReLU 的改进版,负值区域有微小斜率,避免“神经元死亡”。
  • 优点: 保留 ReLU 的优点,同时对负输入有响应。
  • 缺点: α 需要手动调参,效果依赖具体任务。

4. Tanh (双曲正切)
  • 定义f(x) = \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}
  • 范围: (-1, 1)
  • 特性:
    • 非线性,以零为中心,输出对称。
    • 类似 Sigmoid,但在两端饱和时梯度消失。
  • 优点: 零中心化输出有助于梯度更新。
  • 缺点: 依然存在梯度消失问题。

5. Swish
  • 定义f(x) = x \cdot \text{sigmoid}(\beta x)
  • 范围: 大约 (-∞, ∞),具体取决于 β
  • 特性:
    • 非线性,结合了 ReLU 和 Sigmoid 的特性。
    • 平滑且非单调,负值区域有微小输出。
  • 优点: 在某些任务中优于 ReLU,提升模型性能。
  • 缺点: 计算复杂度稍高,β 需要调优。

6. GELU (Gaussian Error Linear Unit)
  • 定义: f(x) = x \cdot \Phi(x),其中 Φ(x) 是标准正态分布的累积分布函数 (CDF)。近似形式为 f(x) \approx 0.5 \cdot x \cdot (1 + \tanh(\sqrt{\frac{2}{\pi}} \cdot (x + 0.044715 \cdot x^3)))
  • 范围: 大约 (-∞, ∞),但负值区域输出较小。
  • 特性:
    • 非线性,结合了 ReLU 的线性特性和概率加权思想。
    • 负值区域输出非零但被平滑压缩,类似于高斯分布的加权效果。
    • 平滑且连续,导数存在且变化平缓。
  • 优点:
    • 在 Transformer 等模型中表现优异(如 BERT),比 ReLU 和 Swish 在某些任务中更具优势。
    • 避免了 ReLU 的“神经元死亡”,负值区域仍有微弱响应。
  • 缺点: 计算复杂度较高,因涉及 tanh⁡或 erf 函数。


http://www.ppmy.cn/news/1583926.html

相关文章

Java 基本数据类型 vs 包装类(引用数据类型)

一、核心概念对比&#xff08;以 int vs Integer 为例&#xff09; 特性基本数据类型&#xff08;int&#xff09;包装类&#xff08;Integer&#xff09;数据类型原始值&#xff08;Primitive Value&#xff09;对象&#xff08;Object&#xff09;默认值0null内存位置栈&…

Android第六次面试总结(Java设计模式篇一)

单例模式属于创建型设计模式&#xff0c;它保证一个类仅有一个实例&#xff0c;并且提供一个全局访问点来获取该实例。下面为你详细阐述单例模式的好处和坏处。 好处 资源优化&#xff1a;单例模式能保证一个类只有一个实例&#xff0c;这对于那些创建和销毁开销大的对象&…

修改git在提交代码时的名称

在git中&#xff0c;如果想修改提交代码作者的名字&#xff0c;可以进行以下操作&#xff1a; 1.在桌面或者文件夹内右击鼠标&#xff0c;点开Git Bash here。 2.进入后&#xff0c;通过git config user.name 回车查看当前名称。 3.通过git config --global user.name "…

【Kafka】Kafka可靠的数据传递

可靠性的保证 分区数据有序性 Kafka可以保证分区中的消息时有序的&#xff0c;如果同一个生产者向同一个分区写入消息&#xff0c;消息B在消息A 之后写入&#xff0c;那么Kafka可以保证消息B的偏移量比消息A的大&#xff0c;并且消费者会先读取消息A再读取消息B一条消息只有在…

单片机串口打印调试信息①

在单片机开发中&#xff0c;通过串口&#xff08;UART&#xff09;输出调试信息是最常用的调试方法之一。以下是详细的操作指南&#xff0c;包括硬件连接、代码实现和调试信息规划策略&#xff1a; 一、硬件连接与配置 硬件准备&#xff1a; USB转TTL模块&#xff1a;连接单片机…

清晰易懂的 Node.js 彻底卸载与清理教程

一、通用步骤&#xff1a;确认 Node.js 安装方式 Node.js 通常通过以下方式安装&#xff1a; 官方安装包&#xff08;.msi/.pkg/.tar.gz&#xff09;包管理器&#xff08;Homebrew/APT/YUM&#xff09;版本管理工具&#xff08;nvm、n&#xff09; 二、Windows 系统卸载 Node…

第二届边缘计算与并行、分布式计算国际学术会议(ECPDC 2025)

重要信息 时间&#xff1a;2025年4月11-13日 地点&#xff1a;武汉 官网&#xff1a;www.ic-ecpdc.org&#xff08;点击了解参会投稿等&#xff09; 简介 第二届边缘计算与并行、分布式计算国际学术会议&#xff08;ECPDC 2025&#xff09;将于2025年4月11日至13日在中国武…

Pytorch学习笔记(十二)Learning PyTorch - NLP from Scratch

这篇博客瞄准的是 pytorch 官方教程中 Learning PyTorch 章节的 NLP from Scratch 部分。 官网链接&#xff1a;https://pytorch.org/tutorials/intermediate/nlp_from_scratch_index.html 完整网盘链接: https://pan.baidu.com/s/1L9PVZ-KRDGVER-AJnXOvlQ?pwdaa2m 提取码: …