在这里插入图片描述

将模型的输出转换为概率分布,使得模型能够输出每个类别的概率值。
Softmax(ai)=eai∑j=1neaj \text{Softmax}(a_i)=\frac{e^{a_i}}{\sum_{j=1}^n e^{a_j}} Softmax(ai)=j=1neajeai
其中,aia_iai 是输入向量中的第 iii 个元素,nnn 是输入向量的长度。

将输入向量中的每个元素转换为一个概率值,使得所有输出的概率值之和为 1。这样,Softmax 函数可以将模型的输出解释为一个概率分布,从而方便地进行多分类任务。

在零点不可微,负输入的梯度为零,会产生永不激活的死亡神经元。复杂度可能会有点高,因为要做求和。输入值太大的话可能梯度会变小导致梯度消失。

假设有一个输入向量 a=[2,1,0.1]a=[2,1,0.1]a=[2,1,0.1],通过 Softmax 计算每个元素的概率值:
Softmax(2)=e2e2+e1+e0.1≈7.38911.212≈0.659 \text{Softmax}(2)=\frac{e^2}{e^2+e^1+e^{0.1}} \approx \frac{7.389}{11.212} \approx 0.659 Softmax(2)=e2+e1+e0.1e211.2127.3890.659
Softmax(1)=e1e2+e1+e0.1≈2.71811.212≈0.242 \text{Softmax}(1)=\frac{e^1}{e^2+e^1+e^{0.1}} \approx \frac{2.718}{11.212} \approx 0.242 Softmax(1)=e2+e1+e0.1e111.2122.7180.242
Softmax(0.1)=e0.1e2+e1+e0.1≈1.10511.212≈0.099 \text{Softmax}(0.1)=\frac{e^{0.1}}{e^2+e^1+e^{0.1}} \approx \frac{1.105}{11.212} \approx 0.099 Softmax(0.1)=e2+e1+e0.1e0.111.2121.1050.099

输出概率分布为 [0.659,0.242,0.099][0.659,0.242,0.099][0.659,0.242,0.099],这些概率值之和为 1。

应用场景

1. 多分类任务: 例如图像分类、文本分类等。它将模型的输出转换为每个类别的概率值,从而方便地进行分类预测。

2. 语言模型: 用于语言模型的输出层,将模型的输出转换为每个单词的概率值,从而预测下一个单词。

3. 推荐系统: 用于计算用户对不同物品的偏好概率,从而进行个性化推荐。

torch实现

import torch
import torch.nn.functional as F
z = torch.tensor([2, 1, 0.1])
pb = F.softmax(z, dim=0)
print(pb)

tensorflow实现

import tensorflow as tf
z = tf.constant([2, 1, 0.1])
pb= tf.nn.softmax(z)
print(pb)
Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐