赞
踩
论文地址:https://arxiv.org/pdf/2405.09818
Chameleon是一个基于token的早期融合多模态模型,能够理解和生成任意序列的文本或者图像。
图像Tokenization。从大小为8192的codebook中奖512*512的图像编码为1024个离散tokens。使用授权图片来训练tokenizer。由于生成人脸的重要性,对人脸图像进行了上采样。该tokenizer的核心弱点是重构具有大量文本的图像,因此遇到需要大量OCR相关的任务会导致模型效果较差。
文本Tokenizer。使用训练数据的子集来训练新的BPE tokenizer,词表大小为65536,其中包含8192个图像codebook tokens,使用sentencepiece库。
将预训练分为两个阶段,第一个阶段占80%,第二阶段20%。
第一阶段。第一阶段包含大量无监督数据的混合数据集,包括:(1) 大约2.9T tokens的纯文本数据集;(2) 使用大约1.4 B的图文对,其能够产生1.5T的图文tokens;(3) 从互联网收集大约400B tokens的图文交错数据。
第二阶段。降低第一阶段数据的权重为50%并混合高质量数据集,同时维护图像文本token的比例相近。此外,包含了指令调优的部分数据集。
当Chameleon超过8B参数和1T tokens时会遇到稳定性问题,而且不稳定性出现在训练后期。为了解决稳定性问题,采用措施:
架构。模型结构大致类似于LLaMa-2。由于训练中后期输出范数的缓慢增长,LLaMa架构会出现复杂的分歧。最终定位到是由softmax的平移不变性导致的。由于模型权重跨模态共享,每个模态会通过轻微增加范数来与其他模态竞争。虽然训练开始时没有问题,但是随着训练进行超过bf16有效表示范围,就会出现分歧。在单一模态中,该问题称为logit漂移问题。
上图5(a)是训练过程中最后Transformer层输出的范数,大约在训练的20%处出现分歧。范数出现不受控增长与loss出现分歧高度相关。在Transformer中Softmax出现在两处:核心注意力机制和logit之后。这里使用QK-Norm来控制softmax输入的范数。此外,除了QK-norm以外,也有必要在注意力和前馈层前引入dropout。但是,该方案对于Chameleon-34B并不足够,其需要额外的范数重排。具体来说,使用Liu et al.
的normalization策略。设
h
h
h表示输入
x
x
x经过自注意力机制后的隐藏向量,则
Chameleon-34B:
h
=
x
+
attention_norm
(
attention
(
x
)
)
output
=
h
+
ffn_norm
(
feed_forward(h)
)
Llama2:
h
=
x
+
attention
(
attention_norm
(
x
)
)
output
=
h
+
feed_forward
(
ffn_norm
(
h
)
)
此外,发现这种类型的normalization与dropout不能很好的结合,因此训练Chameleon-34B不使用dropout。
优化。应用QK-Norm有助于注意力内的softmax,但对于最后输出层的logit shift问题没有帮助。因此,应用z-loss正则化。具体来说,对softmax的配分函数进行正则化,即对于 σ ( x ) i = e x i Z \sigma(x)_i=\frac{e^{x_i}}{Z} σ(x)i=Zexi中的 Z = ∑ i e x i Z=\sum_i e^{x_i} Z=∑iexi加 1 0 − 5 log 2 Z 10^{-5}\log_2 Z 10−5log2Z。Chameleon-7B使用dropout和z-loss实现稳定性,而Chameleon-34B仅需要z-loss。
数据。将SFT数据分为以下类别:文本、代码、视觉对话、图像生成、文本/图像交替生成、安全。
微调策略。SFT阶段平衡模态数据比例至关重要。
论文地址:https://arxiv.org/pdf/2405.12130
LoRA的低秩更新机制可能会限制LLM学习和记忆新知识的能力。本文提出MoRA,能够实现相同可训练参数情况下的高秩更新。
给定预训练权重矩阵
W
0
∈
R
d
×
k
W_0\in\mathbb{R}^{d\times k}
W0∈Rd×k,LoRA利用两个低秩矩阵来计算权重更新
Δ
W
\Delta W
ΔW:
h
=
W
0
x
+
Δ
W
x
=
W
0
x
+
B
A
x
h=W_0x+\Delta Wx=W_0x+BAx \\
h=W0x+ΔWx=W0x+BAx
其中
A
∈
R
r
×
k
A\in\mathbb{R}^{r\times k}
A∈Rr×k和
B
∈
R
d
×
r
B\in\mathbb{R}^{d\times r}
B∈Rd×r表示低秩矩阵。为了确保训练开始时
Δ
W
=
0
\Delta W=0
ΔW=0,LoRA使用高斯分布初始化
A
A
A并初始化B为0。由于
Δ
W
\Delta W
ΔW被低秩分解为
B
A
BA
BA,则
rank
(
Δ
W
)
≤
r
\text{rank}(\Delta W)\leq r
rank(ΔW)≤r。LoRA更新在文本分类或者指令微调上表现出与全秩微调相当的效果,但是在复杂推理或者持续预训上则效果会变差。
基于这些观察,提出假设:低秩更新能够更好利用LLM的原始知识和能力,但是对于需要增强LLM知识和能力的任务来说就很挣扎。经验实验验证,LoRA确实难以学习新知识,即使可以通过增大秩来缓解。
给定预训练权重 W 0 ∈ R d × k W_0\in\mathbb{R}^{d\times k} W0∈Rd×k,LoRA使用两个低秩矩阵 A A A和 B B B来实现低秩更新,总可训练参数为 ( d + k ) r (d+k)r (d+k)r。在相同可训练参数下,方阵 M ∈ R r ^ × r ^ M\in\mathbb{R}^{\hat{r}\times\hat{r}} M∈Rr^×r^的 r ^ = ⌊ ( d + k ) r ⌋ \hat{r}=\lfloor\sqrt{(d+k)r} \rfloor r^=⌊(d+k)r ⌋能够实现最高的秩,因为 r ≪ min ( d , k ) r\ll\min(d,k) r≪min(d,k)。
为了实现该目标,应该缩减
M
M
M的输入微调并增加输出维度。正式来说,
h
=
W
0
x
+
f
decomp
(
M
f
comp
(
x
)
)
h=W_0x+f_{\text{decomp}}(M f_{\text{comp}}(x)) \\
h=W0x+fdecomp(Mfcomp(x))
其中
f
comp
:
R
k
→
R
r
^
f_{\text{comp}}:\mathbb{R}^{k}\rightarrow\mathbb{R}^{\hat{r}}
fcomp:Rk→Rr^表示将
x
x
x输入维度从
k
k
k降低至
r
^
\hat{r}
r^的函数,
f
decomp
:
R
r
^
→
R
d
f_{\text{decomp}}:\mathbb{R}^{\hat{r}}\rightarrow\mathbb{R}^d
fdecomp:Rr^→Rd则是将输出维度从
r
^
\hat{r}
r^增加到
d
d
d的函数。此外,这两个函数应该是非参数化的操作且能在线性时间内执行。对于将
M
M
M转换为
Δ
W
\Delta W
ΔW,对应函数
f
comp
:
R
r
^
×
r
^
→
R
r
^
×
k
f_{\over{\text{comp}}}:\mathbb{R}^{\hat{r}\times\hat{r}}\rightarrow\mathbb{R}^{\hat{r}\times k}
fcomp:Rr^×r^→Rr^×k和
f
decomp
:
R
r
^
×
k
→
R
d
×
k
f_{\over{\text{decomp}}}:\mathbb{R}^{\hat{r}\times k}\rightarrow\mathbb{R}^{d\times k}
fdecomp:Rr^×k→Rd×k。对于任意的
x
x
x,均有
f
decomp
(
M
f
comp
(
x
)
)
=
Δ
W
x
,
∀
x
∈
R
k
f_{\text{decomp}}(M f_{\text{comp}}(x))=\Delta Wx,\forall x\in\mathbb{R}^k \\
fdecomp(Mfcomp(x))=ΔWx,∀x∈Rk
其中
Δ
W
=
f
decomp
(
f
comp
(
M
)
)
\Delta W=f_{\over{\text{decomp}}}(f_{\over{\text{comp}}}(M))
ΔW=fdecomp(fcomp(M))。若上式成立,
M
M
M可以无损扩展为
Δ
W
\Delta W
ΔW。这就能像LoRA那样合并回LLM。
对于
f
comp
f_{\text{comp}}
fcomp和
f
decomp
f_{\text{decomp}}
fdecomp,探索了几种实现函数。一种直接的方法是截取维度,随后在填充相应的维度。即
f
comp
(
x
)
=
x
1
:
r
^
f
decomp
(
x
)
=
[
x
0
]
对应的
Δ
W
\Delta W
ΔW为
Δ
W
=
[
M
0
0
0
]
\Delta W=
但这个方法会造成信息丢失。为了改善效果,共享
M
M
M的行和列来实现更高效的压缩和解压缩。正式来讲,其可以表示为
f
comp
(
x
)
=
[
∑
j
∈
g
i
x
j
]
i
=
1
r
f
decomp
(
x
)
=
[
x
g
~
i
′
]
i
=
1
d
其中,
g
g
g和
g
′
g'
g′表示M中共享行和列的预定义组。
j
∈
g
i
j\in g_{i}
j∈gi表示第
j
j
j维度属于
g
g
g中第
i
i
i个组。
g
~
i
′
\tilde{g}_i'
g~i′表示
g
i
′
g_i'
gi′的反转,表示第i个维度关联
g
′
g'
g′中的第
g
~
i
′
\tilde{g}_i'
g~i′个组。对应的
Δ
W
\Delta W
ΔW为:
Δ
W
i
,
j
=
M
g
~
i
′
,
g
~
j
\Delta W_{i,j}=M_{\tilde{g}_i',\tilde{g}_j} \\
ΔWi,j=Mg~i′,g~j
共享行和列对于较大的秩更有效,因为
Δ
W
\Delta W
ΔW中仅有少量的行或列共享公共行或列。例如,对于
Δ
W
∈
R
4096
×
4096
\Delta W\in\mathbb{R}^{4096\times 4096}
ΔW∈R4096×4096且
r
=
128
r=128
r=128,则有
r
^
=
1024
\hat{r}=1024
r^=1024且
M
∈
R
1024
×
1024
M\in\mathbb{R}^{1024\times 1024}
M∈R1024×1024。在这种情况下,仅有4行或列共享相同的行或者列。
为了增强在小秩上的表现,不再直接压缩
x
x
x,而是对其进行reshape。这种情况下,
f
comp
(
x
)
:
R
k
→
R
n
×
r
^
f_{\text{comp}}(x):\mathbb{R}^k\rightarrow\mathbb{R}^{n\times\hat{r}}
fcomp(x):Rk→Rn×r^且
f
decomp
:
R
n
×
r
^
→
R
d
f_{\text{decomp}}:\mathbb{R}^{n\times\hat{r}}\rightarrow\mathbb{R}^d
fdecomp:Rn×r^→Rd。对应的
f
comp
f_{\text{comp}}
fcomp、
f
decomp
f_{\text{decomp}}
fdecomp和
Δ
W
\Delta W
ΔW如下:
f
comp
(
x
)
=
[
x
1
:
r
^
,
x
r
^
:
2
r
^
,
…
,
x
(
n
−
1
)
r
^
:
n
r
^
]
f
decomp
(
x
)
=
concat
(
x
)
Δ
W
=
[
M
0
…
0
0
M
…
0
⋮
⋮
⋱
⋮
0
0
…
M
]
其中
concat
(
x
)
\text{concat}(x)
concat(x)是指将
x
x
x的行拼接至向量中。
论文地址:https://arxiv.org/pdf/2405.12981
KV cache在自回归LLM加速解码中扮演重要角色。但是,对于长序列和大batch size情况下,存储KV cache需要大量的显存。本文提出了一种相邻层之间共享key和value的新注意力机制,称为跨层注意力(CLA)。
在原始Transformer中使用MHA,其中每个query都会关注由不同key/value头所生成的keys和values。在MHA中,每个key/value头的KV激活都必须单独存储在KV cache中,每个token的总存储开销为 2 ⋅ n q u e r y ⋅ d h e a d 2\cdot n_{query}\cdot d_{head} 2⋅nquery⋅dhead,其中 n q u e r y n_{query} nquery是query头的数量, d h e a d d_{head} dhead是每个头的嵌入维度。
为了减少KV cache的显存占用,提出了MQA(Multi-Query Attention)和GQA(Grouped-Query Attention)。GQA对单层Transformer的query头进行分组,每组query头共享单个key/value头。KV cache的大小只和key/value头有关,而和query头无关,GQA将KV cache的显存开销降低为 2 ⋅ n g r o u p ⋅ d h e a d 2\cdot n_{group}\cdot d_{head} 2⋅ngroup⋅dhead,其中 n g r o u p n_{group} ngroup表示分组数量且 n g r o u p < n q u e r y n_{group}<n_{query} ngroup<nquery。MQA可以看作是GQA在 n g r o u p = 1 n_{group}=1 ngroup=1情况下的特例。
MQA和GQA能够显著降低KV cache的大小和解压延时,同时只会导致精度的小幅降低。
受MQA和GQA启发,其在单个层内跨不同query头共享key/value头,这里提出跨层共享key/value头。称这种注意力机制为CLA(Cross-Layer Attention),如上图1所示。CLA仅计算模型中部分层的key/value投影,没有计算key/value投影的注意力块则重用前一层的KV激活。
CLA与MQA/GQA/MHA正交,可以与任意方法合并。CLA2表示相邻层之间共享KV投影,CLA3则表示每3层一组共享KV投影。
CLA的主要作用是减少KV Cache的显存占用,对模型训练和推理消耗的其他资源影响很小。这里从系统工程的视角总结了一些影响:
论文地址:https://arxiv.org/pdf/2404.19296
在Octopus v2中,引入了一种称为functional token的分类方法,其能够高效处理任务
P
(
f
,
p
a
r
a
m
s
∣
q
)
P(f,params|q) \\
P(f,params∣q)
其中
f
f
f表示某个候选集合中的选项,
p
a
r
a
m
s
params
params对query
q
q
q中的信息进行重新格式化。在Octopus v2中将其运用在function calling中,
f
f
f是某个特定的函数,
p
a
r
a
m
s
params
params是从
q
q
q中抽取的函数参数。functional token也可以运用在类似的场景,即从特定候选池中选择最优项,然后对query进行格式化后传递给后续节点。
考虑有向异构图定义为:
G
=
(
N
,
E
)
G=(N,E) \\
G=(N,E)
其中
N
N
N表示图中节点,
E
E
E表示连接节点的边。节点分为两种类型:(1) master节点
N
m
N^m
Nm:将查询导向合适的worker节点;(2) worker节点
N
w
N^w
Nw:传递执行任务所需要的信息。worker节点从master节点接收信息并执行任务。节点信息传递的过程如上图2所示。处理用户queries
q
q
q并生成应答
y
y
y可以建模为:
P
(
y
∣
q
)
=
P
(
y
∣
q
;
G
)
P(y|q)=P(y|q;G) \\
P(y∣q)=P(y∣q;G)
由于单步任务仅涉及单个worker节点,过程可以定义为:
P
(
y
∣
q
;
G
)
=
P
(
N
w
,
q
h
∣
q
;
N
m
)
P
(
y
∣
q
h
;
N
w
)
P(y|q;G)=P(N^w,q_h|q;N^m)P(y|q_h;N^w) \\
P(y∣q;G)=P(Nw,qh∣q;Nm)P(y∣qh;Nw)
其中
P
(
N
w
,
q
h
∣
q
;
N
m
)
P(N^w,q_h|q;N^m)
P(Nw,qh∣q;Nm)使用Octopus v2模型来选择
N
m
N^m
Nm的最优邻居worker节点以及重新格式化的query
q
h
q_h
qh。
P
(
y
∣
q
h
;
N
w
)
P(y|q_h;N^w)
P(y∣qh;Nw)是由合适的worker节点计算的似然概率。
对于多步任务,例如多智能体workflows,整个过程涉及到多个节点的序列交互,即
P
(
y
∣
q
;
G
)
=
∏
i
=
0
k
−
1
P
(
N
i
w
,
q
h
i
∣
q
;
N
i
m
)
P
(
u
∣
q
h
i
;
N
i
w
)
P(y|q;G)=\prod_{i=0}^{k-1} P(N_i^w,q_{h_i}|q;N_i^m)P(u|q_{h_i};N_i^w) \\
P(y∣q;G)=i=0∏k−1P(Niw,qhi∣q;Nim)P(u∣qhi;Niw)
其将单步任务扩展至多步,每个步骤可能由不同节点处理,然后由各种的master节点进行协调。每个步骤处理query的不同部分并为最终的输出做出贡献。
在一个基于各种语言模型的预定义图中,每个worker模型也可以是一个Octopus模型。若要执行并行函数调用,master节点可以将query导向相同节点多次来执行并行调用。相比于像GPT-4这样的模型,这种设计方式的优势是回答用户问题时,仅需要激活两个小模型,而不是一个巨大的模型。
在多步任务规划中,合并多个步骤必不可少。通常,所有可用功能都在上下文中列出并输入到模型中,然后基于用户的queries生成计划。但是对于少于10B的模型来说,处理冗长的函数描述很难。而且这种方法没有考虑不同函数描述之间的关联性。为了应对这些挑战,构建一个映射各种节点相关性的图是可行方案。这种方式有两个层次的抽象:(1) 对于每个语言模型,可以应用functional token来使得其成为单个AI agent;或者单语言模型可以是一个用于问答、写作的普通语言模型;(2) 可以创建另一个Octopus v3模型,以便从不同的节点中进行选择。
将每个模型概念化为不同的函数,利用functional tokens来激活特定的模型。该方法简化了语言模型的函数设计,仅需要一个输入参数和输出结果。此外,对于特定的模型,可以在函数的doc string中详细说明所需的prompt模板。
在复杂图的系统架构中,每个节点表示语言模型,利用多个Octopus模型进行协调。将整个系统划分为几个可管理组件:
论文地址:https://arxiv.org/pdf/2405.14734
DPO使用最优策略的封闭解来重参数化奖励函数
r
r
r:
r
(
x
,
y
)
=
β
log
π
θ
(
y
∣
x
)
π
ref
(
y
∣
x
)
+
β
log
Z
(
x
)
(1)
r(x,y)=\beta\log\frac{\pi_{\theta}(y|x)}{\pi_{\text{ref}}(y|x)}+\beta\log Z(x) \tag{1}\\
r(x,y)=βlogπref(y∣x)πθ(y∣x)+βlogZ(x)(1)
其中
π
θ
\pi_{\theta}
πθ是策略模型,
π
ref
\pi_{\text{ref}}
πref是reference策略,
Z
(
x
)
Z(x)
Z(x)是配分函数。将该奖励函数合并至Bradley-Terry目标函数
p
(
y
w
≻
y
l
∣
x
)
=
σ
(
r
(
x
,
y
w
)
−
r
(
x
,
y
l
)
)
p(y_w\succ y_l|x)=\sigma(r(x,y_w)-r(x,y_l))
p(yw≻yl∣x)=σ(r(x,yw)−r(x,yl)),从而DPO利用策略模型而不是奖励模型来表达偏好数据的概率,目标函数为:
L
DPO
(
π
θ
;
π
ref
)
=
−
E
(
x
,
y
w
,
y
l
)
∼
D
[
log
σ
(
β
log
π
θ
(
y
w
∣
x
)
π
ref
(
y
w
∣
x
)
−
β
log
π
θ
(
y
l
∣
x
)
π
ref
(
y
l
∣
x
)
)
]
(2)
\mathcal{L}_{\text{DPO}}(\pi_{\theta};\pi_{\text{ref}})=-\mathbb{E}_{(x,y_w,y_l)\sim\mathcal{D}}\Big[\log\sigma\Big(\beta\log\frac{\pi_{\theta}(y_w|x)}{\pi_{\text{ref}}(y_w|x)}-\beta\log\frac{\pi_{\theta}(y_l|x)}{\pi_{\text{ref}}(y_l|x)}\Big)\Big] \tag{2}\\
LDPO(πθ;πref)=−E(x,yw,yl)∼D[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))](2)
其中
(
x
,
y
w
,
y
l
)
(x,y_w,y_l)
(x,yw,yl)是由prompt、正样本和负样本构造的偏好样本对。
奖励和DPO生成的差异。使用等式(1)作为潜在的奖励存在以下确定:(1) 训练时需要reference模型
π
ref
\pi_{\text{ref}}
πref,增加了额外的显存和计算开销;(2) 在训练时被优化的奖励和推理时的生成存在差异。具体来说,在生成时,策略模型
π
θ
\pi_{\theta}
πθ被用于生成近似最大平均对数似然的序列,即
p
θ
(
y
∣
x
)
=
1
∣
y
∣
log
π
θ
(
y
∣
x
)
=
1
∣
y
∣
∑
i
=
1
∣
y
∣
log
π
θ
(
y
i
∣
x
,
y
<
i
)
(3)
p_{\theta}(y|x)=\frac{1}{|y|}\log\pi_{\theta}(y|x)=\frac{1}{|y|}\sum_{i=1}^{|y|}\log\pi_{\theta}(y_i|x,y_{<i})\tag{3} \\
pθ(y∣x)=∣y∣1logπθ(y∣x)=∣y∣1i=1∑∣y∣logπθ(yi∣x,y<i)(3)
在解码时直接最大化该度量比较困难,各种解码策略可以用于近似,例如:贪心解码、beam search和top-k采样等。在DPO中,任意满足奖励排序
r
(
x
,
y
w
)
>
r
(
x
,
y
l
)
r(x,y_w)>r(x,y_l)
r(x,yw)>r(x,yl)的三元组
(
x
,
y
w
,
y
l
)
(x,y_w,y_l)
(x,yw,yl)并不意味着满足似然排序
p
θ
(
y
w
∣
x
)
>
p
θ
(
y
l
∣
x
)
p_{\theta}(y_w|x)>p_{\theta}(y_l|x)
pθ(yw∣x)>pθ(yl∣x)。事实上,DPO训练时仅有50%的三元组满足这个条件。
长度归一化奖励公式。直觉上,使用公式(3)中的
p
θ
p_{\theta}
pθ替换DPO中的奖励公式,这样就能够与指导生成的似然度量保持一致。这会带来一个长度归一化奖励:
r
SimPO
(
x
,
y
)
=
β
∣
y
∣
log
π
θ
(
y
∣
x
)
=
β
∣
y
∣
∑
i
=
1
∣
y
∣
log
π
θ
(
y
i
∣
x
,
y
<
i
)
(4)
r_{\text{SimPO}}(x,y)=\frac{\beta}{|y|}\log\pi_{\theta}(y|x)=\frac{\beta}{|y|}\sum_{i=1}^{|y|}\log\pi_{\theta}(y_i|x,y_{<i}) \tag{4} \\
rSimPO(x,y)=∣y∣βlogπθ(y∣x)=∣y∣βi=1∑∣y∣logπθ(yi∣x,y<i)(4)
其中
β
\beta
β是控制奖励差异的缩放因子。实验发现长度归一化奖励至关重要,若删除长度归一化导致模型生成更长但质量较差的序列。
目标奖励间隔。在Bradley-Terry目标中引入了目标奖励间隔项
γ
>
0
\gamma>0
γ>0,确保正样本的奖励
r
(
x
,
y
w
)
r(x,y_w)
r(x,yw)能够比负样本的奖励
r
(
x
,
y
l
)
r(x,y_l)
r(x,yl)至少大
γ
\gamma
γ:
p
(
y
w
≻
y
l
∣
x
)
=
σ
(
r
(
x
,
y
w
)
−
r
(
x
,
y
l
)
−
γ
)
(5)
p(y_w\succ y_l|x)=\sigma(r(x,y_w)-r(x,y_l)-\gamma) \tag{5}\\
p(yw≻yl∣x)=σ(r(x,yw)−r(x,yl)−γ)(5)
两个类别的间隔会影响分类器的泛化能力。在实践中发现,随着目标间隔的增大能够观察到生成质量的改善,但是当间隔太大时则会下降。
目标函数。最终的SimPO的目标函数为:
L
SimPO
(
π
θ
)
=
−
E
(
x
,
y
w
,
y
l
)
∼
D
[
log
σ
(
β
∣
y
w
∣
log
π
θ
(
y
w
∣
x
)
−
β
∣
y
l
∣
log
π
θ
(
y
l
∣
x
)
−
γ
)
]
(6)
\mathcal{L}_{\text{SimPO}}(\pi_{\theta})=-\mathbb{E}_{(x,y_w,y_l)\sim\mathcal{D}}\Big[\log\sigma\Big( \frac{\beta}{|y_w|}\log\pi_{\theta}(y_w|x)- \frac{\beta}{|y_l|}\log\pi_{\theta}(y_l|x)-\gamma \Big)\Big] \tag{6} \\
LSimPO(πθ)=−E(x,yw,yl)∼D[logσ(∣yw∣βlogπθ(yw∣x)−∣yl∣βlogπθ(yl∣x)−γ)](6)
如上表4所示,SimPO始终显著优于现有的偏好优化方法。此外,消融实验显示SimPO的两个关键设计都至关重要。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。