深度学习必知必会 [盘盘常用激活函数与损失函数[特殊字符]] 以及sigmoid和softmax辨析
深度学习中的激活函数和损失函数是模型训练的核心组件。本文系统对比了常见激活函数(如Sigmoid、ReLU、Softmax等)的特性、优缺点及适用场景,分析了不同任务(分类、回归)下损失函数的选择策略,并提供了两者的联合应用指南。关键要点包括:激活函数引入非线性,需根据网络深度和任务类型选择(如ReLU变体适合隐藏层,Softmax用于多分类输出);损失函数需与任务严格匹配(如交叉熵用于分类,MS
1. 激活函数:引入非线性的核心组件
激活函数决定神经元是否被激活,将线性加权和转换为非线性输出,是模型拟合复杂模式的基础。
1. 常见激活函数对比
函数 | 公式 | 输出范围 | 优点 | 缺点 | 适用场景 |
---|---|---|---|---|---|
Sigmoid | f(x)=1/(1+e⁻ˣ)f(x) = 1 / (1 + e⁻ˣ) f(x)=1/(1+e⁻ˣ) | (0, 1) | 输出可解释为概率 | 梯度消失、非零中心 | 二分类输出层 |
Tanh | f(x)=(eˣ−e⁻ˣ)/(eˣ+e⁻ˣ)f(x) = (eˣ - e⁻ˣ) / (eˣ + e⁻ˣ)f(x)=(eˣ−e⁻ˣ)/(eˣ+e⁻ˣ) | (-1, 1) | 零中心化、梯度强于Sigmoid | 梯度消失 | RNN/LSTM隐藏层 |
ReLU | f(x)=max(0,x) f(x) = max(0, x)f(x)=max(0,x) | [0, +∞) $$ 计算快、缓解梯度消失 | 神经元死亡(负区梯度0) | CNN/深度网络隐藏层 | |
Leaky ReLU | f(x)=xifx>0;αxifx≤0f(x) = {x if x>0; αx if x≤0}f(x)=xifx>0;αxifx≤0 (-∞, +∞) | 解决死亡神经元问题 | α需手动调参(常设0.01) | 深层网络替代ReLU | |
Softmax | f(xi)=eˣⁱ/Σⱼeˣʲf(x_i) = eˣⁱ / Σⱼeˣʲf(xi)=eˣⁱ/Σⱼeˣʲ | (0,1)概率和1 | 输出概率分布 | 对异常值敏感 | 多分类输出层 |
GELU | f(x)=x⋅Φ(x) f(x) = x·Φ(x)f(x)=x⋅Φ(x)(Φ为标准正态CDF) | (-∞, +∞) | 平滑梯度、接近生物神经元 | 计算复杂 | Transformer/BERT |
Swish | f(x)=x⋅sigmoid(βx)f(x) = x·sigmoid(βx)f(x)=x⋅sigmoid(βx) | (-∞, +∞) | 自适应调节负值响应 | 计算开销稍大 | 自动搜索的深度模型 |
梯度消失原理:Sigmoid/Tanh在|x|较大时导数趋近0,反向传播中梯度链式相乘导致权重更新停滞。
2. 选择策略与优化
- 输出层:二分类用Sigmoid,多分类用Softmax,回归用恒等函数(无激活)。
- 隐藏层:优先ReLU变体(Leaky ReLU)或GELU,避免梯度问题。
- 解决死亡神经元:Leaky ReLU负区引入小斜率(α),或使用ELU(指数线性单元)。
- 大模型趋势:GELU/Swish在Transformer中取代ReLU,因更平滑的梯度提升训练稳定性。
** 2. 损失函数:误差量化与优化指南**
损失函数衡量预测值与真实值的差异,指导模型通过梯度下降更新参数。
1. 回归任务损失函数
函数 | 公式 | 特点 | 适用场景 |
---|---|---|---|
MSE | 1/nΣ(yᵢ−y^ᵢ)²1/n Σ(yᵢ - ŷᵢ)²1/nΣ(yᵢ−y^ᵢ)² | 对异常值敏感,梯度平滑易优化 | 大部分回归问题 |
MAE | 1/nΣ∥yᵢ−y^ᵢ∥ 1/n Σ\|yᵢ - ŷᵢ\| 1/nΣ∥yᵢ−y^ᵢ∥ | 对异常值鲁棒,梯度不连续 | 含噪声数据(如房价预测) |
Huber | 0.5a²if∥a∥≤δ;δ(∥a∥−0.5δ)else{ 0.5a² if \|a\|≤δ; δ(\|a\|-0.5δ) else } 0.5a²if∥a∥≤δ;δ(∥a∥−0.5δ)else | 结合MSE和MAE,δ控制异常值容忍度 | 需平衡鲁棒性与收敛速度 |
Huber优势:δ内使用MSE保证梯度平滑,δ外使用MAE避免异常值主导。
2. 分类任务损失函数
函数 | 公式 | 特点 | 适用场景 |
---|---|---|---|
二分类交叉熵 | −1/nΣ[yᵢ⋅log(y^ᵢ)+(1−yᵢ)⋅log(1−y^ᵢ)]-1/n Σ[yᵢ·log(ŷᵢ) + (1-yᵢ)·log(1-ŷᵢ)]−1/nΣ[yᵢ⋅log(y^ᵢ)+(1−yᵢ)⋅log(1−y^ᵢ)] | 概率差异敏感,需Sigmoid输出 | 二分类(如垃圾邮件识别) |
多分类交叉熵 | −ΣᵢΣⱼyᵢⱼ⋅log(y^ᵢⱼ)-Σᵢ Σⱼ yᵢⱼ·log(ŷᵢⱼ)−ΣᵢΣⱼyᵢⱼ⋅log(y^ᵢⱼ)(y独热编码) | 直接优化概率分布,需Softmax输出 | 多分类(ImageNet) |
Hinge Loss | max(0,1−yᵢ⋅y^ᵢ)max(0, 1 - yᵢ·ŷᵢ)max(0,1−yᵢ⋅y^ᵢ)(y∈{-1,1}) | 最大化分类边界,对离群点鲁棒 | SVM/二分类边界优化 |
交叉熵原理:最小化预测概率分布与真实分布的KL散度,迫使模型置信正确类别。
3. 特殊场景损失函数
- 排序任务:Triplet Loss(max(0,d(a,p)−d(a,n)+margin)max(0, d(a,p) - d(a,n) + margin)max(0,d(a,p)−d(a,n)+margin))学习样本间相对距离。
- 生成模型:KL散度衡量生成分布与真实分布的差异。
** 3. 联合应用策略与行业实践**
1. 激活函数与损失函数搭配
任务类型 | 输出层激活函数 | 损失函数 | 经典案例 |
---|---|---|---|
二分类 | Sigmoid | 二分类交叉熵 | 金融风控(欺诈检测) |
多分类 | Softmax | 多分类交叉熵 | 医学影像分类 |
回归 | 无(线性) | MSE/Huber | 股票价格预测 |
注意力权重 | Softmax | 自定义(如KL散度) | Transformer自注意力 |
2. 调优建议
- 梯度问题诊断:训练中损失值震荡 → 尝试ReLU→Leaky ReLU;损失不下降 → 检查Sigmoid/Tanh梯度消失。
- 概率输出校准:交叉熵需严格搭配Softmax/Sigmoid,否则损失计算无意义。
- 大模型最佳实践:
- 隐藏层:GELU(BERT/GPT-3)优于ReLU;
- 损失函数:交叉熵+标签平滑(Label Smoothing)避免过拟合。
行业趋势:Swish/GELU等自适应激活函数逐步替代ReLU,尤其在≥100层网络中提升收敛稳定性。
4. 总结:关键选择原则
- 激活函数:
- 隐藏层默认选 ReLU/Leaky ReLU(平衡效率与效果)
- 深度网络(≥50层)用 GELU/Swish(防梯度消失)
- 输出层按任务选择:Sigmoid(二分类)、Softmax(多分类)、线性(回归)。
- 损失函数:
- 分类任务必用交叉熵(概率优化直接有效)
- 回归任务MSE(标准场景)→ Huber(数据含噪声)。
- 联合调优:
- 激活函数梯度特性影响损失收敛速度,需通过梯度裁剪/归一化协同优化。
5. 辨析
Softmax与Sigmoid是深度学习中两类核心激活函数,其区别、选择依据及搭配原理可系统总结如下:
核心区别:数学特性与适用场景
维度 | Sigmoid | Softmax |
---|---|---|
数学形式 | σ(z)=11+e−z\sigma(z) = \frac{1}{1+e^{-z}}σ(z)=1+e−z1 | softmax(zi)=ezi∑jezj\text{softmax}(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}} softmax(zi)=∑jezjezi |
输出范围 | 单值概率(0,1) | 概率向量(0,1) 且∑=1 \sum=1 ∑=1 |
概率解释 | 独立事件概率(如“是否下雨”) | 互斥事件概率分布(如“数字0-9分类”) |
归一化特性 | 各输出独立,无加和约束 | 强制整体概率和为1,输出间存在竞争关系 |
适用场景 | 二分类、多标签分类(标签不互斥) | 单标签多分类(标签互斥) |
核心概念与数学定义
单值概率 (0,1) → Sigmoid函数
- 数学定义:σ(z)=11+e−z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1其中 是模型输出的原始分数(logit)。
- 输出特性:
- 输出范围(0, 1)表示一个独立事件发生的概率(例如“是否下雨”)。
- 例如:输入 z = 2时,σ(2)≈0.88 \sigma(2) \approx 0.88 σ(2)≈0.88,表示事件发生概率为 88%。
- 概率解释:
每个输出节点独立计算概率,不同节点间无约束关系(如“红色”和“棉质”可同时成立)。
概率向量 (0,1) 且 ∑=1 → Softmax函数
- 数学定义:
σ(z)i=ezi∑j=1Kezj其中z=[z1,z2,…,zK]是K个类别的原始输出向量。 \sigma(\mathbf{z})_i = \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}} 其中 \mathbf{z} = [z_1, z_2, \dots, z_K] 是 K 个类别的原始输出向量。 σ(z)i=∑j=1Kezjezi其中z=[z1,z2,…,zK]是K个类别的原始输出向量。
- 输出特性:
○每个元素σ(z)i∈(0,1),且所有元素之和为1。○例如:输入z=[1.0,2.0,3.0],输出为[0.09,0.24,0.67],突出最大值(第3类概率67 ○ 每个元素 \sigma(\mathbf{z})_i \in (0,1),且所有元素之和为 1。 ○ 例如:输入 \mathbf{z} = [1.0, 2.0, 3.0],输出为 [0.09, 0.24, 0.67],突出最大值(第3类概率67%)。 ○每个元素σ(z)i∈(0,1),且所有元素之和为1。○例如:输入z=[1.0,2.0,3.0],输出为[0.09,0.24,0.67],突出最大值(第3类概率67
- 概率解释:
输出是一个离散概率分布,表示互斥事件的置信度(如“图片属于狗、猫或鸟”只能选其一)。
典型场景示例:
- Sigmoid:
- 医学影像诊断(肺炎/结核病/肺癌可共存)
- 商品属性标注(“红色+棉质+长袖”可同时成立)
- Softmax:
- MNIST手写数字识别(每张图仅属一个数字)
- 情感分类(正面/中性/负面三选一)
任务本质决定函数类型
1. 任务类型
- 选Sigmoid当且仅当:
- 标签独立存在(多标签分类)
- 输出需独立概率(如目标检测中的“是否包含物体”)
- 选Softmax当且仅当:
- 标签互斥且唯一(单标签多分类)
- 需对比各类别相对可能性(如语言模型预测下一个词)
误区警示:用Softmax处理多标签问题(如预测“时尚+运动”鞋类)会导致概率被错误压缩,因“时尚”与“运动”本非互斥。
2. 输出层设计差异
函数 | 神经元数量 | 输出意义 | 损失函数 |
---|---|---|---|
Sigmoid | 与标签数相同 | 每个神经元独立输出该类概率 | Binary Crossentropy |
Softmax | 与类别数相同 | 整体概率分布 | Categorical Crossentropy |
示例10类多标签任务中,Sigmoid需10个神经元(每神经元输出
P(类i) P(\text{类}i) P(类i),Softmax需10个神经元但输出为P(类1)+...+P(类10)=1P(\text{类}1) + ... + P(\text{类}10) = 1P(类1)+...+P(类10)=1
概率分布与损失函数的数学一致性
1. 概率分布匹配
- Sigmoid + 伯努利分布:
每个标签视为独立伯努利试验(如“红色”出现与否),Binary Crossentropy直接优化每个标签的似然概率。 - Softmax + 多项分布:
多分类输出视为一次抽样结果(如标签“狗”),Categorical Crossentropy最小化预测分布与真实分布的KL散度。
2. 最大熵原理
两者均隐含最大熵约束:
- 在满足训练数据约束的前提下,模型对未知信息保持最大不确定性(熵最大化)。
- 数学体现:
- Sigmoid:P(y=1∥x)=11+e−wTx P(y=1\|x) = \frac{1}{1+e^{-w^Tx}} P(y=1∥x)=1+e−wTx1是指数族分布形式
- Softmax:P(y=k∥x)=ewkTx∑jewjTx P(y=k\|x) = \frac{e^{w_k^Tx}}{\sum_j e^{w_j^Tx}} P(y=k∥x)=∑jewjTxewkTx是最大熵模型的解
注意力机制中的选择逻辑
在注意力权重生成中,两者有本质差异:
函数 | 权重特性 | 应用场景 |
---|---|---|
Sigmoid | 独立权重(如通道重要性) | 图像分割中各通道注意力独立 |
Softmax | 竞争权重(如时间步权重和=1) | 机器翻译中解码器关注不同源词 |
示例对比:
- Sigmoid注意力:CT扫描中,骨骼/血管/器官通道可同时高权重
- Softmax注意力:翻译"I love AI"时,模型需分配权重给源词(如"I":0.2, “love”:0.7, “AI”:0.1)

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)