几个概念
1 Softmax函数
Softmax函数是机器学习和深度学习中的一个核心函数,它的主要作用可以概括为一句话:
将一组任意实数(logits)转换为一个概率分布。
1)核心作用详解
①输出归一化 (Normalization)
输入:一组实数(可以是正数、负数或零),通常来自神经网络的最后一层(称为logits)。
输出:一组概率值。每个值都在0 到 1 之间,并且所有值的总和严格等于 1例子:将[2.0, 1.0, 0.1]转换为[0.659, 0.242, 0.099]。
②放大差异 (Amplifying Differences)
通过指数函数 (e^x)放大原始数值之间的差异。最大的输入值会获得disproportionately(不成比例地)更高的概率。
例子:输入[10, 8, 4],输出概率约为[0.88, 0.12, 0.00]。虽然10只比8大2,但概率却高了7倍多。这使得模型的预测更加“明确”和“有信心”。
③提供概率解释 (Probabilistic Interpretation)
这是其最重要的作用。它使得神经网络的输出可以被直接解释为每个类别的置信概率。
例子:在图像分类中,输出[0.85, 0.10, 0.05]可以解释为:“模型有85%的把握认为图片是猫,10%的把握认为是狗,5% 的把握认为是鸟。”
2)为什么需要Softmax?(Why is it needed?)
①满足概率公理:在多分类问题中,我们需要一个输出来表示“属于各个类别的可能性”,这个可能性必须满足:
每个值 ≥ 0
所有值之和 = 1 Softmax 是实现这一目标的完美工具。
②适用于梯度下降:Softmax 函数是可微的(differentiable),这意味着我们可以通过反向传播来计算梯度并更新网络权重,这是训练神经网络的关键。
与交叉熵损失函数完美配合:在训练阶段,Softmax 通常与交叉熵损失(Cross-Entropy Loss)结合使用。这种组合使得在模型预测错误时,梯度会非常显著,从而让模型能够高效地从错误中学习。
3主要应用场景
①多分类任务 (Multi-class Classification)
②注意力机制 (Attention Mechanism)
在 Transformer 和 Seq2Seq 模型中,Softmax 被用于计算注意力权重,表示在生成下一个词时应该“关注”输入序列中每个部分的程度。这些权重也构成了一个概率分布。
③强化学习 (Reinforcement Learning)
在策略梯度方法中,Softmax 用于将智能体对各个动作的评分转换为选择每个动作的概率。
④知识蒸馏 (Knowledge Distillation)
通过使用温度参数T的Softmax,可以让复杂的大模型(教师模型)输出更“软”、更平滑的概率分布,其中包含了类别间的关系信息,用于指导小模型(学生模型)的训练。
4)总结
特性 | 描述 |
---|---|
输入 | 任意实数向量(Logits) |
输出 | 概率分布(每个值 ∈ [0,1],所有值和为 1) |
核心操作 | 指数运算 + 归一化 |
主要目的 | 将模型的原始输出解释为概率 |
关键优势 | 可微、放大差异、与交叉熵损失完美配合 |
简单来说,Softmax 是连接模型“原始计算”和“人类可理解的概率世界”之间的桥梁。
2. 原始概率(Logits):模型首先产生一组未归一化的分数,称为logits。
3.应用Softmax:通常使用softmax 函数将这些 logits 转换为概率分布,使得所有概率之和为 1。
4.引入Temperature:Temperature参数正是在softmax计算之前介入的。公式如下:
P_modified(word_i) = exp(logit_i/T) / sum(exp(logit_j/T)) for all j
• P_modified(word_i) 是调整后词 i 的被采样概率。
• logit_i 是模型为词 i 计算的原始分数。
• T 就是 Temperature 值。
• sum 是对词汇表中所有词求和,以确保新概率之和仍为 1。
一个例子
原始概率
狐狸 | 5.0 |
---|---|
狗 | 4.0 |
猫 | 2.0 |
logits 向量为:z = [5.0, 4.0, 2.0]
T=1
分子:
e⁵≈148.41
e⁴≈54.60
e²≈7.39
分母:
148.41+54.60+7.39=210.40
比值
P(class 0) = 148.41 / 210.40 ≈70.53%
P(class 1) = 54.60 / 210.40 ≈25.95%
P(class 2) = 7.39 / 210.40 ≈3.5%
[70.53%,25.95%,3.5%]
T=2
分子:
e^2.5 ≈ 12.18
e^2 ≈ 7.39
e^1 ≈ 2.72
分母
12.18+7.39+2.72=22.29
比值
P(class 0) = 12.18 / 22.29 ≈ 54.67%
P(class 1) = 7.39 / 22.29 ≈ 33.15%
P(class 2) = 2.72 / 22.29 ≈ 12.20%
[70.53%,25.95%,3.5%]
[54.67%,33.15%,12.20%]
[降,升,升]:差别越来越小
T=0.5
分子:
e¹⁰≈ 22026.47
e⁸≈ 2980.96
e⁴≈ 54.60
分母
22026.47+2980.96+54.60=25062.03
比值
P(class 0) =22026.47 / 25062.03 ≈ 87.90%
P(class 1) = 2,980.96 / 25062.03 ≈ 11.89%
P(class 2) = 54.60 / 25062.03 ≈0.22%
[70.53%,25.95%,3.5%]
[87.90%,11.89%, 0.22%]
[升,降,降]:差别越来越大
所以
>1 海阔天空
<1 更加严谨
常见的推荐设置是使用 temperature=0.7-0.9
• T → 0(贪婪搜索):模型将总是选择概率最高的那个词。这会使生成结果完全确定,每次输入相同提示都会得到完全相同的输出。虽然连贯,但可能过于重复和缺乏想象力。
• T → ∞:概率分布变得完全均匀,每个词被选中的概率都相等。输出会变成完全随机的乱码,毫无意义。
顾翔凡言:人工智能未来的发展瓶颈在于对知识的更新。唯一不变的是变化,知识发生了变化,人工智能软件能否及时跟进变化,可能阻碍人工智能的使用。