在机器学习中,Softmax 是一种激活函数,常用于多分类任务中。它的主要作用是将一个未归一化的向量(通常是模型的输出)转换为一个概率分布,使得输出中的每个值都位于 0 和 1 之间,并且所有输出的和为 1。
1. Softmax
Softmax 的数学定义
Softmax 函数的数学表达式如下:
σ(zi)=ezi∑j=1Kezj \sigma(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} σ(zi)=∑j=1Kezjezi
其中:
- ziz_izi 是输入向量中的第 iii 个元素,
- KKK 是类别的总数,
- eee 是自然对数的底数。
Softmax 函数的作用可以理解为:
- 缩放输出值:它将每个类别的输出值 ziz_izi 转换为一个正值,同时保持类别之间的相对比例不变。
- 归一化为概率:通过对每个转换后的值进行归一化,确保输出的所有类别的值加起来为 1,表示每个类别的概率。
Softmax 的应用
Softmax 常用于分类问题的最后一层,特别是在多分类任务中,比如手写数字识别(MNIST),语言分类等。在这些任务中,Softmax 的输出表示模型对每个类别的信心值,可以通过选择概率最大的类别作为最终的预测结果。
2. 一个简单的例子:
假设我们设计一个 CNN 来分类手写数字(比如 MNIST 数据集),目标是将输入的 28x28 像素的手写数字图像分类为 0 到 9 这 10 个数字之一。
1) CNN 的结构:
| 层次 | 描述 |
|---|---|
| 输入层 | 输入 28x28 的灰度图像。 |
| 卷积层 | 提取图像的局部特征,经过几层卷积、池化和激活函数处理,得到高维的特征图。 |
| 全连接层 | 将高维特征图展平成向量,并通过一层或多层全连接层处理,得到每个类别的“原始分数”。 |
| 输出层 | 通过 Softmax 函数将全连接层的输出转换为概率分布,用于多分类预测。 |
2) Softmax 的作用:
假设最后一个全连接层的输出是一个 10 维的向量,每个元素代表模型对每个类别的信心值(这时并不是概率)。比如输出向量可能是:
[2.5,−1.3,0.8,4.2,0.1,−2.0,3.1,0.5,−0.9,1.7] [2.5, -1.3, 0.8, 4.2, 0.1, -2.0, 3.1, 0.5, -0.9, 1.7] [2.5,−1.3,0.8,4.2,0.1,−2.0,3.1,0.5,−0.9,1.7]
这 10 个值表示模型对 0-9 这 10 个数字的预测“分数”。如果直接选择最大的值,可能不太直观,因为这些值并不是概率。
这时我们需要使用 Softmax 函数来将这些分数转换为概率:
P(yi)=ezi∑j=110ezj P(y_i) = \frac{e^{z_i}}{\sum_{j=1}^{10} e^{z_j}} P(yi)=∑j=110ezjezi
经过 Softmax 之后,假设得到的概率分布如下:
[0.01,0.001,0.005,0.8,0.03,0.0005,0.1,0.04,0.002,0.013] [0.01, 0.001, 0.005, 0.8, 0.03, 0.0005, 0.1, 0.04, 0.002, 0.013] [0.01,0.001,0.005,0.8,0.03,0.0005,0.1,0.04,0.002,0.013]
从这个结果可以看出,第三个类别(索引为 3,对应数字 3)有最大的概率 0.8,因此模型的最终预测结果就是 3。
&spm=1001.2101.3001.5002&articleId=142202416&d=1&t=3&u=2fae3d3a583f447f9648de2cd6ea6e7d)
4128

被折叠的 条评论
为什么被折叠?



