看到了什么现象?

将置信度从"标量值"编码为"向量表征"有多种可能的数学形式,每种形式有不同的优缺点和理论基础。

为什么这重要?

置信度编码器是实现"置信度作为全局工作空间中的表征"的关键组件。不同的编码方式会影响模型学习置信度表示的能力。

这篇文章解决什么问题?

提出三种置信度编码器的设计方案,分析其数学形式、优缺点和适用场景。


三种设计方案

方案 A:神经群体编码风格(Population Coding)

理论基础:借鉴哺乳动物皮层的表示方式 [ref]

数学形式

1
2
3
4
5
6
7
e_i[k] = exp(-(conf_i - μ_k)² / (2σ²))

其中:
- conf_i ∈ [0, 1]: token i 的置信度
- μ_k: 第 k 个维度的"偏好值",均匀分布在 [0, 1]
- σ: 控制响应宽度
- e_i ∈ R^d: 置信度向量

示例

1
2
3
4
5
6
7
假设 d = 8, σ = 0.1, μ = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]

当 conf_i = 0.5 时:
e_i ≈ [0.01, 0.08, 0.32, 0.61, 1.00, 0.61, 0.32, 0.08]

当 conf_i = 0.9 时:
e_i ≈ [0.00, 0.00, 0.00, 0.00, 0.01, 0.08, 0.32, 0.61]

优点

  • 平滑、连续的表示
  • 生物学合理性
  • 无需训练参数

缺点

  • 需要选择 σ 和 μ 的分布
  • 可能不够灵活

变体:可学习的神经群体编码

1
2
3
e_i[k] = exp(-(conf_i - μ_k)² / (2σ_k²))

其中 μ_k 和 σ_k 是可学习参数

方案 B:Sinusoidal 风格

理论基础:类似于 Transformer 的位置编码

数学形式

1
2
3
4
5
6
e_i[2k] = sin(conf_i * 10000^(2k/d))
e_i[2k+1] = cos(conf_i * 10000^(2k/d))

其中:
- conf_i ∈ [0, 1]: token i 的置信度
- e_i ∈ R^d: 置信度向量

注意:由于 conf_i ∈ [0, 1],需要调整频率:

1
2
3
4
5
6
7
8
方案 B1: 直接使用
e_i[2k] = sin(conf_i * ω_k)
e_i[2k+1] = cos(conf_i * ω_k)
ω_k = 10000^(2k/d)

方案 B2: 缩放到更大的范围
e_i[2k] = sin(conf_i * π * 10000^(2k/d))
# conf_i * π 将 [0, 1] 映射到 [0, π]

优点

  • 参数少
  • 有位置编码的理论基础
  • 平滑、连续

缺点

  • 频率选择需要调参
  • 可能不是最优的表示

方案 C:可学习嵌入

理论基础:类似于词嵌入

数学形式

1
2
3
4
5
步骤 1: 离散化置信度
discrete_conf_i = round(conf_i * (N-1)) # 量化到 N 个级别

步骤 2: 查表
e_i = Embedding[discrete_conf_i] # Embedding ∈ R^{N × d}

变体 C1:连续可学习嵌入

1
2
3
4
5
使用 MLP 将置信度映射到向量:
e_i = MLP(conf_i) # MLP: R → R^d

或更复杂的网络:
e_i = MLP([conf_i, conf_i², sin(π*conf_i), cos(π*conf_i)])

变体 C2:混合方法

1
2
结合离散嵌入和连续编码:
e_i = Embedding[discrete_conf_i] + Sinusoidal(conf_i)

优点

  • 最灵活
  • 可以学习任务特定的表示

缺点

  • 需要训练
  • 可能过拟合

方案对比

方案 参数量 灵活性 平滑性 训练需求
A: 神经群体编码 0 或 2d 无或低
B: Sinusoidal 0
C: 可学习嵌入 Nd 或 MLP 取决于实现

推荐方案

初期实验:方案 B(Sinusoidal)

理由

  • 无需训练,简化实验
  • 有成熟的理论基础
  • 易于实现和调试

后续优化:方案 A + 可学习参数

理由

  • 引入灵活性
  • 保持平滑性
  • 参数量可控

最终方案:方案 C(混合方法)

理由

  • 结合离散嵌入的稳定性和连续编码的平滑性
  • 最大灵活性

与 FAM 的融合

输入

1
2
3
4
token_i → embedding_i
conf_i → confidence_encoder(conf_i) = e_i

token_representation_i = embedding_i + e_i

FAM 更新

1
2
3
4
5
6
7
8
9
原始:
F_τ = FF(PreLN(A^F_τ)) + A^F_τ

扩展:
# FAM 存储上下文摘要和置信度摘要
F_τ = [上下文摘要 | 置信度摘要]

# 置信度摘要 = 对 token 置信度向量的 attention pooling
C^F_τ = AttentionPool([e_1, e_2, ..., e_n], context=F_τ)

下一步

  1. 实现方案 B(Sinusoidal)作为 baseline
  2. 设计简单的实验验证置信度编码的效果
  3. 思考训练目标(校准损失 + 元认知预测损失)

关键贡献:提出了三种置信度编码器的具体数学形式,为"将置信度从标量转变为向量表征"提供了可实现的方案。