论文阅读笔记:KCTS

题目 Knowledge-Constrained Tree Search Decoding with Token-Level Hallucination Detection
论文链接 https://arxiv.org/abs/2310.09044
作者单位 Department of Computer Science and Engineering, HKUST, Hong Kong SAR
会议 EMNLP2023

一篇幻觉检测并辅助解码的新文章。

介绍

以前的幻觉缓解工作许多都基于训练和微调。但是微调本来就比较麻烦,且可能造成灾难性遗忘等问题。即插即用的解码方法等工作又无法适应基于知识的场景,无法识别需要的知识。

提出了知识约束解码KCD,以及token级别的幻觉检测方法RIPA(Reward Inflection Point Approximation),用来预测幻觉的起始token。

问题陈述

yPLM(yx,k,αk)y ∼ P_{LM} (y|x, k, α_k)

y是生成的文本,x是输入,k是y必须被限制的知识,αk\alpha_k表示y对于k的真实性。

f(y,k)=P(αk=1y,k)f(y,k)=P(\alpha_k=1|y,k)表示生成的y对于k真实的分数,有(没看懂下面这个,估计是为了故事瞎弄的):

PLM(yx,k,αk)PLM(yx)f(y,k)P_{LM} (y|x, k, α_k)\propto P_{LM}(y|x)f(y,k)

然后令牌级别的解码就变成:

进一步定义:

f(y<t,k)f(y,k)f(y_{<t},k)≈f(y,k)

其中y是基于y<ty_{<t}的未来序列分布。

方法

蒙特卡洛树搜索解码

这个其实在前LLM时代已经被研究得比较多了。

选择

V(si)V(s_i)是节点sis_i的真实性。

扩展

选择前k个子节点扩展。

Rollout

如果模拟的话,就应该直接生成到EOS,然后V(s)=f(y,k)V(s)=f(y,k),但是这里直接V(s)=f(y<si,k)V(s)=f(y_{<s_i},k)

回传

这里的ρ是父节点的意思。

重复这4个步骤,然后选择访问次数最高的根的子节点作为下一个token和树的下一个根(这里的根就是已生成文本)

token级别的幻觉检测

将f的求解视为 fact verification 的问题,以前的工作是随机截断或标token级别的幻觉数据。随机截断的问题是可能截断后不再是幻觉,但仍然是负样本;token标记则可能让模型把幻觉之前的好token也和幻觉联系起来(可以想象hades的训练)

RIPA

提出了 Reward Inflection-Point Approximation 来估计一个未完成序列的真实性。

幻觉有“Hallucination Snowballing”效应,即滚雪球,所以需要识别从哪里开始产生幻觉。

把幻觉出现前的token都标为0,可以避免检测器认为前面也是有幻觉的,其实也更有利于MCTS的搜索。

训练

数据是自动生成的:

  1. Knowledge Shuffle: 给一条数据(y, x, k),在数据集中随机替换知识源为 k’,作为 y + k’ 的负例。y的所有token都标为0。
  2. Partial Hallucination:和上面一样,交换后随机采样位置1<i<T,T是y的长度,然后截断。然后让模型依据PLM(yx,yi,k)P_{LM}(y|x,y_i,k)生成,并且把温度调大于1,然后y>iy_{>i}的部分标记为0.(这里我的理解应该是k是后面来的那个?所以新的y和原来的k是负例?)

然后训练数据是两者混合的,除了x和k无法区分的摘要生成,这个就只采取第二个。

Knowledge Weighted Decoding (KWD)

这是KCTS的姐妹方法。就是将RIPA替换为以前的解码方法的引导器。

以前的解码方法:FUDGE就是rerank top-k个token,但是分类器是用随机截断来训练的。

实验

基于知识的对话和摘要。

数据集

Knowledge Grounded Dialogue

使用the Wizard of Wikipedia WoW数据集的测试集。

Summarization

生成式摘要, CNN/DM数据集。

指标

token-based: BLEU-4, Rouge-L, ChrF, METEOR.

knowledge-based: Knowledge-F1(计算 y和k的unigram的F1)和K-Copy(LD是编辑距离的一种,度量y是不是只是机械地复制k)。

还使用了UniEval(使用布尔QA训练的基于model的评估器)。对于对话任务,将自然性、连贯性(与对话上下文)和事实性(已知事实)作为细粒度指标,对于摘要,将连贯性、一致性、流利性、相关性作为细粒度指标。

对于摘要,还使用MFMA,也是模型,和人类标签的相关性达到SOTA。

训练细节

用LoRA在FLAN-T5 XL上,只训练decoder层加一个线性层。(因为LoRA所以训练的参数比较少,这个使用这么大的模型做检测器有点bug哈哈,所以似乎还是有微调的,或者说只能使用于某个模型?)

结果

对话

让KCTS先生成T个token,再让大模型核采样到结束,可以看到确实KCTS是能提高真实性的。

还有人类评估,就不说了。

摘要

局限性

蒙特卡洛方法太慢,FUDGE的方法也得每个token要喂k个给检测器。

评价

这篇是多了knowledge的幻觉检测,看来还不是特别地任务通用,因为不是每个场景都会有knowledge的!

而且用FLAN-T5-XL做检测器,感觉很奇怪,太大了。


论文阅读笔记:KCTS
https://bebr2.com/2023/10/28/论文阅读笔记:KCTS/
作者
BeBr2
发布于
2023年10月28日
许可协议