DoLa:通过对比层解码提高大型语言模型的事实性
(ICLR 2024)
DoLa = Decoding by Contrasting Layers
motivation
虽然人们对 LMs 幻觉的确切原因尚不完全了解,但一个可能的原因是极大似然语言建模的目标,该目标最小化数据分布和模型分布之间的前向 KL 散度。这个目标可能会导致具有质量寻求行为的模型,从而使 LM 为与训练数据中嵌入的知识完全一致的句子分配非零概率。
从模型可解释性的角度来看,已经粗略地表明 Transformer 语言模型在较早的层中对“低级”信息(例如词性标签)进行编码,并在较晚的层中对更多“语义”信息进行编码。
本文利用了这一事实,通过对比不同层之间的差异来增强 LLM 输出事实正确的概率。
算法
记录模型最后一层(称为“成熟层”,Mature Layer)的输出 logits
每一步动态地选择中间的一个最合适的层 :计算“成熟层”的输出概率分布与每一个“候选早层”的输出概率分布之间的JS散度 ,选择与“成熟层”分布差异最大(即JSD值最高)的那个早层,将其命名为“不成熟层”(Premature Layer)。
最终输出概率为“成熟层”的对数概率减去“不成熟层”的对数概率 。
另外,还有两个小改进:
(1)自适应合理性约束 (Adaptive Plausibility Constraint, APC): 为了防止一些本身概率极低的词元在对比后得分异常高,这个对比操作只应用于在“成熟层”输出中概率已经足够高的一小部分词汇上 。对于不在这个合理范围内的词元,其概率会被设为零(或一个极小值)。
$$
\mathcal{V} _ {head}(x _ {t}|x _ {<t}) = {x _ {t} \in \mathcal{X} : q _ {N}(x _ {t}) \ge \alpha \max _ {w} q _ {N}(w)}
$$
(2)重复惩罚 (Repetition Penalty): 算法发现对比操作有时会增加生成重复内容的倾向,因此会额外施加一个重复惩罚,降低已生成词元的概率。
来自《CTRL: A Conditional Transformer Language Model for Controllable Generation》的方法。
博客之前已经提到贪心或者beam search会导致产生重复的短语和句子。故该论文提出了一种新的采样方案,通过接近贪婪的采样来信任模型分布,但通过惩罚来防止重复。
给定一个生成的词元列表 g,下一个词元的概率分布$p_i$定义为:
$$
p _ {i} = \frac{\exp(x _ {i} / (T \cdot I(i \in g)))}{\sum _ {j} \exp(x _ {j} / (T \cdot I(j \in g)))} \quad I(c) = \theta \text{ if c is True else } 1
$$If c is True
的意思是若词元出现过。