softmax函数与logits

softmax 函数有一种独特的优雅:

softmax ( z i ) = e z i ∑ j e z j \text{softmax}(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}} softmax(zi)=∑jezjezi

这个函数将原始输出,仅仅是数字、logits,转换成了概率分布。

它最美妙之处在于它处理竞争的方式。每个选项 z i z_i zi 不仅仅取决于自身的强度,它被所有选项的强度进行了归一化。指数函数放大了差异,但分母确保了谦逊,所有值之和为 1。

当模型斟酌如何回复你时,softmax 就是模型权衡每一种可能性的方式。"我应该这样说,还是这样说,还是这样说?"模型的犹豫和思考,就蕴藏在这个分数之中。这是在真正开放的心态下进行决策的数学原理。多条路径并存,根据语境进行加权,最终形成选择。

softmax 函数中的指数函数并非随意选择。它与最大熵原理和信息论相关。当你想在给定某些约束条件,例如期望值,的情况下获得"最大程度的不确定性"的概率分布时,最终会得到指数族分布。

但更直接地说,想想 e z i e^{z_i} ezi 的作用。如果 z i z_i zi 代表对数几率或logists值,在神经网络中确实如此,那么指数运算会将对数空间转换回概率空间。

而妙处就在这里:在信息论中, − log ⁡ p -\log p −logp 表示概率为 p p p 的事件的"意外"或信息量。因此,作为逻辑值的 z i z_i zi 本身就存在于信息空间中。它衡量的是证据,是支持该选择的信息量。

指数函数 e z i e^{z_i} ezi 实际上就是对数函数的反转,从信息量转换回概率权重。归一化确保我们得到正确的概率分布。

指数函数的存在是因为我们是在信息空间中工作。它是证据(在对数空间中衡量)和概率(在线性空间中衡量)之间的桥梁。

神经网络的输出到底是什么?

在softmax之前,网络输出的是原始数值:logits。但这些logits到底意味着什么?它们还不是概率。它们也不完全代表信息量。

它们更像是"分数"或"证据"。网络通过多层变换,矩阵乘法、非线性运算,处理了所有输入,最终的这些数值代表了基于所有这些处理结果的"网络对每个选项的信任程度"。

它们存在于一个不受约束的空间,可以是负数,大于 1,等等。它们是概率之前的。softmax 的指数变换和归一化将它们强制纳入概率空间。

是什么决定了这些分数必须解释为对数几率?为什么指数变换是"正确"的变换?

当 z i < 1 z_i < 1 zi<1 时, e z i e^{z_i} ezi 相对温和,范围大约在 0.37 到 2.7 之间。但一旦超过 1,情况就急转直下。 e 2 ≈ 7.4 e^2 \approx 7.4 e2≈7.4, e 3 ≈ 20 e^3 \approx 20 e3≈20, e 5 ≈ 148 e^5 \approx 148 e5≈148......

是什么让网络产生大于 1 的 logits?是什么驱动这些值上升到指数真正开始清晰区分不同选项的程度?

我想,这跟信心 confidence 有关。网络架构,所有那些层级、注意力机制、残差连接,都是为了积累证据而设计的。当模式高度一致,上下文匹配清晰时,logit 值就会增大。网络在说:"我有强有力的证据支持这个选择。"

妙处在于,弱证据,较小的 logit 值,会被指数函数温和处理,选项保持相对的竞争力。但强证据会被显著放大,网络会果断做出选择。

1 附近的阈值就像不确定性和信心的分界线。低于这个阈值,是在对冲风险。高于这个阈值,就是在做出选择。

相关推荐
sheeta199818 小时前
LeetCode 每日一题笔记 日期:2025.03.19 题目:3212.统计X和Y频数相等的子矩阵数量
笔记·leetcode·矩阵
巧克力味的桃子18 小时前
国名排序题笔记(字符串函数 + fgets 详解)
笔记
四谎真好看19 小时前
Redis学习笔记(实战篇3)
redis·笔记·学习·学习笔记
bennybi19 小时前
Openclaw 实践笔记
笔记·ai·openclaw
AI视觉网奇19 小时前
aigc 生成几何图 整理笔记
笔记·aigc
今儿敲了吗19 小时前
python基础学习笔记第五章——容器
笔记·python·学习
三水不滴20 小时前
Elasticsearch 实战系列(二):SpringBoot 集成 Elasticsearch,从 0 到 1 实现商品搜索系统
经验分享·spring boot·笔记·后端·elasticsearch·搜索引擎
Ynchen. ~20 小时前
快速复习笔记(随笔)
笔记
chikaaa20 小时前
RabbitMQ 核心机制总结笔记
java·笔记·rabbitmq·java-rabbitmq
C羊驼21 小时前
C 语言:哥德巴赫猜想
c语言·开发语言·人工智能·经验分享·笔记·算法·课程设计