在深山小镇里,消息靠一座座驿站传递。每封快件上只写着一个数字——当下的“情绪浓度”。驿站站长不能一字不改地转交,他要按自己的放行规则判断:这封信该以多大力度继续往前送。如果所有站长都只会做简单乘除,那无论建多少驿站,最终表达也只是一条直线上的放大;只有某些站长学会“拐弯”——该压的压、该放的放、该熄火的熄火——整条消息链才会长出真正复杂的形态。这些站长的放行规则,就是神经网络里的激活函数。 激活函数决定一个神经元要不要被点亮、点亮到什么程度。Sigmoid 像温吞的盖章员,把一切压进 0 到 1;Tanh 像冷静的评分员,把情绪摆到 -1 到 1;ReLU 则像性子最直的快递员,只送正数、拒收负数。正是这一道道“拐弯”,让线性叠加的网络从直线变成能拟合万物形态的曲线。本文从非线性之源讲起,一路走过这些门卫、它们的梯度脾气,以及现实中如何选型。

岗位关联

掌握激活函数,等于拿到神经网络训练的“油门与刹车”:能看透梯度消失与神经元死亡,也能为不同任务选出最顺手的放行规则。

目录
  1. 可视化演示
  2. 非线性之源
  3. Sigmoid 闸门
  4. Tanh 调节器
  5. ReLU 主将
  6. ReLU 变体
  7. 梯度特性
  8. 选型指南
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

通过函数曲线对比、梯度流动分析和ReLU变体展示三个模式,深入理解激活函数的非线性特性和梯度传播原理。

本节配有交互动效(进入视口后自动加载,约 3KB)。

四种激活函数曲线对比 Sigmoid: 输出(0,1),两端梯度趋零易导致梯度消失 Tanh: 输出(-1,1),零中心化但仍存在饱和区 σ(x) = 1/(1+e^{-x}), tanh(x) = (e^x-e^{-x})/(e^x+e^{-x}) Sigmoid和Tanh在深层网络中梯度衰减严重,ReLU族成为现代深度学习首选

非线性之源

每座驿站里,站长收到的不是原始信件,而是前面所有驿站转交量的加权总和,这个数也叫“带权求和”,记作 $z$。站长要做的事只有一件:用他自己的放行规则 $f$ 算出转出量 $a=f(z)$。如果规则被死死限定成 $y=kx+b$ 这种直线式倍率,那么无论接力多少站,最终结果都只是把最初的数字放大或平移了一下。数学上这叫“线性函数的复合仍是线性函数”。

为什么线性复合是件坏事?因为一条直线永远画不出山的起伏、人脸的轮廓、语音的节奏。神经网络若只有线性变换,几十层叠起来依然只有一根直尺的威力,拟合复杂函数也就无从谈起。激活函数存在的首要意义,就是每隔一段距离“掰弯”一下传送轨迹:可能是超过阈值才放行,可能是强信号封顶,也可能是负信号反转。这些弯曲累积起来,网络才拥有逼近任意连续函数的能力,也就是常说的“万有逼近”。

驿站的故事到这里已经很清楚了:真正让消息链变得丰富的,不是多修几个只会按比例传话的站点,而是让每个站点都拥有自己的“脾气曲线”。每多一层非线性,网络就多一次把空间折叠的机会;层数越深,折叠出的形状越精细,这正是深度学习的意义所在。

a1=w1x+b1,a2=w2a1+b2\displaystyle a_1 = w_1 x + b_1,\quad a_2 = w_2 a_1 + b_2
a2=w2(w1x+b1)+b2=(w1w2)x+(w2b1+b2)\displaystyle a_2 = w_2(w_1 x + b_1)+b_2 = (w_1 w_2)x + (w_2b_1+b_2)
  1. 第一站转出量先对输入做一次加权和加偏移,得到 $a_1$。
    a1=w1x+b1\displaystyle a_1 = w_1 x + b_1
  2. 第二站接力再把 $a_1$ 当输入,做第二次直线变换。
    a2=w2a1+b2\displaystyle a_2 = w_2 a_1 + b_2
  3. 合并成一条直线把第一站代入第二站后,发现 $x$ 的系数和常数量都被重新组合。
    a2=(w1w2)x+(w2b1+b2)\displaystyle a_2 = (w_1w_2)x + (w_2b_1+b_2)
  4. 只有非线性才拐弯如果中间插入一个无法合并成直线系数的 $f$,例如“负数直接变零”,两层网络就保住了自己的弯折形状。
    a2=w2 f(w1x+b1)+b2\displaystyle a_2 = w_2\,f(w_1x+b_1)+b_2

Sigmoid 闸门

邮局里最资深的盖章员是 Sigmoid。不管来件上的数字是 -100 还是 100,他都会不慌不忙地盖出一个“好感度”在 0 到 1 之间。输入非常负时,章几乎全空,输出接近 0;输入非常正时,章盖得满满的,输出接近 1;只有在 0 附近,他才会对变化比较敏感。

Sigmoid 在历史上是神经网络最早常用的激活函数之一。它把实数压到 $0$ 到 $1$ 之间,天然适合表达“开关程度”或“概率倾向”。但它有一个致命脾气:两端实在太“满”了。当 $z$ 大于 4 或小于 -4,曲线近乎水平,盖章员对信件的细微差异已经麻木;反向传播时,错误信使的力度要乘上这里的导数,而导数几乎为 0,于是误差还没走回前几层,就已经淡到看不见。

Sigmoid 这位盖章员适合在门控场景里慢慢把关,比如 LSTM 中决定“记住多少、忘掉多少”。但若让他站满整个深网隐藏层,错误信使往往走出两步就消散了。再加上输出永远为正数,会拖累下一层的更新方向,所以现代深层网络很少再让他独挑大梁。

σ(z)=11+e−z,σ′(z)=σ(z)(1−σ(z))\displaystyle \sigma(z) = \frac{1}{1+e^{-z}},\quad \sigma'(z)=\sigma(z)(1-\sigma(z))
  1. 取负指数$e^{-z}$ 把正的大数变成接近 0 的小数,把负的大数变成很大的正数。
    e−z\displaystyle e^{-z}
  2. 加一取倒数分母 $1+e^{-z}$ 永远大于 1,因此整个分数被限制在 0 到 1 之间。
    11+e−z\displaystyle \frac{1}{1+e^{-z}}
  3. 两端饱和$z$ 很大时输出贴着 1,$z$ 很负时输出贴着 0,变化极其缓慢。
    lim⁡z→+∞σ(z)=1,lim⁡z→−∞σ(z)=0\displaystyle \lim_{z\to+\infty}\sigma(z)=1,\quad \lim_{z\to-\infty}\sigma(z)=0
  4. 导数由自身构成$\sigma'(z)=\sigma(z)(1-\sigma(z))$ 的最大值出现在 $z=0$,只有 0.25。
    σ′(z)=σ(z)(1−σ(z))\displaystyle \sigma'(z)=\sigma(z)(1-\sigma(z))

Tanh 调节器

镇上还有一位冷静的表情评分员,叫 Tanh。和 Sigmoid 只会给“好感度”不同,Tanh 能把情绪摆在 -1 到 1 的正负标度上:强烈反对是 -1,无感是 0,强烈支持是 1。因为输出以 0 为中心,下一层收到的信号不再全部偏向正方向,训练往往更平稳。

Tanh 的数学表达式与 Sigmoid 有血缘关系:把 Sigmoid 先拉伸再平移,就能得到 Tanh。它解决了 Sigmoid 的“非零中心”问题,但没解决“两端饱和”问题。当输入很大或很负时,Tanh 曲线同样趋于水平,导数同样趋近 0。因此,把 Tanh 一味堆深,梯度消失依旧会发生。不过在 RNN 中,它凭“有界且零中心”的优点,成了控制隐状态幅度的常客。

Tanh 像是把 Sigmoid 的章从“只盖好感”改成了“正负都评”。他让快递路线更平衡,可一到情绪极端处,照样给不出敏锐的反馈。于是,谁都希望找到一个“正数区间永远清醒”的放行员。

tanh⁡(z)=ez−e−zez+e−z,tanh⁡′(z)=1−tanh⁡2(z)\displaystyle \tanh(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}},\quad \tanh'(z)=1-\tanh^2(z)
  1. 分子相减$e^z-e^{-z}$ 在 $z>0$ 时为正,在 $z<0$ 时为负,带来正负输出。
    ez−e−z\displaystyle e^z - e^{-z}
  2. 分母归一$e^z+e^{-z}$ 把结果压缩到 $-1$ 与 $1$ 之间。
    ez+e−z\displaystyle e^z + e^{-z}
  3. 零中心输出$\tanh(0)=0$,因此它的输出平均起来更接近 0 中心。
    tanh⁡(0)=0\displaystyle \tanh(0)=0
  4. 导数随幅度衰减$\tanh'(z)=1-\tanh^2(z)$,输入越极端,导数越小。
    tanh⁡′(0)=1,lim⁡z→±∞tanh⁡′(z)=0\displaystyle \tanh'(0)=1,\quad \lim_{z\to\pm\infty}\tanh'(z)=0

ReLU 主将

后来镇上来了位性子最直的快递员,名叫 ReLU。他的规矩简单到不像规矩:只要来件是正数,原样转出,绝不缩放;只要来件是负数,直接拒收,传出 0。就是这道看似粗暴的“单侧抑制”,让网络获得了非线性,同时保持了极高的计算效率。

ReLU 是目前隐藏层最常用的默认激活函数。正区间导数恒为 1,意味着错误信使经过它时,不会被一个小于 1 的小数再次削弱;负数区间输出为 0,让大量神经元同时沉默,形成“稀疏激活”。稀疏听起来很酷,却也埋下隐患:如果某个神经元在训练中反复收到负输入,它的导数一直是 0,权重再也得不到更新。这个神经元就此罢工,再也没机会醒来,这就是“死亡 ReLU”。

ReLU 的爽快让深层 CNN 和 Transformer 都愿意请他看门。但“拒收一切负数”的极端性格,也让他偶尔集体罢工。怎么治?给他门口修条小斜坡,就成了下一节的变体们。

ReLU(z)=max⁡(0,z),ReLU′(z)={1,z>00,z<0\displaystyle \mathrm{ReLU}(z)=\max(0,z),\quad \mathrm{ReLU}'(z)=\begin{cases}1,&z>0\\0,&z<0\end{cases}
  1. 取最大值$\max(0,z)$ 让正数保持原样,让负数统一变为 0。
    max⁡(0,z)\displaystyle \max(0,z)
  2. 单侧抑制负区间被一刀切,网络因此出现弯折,不再是纯线性。
    z≤0⇒ReLU(z)=0\displaystyle z \le 0 \Rightarrow \mathrm{ReLU}(z)=0
  3. 正区间导数为 1$z>0$ 时梯度不打折,误差信号能顺利通过。
    ReLU′(z)=1, z>0\displaystyle \mathrm{ReLU}'(z)=1,\ z>0
  4. 零点不可导$z=0$ 处严格来说没有导数,实践上取 0 或 1 都行,对训练影响很小。
    ReLU′(0) 常取 0 或 1\displaystyle \mathrm{ReLU}'(0)\ \text{常取}\ 0\ \text{或}\ 1

ReLU 变体

为了让 ReLU 这位直性子快递员别再因为负数而失业,工程师们给他装了几种“备用斜坡”。最朴素的是 Leaky ReLU:正数照样直通,负数不再完全拒收,而是放行一小部分,比如乘以 0.01。这样神经元即使长期收到负输入,也能收到一点点梯度信号,不至于彻底死透。

PReLU 更进一步,把那个小斜坡的斜率从固定值改成“可学习参数”,让每个分拣站自己决定负数该放多少。ELU 则把负区间改成指数式平滑过渡,输出平均值更接近 0,训练也常常更稳。还有 Softplus,它是 ReLU 的光滑版本,处处可导,但计算成本更高。变体的目标只有一个:保住 ReLU 的“正数区间导数恒 1”的优点,同时给负区间留一条命。

这些变体像给快递站门口加了不同坡度的滑梯:有的坡度固定,有的坡度会自己调整,有的干脆把直角磨成弧形。没有哪个变体绝对万能,但都让“死亡 ReLU”变得没那么容易发生。

LReLU(z)={z,z>0αz,z≤0,ELU(z)={z,z>0α(ez−1),z≤0,Softplus(z)=ln⁡(1+ez)\displaystyle \mathrm{LReLU}(z)=\begin{cases}z,&z>0\\\alpha z,&z\le0\end{cases},\quad\mathrm{ELU}(z)=\begin{cases}z,&z>0\\\alpha(e^z-1),&z\le0\end{cases},\quad\mathrm{Softplus}(z)=\ln(1+e^z)
  1. 泄漏系数Leaky ReLU 在负数区间乘 $\alpha$,通常取 0.01,既保留非线性又传递梯度。
    αz, z≤0\displaystyle \alpha z,\ z\le0
  2. PReLU 学习斜率PReLU 把 $\alpha$ 当作可训练参数,由反向传播自动更新。
    α=α−η∂L∂α\displaystyle \alpha = \alpha - \eta \frac{\partial L}{\partial \alpha}
  3. ELU 的指数过渡负数区间用 $\alpha(e^z-1)$,在 0 附近的变化比 Leaky ReLU 更平滑。
    α(ez−1)\displaystyle \alpha(e^z-1)
  4. Softplus 光滑近似$\ln(1+e^z)$ 像一条被磨圆的 ReLU,没有尖角,处处可导。
    ln⁡(1+ez)\displaystyle \ln(1+e^z)

梯度特性

激活函数的脾气在反向传播里被放得很大。所谓梯度,就是错误信使每走到一个分拣站时感受到的“方向敏感度”。信使从输出层出发,一站一站往回走,每到一站都要乘上该站的“导数”。网络越深,连乘的因子越多,最后到达浅层时,力度可能已经微乎其微。这就是梯度消失;如果因子都大于 1,力度也可能爆炸成天文数字。

Sigmoid 的导数最大只有 0.25,连乘几次就趋向 0,所以用它堆深网络特别容易梯度消失。Tanh 的导数最大是 1,但两端同样趋近 0。ReLU 在正区间导数恒为 1,相当于拆掉了激活函数这一层“衰减器”,让错误信使至少不再因为激活饱和而迷路。当然,它没有彻底消灭问题,因为每层还有权重 $w$ 在连乘。

理解梯度特性,等于理解了为什么深网络要用 ReLU 这类“非饱和”激活。它不能解决所有权重问题,但至少让激活函数不再是削弱信号的第一嫌疑犯。

∂L∂w1=∂L∂a3 f′(z3) w3 f′(z2) w2 f′(z1) x\displaystyle \frac{\partial L}{\partial w_1}=\frac{\partial L}{\partial a_3}\, f'(z_3)\, w_3\, f'(z_2)\, w_2\, f'(z_1)\, x
  1. 输出层反馈$\frac{\partial L}{\partial a_3}$ 是任务损失对最后一层输出的敏感度,是信使出发时携带的初始力度。
    ∂L∂a3\displaystyle \frac{\partial L}{\partial a_3}
  2. 逐层乘导数每穿过一层网络,就要乘上该层激活函数的导数 $f'(z)$。
    f′(z3)×f′(z2)×f′(z1)\displaystyle f'(z_3)\times f'(z_2)\times f'(z_1)
  3. 再乘权重每一层还有权重 $w$ 参与乘积,它们是放大或缩小信号的总阀门。
    w3×w2\displaystyle w_3 \times w_2
  4. 连乘决定生死多个小因子相乘趋向 0,多个大因子相乘趋向无穷;这是梯度消失与爆炸的根源。
    f′(z3)w3 f′(z2)w2 f′(z1)x\displaystyle f'(z_3)w_3\, f'(z_2)w_2\, f'(z_1)x

选型指南

面对形形色色的分拣员,站长该怎么选?没有万能答案,但有经验法则。隐藏层首先考虑 ReLU:计算快、梯度不饱和,是多数图像、语音、推荐模型的默认选择。如果训练中发现大量神经元死亡,就换成 Leaky ReLU、PReLU 或 ELU,给负区间留条活路。

输出层则要看任务:二分类用 Sigmoid,输出一个 0 到 1 的概率;多分类用 Softmax,让所有类别得分变成和为 1 的概率分布;回归任务要预测连续数值,输出层用线性激活即可,不要随便加 Sigmoid 或 Tanh 压缩范围。对于 RNN 这类序列模型,Tanh 常常用来保持隐状态有界且零中心,Sigmoid 则充当 LSTM 中的“记忆闸门”。

选激活函数很像给不同类型的快件配分拣规则:普通信件用 ReLU 的爽快通道,情绪判断题交给 Sigmoid,多选一用 Softmax 抽签,连续数值直接放行。最终判断标准永远不是“哪个听起来最新”,而是它在验证集上让损失降得更快、更稳。

Softmax(z)i=ezi∑k=1Cezk\displaystyle \mathrm{Softmax}(\mathbf z)_i=\frac{e^{z_i}}{\sum_{k=1}^{C} e^{z_k}}
  1. 指数化得分把每个类别得分 $z_i$ 变成 $e^{z_i}$,让较大的得分占更大比重。
    ezi\displaystyle e^{z_i}
  2. 所有类别求和分母把所有类别的指数项加在一起,起到归一化作用。
    ∑k=1Cezk\displaystyle \sum_{k=1}^{C} e^{z_k}
  3. 得到概率分布第 $i$ 类的 Softmax 值在 0 到 1 之间,所有类别的和为 1。
    ∑i=1CSoftmax(z)i=1\displaystyle \sum_{i=1}^{C}\mathrm{Softmax}(\mathbf z)_i=1

AI 应用场景

图像分类的 CNN 骨干

阶段:模型架构设计与训练调优

解决的问题:早期用 Sigmoid 做隐藏层时,深层 CNN 梯度逐层衰减,网络很难训练。ReLU 以“正数直通”的导数特性,让错误信使能快速回到浅层,大幅加速收敛。若出现大量死亡神经元,再切换 Leaky ReLU 或 PReLU 即可。

具体案例:在 ImageNet 图像分类任务中,ResNet 等卷积网络默认使用 ReLU 作为隐藏层激活。工程师观察每个卷积核输出的激活比例,如果某层长期输出 0,就排查学习率与初始化,必要时为负区间引入泄漏斜率。

情感分析中的 RNN 与 LSTM

阶段:序列建模与门控机制设计

解决的问题:影评、客服对话等文本是变长序列,RNN 在传播中容易梯度消失。Tanh 的零中心有界输出帮助隐状态保持在合理范围,Sigmoid 则作为 LSTM 中“输入门、遗忘门、输出门”的开合开关,决定历史信息保留多少。

具体案例:在电商评论情感二分类中,LSTM 用 Sigmoid 门控决定“记住”或“遗忘”情感词,用 Tanh 生成候选记忆。最终把最后时刻的隐状态接一个 Sigmoid 输出层,得到正面概率。

多分类输出层设计

阶段:输出层与损失函数设计

解决的问题:手写数字识别、商品分类等任务要求网络输出“十个类别中哪一个”。线性得分没有归一化,不能直接当概率;Softmax 将全部得分指数化后归一化,得到和为 1 的类别概率分布。

具体案例:MNIST 手写数字识别中,模型最后一层输出 10 个实数,经 Softmax 变成 10 个概率,配合交叉熵损失训练。若任务是多标签,则每个标签用独立 Sigmoid,而不是 Softmax。

Python 演示

python40 行
import math def sigmoid(z):    return 1.0 / (1.0 + math.exp(-z)) def sigmoid_derivative(z):    s = sigmoid(z)    return s * (1.0 - s) def tanh(z):    return math.tanh(z) def tanh_derivative(z):    t = tanh(z)    return 1.0 - t * t def relu(z):    return z if z > 0 else 0.0 def relu_derivative(z):    return 1.0 if z > 0 else 0.0 def leaky_relu(z, alpha=0.01):    return z if z > 0 else alpha * z def elu(z, alpha=1.0):    return z if z > 0 else alpha * (math.exp(z) - 1.0) def demo():    zs = [-5.0, -1.0, 0.0, 1.0, 5.0]    print("z     sigmoid  sig'   tanh   relu   lrelu  elu")    for z in zs:        print("{:5.1f} {:7.3f} {:6.3f} {:6.3f} {:5.1f} {:6.3f} {:6.3f}".format(            z, sigmoid(z), sigmoid_derivative(z), tanh(z),            relu(z), leaky_relu(z), elu(z)))    print("ReLU derivative at -1:", relu_derivative(-1.0))    print("ReLU derivative at 1:", relu_derivative(1.0)) if __name__ == "__main__":    demo()
目的:用一张小表格对比 Sigmoid、Tanh、ReLU、LeakyReLU、ELU 在几个典型输入下的输出值和导数,直观感受“饱和”与“单侧抑制”。
  1. def sigmoid(z): return 1.0 / (1.0 + math.exp(-z))把任意实数压到 0 到 1 之间,观察两端变化越来越小,就是饱和。
  2. def sigmoid_derivative(z): s = sigmoid(z); return s * (1.0 - s)反向传播要乘的敏感度,最大只有 0.25。
  3. def relu(z): return z if z > 0 else 0.0正数直通、负数归零,这正是非线性拐弯的来源。
  4. def relu_derivative(z): return 1.0 if z > 0 else 0.0正区间导数恒 1,负区间导数恒 0,死亡 ReLU 的风险藏在这里。
  5. def leaky_relu(z, alpha=0.01): return z if z > 0 else alpha * z给负数留一条小斜坡,缓解神经元罢工。
  6. if __name__ == "__main__": demo()让脚本既能被导入,也能直接运行演示。

常见误区

误区我听说 ReLU 比 Sigmoid 好,所以 Sigmoid 在神经网络里应该彻底删除,所有地方都用 ReLU 才对。

正解Sigmoid 在隐藏层里确实容易梯度消失,但在二分类输出、LSTM 的门控结构中仍然很常见。门控需要“开多少”这种 0 到 1 的软开关,Sigmoid 天然合适。ReLU 再强,也做不出“半开半关”的光滑门。

为何常见:深度学习教程常拿 Sigmoid 当反面典型,容易让人忽略它依然活跃在门控和输出层中。

误区ReLU 的正区间导数是 1,所以只要用了 ReLU,深层网络就再也不会梯度消失了。

正解ReLU 只拿掉了“激活函数导数”这个衰减因子,反向传播时每层还要乘权重 $w$。如果权重初始化偏小,多次连乘后梯度依旧会消失;如果权重偏大,还可能梯度爆炸。激活函数选择只是影响梯度的重要因素之一。

为何常见:人们容易盯着 $f'(z)=1$ 这一点,忽略了链式法则里还有一整串权重乘积。

误区Sigmoid 的输出范围正好是 0 到 1,那它算出来的值就是真实概率,直接拿来用就行。

正解Sigmoid 输出可以被解释为概率,但前提是配合合适的损失函数(如交叉熵)训练,并且模型经过校准。原始 logits 的缩放不同,Sigmoid 数值并不天然等于置信度。多分类还要用 Softmax 保证各类和为 1。

为何常见:数值落在 0 到 1 区间,和概率的数学范围一致,于是“像概率”被误解成“就是概率”。

误区ReLU 把负输入变成 0 是件好事,所以网络里死掉的神经元越多,稀疏性越强,模型越优秀。

正解适度稀疏能减少计算量,但大量神经元长期输出 0,意味着梯度永远为 0,网络可用容量大幅下降。实践中要监控死亡比例,如果太高,应改用 Leaky ReLU、PReLU 或调整学习率与初始化。

为何常见:听到“稀疏激活”被夸奖,就容易把“全零”和“高效”画上等号。

面试题

Q1. 线性层叠加后仍是线性,说明神经网络必须引入什么?

单选题 · easy

  • A.更多隐藏层
  • B.非线性激活函数← 正确答案
  • C.更大学习率
  • D.更多训练数据

答案:B。再多隐藏层也还是线性函数的复合,仍然是一条直线。只有非线性激活函数能在每层制造弯曲,让网络拟合复杂函数。学习率和数据量只是训练条件,不是改变函数形态的关键。

Q2. 关于 Sigmoid 的输出范围,下列说法正确的是?

单选题 · easy

  • A.取值位于 -1 到 1
  • B.取值位于 0 到 1← 正确答案
  • C.取值位于 0 到正无穷
  • D.取值覆盖全部实数

答案:B。Sigmoid 通过 $\frac{1}{1+e^{-z}}$ 把任意实数压到 0 到 1 之间。-1 到 1 是 Tanh 的范围,0 到正无穷是 ReLU 正半轴的特征。

Q3. ReLU 在输入为正时的导数是?

单选题 · easy

  • A.始终等于 0
  • B.始终等于 1← 正确答案
  • C.等于当前输入
  • D.等于 S 型值

答案:B。ReLU 的正区间表达式是 $z$,导数为 1;负区间常数 0,导数为 0。这个特性让正向梯度不打折,但负区间的神经元可能无法更新。

Q4. 死亡 ReLU 问题的根本原因是?

单选题 · mid

  • A.输入常落在负区间← 正确答案
  • B.学习率太小导致不动
  • C.权重初始化全为 0
  • D.数据没有做归一化

答案:A。当神经元输入长期为负,ReLU 输出恒为 0,导数恒为 0,梯度无法回传,权重不再更新。学习率太小时梯度也小,但不会完全斩断;初始化全 0 是另一种训练问题,不是死亡 ReLU 的直接原因。

Q5. 相比 Sigmoid,Tanh 的主要优势是?

单选题 · mid

  • A.输出非负且范围更大
  • B.输出以 0 为中心← 正确答案
  • C.完全不会梯度消失
  • D.计算复杂度更低

答案:B。Tanh 输出范围是 -1 到 1,以 0 为中心,能让下一层输入更均衡,优化更平稳。但它两端同样饱和,梯度消失依然存在,计算复杂度也不比 Sigmoid 低。

Q6. 在多层全连接网络的隐藏层中,最常用的默认激活函数是?

单选题 · mid

  • A.Sigmoid
  • B.Tanh
  • C.ReLU← 正确答案
  • D.Softmax

答案:C。ReLU 计算快、正区间导数恒 1,是隐藏层默认选择。Sigmoid 和 Tanh 容易饱和,Softmax 通常只用于输出层做多分类概率分布。

Q7. PReLU 与 LeakyReLU 的核心区别是?

单选题 · hard

  • A.负斜率由训练学习← 正确答案
  • B.负斜率固定为 0
  • C.负斜率必须很小
  • D.负斜率不可设置

答案:A。LeakyReLU 的负斜率是手动设好的超参数,如 0.01;PReLU 把负斜率变成可学习参数,由反向传播自动更新。两者都保留负数区间的梯度通道。

Q8. 下列哪些是 Sigmoid 的已知缺点?

多选题 · mid

  • A.输出不以零为中心← 正确答案
  • B.两端导数趋近 0← 正确答案
  • C.计算代价特别低
  • D.容易出现梯度爆炸

答案:AB。Sigmoid 输出恒为正,不以 0 为中心,会让参数更新方向偏斜;两端导数趋近 0,容易梯度消失而不是爆炸。计算代价虽含指数,但并非“特别低”。

Q9. 哪些方法可以缓解 ReLU 的死亡神经元问题?

多选题 · hard

  • A.使用 LeakyReLU← 正确答案
  • B.使用 PReLU← 正确答案
  • C.将学习率清零
  • D.继续加深网络

答案:AB。LeakyReLU 和 PReLU 都允许负数区间保留小梯度,是直接解决死亡 ReLU 的手段。把学习率清零会让所有参数停止更新,加深网络也不能让已经死亡的神经元复活。

Q10. 关于深层网络梯度消失,下列说法正确的是?

多选题 · extreme

  • A.链式法则造成连续乘积← 正确答案
  • B.Sigmoid 导数最大 0.25← 正确答案
  • C.ReLU 负区间导数为 1
  • D.Tanh 两端导数趋近 1

答案:AB。反向传播会逐层连乘,小因子越多信号越弱。Sigmoid 导数最大只有 0.25,所以特别容易梯度消失。ReLU 负区间导数是 0 而不是 1,Tanh 两端导数趋近 0 而不是 1,因此 C 和 D 都是错的。