0%

简记:Detecting hallucinations in large language models using semantic entropy

简单记一下笔记

Detecting hallucinations in large language models using semantic entropy | Nature

作者想出了一种办法,可以检测大语言模型的一种幻觉:捏造(confabulation)。因为一个想法在语义层面(meaning level)可以计算不确定性,而不是只在特定的词序列上计算。类似于:同一个想法可以用很多不同方式表达。

作者认为,不能泛泛而谈大语言模型的幻觉。因为幻觉分很多类型。对于大模型随机犯下的错误而不是系统错误,可以归于捏造。

作者开发了一个定量指标:衡量对于某个输入,它在多大程度上可能导致 LLM 生成随意、缺乏依据的答案。

自由生成(free-form generation)指开放式文本生成,没有固定答案选项。作者认为,以往关于 LLM 不确定性的研究,主要集中在更简明的场景,比如分类、回归任务。不过 LLM 更关键的应用是自由生成,毕竟现在大家都在用。如果能给自由生成的结果量化指标会很有用。

作者定义了语义熵(semantic entropy),这种熵是基于句子意义来计算。高熵对应高不确定性。简单地说,如果模型在语义层面上很犹豫,生成的内容在意义上差异很大(互相矛盾),熵就会高。如果模型无论怎么说都指向同一个含义,一句话用不同的方法表达一个意思,语义熵就低。LLM 输出的多样性不等于语义上的不确定性。

语义熵试图估计自由回答的语义分布的熵,而非 token 分布的熵。

语义聚类:对每个问题,多次采样生成可能答案。用算法把答案聚类到语义相似的簇里。判断语义相似的依据是双向蕴涵(bidirectional entailment),即 A 蕴涵 B,并且 B 蕴涵 A。

作者用 LLMNLI 工具来判断两句话是否互相蕴涵。NLI(自然语言推理)我之前在网课里了解过,判断句子的关系的,例如Entailment(蕴含),Contradiction(矛盾),Neutral(中性、无关)。

如果回答很长,里面有多个信息点,先拆成 factoids(单条可验证事实)。对每个 factoid:反向生成可能对应的问题,LLM 对每个问题多次生成答案,对这些答案计算 semantic entropy

使用 Rao–Blackwell 化的蒙特卡洛积分 对语义等价类 $C$ 求期望,从而估计公式:

本质上是用采样的方法近似计算语义熵,每个 $C_i$ 是一个语义类别(cluster)。其中 $P(c)$ 是生成序列属于语义类别 $c$ 的概率。

这里

用来估计语义类别(cluster)的类别分布。

如果没有这一步归一化,由于序列长度归一化,类别“概率”可能超过 1,导致计算异常。

对于无法获取序列概率的情况(比如GPT-4就获取不到),用离散语义熵,

就是: