深度学习入门文档深度页
激活函数与非线性
ReLU、Sigmoid、Tanh、GELU 等函数为网络引入非线性或转换输出。
学习目标
- 比较常见激活
- 解释死亡 ReLU
- 正确搭配输出损失
为什么需要这个概念
无激活的多层线性网络仍等价于一个线性层。
- 决定表达能力和梯度传播
- 连接输出层与损失
学习前需要掌握
背景与问题
无激活的多层线性网络仍等价于一个线性层。
概念定义
激活函数作用于线性分数;隐藏层与输出层的选择目的不同。
直观理解
线性层折不了弯,激活函数让表示在不同区域产生不同响应。
核心原理
ReLU 隐藏层常用;Sigmoid/Softmax 多用于概率解释,组合损失直接接收 logits。
CrossEntropyLoss 前不 Softmax,BCEWithLogitsLoss 前不 Sigmoid。
数学表达
核心公式
负数变 0,正数保留。
变量含义
z激活前 logit 或隐藏值
计算步骤
- 1逐元素 max(0,z)
代码对应位置
示例 1激活函数与非线性 · PyTorch 示例:验证激活函数与非线性的输入、计算和输出。
变量解释
| 变量 | 含义 |
|---|---|
z | 激活前 logit 或隐藏值 |
完整数值示例
ReLU
已知条件
- z=[-2,0,3]
- 1
逐元素 max(0,z)
[0,0,3]
处理前后对比
计算与实现步骤
- 1
线性变换
- 2
选择隐藏激活
- 3
输出 logits
- 4
按任务选择损失
- 5
推理转换概率
代码实现
示例 1
激活函数与非线性 · PyTorch 示例
激活函数与非线性 · PyTorch 示例
PyTorch
example_01.py用途:验证激活函数与非线性的输入、计算和输出。
x=torch.tensor([-2.,0.,3.])
print(torch.relu(x))代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
验证激活函数与非线性的输入、计算和输出。
Step 1 · 1–2 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
x=torch.tensor([-2.,0.,3.])
print(torch.relu(x))预期输出或运行结果
tensor([0.,0.,3.])。
常见错误 · 4 条
- 层多即非线性
- CE 前 Softmax
- 激活等于损失
- 死亡 ReLU
实际应用
- MLP/CNN 隐藏层
- Transformer GELU
常见错误
层多即非线性
CE 前 Softmax
激活等于损失
死亡 ReLU
文档来源
05_激活函数与非线性原始文档
学习资料/deeplearning/05_激活函数与非线性.md- §1–3 非线性
- §4–9 常见激活
- §10–11 输出搭配
常见问题
为什么隐藏层不用 Softmax?
它会让特征竞争且限制表达,通常只用于类别概率。
Sigmoid 为何易梯度消失?
绝对值大时进入饱和区,导数接近零。