常见激活函数之ReLU激活函数

ReLU是目前深度学习中最常用、最基础的激活函数,广泛用于卷积神经网络(CNN)和全连接层中。

1. 数学公式

ReLU 的数学表达式非常简单:
ReLU(x)=max⁡(0,x) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

也就是说:

  • 当输入 x>0x > 0x>0 时,输出等于输入 xxx
  • 当输入 x≤0x \le 0x0 时,输出等于 000

2. 几何特征与性质

  • 输出范围[0,+∞)[0, +\infty)[0,+)
  • 形状:在坐标系中,它是一条在原点处“折断”的折线。左半部分贴着 x 轴(y=0),右半部分是一条斜率为 1 的直线(y=x)。
    在这里插入图片描述
  • 非线性:虽然它看起来像线性函数,但因为在 x=0x=0x=0 处的拐折,它整体是非线性的。这一点至关重要,正是这个非线性使得神经网络能够学习复杂的非线性映射。如果它完全是线性的,那么多层神经网络叠加起来依然等效于单层,失去了深度的意义。

3. 导数(梯度)

在反向传播中,ReLU 的导数同样极其简单:
ReLU′(x)={1,x>00,x≤0 \text{ReLU}'(x) = \begin{cases} 1, & x > 0 \\ 0, & x \le 0 \end{cases} ReLU(x)={1,0,x>0x0

  • x>0x > 0x>0 时,梯度恒为 1
  • x≤0x \le 0x0 时,梯度为 0
    (注:在 x=0x=0x=0 处严格来说是不可导的,但在代码实现中通常将其归为 0 或 1,不影响实际训练。结尾专门有补充这部分的内容)

在这里插入图片描述

4. ReLU 的变体(为了解决“死亡 ReLU”)

为了克服死亡 ReLU 和非零中心化的问题,人们提出了许多 ReLU 的变体:

  1. Leaky ReLU(带泄漏的 ReLU)
    • 公式:f(x)={x,x>0αx,x≤0f(x) = \begin{cases} x, & x > 0 \\ \alpha x, & x \le 0 \end{cases}f(x)={x,αx,x>0x0α\alphaα 通常是一个很小的常数,如 0.01)。
    • 作用:在负区间引入一个微小的斜率,使得负区间也有梯度,彻底解决死亡 ReLU 问题。
  2. PReLU (Parametric ReLU):把 Leaky ReLU 里的 α\alphaα 当作一个可学习的参数,让网络自己训练出最佳的负区间斜率。
  3. RReLU (Randomized ReLU):在训练时随机采样负斜率(如α∼U(0.01,0.3)),增加模型鲁棒性。
  4. ELU (Exponential Linear Unit):负区间使用指数函数平滑过渡到 −1-11,输出均值更接近 0(缓解了非零中心化问题),但计算包含了指数,稍慢。
  5. GELU / Swish:更现代的平滑激活函数,目前在 Transformer(如 GPT、BERT)中极为常见,性能优于传统 ReLU。

5. 常见应用场景

  • CNN(卷积神经网络)的隐藏层:几乎所有现代 CNN(如 ResNet, VGG, YOLO)的卷积层后都默认使用 ReLU。
  • MLP(多层感知机)的隐藏层:深度全连接网络的标配。
  • :通常不会在输出层使用 ReLU,因为输出层通常有特定的任务需求(如分类用 Softmax,回归用线性或 tanh)。

扩展问题:既然ReLU 在 0 处不可导,为什么还能使用?
尽管ReLU在 ( x = 0 ) 处不可导,但在实际训练中不影响使用,因为实际训练中某个神经元的输入为 0 的概率极低,即使偶尔碰到,也可以通过工程上的约定来处理【即:在实现反向传播时,我们通常会约定 ReLU 在 x=0 处的导数为 0 或 1,这种约定对结果无影响】。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值