这是发在 nature 上的一篇文章.
让人惊讶, 我还以为 nature 一般是理化生环材的方向.
也是在统计学的框架上, 提出了基于熵的用来检测幻觉的一种类型 confabulation (虚构性) 的不确定性 estimator. 这个 uncertainty 是在 meaning 的层面上计算的, 而不是特定句子中的单词.
数据集:
在上面的数据集用了 LLaMa 2 (7B, 13B, 70B), Falcon Instruct (7B, 40B), Mistral Instruct (7B).
FactualBio 上用了 GPT-4. 这篇文章在写的时候还不能获取 GPT4 的 hidden state 和 logit, 所以提出了一个语义熵估计量的离散近似.
实验计算的指标:
Uncertainty and machine learning:
Aleatoric and epistemic uncertainty: 没看明白在说什么.
Joint probabilities of sequences of tokens: 其实就是
length normalization: 计算生成序列的 log-probabilities 时用
Principles of semantic uncertainty: 有两种不确定性:
比如即使模型对某个特定的句子有比较高的 confidence, 也仍然存在与该句子含义相同或相似的但词法结构不同的其他句子. 显然第一种不确定性是更重要的. 如果我们直接用 token 的概率计算 PE, 那其实就没有将上述两种不确定性给区分开, 或者说计算的是第二种不确定性.
所以先进行 cluster 再计算熵是很有必要的. cluster 的方法借助 general purpose LLMs(如 GPT-3.5)和自然语言推断 (NLI) 的工具来判断句子之间的双向蕴含关系, 若相互蕴含则在一个类中, 这称之为语义等价性. 语言模型 DeBERTa-Large-MNLI 也可以直接用来预测 entailment.
设某个语言的 token 的集合为
Generating a set of answers from the model: 用的是 Top-
Computing the semantic entropy. 当考虑语义而不是具体的句子时,
设输出的所有语义的集合是
这一块原文写的有点乱, 符号有点不一致. 我按自己的理解重新写一下. 假设采样并聚类得到了
个语义, 表示具有语义 的集合, 那么 其中 表示语义 的概率, 计算方法为所有具有该语义的句子的概率和 为了保证 , 在上述计算之后需要归一化
似乎是直接 follow 上面的文章的工作, 摘要里就直接提到了上面的文章.
这篇文章指出 nature 那篇文章计算 SE 的成本过高, 然后提出效率更高的 SEPs, 直接用一次 generation 的 hidden state 做一次采样来计算即可 (当然文章实际上用了机器学习的方法计算的 SE 的近似值).
这篇文章关于 semantic entropy 的计算写的似乎更清晰一些, 直接粘贴到下面了:
建立数据集为序偶
具体的过程是, 用 greedy sampling 生成回答并且存储所有的 hidden state
为了方便, 将 SE 二元化,
这本质上是回归树的切分点的计算.
这样的到一个数据集之后, 就用 logistics 回归训练一个 classifier,
这就是 SEP. 然后 logistics 回归的输出其实是概率, 所以还是得到的
还需要探测哪个隐藏层最适合用来计算 SE. 考虑两个特殊位置的 token:
TBG 的实验让我们知道在 LLM 产生回答之前, LLM 的 hidden state 是如何捕捉 SE 的.
TBG 的设置可能允许我们在一次前向传递中对输入的语义不确定性进行量化- -而不需要产生任何新的 token,从而进一步降低了我们的方法相对于基于采样的替代方法的成本。在实际应用中,这可能有助于快速确定一个模型是否会以较高的确定性回答特定的输入查询。
这两段我没看太懂在说什么. 直接把翻译粘贴过来了.
REMARK: 这文章的出发点是好的, 但是解决方法一般,
在构造数据集的时候还是采样了句子, 没有脱离原来的 SE 的计算方法,
有效归有效, 但没有给出比较强关于 hidden state 和 SE
的理论解释并进一步给出由