Softmax激活函数

博客提及e1、e5、e3分别代表e的1次方、5次方等指数形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述

其中e1,e5,e3代表e^1 ,e^5…

Softmax 是一个常用于神经网络输出层的激活函数,特别适用于**多分类任务**。它的作用是将一组实数(logits)转换为一个概率分布,使得输出值可以被解释为每个类别的**预测概率**。 --- ## 🧮 Softmax 函数定义 给定一个输入向量 $ \mathbf{z} = [z_1, z_2, ..., z_n] $,Softmax 函数定义为: $$ \text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}} $$ 输出是一个向量,其中每个元素的值在 $[0, 1]$ 范围内,并且所有元素之和为 1,表示一个概率分布。 --- ## ✅ Python 实现 Softmax ```python import numpy as np def softmax(z): exp_z = np.exp(z - np.max(z)) # 防止数值溢出 return exp_z / np.sum(exp_z, axis=0) # 示例 z = np.array([2.0, 1.0, 0.1]) probabilities = softmax(z) print("Softmax 输出:", probabilities) ``` ### 输出示例: ``` Softmax 输出: [0.6590 0.2447 0.0964] ``` --- ## 🔍 函数解释: - `np.exp(z)`:将输入值映射到正值区间; - `np.max(z)`:用于数值稳定性,防止指数爆炸; - `np.sum(..., axis=0)`:对所有指数值求和; - 最终每个输出值表示该类别的概率。 --- ## 📈 Softmax 的图像(二维情况) 虽然 Softmax 本身是多维函数,但我们可以可视化二维输入的情况: ```python import matplotlib.pyplot as plt import numpy as np def softmax_2d(z1, z2): exp_z1 = np.exp(z1) exp_z2 = np.exp(z2) total = exp_z1 + exp_z2 return exp_z1 / total, exp_z2 / total # 生成数据 z1 = np.linspace(-5, 5, 100) z2 = np.linspace(-5, 5, 100) # 计算 Softmax 输出 p1, p2 = softmax_2d(z1, z2) # 绘图 plt.plot(z1, p1, label="P(class 1)") plt.plot(z2, p2, label="P(class 2)") plt.title("Softmax Activation Function (2D Case)") plt.xlabel("Input Value") plt.ylabel("Probability") plt.legend() plt.grid(True) plt.show() ``` --- ## 💡 Softmax 的应用场景 - **多分类问题**(如 MNIST 手写数字识别、图像分类); - 神经网络的最后一层,通常与 **交叉熵损失函数**(Cross-Entropy Loss)配合使用; - 语言模型中用于预测下一个词的概率分布; --- ## ⚠️ 注意事项 1. **数值稳定性**: - 使用 `np.exp(z - np.max(z))` 避免指数爆炸; 2. **维度问题**: - 多维输入时注意 `axis` 参数设置; 3. **梯度计算**: - Softmax 与交叉熵损失函数联合求导更高效,避免单独求导。 --- ## ✅ Softmax 与 CrossEntropyLoss 的配合(PyTorch 示例) ```python import torch import torch.nn as nn # 模型输出(logits) logits = torch.tensor([[2.0, 1.0, 0.1]]) # 真实标签(类别索引) labels = torch.tensor([0]) # 定义损失函数 criterion = nn.CrossEntropyLoss() # 计算损失 loss = criterion(logits, labels) print("Loss:", loss.item()) ``` --- ## ✅ 总结 | 特性 | 描述 | |----------------|------| | 输入 | 任意实数向量 | | 输出 | 概率分布(每个元素在 0~1 之间,总和为 1) | | 可微性 | ✔️ | | 适用任务 | 多分类任务 | | 常见损失函数 | 交叉熵损失(CrossEntropyLoss) | --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值