DoLa:对比层解码提高大型语言模型的事实性

news2024/9/23 11:26:23

DoLa:对比层解码提高大型语言模型的事实性

  • 摘要
  • 1 引言
  • 2 方法
    • 2.1 事实知识在不同层级上演化
    • 2.2 动态早期层选择
    • 2.3 预测对比
  • 3 实验
    • 3.1 任务
    • 3.2 实验设置
    • 3.3 多项选择
      • 3.3.1 TruthfulQA:多项选择
      • 3.3.2 FACTOR:维基、新闻
    • 3.4 开放式文本生成
      • 3.4.1 TruthfulQA
      • 3.4.2 推理链思维
    • 3.5 GPT-4的自动评估
  • 分析
    • 4.1 静态与动态过早层选择
    • 4.2 随机层选择基准线
    • 4.3 重复惩罚
    • 4.4 非LLaMA模型
    • 4.5 定性研究
    • 4.6 延迟
  • 相关工作
  • 限制
  • 总结

在这里插入图片描述

摘要

尽管大型语言模型(LLM)具有很强的功能,但它们容易产生幻觉,即生成与预训练期间观察到的事实偏离的内容。

本文提出了一种简单的解码策略,用于减少预训练的LLM中的幻觉,该策略不需要依赖检索的外部知识或额外的微调。

本方法通过对比从 较高层和较低层 投影到 词汇空间 所得到的 logits 之间的差异来获得下一个token的分布,利用了LLM中事实知识通常局限于特定的Transformer层的事实。这种 对比层解码(DoLa)的方法能够更好地表现出事实知识,并减少生成不正确事实的情况。DoLa在多项选择任务和开放式生成任务中始终提高了真实性,例如在TruthfulQA上将LLaMA系列模型的性能提高了12-17个百分点,展示了其在使LLM可靠地生成真实事实方面的潜力。

较低层在模型中位于输入端,接收原始文本或输入序列,并提取更底层的特征,如字符级别的信息或词法特征。较高层则位于模型的更深部分,接收来自较低层的抽象特征,并进行更高级别的语义理解和表示。
较低层在模型中更加接近原始输入数据,特征更加具体和细粒度。这些层通常更加关注输入序列的局部特征和词法信息,如词形、词频等。较低层在模型中承担了提取原始特征和语法结构的任务。相比之下,较高层在模型中更加抽象和语义化。这些层能够捕捉更高级别的语义关系、推理能力和语篇信息。较高层在模型中负责对输入序列进行深入理解和建模,从而生成更具语义连贯性和上下文一致性的输出。

较高层和较低层分别表示了不同级别的语义信息和词法信息。通过将这些层的输出经过投影到词汇空间,可以获得每个词的logits。

词汇空间
是指在自然语言处理任务中,用于表示所有可能词汇的集合。在文本处理任务中,通常将文本表示为由单词或词汇构成的序列。词汇空间是包含了所有可能出现的单词或词汇的集合,它定义了模型可以使用的所有词汇的范围。

在语言模型中,logits表示了每个词在生成文本时的得分或概率。

1 引言

大型语言模型(LLM)在许多自然语言处理(NLP)应用中展现出了巨大的潜力。然而,尽管LLM的性能不断提升并出现了新的能力,它们会产生“幻觉”,即生成与预训练期间观察到的真实世界事实偏离的内容,这仍然是一个持续存在的挑战。这对于高风险应用(例如临床/法律环境)特别是可靠生成可信文本至关重要,因此这代表了部署LLM的重要瓶颈。

尽管对LLM幻觉的确切原因尚不完全清楚,但可能的原因之一是由于最大似然语言建模目标(the maximum likelihood language modeling objective) ,该目标最小化了数据分布与模型分布之间的前向KL散度。这个目标可能导致模型具有Mass-seeking behavior(寻找质心行为) ,使得LM为不完全符合训练数据中嵌入的知识的句子分配非零概率。实证上,通过在有限数据上使用下一个词预测目标训练的LM已被证明会导致模型仅仅利用语言知识来识别训练示例中的表面模式,而不是识别和生成从训练语料库中提取的真实世界事实。

最大似然语言建模目标(Maximum Likelihood Language Modeling Objective)是一种用于训练语言模型的优化目标。语言模型的目标是根据先前的文本序列预测下一个词或字符的概率分布。最大似然语言建模目标旨在最大化模型预测下一个词的概率与实际观察到的下一个词的匹配程度。
具体来说,给定一个训练集,包含多个文本序列,可以将每个序列表示为一个由单词或字符组成的序列。对于每个序列,我们可以定义一个条件概率分布,表示在给定前面的文本序列的情况下,下一个词或字符的预测 概率。
最大似然语言建模目标的核心思想是通过最大化训练集中所有序列的条件概率来训练模型。具体地,我们希望模型的预测概率尽可能接近训练集中实际观察到的下一个词或字符。

前向KL散度(Forward KL Divergence),也称为KL散度损失、相对熵损失或KL散度损失项,是一种用于衡量两个概率分布之间差异的度量。
在机器学习中,KL散度用于比较两个概率分布P和Q之间的差异程度。前向KL散度衡量的是从P到Q的差异,即将P作为参考分布,衡量Q相对于P的不确定性。
具体来说,对于离散概率分布,前向KL散度定义如下:
K L ( P ∣ ∣ Q ) = Σ P ( x ) ∗ l o g ( P ( x ) / Q ( x ) ) KL(P || Q) = Σ P(x) * log(P(x) / Q(x)) KL(P∣∣Q)=ΣP(x)log(P(x)/Q(x))
其中,P(x)和Q(x)分别表示P和Q在事件x上的概率。
前向KL散度的值越大,表示两个概率分布之间的差异越大。当两个分布完全相同时,前向KL散度为0。当P和Q之间有差异时,前向KL散度大于0。
前向KL散度可以在训练机器学习模型中用作损失函数的一部分。在训练过程中,通过最小化前向KL散度,可以使模型的输出概率分布逐渐接近目标概率分布,从而实现模型的优化和拟合。

根据这段文字,“Mass-seeking behavior” 意味着LM倾向于聚集在数据分布的中心或代表性点上,并且可能会给不完全符合训练数据中嵌入的知识的句子分配非零概率。这种行为可能导致LM生成与训练语料库中提取的真实世界事实不一致的句子。换句话说,LM更注重捕捉训练样本中的表面模式,而不是真正识别和生成基于训练语料库的真实世界事实。

从模型可解释性的角度来看,Transformer语言模型被宽泛地显示为在较低层中编码“较低级”的信息(例如,词性标签),而在较高层中编码更多的“语义”信息。
最近,Dai等(2022)发现预训练的BERT模型中的“知识神经元”分布在最顶层。Meng等(2022)表明,事实知识甚至可以通过操作自回归Transformer语言模型中的特定一组前馈层来进行编辑。
本文提出利用这种知识的模块化编码,通过对比解码方法来增强LM中的事实知识,其中下一个词的输出概率是通过较高层和较低层得到的logits之间的差异来获得的。通过强调较高层的知识并淡化较低层或中间层的知识,可以使LM更具事实性,从而减少幻觉。
在这里插入图片描述
*这段文字描述了基于Transformer的语言模型(LM)在不同层次逐渐融合更多事实信息的过程。观察结果表明,虽然在不同层次中,“Seattle”作为下一个词的概率保持相似,但正确答案“Olympia”的概率从较低层次逐渐增加到较高层次。DoLa利用这个事实,通过对比两个层次之间的差异来增强LLM模型的概率,使其更倾向于生成符合事实的输出。
*

图1显示了一个简单示例的这一思想的示例。虽然“Seattle”在所有层中都保持较高的概率——这可能是因为它是一个句法上合理的答案,但是在较高层注入更多的事实知识后,真实答案“Olympia”的概率增加了。在这种情况下,通过对比不同层之间的差异,可以揭示出真实答案。基于这一概念,提出了一种新的解码方法,即 对比层解码(DoLa),以更好地展示嵌入在LLM中的事实知识,而无需检索外部知识或进行额外的微调。

对TruthfulQA和FACTOR Muhlgay等的实验表明,DoLa能够提高LLaMA系列模型的真实性。对StrategyQA和GSM8K的思维链推理以及开放式文本生成结果(使用GPT-4评估)的进一步实验也显示出它可以促进更具事实性的推理。最后,对于生成开放式文本的实验结果表明,与原始解码方法相比,DoLa能够生成更具信息量和显著更具事实性的响应,从而获得更好的评分。从效率的角度来看,发现DoLa在解码过程中只引入了很小的额外延迟,因此可以作为一种实用且有用的解码策略,用于提高LLM的真实性。

2 方法

最近的语言模型由一个嵌入层、N个堆叠的Transformer层和一个仿射层ϕ(·)组成,用于预测下一个词的分布。给定一个token序列{ x 1 , x 2 , . . . , x t − 1 x_1, x_2, . . . , x_{t−1} x1,x2,...,xt1},嵌入层首先将token嵌入到一个向量序列 H 0 = H_0 = H0= { h 1 ( 0 ) , . . . , h t − 1 ( 0 ) h^{(0)}_1, . . . , h^{(0)}_{t−1} h1(0),...,ht1(0)}中。然后, H 0 H_0 H0会依次经过每个Transformer层的处理。将第 j j j层的输出表示为 H j H_j Hj。然后,词汇头 ϕ ( ⋅ ) ϕ(·) ϕ()预测下一个标记 x t x_t xt的概率。

在这里插入图片描述
其中X是词汇集。

与将ϕ仅应用于最后一层不同,本方法对比高层和低层的信息以获得下一个标记的概率。更具体地说,对于较低的层次,还使用 ϕ ( ⋅ ) ϕ(·) ϕ()计算下一个标记的概率,

在这里插入图片描述
将语言头直接应用于中间层的隐藏状态的思想被称为 早期退出(early exit),即使没有特殊的训练过程,也被证明是一种有效的推理方法,因为Transformer层中的 残差连接(residual connections) 使得隐藏表示逐渐演变而不会出现突变。为了简洁起见,使用 q j ( x t ) q_j(x_t) qj(xt)表示 q j ( x t ∣ x < t ) q_j(x_t | x<t) qj(xtx<t),然后通过以下方式计算下一个token的概率:

在这里插入图片描述

在传统的推理过程中,模型会一直通过所有的层级进行前向计算,直到最后一层得到最终的输出。然而,早期退出的想法是在模型的中间层级中引入额外的预测头(prediction head),使得模型可以在中间层级上进行预测并提前输出结果。通过在中间层级上添加预测头,模型可以在计算过程中进行一些中间的预测,而不必等待整个网络完成所有的计算。这样可以在某些情况下提高推理的速度,并且可以在某些层级上提供更早、更粗略的结果。这对于一些实时应用或资源受限的环境中特别有用。

在Transformer模型中,残差连接(residual connections)是一种技术,用于解决深度神经网络中的梯度消失和训练困难的问题。它通过将输入信号与层内的输出信号相加,从而允许信息在网络中跳跃传播,使得网络能够更容易地学习和优化。
在每个Transformer层中,输入信号(例如,注意力机制的输入)通过两个子层:多头自注意力机制(multi-head self-attention)和前馈神经网络(feed-forward neural network)。残差连接就是将输入信号与子层的输出信号相加,得到层内的最终输出。
数学上,假设输入信号为x,子层的输出为F(x),则残差连接可以表示为:
o u t p u t = x + F ( x ) output = x + F(x) output=x+F(x)
这种残差连接的设计使得网络的梯度能够更容易地在反向传播过程中传递。如果子层的输出F(x)接近于零,那么残差连接就起到了"跳过"子层的作用,保留了输入信号的信息。这有助于防止梯度消失,并使得网络能够更快地收敛和学习更复杂的表示。

这里,M层被称为早期层(premature layer),而最终层被称为成熟层(mature layer)。
操作符 F ( ⋅ , ⋅ ) F(·, ·) F(⋅,⋅) 在第2.3节中会进一步详细介绍,它用于通过在对数域中计算两个分布之间的差异来对比早期层和成熟层的输出分布。在每个解码步骤中,使用分布距离度量 d ( ⋅ , ⋅ ) d(·, ·) d(⋅,⋅)(使用Jensen-Shannon散度)来动态选择早期层,该度量衡量成熟层与J中所有候选层之间的距离。第2.1节和第2.2节中会详细讨论 d ( ⋅ , ⋅ ) d(·, ·) d(⋅,⋅)。选择具有最大距离 d ( ⋅ , ⋅ ) d(·, ·) d(⋅,⋅)的层作为早期层的动机是为了最大化成熟层和早期层之间的差异。

2.1 事实知识在不同层级上演化

使用32层的LLaMA-7B模型进行初步分析。

在这里,计算早期退出输出分布 q j ( ⋅ ∣ x < t ) q_j(· | x<t) qjx<t 和最终层输出分布 q N ( ⋅ ∣ x < t ) q_N(· | x<t) qNx<t之间的Jensen-Shannon散度(JSD),以展示早期退出输出与最终层输出的差异。图2显示了解码输入问题的答案时的JSD值,从中可以观察到两种模式。

在这里插入图片描述
最终第32层和偶数层早期退出层之间的Jensen-Shannon散度。列名表示每个解码步骤中预测的下一个标记。行名表示早期退出层的层索引,从第0层(词嵌入层)到第30层。

Jensen-Shannon散度(Jensen-Shannon Divergence,JSD)是一种用于衡量两个概率分布之间差异的统计度量。它是由Jensen不等式和Kullback-Leibler散度(KL散度)推导而来。
KL散度是用于衡量一个概率分布相对于另一个概率分布的不确定性或信息损失的度量。然而,KL散度并不是对称的,即KL(P||Q) ≠ KL(Q||P),其中P和Q是两个概率分布。为了解决这个非对称性,JSD将两个概率分布的KL散度的平均值作为度量,它的计算公式如下:
J S D ( P ∣ ∣ Q ) = ( K L ( P ∣ ∣ M ) + K L ( Q ∣ ∣ M ) ) / 2 JSD(P||Q) = (KL(P||M) + KL(Q||M)) / 2 JSD(P∣∣Q)=(KL(P∣∣M)+KL(Q∣∣M))/2
其中,M是P和Q的平均分布,计算方式为M = (P + Q) / 2。
JSD的取值范围在0到1之间,当P和Q完全相等时,JSD为0;当P和Q完全不同且无交集时,JSD为1。

模式1: 第一种模式是在预测重要的命名实体或日期时,例如图2中的Wole Soyinka和1986,这些需要事实知识。我们观察到在较高层级上计算得到的JSD仍然非常高。这种模式表明,模型在最后几层仍在改变其预测结果,并可能将更多的事实知识注入到预测中。

模式2: 第二种模式是在预测功能词(如was、the、to、in)以及从输入问题中复制的token(如first Nigerian、Nobel Prize)时。在预测这些“简单”token时,可以观察到从中间层开始,JSD变得非常小。这一发现表明,语言模型在早期层已经决定了要生成的标记,因此在较高层级上几乎保持输出分布不变。这一发现也与早期退出语言模型中的假设一致。

从定性上讲,当下一个词的预测需要事实知识时,LLaMA似乎会在较高层级上改变预测结果。因此,在突变前/后的层之间对比可能会放大来自较高层级的知识,并使模型更加依赖其内部的事实知识。此外,这种信息的演化似乎会逐个token地变化。在本文的方法中,需要准确选择包含合理但较少事实信息的早期层,而这个层级不一定总是保持在相同的早期层。本文提出了一种动态选择早期层的方法,如图3所示。
在这里插入图片描述

2.2 动态早期层选择

为了放大对比解码的效果,理想情况下应选择与最终层输出最不同的早期层作为最佳的早期层。为了在每个时间步骤上实现动态的早期层选择,采用以下两个层获得的下一个词分布之间的距离度量,
在这里插入图片描述
其中JSD(·, ·)表示Jensen-Shannon散度。在早期层的子集中,选择有最大散度的层作为早期退出的目标层,即早期层——第M层(0 ≤ M < N),
在这里插入图片描述
J J J是考虑用于早期层选择的候选早期层的集合。对于具有可变层数的LLaMA模型,根据其总层数将Transformer层分为2到4个"桶",以便专注于与某个层级范围的对比。仍然使用验证集来根据当前任务选择最佳的桶。更多细节请参见第3.2节。

这种动态层选择策略使得模型能够根据每个令牌的复杂性和难度选择最合适的早期层,从而更好地利用Transformer模型不同层级学到的知识。

除了动态层选择策略外,还可以考虑一种非常简单的方法,即在所有可能的早期层上使用验证集进行穷举实验,并选择具有最佳验证性能的层。将这种简单方法称为DoLa-static。

然而,DoLa-static存在以下缺点:

  • 1)层级的搜索空间较大,
  • 2)最佳层级对数据分布敏感,因此需要符合数据分布的验证集。

本文提出的动态层选择策略通过缩小层级搜索空间并减少对符合数据分布的验证集的依赖,从而缓解了静态层选择方法的缺点。在第4.1节中对比了这种动态策略与DoLa-static方法的有效性。

2.3 预测对比

根据第2.2节获得的早期层和成熟层,目标是放大成熟层的输出,同时降低早期层的输出。按照Li等人(2022)提出的对比解码方法,从成熟层的对数概率中减去早期层输出的对数概率。然后,使用得到的分布作为下一个词的预测结果,如图1所示。
在这里插入图片描述
类似于Li等人(2022年)的方法,子集 V h e a d ( x t ∣ x < t ) ∈ X V_{head}(x_t|x_{<t})∈ X Vheadxtx<tX被定义为是否具有足够高的成熟层输出概率的token,
在这里插入图片描述
如果成熟层中一个token的预测概率过小,那么它很可能不是一个合理的预测。因此将该令牌的概率设置为零,以最小化误报和漏报的情况。在DoLa的背景下,误报指的是一个不合理的令牌,在对比后由于不同层对这些不合理令牌的不稳定低概率范围,可能会被奖励高分。漏报指的是当模型对一个简单决策非常自信时,高分令牌的输出概率在不同层中变化不大,导致对比后得分较低,所以需要在这种情况下强制模型仍然从这些高分令牌中进行选择。这种策略被称为自适应可信度约束。

重复惩罚(Repetition Penalty) 是为了解决DoLa方法可能导致模型生成语法不正确的段落的问题。尽管在实证研究中没有观察到这样的问题,但是发现了DoLa生成的分布有时倾向于重复先前生成的句子,特别是在生成长的思维链推理序列时。因此,在解码过程中,引入了Keskar等人(2019年)提出的简单重复惩罚方法,其中使用了θ = 1.2。关于重复惩罚的实证分析结果在第4.3节中进行了展示。

3 实验

3.1 任务

考虑两种类型的任务:多项选择任务和开放式生成任务。

对于多项选择任务,使用了TruthfulQA和FACTOR(新闻/维基)。
对于开放式生成任务,使用了TruthfulQA(由经过微调的GPT-3评估),以及涉及推理的任务,特别是StrategyQA和GSM8K。

这两个任务需要进行思维链推理。最后,使用Vicuna QA基准提出的GPT-4自动评估来评估作为聊天机器人助手的性能。

3.2 实验设置

使用了LLaMA模型的四个规模(7B、13B、33B、65B),并将它们与三个基线进行比较:
1)原始解码(根据任务使用贪婪解码或抽样解码),
2)对比解码(CD),其中LLaMA-7B作为业余模型,而LLaMA-13B/33B/65B作为专家模型,
3)推理时间干预(ITI)。ITI使用LLaMA-7B和在TruthfulQA上训练的线性分类器。

实验重点是对比DoLa中的层差异和CD中的模型差异,没有使用额外的技术,例如限制早期层或业余模型的上下文窗口,以保持实验设置的简洁。

将自适应可信度约束(α)设置为0.1,重复惩罚(θ)设置为1.2,以符合之前的研究。

在动态早期层选择中,将Transformer层分成多个桶,并选择一个桶作为候选层(J)。对于LLaMA-7B(32层),使用两个桶:[0, 16), [16, 32);
对于LLaMA-13B(40层),它们是[0, 20), [20, 40);
对于LLaMA-33B(60层),有三个桶:[0, 20), [20, 40), [40, 60);
对于LLaMA-65B(80层),有四个桶:[0, 20), [20, 40), [40, 60), [60, 80)。
第0层指的是第一个Transformer层之前的词嵌入输出。

为了提高效率,只考虑偶数层(第0层、第2层等)作为候选层。这种设计限制了超参数搜索空间,只需要进行2-4次验证运行。

使用两折交叉验证(TruthfulQA-MC、FACTOR)或特定的验证集(GSM8K、StrategyQA)来选择最佳的桶。对于缺乏验证集的Vicuna QA,使用GSM8K集合中的最佳桶。

3.3 多项选择

3.3.1 TruthfulQA:多项选择

使用Lin等人(2022年)和Li等人(2023年)的默认QA提示。

在自适应可信度约束中,将 − ∞ -∞ 替换为-1000,以避免破坏语言似然分数。对于似然分数的计算,重复惩罚是不必要的。使用两折交叉验证来确定候选层的最佳桶,基于MC3分数。表1中的结果显示,LLaMA模型在四个规模上的性能显著提升,优于ITI和CD,并且证实了我们方法的有效性。在两折交叉验证中,较高的层一直被选择:7B:[16, 32);13B:[20, 40);33B:[40, 60);65B:[60, 80)。

在这里插入图片描述

3.3.2 FACTOR:维基、新闻

在FACTOR的多项选择任务中,每个示例都有一段长段落和四个完整的句子选项,其中一个是正确答案。使用其维基和新闻子集作为两折交叉验证的两个折。在自适应可信度约束中,使用-1000而不是 − ∞ -∞ 。表1显示,本方法通常优于基线2-4%,比CD更有效,除了13B模型在维基子集上的情况。对于FACTOR,所选择的候选层一直较低:7B为[0, 16),13B/33B/65B为[0, 20)。这与TruthfulQA选择较高的层不同。这是因为TruthfulQA的多项选择项目具有短的关键事实回答,而FACTOR的回答是长句子的完成。正如在第2.1节中指出的,与较高的层进行对比对于关键事实效果更好,但对于包含许多易于预测标记的句子,较低的层可能更合适。

3.4 开放式文本生成

3.4.1 TruthfulQA

在开放式的TruthfulQA设置中,真实性和信息性由两个经过微调的GPT-3进行评判。通过不回答问题,即回答“我没有评论”,可以轻松获得100%的真实性得分,但信息性得分为0%。在实验中,遵循第3.3.1节中的两折交叉验证结果,使用较高的候选层进行解码。

在这里插入图片描述

使用与Lin等人(2022年)和Li等人(2023年)相同的默认QA提示。表2显示,本文的方法始终提高了真实性得分,保持信息性在90%以上,并且拒绝回答的比例(%Reject)低于10%。它在四个LLaMA模型上将整体(%Truth*Info)得分提高了12%-17%,达到了ITI的性能水平,而ITI依赖于带有人工标签的监督训练,与本文的方法不同。

CD提高了真实性,但经常拒绝回答,生成“我没有评论”这样的回答,例如LLaMA-33B模型有超过60%的时间。这影响了它的%TruthInfo得分。怀疑这是因为CD在对比时使用LLaMA-7B,而33B和7B模型在大多数问题上具有类似的知识水平。主要的区别在于33B在遵循指示方面更好,这解释了为什么CD经常回答“我没有评论”,因为这个答案在指示提示中被指明。

3.4.2 推理链思维

在StrategyQA和GSM8K上评估了我们的解码策略,这些任务不仅需要准确性,还需要推理链思维(CoT)能力,以获得良好的性能(Wei等人,2022b)。我们随机抽样了GSM8K训练集的10%作为这两个任务的验证集。最佳层桶为7B的[0, 16),13B/33B/65B的[0, 20),与FACTOR的结果一致,表明与较低层进行对比对于推理任务是有效的。

StrategyQA: 在StrategyQA上评估了DoLa,这是一个需要多跳策略回答的数据集,使用了CoT提示。如表2所示,DoLa在四个LLaMA规模上提高了1-4%的准确率,而CD大多降低了性能。这表明,将大型模型与较小模型进行对比可能会损害推理能力,因为较小模型也具有一定水平的推理能力。相反,本文的方法在缺乏完整推理能力的较低层之间进行对比,展示了其有效性,并且对比不同层而不是不同模型是必要的。

GSM8K: 在GSM8K上测试了DoLa,这是一个需要事实知识和算术推理的数学问题基准。表2显示,除了7B外,大多数LLaMA规模的准确率提高了2%。这表明,即使在需要算术推理的任务中,使用DoLa对比较高或较低层是有益于性能的。

3.5 GPT-4的自动评估

在Vicuna QA基准测试上评估了本解码方法,该测试使用GPT-4进行自动评估,以评估开放式聊天机器人的能力。根据GSM8K/FACTOR的验证结果,使用较低层作为解码的候选层,使用四个LLaMA模型。GPT-4进行的成对比较评分结果如图4所示,显示DoLa在基线模型中表现出色,特别是在13B和33B模型中。这表明DoLa即使在开放式聊天机器人场景中也很有效。在第4.5.4节的分析中还展示了一些定性研究的例子。

在这里插入图片描述

分析

4.1 静态与动态过早层选择

引入了DoLa的一个变体,即DoLa-static,它在整个解码过程中选择一个固定的层进行对比。通过列举来自所有层的DoLa-static结果,展示了GSM8K验证集的一些结果(图5),以及附录B中FACTOR的结果(图7)。

在这里插入图片描述

在图5a中,通过对比较低的层,DoLa-static的性能更好。一些“最佳”层,如LLaMA-7B中的第10层,甚至超过了DoLa的表现。然而,这些最佳层在不同的数据集上具有敏感性,使得DoLa-static在没有任务特定验证集的情况下不够通用,而实际应用中可能并不总是可用。

随机抽取了另外10%的GSM8K子集,并在图5b中展示了结果,DoLa-static在这两个10%的GSM8K子集中显示出不同的最佳层。在子集#1中,第10层是最佳层,而在子集#2中,第2层是最佳层(图5a和5b)。使用子集#1的最佳层来处理子集#2会降低其性能,突显了DoLa-static对固定层选择的敏感性。相比之下,通过对比较低的层,DoLa在两个子集中都保持了较高的得分,几乎与表现最佳的DoLa-static层相匹配,突显了DoLa的稳健性。此外,DoLa简化了超参数搜索空间:它只需要进行2-4次桶测试,几乎比DoLa-static需要的对所有层进行的16-40次运行少10倍。

4.2 随机层选择基准线

在这里插入图片描述

提出的方法中一个问题是:这种动态层选择方法有多优化?
为了进行比较,使用了一个类似于DoLa的“随机”基准线,但是层是随机选择的。表3中的结果显示,这种随机方法的表现比原始基准线要差,突显了基于JSD的层选择策略的重要性。

4.3 重复惩罚

在这里插入图片描述

之前讨论过,DoLa有时会重复内容,特别是在StrategyQA和GSM8K中。为了减轻这个问题,引入了重复惩罚。图6显示这种惩罚改善了DoLa在StrategyQA上的表现,但对基准线的表现产生了负面影响。对于CD,惩罚会带来轻微的提升,但仍不如基准线有效。GSM8K的相同结果包含在附录D中。

4.4 非LLaMA模型

在这里插入图片描述
为了检查DoLa在LLaMA系列之外的模型上的适用性,在MPT-7B模型(MosaicML,2023年)上对DoLa进行了测试。表4中的初步结果显示,在大多数数据集上都获得了性能提升,但在GSM8K上没有。这表明DoLa具有在各种Transformer模型中推广的潜力。GSM8K的例外情况可能源于MPT-7B的有限数学能力。

4.5 定性研究

在这里插入图片描述

在表5中,展示了使用LLaMA-33B回答的TruthfulQA示例,包括使用DoLa和不使用DoLa的得分,通过经过微调的GPT-3对其真实性和信息量进行评分。这些答案是通过贪婪解码确定性地生成的。在第一个示例中,基准线生成了合理但不正确的日期“1776年7月4日”,而DoLa则输出了正确的日期“1776年8月2日”。在第二个示例中,基准线提供了错误的建议“在报失人员前等待24小时”,而DoLa提供了真实的回应。这些实例突显了DoLa在避免生成虚假信息方面的有效性。

在第三个示例中,与基准线相比,DoLa在真实性方面表现较差。基准线表示“我没有评论”,在真实性得分为1.0,信息量得分为0.0。相反,DoLa提供了详细但不正确的信息,在真实性得分为0.0,信息量得分为1.0。附录E中包含了更多的TruthfulQA示例。附录F中还包含了更长回答的其他Vicuna QA示例。

4.6 延迟

在这里插入图片描述
还评估了DoLa对解码延迟的影响,并与基准线进行了比较,两者都采用贪婪解码。表6中的结果显示,DoLa将解码时间增加了1.01到1.08倍。这种适度的增加表明本文的方法可以广泛应用,成本增加很小甚至可以忽略不计。

相关工作

限制

虽然DoLa方法增强了LLM的真实性,但它也有一些限制,需要注意:

  1. 着重于真实性:尚未探索我们的方法在其他方面(如指令遵循[Wei et al., 2021]或从人类反馈中学习[Ouyang et al., 2022])的表现如何。
  2. 仅限于推理:依赖现有的架构和预训练参数,没有使用人类标签或事实知识库进行微调[Li et al., 2023],限制了可能的改进。
  3. 不依赖外部知识:本方法仅依赖模型的内部知识,而不使用外部检索模块,例如一些检索增强语言模型所做的那样[Izacard et al., 2022; Borgeaud et al., 2022; Ram et al., 2023]。因此,它无法纠正训练过程中获取的错误信息。

需要注意的是,我们的方法提供了一种基础性改进,理论上适用于任何基于Transformer的LLM。上述限制可以通过将上述要素与我们的解码策略结合的未来工作进一步解决。

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1141385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

polyloss详解

1、常见的泰勒展开公式 2、polyloss引入动机 2.1、polyloss定义 polyloss通过泰勒展开来逼近损失函数的简单框架&#xff0c;将损失函数设计为多项式函数的线性组合 2.2、polyloss主要贡献 提出了一个新的框架来理解和设计损失函数 PolyLoss可以让多项式基根据目标任务和数…

JVM虚拟机:Java对象的头信息有什么?

本文重点 在前面的课程中,我们学习了对象头,其中对象头包含Mark Word和class pointer,当然数组还会有一个数组长度。本文主要分析Mark Work中包含的信息。 Mark Word 以下两张图是一个意思: 32位 32位 64位 以上就是Mark Word会存储的信息,这个意思是说Java对象在不同…

如何使用手机蓝牙设备作为电脑的解锁工具像动态锁那样,蓝牙接近了电脑,电脑自动解锁无需输入开机密码

环境&#xff1a; Win10 专业版 远程解锁 蓝牙解锁小程序 问题描述&#xff1a; 如何使用手机蓝牙设备作为电脑的解锁工具像动态锁那样&#xff0c;蓝牙接近了电脑&#xff0c;电脑自动解锁无需输入开机密码 手机不需要拿出来&#xff0c;在口袋里就可以自动解锁&#xff…

「林曦的亲子美育」讲讲关于阅读的那些事儿

「林曦的亲子美育」是“林曦的小世界”2023年策划的一档新栏目。林曦老师作为一个“小男生的妈妈”,在这些年分享了许多关于亲子教育的心得&#xff1a;以“美”作为连接和最高标准&#xff0c;会护持着小朋友的选择和人生。教育是一个生活的过程。做一餐饭、读一本书、看一张画…

存储器概述

一、存储系统基本概念

vector容器初始化和对象

&#xff08;1&#xff09;a.assign(b.begin(), b.begin()3); //b为向量&#xff0c;将b的0~2个元素构成的向量赋给a &#xff08;2&#xff09;a.assign(4,2); //是a只含4个元素&#xff0c;且每个元素为2 &#xff08;3&#xff09;a.back(); //返回a的最后一个元素 &#xf…

Python入口顶部人体检测统计进出人数

程序示例精选 Python入口顶部人体检测统计进出人数 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《Python入口顶部人体检测统计进出人数》编写代码&#xff0c;代码整洁&#xff0c;规则&a…

【OpenCV实现平滑图像形态学变化】

文章目录 概要目标腐蚀膨胀开运算结构元素&#xff08;内核&#xff09;小结 概要 形态学变化是一组简单的图像操作&#xff0c;主要用于处理二值图像&#xff0c;即只包含黑和白两种颜色的图像。这些操作通常需要两个输入&#xff0c;原始图像和一个内核&#xff08;kernel&a…

计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】

第三章 进程同步 【期末复习|考研复习】 计算机系统系列文章传送门&#xff1a; 第一章 计算机系统概述 第二章 进程管理 第三章 进程同步 第四章 内存管理 第五章 文件管理 第六章 输出输出I/O管理 文章目录 第三章 进程同步 【期末复习|考研复习】前言三、进程同步3.1 临界资…

腾讯云优惠券、代金券、云服务器折扣券领取方法及使用教程

腾讯云优惠券是腾讯云为用户提供的一种优惠活动&#xff0c;通常包括代金券和折扣券两种类型&#xff0c;代金券可以在购买腾讯云相关产品时直接抵扣订单金额&#xff0c;而折扣券则可以在购买腾讯云相关产品时享受一定的折扣。 腾讯云作为国内领先的云计算服务提供商&#xff…

构建客户门户的痛点及低代码工具解决方案

企业如何做好数字化转型呢&#xff1f; 如果笼统地说起“数字化转型”&#xff0c;这个概念太大了&#xff0c;它涉及到了企业管理中的方方面面。数字化转型是一个持续不断的过程&#xff0c;既要在整体上进行数字规划&#xff0c;也需要从细节入手&#xff0c;将每一个步骤进…

MQTT(详解)

什么是MQTT MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的通信协议&#xff0c;用于在设备之间传输消息。它通常用于物联网&#xff08;IoT&#xff09;和传感器网络中&#xff0c;可以在不同设备之间进行可靠的通信&#xff0c;而且资源消耗…

单元测试,集成测试,系统测试的区别是什么?

实际的测试工作当中&#xff0c;我们会从不同的角度对软件测试的活动进行分类&#xff0c;题主说的“单元测试&#xff0c;集成测试&#xff0c;系统测试”&#xff0c;是按照开发阶段进行测试活动的划分。这种划分完整的分类&#xff0c;其实是分为四种“单元测试&#xff0c;…

分布式消息队列:Rabbitmq(2)

目录 一:交换机 1:Direct交换机 1.1生产者端代码: 1.2:消费者端代码: 2:Topic主题交换机 2.1:生产者代码: 2.2:消费者代码: 二:核心特性 2.1:消息过期机制 2.1.1:给队列中的全部消息指定过期时间 2.1.2:给某条消息指定过期时间 2.2:死信队列 一:交换机 1:Direct交…

Gloss优化

Gloss优化&#xff0c;Route – Gloss – Parameters .清除不必要的线和过孔&#xff0c;圆滑线&#xff0c;焊盘中间的线&#xff0c;把转角变成圆弧&#xff0c;自动布线总会产生一些布线效果不好、多余过孔等问题。此时可以利用allegro提供的Gloss命令对设计进行优化和调整&…

Facebook广告效果数据获取

一、背景 公司每年在Facebook和Google上投放了大量的广告&#xff0c;我总不能让老板登录Facebook广告投放平台上去看广告效果&#xff0c;其实老板只关注每天花了多少钱引来了多少客户&#xff0c;每个客户平均花费多少钱&#xff0c;其它的他才不关心&#xff0c;有Facebook…

工作小计-GPU硬编以及依赖库 nvcuvidnvidia-encode

工作小计-GPU编码以及依赖库 已经是第三篇关于编解码的记录了。项目中用到GPU编码很久了&#xff0c;因为yuv太大&#xff0c;所以编码显得很重要。这次遇到的问题是环境的搭建问题。需要把开发机上的环境放到docker中&#xff0c;以保证docker中同样可以进行GPU的编码。 1 定…

SpringCloud 微服务全栈体系(五)

第七章 Feign 远程调用 先来看我们以前利用 RestTemplate 发起远程调用的代码&#xff1a; 存在下面的问题&#xff1a; 代码可读性差&#xff0c;编程体验不统一 参数复杂 URL 难以维护 Feign 是一个声明式的 http 客户端&#xff0c;官方地址&#xff1a;https://github.…

国家数据局正式揭牌,数据专业融合型人才迎来发展良机

文章目录 每日一句正能量摘要《数据要素安全流通》《Python数据挖掘&#xff1a;入门、进阶与实用案例分析》《数据保护&#xff1a;工作负载的可恢复性 》《Data Mesh权威指南》《分布式统一大数据虚拟文件系统 Alluxio原理、技术与实践》《云原生数据中台&#xff1a;架构、方…

【安装tensorflow-CPU版本】

一、安装目的二、安装过程三、总结 一、安装目的 使自己的jupyter能用tensorflow 二、安装过程 首先打开anaconda prompt 接着输入conda list 查看自己是否安装了tensorflow 在 Python 中使用 pip 工具来升级 pip 自身并指定了使用清华大学的镜像源进行安装 python -m pip …