神经网络的激活函数(三)ReLU和它的变种Leaky ReLU、PReLU

ops/2025/2/28 8:43:14/

本文我们介绍深度学习的功臣ReLU及其变种,它们在神经网络中的广泛应用,对于提高网络的性能和加速训练具有重要意义。

ReLU_2">1. ReLU函数

请添加图片描述

1.1 定义

ReLU(Rectified Linear Unit,修正线性单元)激活函数是现代深度学习中最常用的激活函数之一。它的数学表达式为:

ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

1.2 关键性质

  1. 非线性:尽管ReLU函数在正区间是线性的,但它引入了非线性特性,使得神经网络能够学习复杂的模式。
  2. 稀疏激活ReLU函数会将输入的负值部分变为零,这意味着在实际应用中,神经元的激活是稀疏的(即只有部分神经元在激活),这有助于提高模型的效率和性能。
  3. 计算简单ReLU函数计算简单,只需比较输入值和零的大小,计算量很小,有助于加快训练速度。

1.3 提出时间

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

1.4 优缺点

优点

  1. 计算效率高ReLU计算简单,能够显著加快神经网络的训练速度。
  2. 梯度消失问题较少:相比于Sigmoid和Tanh函数,ReLU在正区间的梯度为常数1,有助于缓解梯度消失问题,使得深层网络更容易训练。

缺点

  1. Dying ReLU问题:在训练过程中,某些神经元可能永远不会被激活(即输入始终为负值),导致这些神经元在整个训练过程中都没有贡献。为了解决这个问题,研究人员提出了Leaky ReLU和Parametric ReLU等变体。
  2. 不对称性ReLU在负区间的输出始终为零,可能导致模型在某些情况下性能下降。

ReLU_37">2. Leaky ReLU函数

Leaky ReLU(Leaky Rectified Linear Unit,带泄漏的修正线性单元)是ReLU激活函数的一种变体,它旨在解决ReLU的“Dying ReLU”问题。Dying ReLU问题是指在训练过程中,某些神经元可能永远不会被激活(即输入始终为负值),导致这些神经元在整个训练过程中都没有贡献。

请添加图片描述

2.1 数学定义

Leaky ReLU的数学表达式为:

Leaky ReLU ( x ) = { x if  x ≥ 0 α x if  x < 0 \text{Leaky ReLU}(x) = \begin{cases} x & \text{if } x \geq 0 \\ \alpha x & \text{if } x < 0 \end{cases} Leaky ReLU(x)={xαxif x0if x<0

其中, α \alpha α 是一个小的正数,通常取值在0.01左右。

2.2 关键性质

  1. 非线性:与ReLU一样,Leaky ReLU引入了非线性特性,使得神经网络能够学习复杂的模式。
  2. 稀疏激活:尽管Leaky ReLU在负区间不会完全变为零,但它仍然保留了一定的稀疏性,有助于提高模型的效率和性能。
  3. 计算简单:Leaky ReLU的计算也很简单,只需在负区间乘以一个小的常数 α \alpha α
  4. 避免Dying ReLU问题:通过在负区间引入一个小的斜率 α \alpha α,Leaky ReLU确保了所有神经元都有梯度,从而避免了Dying ReLU问题。

2.3提出时间

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

ReLU_67">PRReLU函数

请添加图片描述

PReLU(Parametric Rectified Linear Unit,参数化修正线性单元)是ReLU激活函数的另一种变体,它通过引入一个可学习的参数来控制负区间的斜率。PReLU旨在进一步改进ReLU及其变体(如Leaky ReLU)的性能。

3.1 数学定义

PReLU的数学表达式为:

PReLU ( x ) = { x if  x ≥ 0 α x if  x < 0 \text{PReLU}(x) = \begin{cases} x & \text{if } x \geq 0 \\ \alpha x & \text{if } x < 0 \end{cases} PReLU(x)={xαxif x0if x<0

其中, α \alpha α 是一个可学习的参数,而不是一个固定的常数。

3.2 关键性质

  1. 非线性:与ReLU和Leaky ReLU一样,PReLU引入了非线性特性,使得神经网络能够学习复杂的模式。
  2. 稀疏激活:尽管PReLU在负区间不会完全变为零,但它仍然保留了一定的稀疏性,有助于提高模型的效率和性能。
  3. 可学习参数:PReLU的最大特点是负区间的斜率 α \alpha α是可学习的,这意味着模型可以根据数据自动调整这一参数,从而在训练过程中找到最优的负区间斜率。
  4. 避免Dying ReLU问题:通过引入可学习的斜率参数 α \alpha α,PReLU确保了所有神经元都有梯度,从而有效地避免了Dying ReLU问题。

3.3 提出时间

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

参考

[1] Rectified Linear Units Improve Restricted Boltzmann Machines

[2] Rectifier Nonlinearities Improve Neural Network Acoustic Models

[3] Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification

欢迎关注我的GitHub和微信公众号[真-忒修斯之船],来不及解释了,快上船!

GitHub: LLMForEverybody

仓库上有原始的Markdown文件,完全开源,欢迎大家Star和Fork!


http://www.ppmy.cn/ops/161907.html

相关文章

蓝桥杯2024年第十五届省赛真题-传送阵

#include<stdio.h> #include<stdbool.h> #define MAX 100000 int circle[MAX];//记录每个环大小 int parent[MAX];//记录每个传送阵所属的环 int m[MAX]; bool visited[MAX]; int circleIndex0;//当前环的编号 //迭代实现换的查找void findcircle(int start){int c…

DeepSeek-R1技术全解析:如何以十分之一成本实现OpenAI级性能?

一、现象级爆火背后的技术逻辑 2025年1月20日&#xff0c;中国AI公司深度求索&#xff08;DeepSeek&#xff09;发布新一代大模型R1&#xff0c;其性能直接对标OpenAI的o1版本&#xff0c;但训练成本仅为后者的1/20&#xff08;600万美元 vs. 1.2亿美元&#xff09;&#xff0…

PHP 反序列化漏洞

PHP 反序列化漏洞&#xff0c;主要由于不当处理用户可控的序列化数据导致代码执行或敏感操作。 1. 序列化与反序列化 序列化&#xff1a;将对象转换为字符串&#xff08;serialize()&#xff09; class User {public $username admin;public $isAdmin true; } $obj new Use…

嵌入式开发:傅里叶变换(4):在 STM32上面实现FFT(基于STM32L071KZT6 HAL库+DSP库)

目录 步骤 1&#xff1a;准备工作 步骤 2&#xff1a;创建 Keil 项目&#xff0c;并配置工程 步骤 3&#xff1a;在MDK工程上添加 CMSIS-DSP 库 步骤 5&#xff1a;编写代码 步骤 6&#xff1a;配置时钟和优化 步骤 7&#xff1a;调试与验证 步骤 8&#xff1a;优化和调…

接口自动化测试框架搭建整体步骤

需求分析与规划 在需求分析阶段&#xff0c;测试需与开发对齐接口定义、业务逻辑、数据依赖及异常处理规则&#xff0c;通过会议、文档共享和代码审查确保测试范围与开发实现一致。 1. 接口范围确定 数据来源&#xff1a; 开发提供的 Swagger/OpenAPI 文档&#xff08;主来源&a…

无框架简易Java服务器后端

不使用像 Spring Boot 这样的框架&#xff0c;使用 Java 内置的HttpServer&#xff08;从 Java 1.7 开始引入&#xff09;来创建一个简单的 Web 后端&#xff0c;处理xxxx/test/query接口&#xff0c;接收 JSON 请求体并返回字符串响应。 示例代码&#xff1a; import com.go…

线性调频率连续波雷达测距、测速、成像(一)

系列文章目录 《SAR学习笔记》 《77GHz线性调频连续波雷达》 《信号类型&#xff08;雷达&#xff09;——连续波雷达&#xff08;二&#xff09;》 《后向投影算法&#xff08;BPA&#xff09;-SAR成像算法系列&#xff08;二&#xff09;》 文章目录 前言 一、LFMCW雷达…

DeepSeek+Kimi生成高质量PPT

DeepSeek与Kimi生成PPT全流程解析 一、工具分工原理 DeepSeek核心作用&#xff1a;生成结构化PPT大纲&#xff08;擅长逻辑构建与内容优化&#xff09;Kimi核心作用&#xff1a;将文本转换为视觉化PPT&#xff08;提供模板库与排版引擎&#xff09; 二、操作步骤详解 1. 通…