想象你面前是一台巨大的录音调音台,每一路信号——人声、吉他、键盘——都通过一排推子进入混音总线。如果所有推子都是“直通”的,往上推多少音量就线性放大多少,那无论你怎么操作,混出来的声音永远只是各路信号的简单叠加,单调而乏味。激活函数就是这排推子的“响应曲线”,它定义了信号经过时被如何塑形:有的推子平滑如老式旋钮,两端转不动;有的推子果断如数字开关,一按即响;还有的推子带一点“提前感应”,让过渡更细腻。调音师要根据歌曲风格选择推子性格,深度学习工程师也要根据任务场景选择激活函数。这篇指南将带你认识 Sigmoid、Tanh、ReLU、Leaky ReLU、GELU、Softmax 这些“推子”,学会像老练的混音师一样,为每一个网络场景选对性格。

岗位关联

激活函数选型是搭建深度学习网络的基本功,直接影响模型能否高效收敛、稳定训练,是算法工程师从入门走向实战绕不开的“第一道门槛”。

目录
  1. 可视化演示
  2. 激活函数本质:给信号注入“性格”
  3. Sigmoid家族:老式旋钮的温柔与迟钝
  4. ReLU家族:现代数字推子的果断与风险
  5. 隐藏层选型:先看舞台,再定推子
  6. 输出层匹配:最后一推决定出口
  7. 梯度特性分析:训练动力的晴雨表
  8. 实战场景指南:三大舞台的调音方案
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

对比Sigmoid、Tanh、ReLU、LeakyReLU、GELU五种激活函数的曲线与梯度特性,展示不同任务场景下的选型决策流程。

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

五种激活函数曲线对比 Sigmoid输出0到1,Tanh零中心化输出负一到正一 ReLU正区间线性,LeakyReLU修复神经元死亡,GELU平滑过渡 ReLU(x)=max(0,x) 隐藏层默认选ReLU,输出层按任务匹配

激活函数本质:给信号注入“性格”

想象你面前是一台巨大的录音调音台,每一路输入信号——人声、吉他、键盘——都经过一列推子。如果所有推子都是“直通”的,往上推多少音量就线性放大多少,那无论你怎么推拉,混出来的声音永远只是各路信号的简单叠加,听起来单调乏味。激活函数就是这排推子的“响应曲线”:它定义了信号经过时被如何塑形。有了这些曲线,你才能让歌声“温暖”、让鼓点“干脆”、让合成器“迷幻”。

在数学上,如果神经元只做线性变换(加权求和再加偏置),那么无论堆叠多少层,整个网络仍然等价于一个线性模型。线性模型连“异或”这种简单却非线性可分的问题都解决不了。激活函数的作用正是打破这种线性牢笼,让网络具备拟合任意复杂函数的能力——这就是“万能近似定理”的直觉来源。

一个典型神经元的计算分为两步:

所以,选择的推子不同,同一段信号会呈现出完全不同的“气质”。接下来我们认识两类最经典的推子——老式旋钮 Sigmoid 和现代数字推子 ReLU。

a=σ(∑i=1nwixi+b)\displaystyle a = \sigma\left(\sum_{i=1}^{n} w_i x_i + b\right)
w·x+b 是调音台上把多路信号混合成一路总线,σ 则是推子对总线信号的塑形。
  1. 线性加权把各路输入乘上各自的权重再求和,相当于把多路信号混合成一路总线。
    z=∑i=1nwixi+b\displaystyle z = \sum_{i=1}^{n} w_i x_i + b
  2. 非线性塑形把加权和 z 送进激活函数 σ,经过推子曲线的改造信号变为 a。
    a=σ(z)\displaystyle a = \sigma(z)
  3. 多层堆叠把第一层输出 a 当作第二层输入,多层串联后即可拟合任意复杂映射。
    y=σ(W2⋅σ(W1x+b1)+b2)\displaystyle y = \sigma\left(W_2 \cdot \sigma(W_1 x + b_1) + b_2\right)

Sigmoid家族:老式旋钮的温柔与迟钝

老式录音台上有一类旋钮式推子,转动时音量变化呈平滑的 S 形曲线——刚转时几乎无声,中段反应灵敏,越往两端越“转不动”。它手感温柔,适合精细控制,但到了两极就陷入“饱和”:你再用力,声音也纹丝不动。Sigmoid 就是这样一个函数,它把任意实数压缩到 0 到 1 之间,天然适合表示“激活比例”或概率。

历史上 Sigmoid 统治了神经网络很多年,但它有两个致命问题:一是输出不以 0 为中心,导致上层神经元收到“全是正数”的信号,权重更新呈锯齿状;二是两端饱和,梯度趋近于零,深层网络训练极其缓慢。其数学形式为:

Tanh 是 Sigmoid 的“平移拉伸版”,输出范围变为 -1 到 1 且以 0 为中心,实践中通常优于 Sigmoid。但两兄弟共用同一块短板:饱和区导数趋近于零。老式旋钮虽温柔,放在几十层深的大调音台上,转不动的地方会让整个混音失去灵动。所以现代网络的隐藏层几乎不再用它,它更适合出现在“最后一推”——输出层。

σ(z)=11+e−z\displaystyle \sigma(z) = \frac{1}{1 + e^{-z}}
Sigmoid 就是那根老式旋钮推子:中段灵敏,两端转不动。
  1. 底数与输入e 是自然常数,e 的负 z 次幂对输入做指数衰减,是 S 形曲线的基础。
    e−z\displaystyle e^{-z}
  2. 分母塑形在 1 上加上 e 的负 z 次幂,把任意实数映射到大于 0 的区间,再取倒数得到小于 1 的上界。
    1+e−z\displaystyle 1 + e^{-z}
  3. 整体压缩取倒数后输出落在 0 到 1 之间,但导数最大只有 0.25,两端趋近 0。
    σ′(z)=σ(z)(1−σ(z))\displaystyle \sigma'(z) = \sigma(z)\left(1 - \sigma(z)\right)

ReLU家族:现代数字推子的果断与风险

数字调音台上的推子果断干脆:向下拉到最底就是完全静音,向上推就是线性放大,中间没有犹豫。ReLU 正是这种“数字推子”——正区间原样传递,负区间一刀切为 0:

ReLU 的短板是“死亡 ReLU”——如果某个神经元长期收到负输入,梯度恒为 0,它就像推子卡死在静音位,再也无法发声。于是有了改良款:Leaky ReLU 在负区间留一条小坡度(斜率 0.01),让梯度能“渗”过去;PReLU 把这条坡度变成可学习参数;Swish 和 GELU 则用平滑曲线近似 ReLU,同时保留负区间的微弱响应,在 Transformer 中表现亮眼。现代混音台的默认推子几乎都来自 ReLU 家族——计算快、稀疏、梯度通畅,但每种推子都有自己的性格,选型要按场景来定。

ReLU(z)=max⁡(0,z)\displaystyle \mathrm{ReLU}(z) = \max(0, z)
ReLU 是那根数字推子:正区间直通,负区间静音。
  1. 取最大运算max 比较 z 与 0,留下两者中较大的那个。
    max⁡(0,z)\displaystyle \max(0, z)
  2. 正区间直通z 大于 0 时输出就是 z,导数恒为 1,梯度可以无损回传。
    z>0⇒ReLU(z)=z\displaystyle z > 0 \Rightarrow \mathrm{ReLU}(z) = z
  3. 负区间截断z 小于等于 0 时输出恒为 0,导数也为 0,形成稀疏激活。
    z≤0⇒ReLU(z)=0\displaystyle z \le 0 \Rightarrow \mathrm{ReLU}(z) = 0

隐藏层选型:先看舞台,再定推子

调音师拿到一首歌,不会盲目选推子——重金属主唱和抒情民谣用的是完全不同的两套方案。隐藏层激活函数的选择同理,要综合网络深度、输入值域和计算资源来决定。从梯度视角看,反向传播时误差对权重的导数遵循链式法则:

基于链式法则,隐藏层选型有三条经验法则:第一,默认用 ReLU,兼顾梯度通畅与计算效率;第二,网络很深且训练不稳时,换 Leaky ReLU、PReLU 或 GELU 等平滑变体;第三,留意输入值域——若输入已标准化到以 0 为中心(如 -1 到 1),Tanh 或 ReLU 都能友好工作;若输入全为正,ReLU 会放大偏置漂移,可考虑先做归一化。记住选推子前先看舞台:网络越深,越要避开“转不动”的饱和区;数据分布越复杂,越需要平滑曲线兜底。

∂L∂w=∂L∂a⋅σ′(z)⋅x\displaystyle \frac{\partial L}{\partial w} = \frac{\partial L}{\partial a} \cdot \sigma'(z) \cdot x
梯度像调音信号一样逐级传递,每一层推子的“灵敏度”都会影响最终能听到多大的动静。
  1. 链式法则损失对权重的梯度等于三部分相乘,路径上的每个环节都影响梯度大小。
    ∂L∂w=∂L∂a⋅∂a∂z⋅∂z∂w\displaystyle \frac{\partial L}{\partial w} = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} \cdot \frac{\partial z}{\partial w}
  2. 推子灵敏度∂a/∂z 就是激活函数的导数,类比推子在某位置的灵敏度。
    ∂a∂z=σ′(z)\displaystyle \frac{\partial a}{\partial z} = \sigma'(z)
  3. 输入信号∂z/∂w 等于本层输入 x,输入幅度越大,梯度更新越剧烈。
    ∂z∂w=x\displaystyle \frac{\partial z}{\partial w} = x

输出层匹配:最后一推决定出口

混音完成后,信号要送往不同出口——大音箱、监听耳机或录音文件,不同出口对信号格式的要求完全不同。输出层的激活函数就扮演“出口适配器”的角色,必须与任务类型严丝合缝:二分类任务输出一个 0 到 1 的概率,用 Sigmoid;多分类任务要在每个类别上输出概率分布,用 Softmax;回归任务输出连续实数、范围不限,直接用线性(即不激活)。

Softmax 的数学形式如下:

出口适配器决定信号能否被下游正确解析:多分类任务若用 Sigmoid 逐类独立输出,得到的是多个互不约束的 0 到 1 值,而非联合概率分布;回归任务若错套 Softmax,输出被压成“和为 1”,数值完全失真。最后一推,务必看清出口。

softmax(zi)=ezi∑j=1Kezj\displaystyle \mathrm{softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}
Softmax 是最后的分流台:把总音量按比例分配到 K 个出口,保证加起来恰好是 100%。
  1. 指数放大差异e 的 z_i 次幂把各类别的原始得分变成正数,同时放大类别间的差距。
    ezi\displaystyle e^{z_i}
  2. 全类求和分母对 K 个类别的指数值求和,作为归一化常数,保证整体比例可控。
    ∑j=1Kezj\displaystyle \sum_{j=1}^{K} e^{z_j}
  3. 归一化概率分子除以分母得到 0 到 1 区间的概率,所有类别概率之和恰为 1。
    ∑i=1Ksoftmax(zi)=1\displaystyle \sum_{i=1}^{K} \mathrm{softmax}(z_i) = 1

梯度特性分析:训练动力的晴雨表

调音师反复推拉推子,靠耳朵判断改动是否有效。如果推子松了(梯度消失),怎么推声音都没变化;如果推子弹簧过紧(梯度爆炸),轻轻一碰声音就震耳欲聋。梯度特性就是训练的“手感”。梯度消失的本质是多个小于 1 的导数连乘,梯度爆炸则是多个大于 1 的导数连乘。以深层网络为例,前层梯度约等于末端梯度与各层激活导数、权重的连乘:

Sigmoid 的导数最大不超过 0.25,连乘几十层后梯度约等于 0;ReLU 正区间导数为 1,不会主动缩小梯度,但负区间导数为 0 又带来“死亡 ReLU”。缓解手段包括换用 ReLU 家族、添加残差连接、对梯度做裁剪(应对爆炸)、合理初始化权重。懂得看梯度,就像混音师懂得听动态范围——选型时多问一句“这个推子在饱和区会不会归零”,很多训练困扰都会迎刃而解。

g(1)=g(L)⋅∏k=2Lσ′(z(k))⋅∏k=2Lw(k)\displaystyle g^{(1)} = g^{(L)} \cdot \prod_{k=2}^{L} \sigma'\left(z^{(k)}\right) \cdot \prod_{k=2}^{L} w^{(k)}
连乘就像信号经过一排推子:每个推子都打点折扣,传到最后就几乎听不见了。
  1. 末端梯度g 的 L 次方是损失对输出层净输入的偏导,作为梯度传播的初始推动力。
    g(L)\displaystyle g^{(L)}
  2. 激活导数累乘链式法则把每层 σ'(z) 相乘,任何一个接近 0 的因子都会让整体指数级缩小。
    ∏k=2Lσ′(z(k))\displaystyle \prod_{k=2}^{L} \sigma'\left(z^{(k)}\right)
  3. 权重连乘各层权重连乘,若多数绝对值大于 1 则梯度爆炸,多数小于 1 则加速消失。
    ∏k=2Lw(k)\displaystyle \prod_{k=2}^{L} w^{(k)}

实战场景指南:三大舞台的调音方案

不同的舞台有不同的声学环境——Livehouse 要防啸叫,交响乐厅要留混响,直播间要降底噪。CNN、RNN、Transformer 就是三座风格迥异的舞台,激活函数策略各有讲究。卷积网络负责局部特征提取,默认用 ReLU,计算快、稀疏激活利于特征选择,最后的分类头按任务接 Softmax 或 Sigmoid;循环网络处理时序信号,Tanh 保持状态双向压缩,Sigmoid 负责门控——决定记住还是遗忘多少;Transformer 的前馈网络常用 GELU 或 Swish,平滑的负区间让深层梯度和训练更稳定。

LSTM 的遗忘门是典型的 Sigmoid 门控:

三大舞台各有各的调法——CNN 靠 ReLU 的快与疏,RNN 靠门控的有与无,Transformer 靠 GELU 的滑与稳。作为调音工程师,你的任务是读懂舞台,再决定推子。

ft=σ(Wf⋅[ht−1,xt]+bf)\displaystyle f_t = \sigma\left(W_f \cdot [h_{t-1}, x_t] + b_f\right)
遗忘门像调音台上的“静音开关”:Sigmoid 决定这路回忆是保留还是淡出。
  1. 拼接输入把上一时刻隐藏状态 h 与当前输入 x 拼成一个联合向量,作为门控的输入信号。
    [ht−1,xt]\displaystyle [h_{t-1}, x_t]
  2. 线性变换联合向量乘遗忘门权重 W_f 并加偏置 b_f,得到门控原始得分。
    Wf⋅[ht−1,xt]+bf\displaystyle W_f \cdot [h_{t-1}, x_t] + b_f
  3. 概率化门控Sigmoid 把得分压到 0 到 1 之间,0 表示完全遗忘,1 表示全部保留。
    ft=σ(⋅)∈(0,1)\displaystyle f_t = \sigma(\cdot) \in (0, 1)

AI 应用场景

图像分类网络的激活选型

阶段:模型架构设计

解决的问题:早期卷积网络用 Sigmoid 做隐藏层,深层梯度消失导致训练极慢;改用 ReLU 后梯度通畅,配合 Softmax 输出,让上百层的网络也能稳定收敛。传统方式靠堆层数却训不动,AI 方式靠“选对推子”让深度真正转化为性能。

具体案例:ResNet 在隐藏层全部使用 ReLU、输出层使用 Softmax,成功训练 152 层网络,在 2015 年 ImageNet 竞赛中以显著优势夺冠,证明了“深网 + ReLU + 残差”组合的威力。

预训练语言模型中的 GELU 选型

阶段:模型训练与调优

解决的问题:Transformer 层数深,ReLU 的硬截断会让负区间梯度信息彻底丢失,影响深层训练的稳定性;GELU 提供平滑的负区间响应,训练更稳、收敛更快。传统方式用 ReLU 也能跑但深层波动大,AI 方式用 GELU 让数十层 Transformer 训得又稳又好。

具体案例:BERT 和 GPT 系列的前馈网络层均采用 GELU,配合层归一化与残差连接,在 12 到 24 层的规模下稳定训练,成为 NLP 预训练的事实标准。

时序预测中的 RNN 门控设计

阶段:模型结构设计

解决的问题:普通 RNN 隐藏层只用 Tanh,长序列下梯度消失导致早期信息被遗忘;LSTM/GRU 用 Sigmoid 门控决定信息保留比例、用 Tanh 承载候选记忆,兼顾记忆与遗忘。传统方式“越往前越记不住”,AI 方式用门控让模型学会“该忘就忘、该记就记”。

具体案例:股票序列预测任务中,LSTM 的遗忘门用 Sigmoid 输出 0 到 1 的保留权重,模型能自动忽略无关历史片段,长序列预测误差显著低于普通 RNN。

Python 演示

python77 行
import math def sigmoid(x):    return 1.0 / (1.0 + math.exp(-x)) def tanh(x):    return math.tanh(x) def relu(x):    return max(0.0, x) def leaky_relu(x, alpha=0.01):    return x if x > 0 else alpha * x def d_sigmoid(x):    s = sigmoid(x)    return s * (1.0 - s) def d_tanh(x):    t = tanh(x)    return 1.0 - t * t def d_relu(x):    return 1.0 if x > 0 else 0.0 def d_leaky_relu(x, alpha=0.01):    return 1.0 if x > 0 else alpha def softmax(logits):    m = max(logits)    exps = [math.exp(v - m) for v in logits]    total = sum(exps)    return [e / total for e in exps] SCENE_RULES = {    "cnn_hidden": ("ReLU", "稀疏激活且计算快"),    "rnn_hidden": ("Tanh", "双向压缩保持信息"),    "rnn_gate": ("Sigmoid", "输出0到1适合门控"),    "binary_out": ("Sigmoid", "单一概率输出"),    "multi_out": ("Softmax", "归一化成概率分布"),    "regression_out": ("Linear", "输出范围不受限"),    "transformer_ffn": ("GELU", "平滑且训练稳定")} def recommend(scene):    return SCENE_RULES.get(scene) def simulate_gradient_flow(depth, derivative):    x = 0.5    grad = 1.0    for _ in range(depth):        grad = grad * derivative(x)    return abs(grad) def main():    print("== 场景驱动激活函数选型 ==")    for scene in SCENE_RULES:        fn, reason = recommend(scene)        print("%-16s -> %-10s (%s)" % (scene, fn, reason))    print()    print("== 梯度流模拟 (10层) ==")    cases = [        ("Sigmoid", d_sigmoid),        ("Tanh", d_tanh),        ("ReLU", d_relu),        ("LeakyReLU", d_leaky_relu)    ]    for name, fn in cases:        final = simulate_gradient_flow(10, fn)        print("%-10s 末层梯度模 = %.6f" % (name, final))    print()    probs = softmax([2.0, 1.0, 0.1])    print("Softmax 示例: logits=[2.0,1.0,0.1] -> %s" %          [round(p, 3) for p in probs]) if __name__ == "__main__":    main()
目的:演示场景驱动的激活函数选型规则表,并模拟不同激活函数在 10 层网络中的梯度流变化,帮助理解“为什么隐藏层默认 ReLU”。
  1. def sigmoid(x):定义最经典的 S 形“旋钮推子”,输出压缩到 0 到 1。
  2. return x if x > 0 else alpha * xLeaky ReLU 在负区间保留 0.01 的小坡度,缓解死亡 ReLU。
  3. SCENE_RULES = {...}场景决策表,把“舞台类型”映射到“推子型号”。
  4. def recommend(scene):查表函数,输入场景名直接给出推荐的激活函数和理由。
  5. simulate_gradient_flow(depth, derivative)模拟梯度沿 10 层网络逐层连乘后的剩余强度。
  6. grad = grad * derivative(x)梯度连乘的核心一行,直观展示“每层打折扣”的效果。
  7. m = max(logits)Softmax 数值稳定技巧,先减去最大值再取指数,防止溢出。

常见误区

误区我刚学神经网络时以为 Sigmoid 输出是 0 到 1 的概率,那网络每一层都像在做概率判断,就应该全部用 Sigmoid。

正解Sigmoid 的“概率感”只在输出层(尤其二分类)有意义。隐藏层用它会在正负两端陷入饱和,导数趋近 0,反向传播时梯度被逐层连乘稀释,深层网络几乎学不动。隐藏层需要的是梯度通畅的 ReLU 家族,就像现代调音台不会给每路信号都装老式旋钮。

为何常见:Sigmoid 是教材里最先出现的激活函数,公式简单、曲线平滑,初学者自然把它当作默认选择;而“饱和导致梯度消失”需要理解链式法则才能体会到。

误区ReLU 在隐藏层表现这么好,那输出层也直接用 ReLU 不是挺省事吗?反正都是激活函数。

正解输出层必须匹配任务:二分类要 0 到 1 的概率需要 Sigmoid,多分类需要和为 1 的概率分布需要 Softmax,回归需要无界输出需要线性。ReLU 的输出非负且无界,既不是概率,也无法表达负向回归值,会直接破坏损失函数的计算。

为何常见:缺少“输出层是任务接口”的意识,把隐藏层的经验惯性迁移到了最后一层,就像把监听耳机的信号强行接到大音箱上。

误区既然大家都在用 ReLU,那它一定不会出错,网络训不动只能怪数据或者网络结构。

正解ReLU 负区间的导数恒为 0,一旦神经元落入负区间就再也无法更新,形成“死亡 ReLU”。学习率过大、初始化不当或输入分布偏移都可能批量触发。缓解手段包括 Leaky ReLU、PReLU、调小学习率或用 GELU 平滑替代。

为何常见:对“稀疏激活”的正面宣传掩盖了“永久失活”的风险,只有遇到梯度全零的调试场景才会意识到问题的严重性。

误区我调好一套 ReLU + Softmax 的组合,以后所有任务都用这套配置,反正都能跑。

正解不同任务和架构对梯度特性、值域、计算开销的要求不同。CNN 默认 ReLU 是因为计算快且稀疏;RNN 需要 Tanh 压缩状态并配合 Sigmoid 门控;Transformer 深层次用 GELU 平滑更稳。照搬配置可能“能跑但不好”,尤其在深网或时序任务上差距明显。

为何常见:调参经验停留在浅层网络,没意识到“场景驱动选型”才是工程实践的核心方法论,就像调音师不能只靠一根推子混遍所有风格的音乐。

面试题

Q1. 激活函数在神经网络中的核心作用是?

单选题 · easy

  • A.引入非线性表达← 正确答案
  • B.降低数据维度
  • C.替代损失函数
  • D.自动调节学习率

答案:A。激活函数通过非线性塑形让多层网络拟合复杂函数,就像推子曲线让声音有丰富质感;降维是池化或嵌入层的职责,损失函数和学习率与激活函数是不同概念。

Q2. Sigmoid 函数的输出值域是?

单选题 · easy

  • A.值域为 0 到 1 之间← 正确答案
  • B.值域为 -1 到 1
  • C.值域为 0 到正无穷
  • D.值域为所有实数

答案:A。Sigmoid 通过 1/(1+e^{-z}) 把任意实数压缩到 (0,1);Tanh 才是 -1 到 1;ReLU 是 0 到正无穷;线性函数才是所有实数。

Q3. 深层网络隐藏层大量使用 Sigmoid 的典型问题是?

单选题 · mid

  • A.梯度消失训练缓慢← 正确答案
  • B.输出稀疏利于压缩
  • C.计算复杂度成倍上升
  • D.无法处理多分类任务

答案:A。Sigmoid 饱和区导数趋近 0,链式累乘后梯度几乎消失,像推子两端转不动;稀疏激活是 ReLU 的特性,Sigmoid 计算并不比 ReLU 复杂很多。

Q4. 输入为负数时 ReLU 的输出是?

单选题 · mid

  • A.直接输出为 0← 正确答案
  • B.输出原值负数
  • C.输出 0 到 1 之间
  • D.输出绝对值大小

答案:A。ReLU 定义是 max(0, z),负区间直接截断为 0,这让网络稀疏,但也可能造成死亡 ReLU,就像推子卡死在静音位。

Q5. Leaky ReLU 与 ReLU 的关键区别是?

单选题 · mid

  • A.负区间保留小梯度← 正确答案
  • B.正区间输出被压缩
  • C.正区间增加线性缩放
  • D.函数整体向下平移

答案:A。Leaky ReLU 对负数输入乘以 0.01 而非直接置 0,保留微弱梯度,让神经元有机会“复活”;正区间两者都是直通,没有压缩或平移。

Q6. 二分类任务输出层最常用的激活函数是?

单选题 · mid

  • A.Sigmoid 输出概率← 正确答案
  • B.ReLU 输出稀疏值
  • C.Tanh 双向压缩
  • D.GELU 平滑近似

答案:A。二分类需要单个 0 到 1 的概率,Sigmoid 正好提供;ReLU 非负无界不是概率,Tanh 和 GELU 的输出范围不适合直接作为二分类概率。

Q7. 多分类输出层使用 Softmax 的数学意义是?

单选题 · hard

  • A.输出和为 1 的概率分布← 正确答案
  • B.输出稀疏且非负的特征
  • C.压缩到 -1 到 1 的区间
  • D.保留全部线性输出原始值

答案:A。Softmax 用指数函数放大差异再归一化,使所有类别输出和为 1,成为合法概率分布;稀疏非负是 ReLU 的特点,-1 到 1 是 Tanh 的范围,保留原始值是线性输出。

Q8. 哪些因素会加剧深层网络的梯度消失?

多选题 · mid

  • A.Sigmoid 饱和区导数趋零← 正确答案
  • B.链式法则连续累乘传播← 正确答案
  • C.使用 ReLU 稀疏激活
  • D.使用残差短路连接

答案:AB。Sigmoid 导数最大 0.25,连乘几十层后梯度趋零,加上链式法则逐层累乘,两个因素叠加放大消失效应;ReLU 正区间导数为 1 会缓解消失,残差连接提供梯度“近路”,都是改善手段。

Q9. 缓解死亡 ReLU 的常用方案有?

多选题 · hard

  • A.换用 Leaky ReLU 变体← 正确答案
  • B.采用 PReLU 可学习参数← 正确答案
  • C.调小学习率防止梯度突变← 正确答案
  • D.隐藏层全部改用 Sigmoid

答案:ABC。Leaky ReLU 在负区间保留小梯度,PReLU 让负斜率可学习,调小学习率避免权重剧烈震荡导致神经元批量落入死区;改用 Sigmoid 会引入梯度消失,是典型的“饮鸩止渴”。

Q10. 隐藏层中可以选用的激活函数包括?

多选题 · easy

  • A.ReLU 稀疏快速← 正确答案
  • B.GELU 平滑稳定← 正确答案
  • C.Tanh 双向压缩← 正确答案
  • D.Softmax 概率归一

答案:ABC。隐藏层追求特征变换能力和梯度通畅,ReLU、GELU、Tanh 都可胜任且各有性格;Softmax 专用于输出层做概率归一化,放进隐藏层会强行把特征压成和为 1,破坏表达能力。