神经网络之理解温度对Softmax的影响
🎯 一句话理解:
温度 TTT 控制 Softmax 输出的“确定性”和“分布平滑度”:
- T→0T \to 0T→0:输出极度确定 → 接近 one-hot(只保留最大)
- T→∞T \to \inftyT→∞:输出极度模糊 → 接近均匀分布(平均对待所有类别)
📐 数学表达回顾
带温度的 Softmax:
softmaxT(zi)=ezi/T∑jezj/T \text{softmax}_T(z_i) = \frac{e^{z_i / T}}{\sum_j e^{z_j / T}} softmaxT(zi)=∑jezj/Tezi/T
温度 TTT 的作用就是 “缩放 logits”:
- T<1T < 1T<1:放大差异(更极端)
- T>1T > 1T>1:压缩差异(更平滑)
🎨 图示理解(示意):
假设 logits 为 z=[1, 2, 3]\mathbf{z} = [1,\ 2,\ 3]z=[1, 2, 3],我们来看不同温度下的 softmax 输出:
温度 TTT | 输出分布 softmaxT(z)\text{softmax}_T(\mathbf{z})softmaxT(z) | 解释 |
---|---|---|
T=0.5T = 0.5T=0.5 | [0.02, 0.14, 0.84][0.02,\ 0.14,\ \mathbf{0.84}][0.02, 0.14, 0.84] | 非常尖锐,几乎就是 argmax(one-hot) |
T=1.0T = 1.0T=1.0 | [0.09, 0.24, 0.67][0.09,\ 0.24,\ \mathbf{0.67}][0.09, 0.24, 0.67] | 正常 softmax 输出 |
T=2.0T = 2.0T=2.0 | [0.21, 0.29, 0.50][0.21,\ 0.29,\ \mathbf{0.50}][0.21, 0.29, 0.50] | 更平滑了,权重更平均 |
T=10.0T = 10.0T=10.0 | [0.31, 0.33, 0.36][0.31,\ 0.33,\ \mathbf{0.36}][0.31, 0.33, 0.36] | 几乎是均匀分布 |
📈 越低温度 → 越倾向“选择明确答案”
📉 越高温度 → 越倾向“平均分给所有类别”
🧠 为什么温度能改变行为?
从公式:
softmaxT(zi)=ezi/T∑jezj/T \text{softmax}_T(z_i) = \frac{e^{z_i/T}}{\sum_j e^{z_j/T}} softmaxT(zi)=∑jezj/Tezi/T
你可以看到:
- T<1T < 1T<1:放大 ziz_izi 之间的差异 → 指数函数会更快拉开差距 → 更接近 one-hot
- T>1T > 1T>1:压缩差异 → 所有类别得分趋于接近 → 更平均分布
温度其实是一个 “控制决策锋利程度的温控器”。
🧪 类比理解
- 🎯 低温:像一个“果断的人”,认定哪个最好,立刻选
- 🌫️ 高温:像一个“犹豫的人”,认为都差不多,都给点分数
🔥 在实际中你怎么用?
场景 | 使用温度的目的 |
---|---|
生成文本(GPT) | 控制“创造性”:低温 → 严谨、重复;高温 → 发散、创新 |
知识蒸馏 | 设置 T>1T > 1T>1,让教师模型输出更平滑的“软标签”,学生能学到更多类别间相似性 |
策略采样(RL) | 控制探索程度:低温 → exploitation;高温 → exploration |
逐步退火训练 | 初始 TTT 高让模型广泛探索,训练后期逐渐降低使其收敛到更稳定策略 |
✅ 总结:温度的作用就是调节“概率分布的形状”
温度 TTT | Softmax 输出 | 含义 |
---|---|---|
T→0T \to 0T→0 | 极度 one-hot | 更“果断”,强调最高得分类别(贪婪) |
T=1T = 1T=1 | 标准 softmax | 正常行为 |
T→∞T \to \inftyT→∞ | 接近均匀分布 | 更“保守”,保持可能性(探索) |