Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
AML-Notes
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
wangchenglong
AML-Notes
Commits
f9180bf8
Commit
f9180bf8
authored
Sep 01, 2026
by
wangchenglong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修正一些符号(全文一致性)
parent
0de349d0
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
21 行增加
和
22 行删除
+21
-22
main.pdf
+0
-0
section3/section/3.3sub/part1.tex
+1
-1
section3/section/3.3sub/part2.tex
+8
-8
section3/section/3.4sub/part1.tex
+1
-1
section3/section/3.4sub/part2.tex
+2
-2
section3/section/3.5sub/part2.tex
+2
-2
section3/section/3.5sub/part3.tex
+1
-1
section4/chapter.tex
+5
-6
section5/chapters/ch5_multimodal.tex
+1
-1
没有找到文件。
main.pdf
查看文件 @
f9180bf8
No preview for this file type
section3/section/3.3sub/part1.tex
查看文件 @
f9180bf8
...
...
@@ -342,7 +342,7 @@
\end{eqnarray}
对每个样本,我们将其切分为输入段
$
\mathbf
{
x
}_{
\text
{
sample
}}$
和输出段
$
\mathbf
{
y
}_{
\text
{
sample
}}$
,损失函数只作用于后者:
\begin{eqnarray}
\mathcal
{
L
}_{
\hat
{
\theta
}^
+
}
(
\mathrm
{
sample
}
) = -
\log
\
mathrm
{
Pr
}
_{
\hat
{
\theta
}^
+
}
(
\mathbf
{
y
}_{
\text
{
sample
}}
|
\mathbf
{
x
}_{
\text
{
sample
}}
)
\mathcal
{
L
}_{
\hat
{
\theta
}^
+
}
(
\mathrm
{
sample
}
) = -
\log
\
Pr
_{
\hat
{
\theta
}^
+
}
(
\mathbf
{
y
}_{
\text
{
sample
}}
|
\mathbf
{
x
}_{
\text
{
sample
}}
)
\end{eqnarray}
在具体实现中,前向传播照常对整个拼接序列进行计算,但反向传播时,误差梯度仅流经
$
\mathbf
{
y
}_{
\text
{
sample
}}$
对应的位置。考虑这样一个序列:
\begin{equation}
...
...
section3/section/3.3sub/part2.tex
查看文件 @
f9180bf8
...
...
@@ -246,14 +246,14 @@ Text: Congratulations! You've won a \$500 gift card... & \\
\noindent
我们的目标是最大化在给定输入下生成正确输出的条件概率。沿用概述部分的记号,令
$
\hat
{
\theta
}$
为预训练得到的参数,则微调后的最优参数
$
\tilde
{
\theta
}$
由下式给出(为书写简洁,后文将用
$
\theta
$
表示从
$
\hat
{
\theta
}$
开始调整后的参数):
\begin{eqnarray}
\tilde
{
\theta
}
=
\argmax
_{
\theta
}
\sum
_{
(
\mathbf
{
x
}
,
\mathbf
{
y
}
)
\in
\mathcal
{
D
}}
\log
\
mathrm
{
Pr
}
_{
\theta
}
(
\mathbf
{
y
}
|
\mathbf
{
x
}
)
\tilde
{
\theta
}
=
\argmax
_{
\theta
}
\sum
_{
(
\mathbf
{
x
}
,
\mathbf
{
y
}
)
\in
\mathcal
{
D
}}
\log
\
Pr
_{
\theta
}
(
\mathbf
{
y
}
|
\mathbf
{
x
}
)
\label
{
eq:sft-objective
}
\end{eqnarray}
其中
$
\log
\
mathrm
{
Pr
}_{
\theta
}
(
\mathbf
{
y
}
|
\mathbf
{
x
}
)
=
\sum
_{
i
=
1
}^{
n
}
\log
\mathrm
{
Pr
}
_{
\theta
}
(
y
_
i|
\mathbf
{
x
}
,
\mathbf
{
y
}_{
<i
}
)
$
,即只对输出部分的 token 计算交叉熵损失。
其中
$
\log
\
Pr
_{
\theta
}
(
\mathbf
{
y
}
|
\mathbf
{
x
}
)
=
\sum
_{
i
=
1
}^{
n
}
\log
\Pr
_{
\theta
}
(
y
_
i|
\mathbf
{
x
}
,
\mathbf
{
y
}_{
<i
}
)
$
,即只对输出部分的 token 计算交叉熵损失。
与标准语言模型训练不同,这里我们不关心输入序列
$
\mathbf
{
x
}$
自身的生成概率。在实际实现中,通常将
$
[
\mathbf
{
x
}
,
\mathbf
{
y
}
]
$
拼接为一个完整序列进行前向传播,而在反向传播时强行将输入部分的损失设为
$
0
$
,仅保留输出部分的梯度。这一过程可以借助链式法则清晰地表达为
\begin{eqnarray}
\log
\
mathrm
{
Pr
}_{
\theta
}
(
\mathbf
{
x
}
,
\mathbf
{
y
}
)
&
=
&
\underbrace
{
\log
\mathrm
{
Pr
}_{
\theta
}
(
\mathbf
{
x
}
)
}_{
\text
{
设为
}
0
}
+
\underbrace
{
\log
\mathrm
{
Pr
}
_{
\theta
}
(
\mathbf
{
y
}
|
\mathbf
{
x
}
)
}_{
\text
{
实际计算损失
}}
\log
\
Pr
_{
\theta
}
(
\mathbf
{
x
}
,
\mathbf
{
y
}
)
&
=
&
\underbrace
{
\log
\Pr
_{
\theta
}
(
\mathbf
{
x
}
)
}_{
\text
{
设为
}
0
}
+
\underbrace
{
\log
\Pr
_{
\theta
}
(
\mathbf
{
y
}
|
\mathbf
{
x
}
)
}_{
\text
{
实际计算损失
}}
\label
{
eq:sft-chain
}
\end{eqnarray}
图
\ref
{
fig:sft-forward-backward
}
给出了这种“前向计算全序列,反向仅传播输出部分”的训练方式示意图。由此可见,SFT 本质上就是一种修改了损失掩码的标准语言模型训练。
...
...
@@ -269,20 +269,20 @@ Text: Congratulations! You've won a \$500 gift card... & \\
\noindent\textbf
{
扩展到多轮对话。
}
上述单轮预测假定每次交互相互独立,但在聊天机器人等真实应用中,往往需要进行多轮对话。假设一段对话包含
$
K
$
轮,每轮依次为用户输入
$
\mathbf
{
x
}^
k
$
和助手回复
$
\mathbf
{
y
}^
k
$
,整体构成序列
$
\mathbf
{
x
}^
1
,
\mathbf
{
y
}^
1
,
\dots
,
\mathbf
{
x
}^
K,
\mathbf
{
y
}^
K
$
。我们希望模型在每一轮都能基于已有的对话历史生成恰当的回复,即最大化
\begin{eqnarray}
\tilde
{
\theta
}
=
\argmax
_{
\theta
}
\sum
_{
k=1
}^{
K
}
\log
\
mathrm
{
Pr
}
_{
\theta
}
(
\mathbf
{
y
}^
k|
\mathbf
{
x
}^
1,
\mathbf
{
y
}^
1,
\dots
,
\mathbf
{
x
}^
k)
\tilde
{
\theta
}
=
\argmax
_{
\theta
}
\sum
_{
k=1
}^{
K
}
\log
\
Pr
_{
\theta
}
(
\mathbf
{
y
}^
k|
\mathbf
{
x
}^
1,
\mathbf
{
y
}^
1,
\dots
,
\mathbf
{
x
}^
k)
\label
{
eq:multi-turn-obj
}
\end{eqnarray}
一种朴素的实现方式是对每个
$
k
$
分别运行一次 LLM,但这样做的效率极低。更高效的做法与单轮情形类似:将整个对话序列
$
[
\mathbf
{
x
}^
1
,
\mathbf
{
y
}^
1
,
\dots
,
\mathbf
{
x
}^
K,
\mathbf
{
y
}^
K
]
$
视为一个长序列,在单次前向传播中完成所有轮次的损失计算。应用链式法则展开:
\begin{eqnarray}
\log
\
mathrm
{
Pr
}_{
\theta
}
(
\mathbf
{
x
}^
1,
\mathbf
{
y
}^
1,
\dots
,
\mathbf
{
x
}^
K,
\mathbf
{
y
}^
K)
&
=
&
\underbrace
{
\log
\mathrm
{
Pr
}_{
\theta
}
(
\mathbf
{
x
}^
1)
}_{
\text
{
设为
}
0
}
+
\underbrace
{
\log
\mathrm
{
Pr
}
_{
\theta
}
(
\mathbf
{
y
}^
1|
\mathbf
{
x
}^
1)
}_{
\text
{
损失
}}
+
\cdots
\nonumber
\\
&
+
&
\underbrace
{
\log
\
mathrm
{
Pr
}
_{
\theta
}
(
\mathbf
{
x
}^
K|
\mathbf
{
x
}^
1,
\mathbf
{
y
}^
1,
\dots
,
\mathbf
{
y
}^{
K-1
}
)
}_{
\text
{
设为
}
0
}
\nonumber
\\
&
+
&
\underbrace
{
\log
\
mathrm
{
Pr
}
_{
\theta
}
(
\mathbf
{
y
}^
K|
\mathbf
{
x
}^
1,
\mathbf
{
y
}^
1,
\dots
,
\mathbf
{
x
}^
K)
}_{
\text
{
损失
}}
\log
\
Pr
_{
\theta
}
(
\mathbf
{
x
}^
1,
\mathbf
{
y
}^
1,
\dots
,
\mathbf
{
x
}^
K,
\mathbf
{
y
}^
K)
&
=
&
\underbrace
{
\log
\Pr
_{
\theta
}
(
\mathbf
{
x
}^
1)
}_{
\text
{
设为
}
0
}
+
\underbrace
{
\log
\Pr
_{
\theta
}
(
\mathbf
{
y
}^
1|
\mathbf
{
x
}^
1)
}_{
\text
{
损失
}}
+
\cdots
\nonumber
\\
&
+
&
\underbrace
{
\log
\
Pr
_{
\theta
}
(
\mathbf
{
x
}^
K|
\mathbf
{
x
}^
1,
\mathbf
{
y
}^
1,
\dots
,
\mathbf
{
y
}^{
K-1
}
)
}_{
\text
{
设为
}
0
}
\nonumber
\\
&
+
&
\underbrace
{
\log
\
Pr
_{
\theta
}
(
\mathbf
{
y
}^
K|
\mathbf
{
x
}^
1,
\mathbf
{
y
}^
1,
\dots
,
\mathbf
{
x
}^
K)
}_{
\text
{
损失
}}
\label
{
eq:multi-turn-chain
}
\end{eqnarray}
我们只需将每一处用户输入项对应的对数概率损失设为
$
0
$
,仅计算助手回复部分的损失,便能在单次运行中达到式(
\ref
{
eq:multi-turn-obj
}
)所描述的目标。图
\ref
{
fig:sft-conversational-models
}
展示了多轮对话 SFT 的训练范式。最终,整体训练目标依然可以简洁地写为
\begin{eqnarray}
\tilde
{
\theta
}
=
\argmax
_{
\theta
}
\sum
_{
\mathrm
{
seq
}
\in
\mathcal
{
D
}}
\log
\
mathrm
{
Pr
}
_{
\theta
}
(
\mathrm
{
seq
}
)
\tilde
{
\theta
}
=
\argmax
_{
\theta
}
\sum
_{
\mathrm
{
seq
}
\in
\mathcal
{
D
}}
\log
\
Pr
_{
\theta
}
(
\mathrm
{
seq
}
)
\end{eqnarray}
其中
$
\mathrm
{
seq
}$
即上述完整对话序列,损失掩码模式保证了模型仅学习如何生成助手回复,而不会去预测用户提问。
...
...
section3/section/3.4sub/part1.tex
查看文件 @
f9180bf8
...
...
@@ -62,7 +62,7 @@ RLHF 涉及两个学习任务:一、利用人类反馈训练奖励模型;二
\begin{eqnarray}
\tilde
{
\theta
}
=
\argmax
_{
\hat
{
\theta
}^
+
}
\mathbb
{
E
}_{
(
\mathbf
{
x
}
,
\mathbf
{
y
}_{
\hat
{
\theta
}^
+
}
)
\sim
\mathcal
{
D
}_{
\mathrm
{
rlft
}}}
R
_{
\hat
{
\omega
}}
(
\mathbf
{
x
}
,
\mathbf
{
y
}_{
\hat
{
\theta
}^
+
}
)
\end{eqnarray}
其中
$
\mathbf
{
x
}$
从输入数据集中采样,
$
\mathbf
{
y
}_{
\hat
{
\theta
}^
+
}$
则从当前策略分布
$
\
mathrm
{
Pr
}
_{
\hat
{
\theta
}^
+
}
(
\mathbf
{
y
}
|
\mathbf
{
x
}
)
$
中采样。实践中通常会采用更高级的强化学习算法,如
\mindex
{
proximal policy optimization
}
(
\mindex
{
PPO
}
),以获得更稳定的训练效果,详细算法将在后续章节展开。
其中
$
\mathbf
{
x
}$
从输入数据集中采样,
$
\mathbf
{
y
}_{
\hat
{
\theta
}^
+
}$
则从当前策略分布
$
\
Pr
_{
\hat
{
\theta
}^
+
}
(
\mathbf
{
y
}
|
\mathbf
{
x
}
)
$
中采样。实践中通常会采用更高级的强化学习算法,如
\mindex
{
proximal policy optimization
}
(
\mindex
{
PPO
}
),以获得更稳定的训练效果,详细算法将在后续章节展开。
% 为什么不直接将偏好学习视为标准监督学习问题?因为要让标注者精确描述人类的价值观,并给出完美对齐的输出,往往异常困难;相比之下,对已有输出进行偏好排序就简单得多。RLHF 通过学习奖励模型来捕捉人类偏好,再用它来指导策略训练,尤其适用于那些“演示难、评判易”的场景。此外,强化学习的探索机制还能让模型发现标注数据之外的潜在有益策略,从而进一步提升对齐效果。
...
...
section3/section/3.4sub/part2.tex
查看文件 @
f9180bf8
...
...
@@ -39,11 +39,11 @@ r(\mathbf{x},\mathbf{y}) & = & \mathbf{h}_{\mathrm{last}} \mathbf{W}_{r}
训练奖励模型时,我们希望奖励模型赋予被偏好输出更高的分数,也就是最大化上述偏好概率。由此可以得到基于 Bradley-Terry 模型的损失函数
\begin{eqnarray}
\mathcal
{
L
}_
r(
\phi
)
&
=
&
-
\mathbb
{
E
}_{
(
\mathbf
{
x
}
,
\mathbf
{
y
}_
a,
\mathbf
{
y
}_
b)
\sim
\mathcal
{
D
}_
r
}
\bigl
[ \log \
mathrm{Pr}
_{\phi}(\mathbf{y}_a \succ \mathbf{y}_b \mid \mathbf{x}) \bigr]
\label
{
eq:pairwise-reward-loss-expectation
}
\mathcal
{
L
}_
r(
\phi
)
&
=
&
-
\mathbb
{
E
}_{
(
\mathbf
{
x
}
,
\mathbf
{
y
}_
a,
\mathbf
{
y
}_
b)
\sim
\mathcal
{
D
}_
r
}
\bigl
[ \log \
Pr
_{\phi}(\mathbf{y}_a \succ \mathbf{y}_b \mid \mathbf{x}) \bigr]
\label
{
eq:pairwise-reward-loss-expectation
}
\end{eqnarray}
其中
$
(
\mathbf
{
x
}
,
\mathbf
{
y
}_
a,
\mathbf
{
y
}_
b
)
$
采样自包含输入及其偏好输出对的人类标注数据集
$
\mathcal
{
D
}_
r
$
,
$
\phi
$
表示奖励模型的参数(包括 Transformer 解码器的参数和线性映射矩阵
$
\mathbf
{
W
}_{
r
}$
)。实际中通常假设样本均匀采样,因此可以用求和代替期望:
\begin{eqnarray}
\mathcal
{
L
}_
r(
\phi
)
&
=
&
-
\frac
{
1
}{
|
\mathcal
{
D
}_
r|
}
\sum
_{
(
\mathbf
{
x
}
,
\mathbf
{
y
}_
a,
\mathbf
{
y
}_
b)
\in
\mathcal
{
D
}_
r
}
\log
\
mathrm
{
Pr
}
_{
\phi
}
(
\mathbf
{
y
}_
a
\succ
\mathbf
{
y
}_
b
\mid
\mathbf
{
x
}
)
\label
{
eq:pairwise-reward-loss-sum
}
\mathcal
{
L
}_
r(
\phi
)
&
=
&
-
\frac
{
1
}{
|
\mathcal
{
D
}_
r|
}
\sum
_{
(
\mathbf
{
x
}
,
\mathbf
{
y
}_
a,
\mathbf
{
y
}_
b)
\in
\mathcal
{
D
}_
r
}
\log
\
Pr
_{
\phi
}
(
\mathbf
{
y
}_
a
\succ
\mathbf
{
y
}_
b
\mid
\mathbf
{
x
}
)
\label
{
eq:pairwise-reward-loss-sum
}
\end{eqnarray}
训练的目标是找到最小化该损失的最优参数
$
\hat
{
\phi
}$
:
...
...
section3/section/3.5sub/part2.tex
查看文件 @
f9180bf8
...
...
@@ -32,9 +32,9 @@
\paragraph
{
2. 自一致性
}
自一致性绕过显式的评分器,转而利用“多数真理”的直觉:对于复杂推理题,通常有多条不同的推理路径能导向同一个正确答案,而错误路径的答案则较为分散。因此,我们只需从每条路径中抽取出最终答案
$
\hat
{
a
}^
k
=
\mathrm
{
Extract
}
(
\hat
{
\mathbf
{
y
}}^
k
)
$
,然后对
$
N
$
个答案进行多数投票:
\begin{eqnarray}
\hat
{
a
}_{
\mathrm
{
sc
}}
=
\argmax
_{
a
\in
A
}
\sum
_{
k=1
}^
N
\mathbb
m
{
1
}
(
\mathrm
{
Extract
}
(
\hat
{
\mathbf
{
y
}}^
k) = a),
\hat
{
a
}_{
\mathrm
{
sc
}}
=
\argmax
_{
a
\in
A
}
\sum
_{
k=1
}^
N
\mathbb
{
I
}
(
\mathrm
{
Extract
}
(
\hat
{
\mathbf
{
y
}}^
k) = a),
\end{eqnarray}
其中
$
\mathbb
m
{
1
}
(
\cdot
)
$
是指示函数。这种方法简单且无需额外训练,在答案形式明确的任务中非常有效。
其中
$
\mathbb
{
I
}
(
\cdot
)
$
是指示函数。这种方法简单且无需额外训练,在答案形式明确的任务中非常有效。
在使用以上方法时,一个不可忽视的实践要点是平衡路径的
\textbf
{
多样性与质量
}
。较高的温度能提升多样性,增加覆盖正确推理的机会,但也可能使单条路径的文本质量下降,甚至出现逻辑混乱。因此,需要根据任务特点仔细调节采样参数(温度
$
T
$
以及
$
k
$
或
$
p
$
的值),在探索的广度与单路输出的可靠性之间找到最优点。
...
...
section3/section/3.5sub/part3.tex
查看文件 @
f9180bf8
...
...
@@ -40,7 +40,7 @@ v(\mathbf{x}, \mathbf{y}) & = & \min_{1 \le t \le n_p} v_{\mathrm{prm}}(\bar{\ma
\item
\textbf
{
人工标注
}
:人类专家将模型生成的中间步骤标记为“正确”或“错误”。这种方法准确,但成本高、难以扩展,尤其在需要领域专家的高级任务上。
\item
\textbf
{
通过 Rollout 自动验证
}
:如果我们拥有已知最终答案的数据集,就可以用自动方法估计步骤价值
\cite
{
wang-etal:2024math
}
。从中间步骤
$
\bar
{
\mathbf
{
y
}}_
t
$
出发,让模型继续生成多条完整路径。如果这些路径中很大比例最终得到了正确答案
$
a
^
*
$
,我们就可以认为该步骤走在正确的轨道上。步骤的估计值
$
\hat
{
r
}_
t
$
可以定义为达到正确答案的期望概率:
\begin{eqnarray}
\hat
{
r
}_
t
&
=
&
\mathbb
{
E
}_{
\mathbf
{
y
}_{
>t
}
\sim
\pi
_
\theta
}
[
\mathbb
m
{
1
}
(
\mathrm
{
Extract
}
(
\mathbf
{
y
}_{
>t
}
) = a
^
*) ].
\hat
{
r
}_
t
&
=
&
\mathbb
{
E
}_{
\mathbf
{
y
}_{
>t
}
\sim
\pi
_
\theta
}
[
\mathbb
{
I
}
(
\mathrm
{
Extract
}
(
\mathbf
{
y
}_{
>t
}
) = a
^
*) ].
\end{eqnarray}
有了这些估计值后,就可以训练 PRM 去预测
$
\hat
{
r
}_
t
$
。
\end{itemize}
...
...
section4/chapter.tex
查看文件 @
f9180bf8
...
...
@@ -2183,7 +2183,7 @@ d\mathbf{x}(t) & = & \underbrace{f(\mathbf{x}(t), t) dt}_{\text{deterministic}}
\item
维纳过程(也称为布朗运动)
$
\mathbf
{
w
}
(
t
)
\in
\mathbb
{
R
}^
d
$
表示随机性的来源。增量
$
d
\mathbf
{
w
}
(
t
)
$
可以视为一个均值为
$
\mathbf
{
0
}$
、协方差为
$
dt
\cdot
\mathbf
{
I
}$
的无穷小高斯噪声向量。
\end{itemize}
方程 (
\ref
{
eq:forward-sde
}
) 被称为前向 SDE。通过使用这个 SDE,我们定义了一个前向过程,当时间
$
t
$
从
$
0
$
流向
$
T
$
时,该过程逐渐向数据样本
$
\mathbf
{
x
}
(
0
)
\sim
p
_{
\
text
{
data
}}$
添加噪声。在此过程中,分布
$
p
_
t
(
\mathbf
{
x
}
(
t
))
$
扩散,并且
$
\mathbf
{
x
}
(
T
)
$
的分布最终将收敛到一个已知的先验分布(通常是
$
\mathcal
{
N
}
(
\mathbf
{
0
}
,
\mathbf
{
I
}
)
$
),如图
\ref
{
fig:forward-sde-example
}
所示。
方程 (
\ref
{
eq:forward-sde
}
) 被称为前向 SDE。通过使用这个 SDE,我们定义了一个前向过程,当时间
$
t
$
从
$
0
$
流向
$
T
$
时,该过程逐渐向数据样本
$
\mathbf
{
x
}
(
0
)
\sim
p
_{
\
mathrm
{
data
}}$
添加噪声。在此过程中,分布
$
p
_
t
(
\mathbf
{
x
}
(
t
))
$
扩散,并且
$
\mathbf
{
x
}
(
T
)
$
的分布最终将收敛到一个已知的先验分布(通常是
$
\mathcal
{
N
}
(
\mathbf
{
0
}
,
\mathbf
{
I
}
)
$
),如图
\ref
{
fig:forward-sde-example
}
所示。
\begin{figure}
[!t]
\centering
...
...
@@ -2284,8 +2284,7 @@ d\mathbf{x}(t) & = & -\frac{1}{2} \beta(t) \mathbf{x}(t) d t + \sqrt{\beta(t)} d
条目
&
方差爆炸(NCSN)
&
方差保持(DDPM)
\\
\hline
漂移系数
$
f
(
\mathbf
{
x
}
(
t
)
, t
)
$
&
$
\mathbf
{
0
}$
&
$
-
\frac
{
1
}{
2
}
\beta
(
t
)
\mathbf
{
x
}
(
t
)
$
\\
扩散系数
$
g
(
t
)
$
&
$
\sqrt
{
\frac
{
d
\sigma
^
2
(
t
)
}{
dt
}}$
&
$
\sqrt
{
\beta
(
t
)
}$
\\
连续时间 SDE
&
$
d
\mathbf
{
x
}
(
t
)
=
\sqrt
{
\frac
{
d
\sigma
^
2
(
t
)
}{
dt
}}
d
\mathbf
{
w
}
(
t
)
$
&
$
d
\mathbf
{
x
}
(
t
)
=
-
\frac
{
1
}{
2
}
\beta
(
t
)
\mathbf
{
x
}
(
t
)
d t
$
\\
&
&
\hspace
{
1.25cm
}
$
+
\sqrt
{
\beta
(
t
)
}
d
\mathbf
{
w
}
(
t
)
$
\\
\hline
连续时间 SDE
&
$
d
\mathbf
{
x
}
(
t
)
=
\sqrt
{
\frac
{
d
\sigma
^
2
(
t
)
}{
dt
}}
d
\mathbf
{
w
}
(
t
)
$
&
$
\begin
{
gathered
}
d
\mathbf
{
x
}
(
t
)
=
-
\frac
{
1
}{
2
}
\beta
(
t
)
\mathbf
{
x
}
(
t
)
d t
\\
+
\sqrt
{
\beta
(
t
)
}
d
\mathbf
{
w
}
(
t
)
\end
{
gathered
}$
\\
\hline
迭代扩散(离散)
&
$
\mathbf
{
x
}_
i
=
\mathbf
{
x
}_{
i
-
1
}
+
\sqrt
{
\sigma
_
i
^
2
-
\sigma
_{
i
-
1
}^
2
}
\boldsymbol
{
\epsilon
}_
i
$
&
$
\mathbf
{
x
}_
i
=
\sqrt
{
1
-
\beta
_
i
}
\mathbf
{
x
}_{
i
-
1
}
+
\sqrt
{
\beta
_
i
}
\boldsymbol
{
\epsilon
}_
i
$
\\
单步扩散(离散)
&
$
\mathbf
{
x
}_
i
=
\mathbf
{
x
}_
0
+
\sigma
_
i
\boldsymbol
{
\epsilon
}$
&
$
\mathbf
{
x
}_
i
=
\sqrt
{
\bar
{
\alpha
}_
i
}
\mathbf
{
x
}_
0
+
\sqrt
{
1
-
\bar
{
\alpha
}_
i
}
\boldsymbol
{
\epsilon
}$
\end{tabular}
...
...
@@ -2956,7 +2955,7 @@ p_\theta(\mathbf{x}(t-1)| \mathbf{x}(t), \mathbf{c}), \quad t=T,T-1,\dots,1,
\label
{
eq:mdm-reverse-kernel
}
\end{eqnarray}
\noindent
这里
$
p
_
\theta
(
\mathbf
{
x
}
(
t
-
1
)
|
\mathbf
{
x
}
(
t
)
,
\mathbf
{
c
}
)
$
是逆向条件分布
$
\
mathrm
{
Pr
}
_
\theta
(
\mathbf
{
x
}
(
t
-
1
)
|
\mathbf
{
x
}
(
t
)
,
\mathbf
{
c
}
)
$
的记法,下标
$
\theta
$
强调逆向时间动力学是由
$
\theta
$
参数化的。
\noindent
这里
$
p
_
\theta
(
\mathbf
{
x
}
(
t
-
1
)
|
\mathbf
{
x
}
(
t
)
,
\mathbf
{
c
}
)
$
是逆向条件分布
$
\
Pr
_
\theta
(
\mathbf
{
x
}
(
t
-
1
)
|
\mathbf
{
x
}
(
t
)
,
\mathbf
{
c
}
)
$
的记法,下标
$
\theta
$
强调逆向时间动力学是由
$
\theta
$
参数化的。
一种简单的参数化方法是让网络预测干净标记的去噪分布:
\begin{eqnarray}
...
...
@@ -2988,7 +2987,7 @@ p_\theta(x_i(t-1)=v| \mathbf{x}(t), \mathbf{c})
\end{eqnarray}
即,直接从预测的干净标记分布中采样缺失的标记。
给定一个示例数据集
$
(
\mathbf
{
x
}
(
0
)
,
\mathbf
{
c
}
)
\sim
p
_{
\
text
{
data
}}$
,MDMs 通过最大化干净序列的条件似然(或等价地最小化其负对数似然)来学习逆向模型
$
p
_
\theta
$
。与其他扩散模型类似,我们可以使用 ELBO 来训练 MDMs(另见第
\ref
{
sec:the-ctmc-perspective
}
节中的 D3PM)。
给定一个示例数据集
$
(
\mathbf
{
x
}
(
0
)
,
\mathbf
{
c
}
)
\sim
p
_{
\
mathrm
{
data
}}$
,MDMs 通过最大化干净序列的条件似然(或等价地最小化其负对数似然)来学习逆向模型
$
p
_
\theta
$
。与其他扩散模型类似,我们可以使用 ELBO 来训练 MDMs(另见第
\ref
{
sec:the-ctmc-perspective
}
节中的 D3PM)。
尽管上述训练目标看起来有些繁琐,但在实践中,一个更简单且广泛使用的方法是训练模型以恢复掩码位置处的原始标记。我们采样一个时间步
$
t
\sim
U
\{
1
,
\dots
,T
\}
$
,然后采样一个损坏序列
$
\mathbf
{
x
}
(
t
)
\sim
q
(
\mathbf
{
x
}
(
t
)
|
\mathbf
{
x
}
(
0
)
,
\mathbf
{
c
}
)
$
。我们定义掩码索引集为:
\begin{eqnarray}
...
...
@@ -2999,7 +2998,7 @@ p_\theta(x_i(t-1)=v| \mathbf{x}(t), \mathbf{c})
\begin{eqnarray}
&
&
\mathcal
{
L
}_{
\text
{
denoise
}}
(
\theta
)
\nonumber
\\
&
=
&
\mathbb
{
E
}_{
(
\mathbf
{
x
}
(0),
\mathbf
{
c
}
)
\sim
p
_{
\
text
{
data
}}}
\mathbb
{
E
}_{
(
\mathbf
{
x
}
(0),
\mathbf
{
c
}
)
\sim
p
_{
\
mathrm
{
data
}}}
\;
\mathbb
{
E
}_{
t
\sim
U[T]
}
\;
...
...
section5/chapters/ch5_multimodal.tex
查看文件 @
f9180bf8
...
...
@@ -1271,7 +1271,7 @@ Qwen-Audio\cite{qwenaudio}和 SALMONN\cite{salmonn}等工作均通过混合多
\keyword
{
文本生成图像
}
建模的是
$
p
(
\text
{
图像
}
\mid\text
{
文本
}
)
$
:给定一段文字描述,采样出与之语义较为一致的图像。这一方向经历了较明显的方法演变:早期曾用生成对抗网络直接由文本生成图像;DALL·E
\cite
{
dalle
}
将图像离散为 token 后以自回归方式生成;此后扩散模型逐渐成为较主流的一类方法,GLIDE
\cite
{
glide
}
、DALL·E 2
\cite
{
dalle2
}
、Imagen
\cite
{
imagen
}
在开放域文本生成图像上取得了较好效果,而潜在扩散模型
\cite
{
ldm
}
(即 Stable Diffusion 的基础)通过在低维潜在空间中做扩散,显著降低了计算成本。下面以扩散模型为例,较完整地说明其训练与采样过程,并解释它如何实现式~
\eqref
{
eq:cond
}
所要求的“建模分布并采样”。
\paragraph
{
基本思想:加噪与去噪。
}
第四章已从连续时间随机微分方程的角度介绍了扩散模型的正向扰动与反向生成过程;本节沿用一致的记号(以
$
\mathbf
{
x
}$
记图像数据、
$
p
_{
\
text
{
data
}}$
记数据分布、
$
\mathcal
{
N
}
(
\mathbf
{
0
}
,
\mathbf
{
I
}
)
$
记先验分布),并从条件生成的角度,说明文本如何作为条件引导反向过程生成图像。为便于直观理解,这里采用离散时间步的表述,其思想与第四章的连续时间视角一致。扩散模型包含两个方向相反的过程(图~
\ref
{
fig:diffusion
}
)。
\keyword
{
正向过程
}
对一幅真实图像
$
\mathbf
{
x
}_
0
\sim
p
_{
\text
{
data
}}$
逐步加入高斯噪声,经过
$
T
$
步后得到接近纯噪声的
$
\mathbf
{
x
}_
T
$
;这一过程是预先设定的,无需学习。
\keyword
{
反向过程
}
则需要学习:训练一个神经网络,使其能从带噪图像中估计所含噪声,从而每步去除一部分噪声。学会“去噪”之后,生成时便从先验分布
$
\mathcal
{
N
}
(
\mathbf
{
0
}
,
\mathbf
{
I
}
)
$
采样出发,反复去噪,逐步还原出一幅图像。
\paragraph
{
基本思想:加噪与去噪。
}
第四章已从连续时间随机微分方程的角度介绍了扩散模型的正向扰动与反向生成过程;本节沿用一致的记号(以
$
\mathbf
{
x
}$
记图像数据、
$
p
_{
\
mathrm
{
data
}}$
记数据分布、
$
\mathcal
{
N
}
(
\mathbf
{
0
}
,
\mathbf
{
I
}
)
$
记先验分布),并从条件生成的角度,说明文本如何作为条件引导反向过程生成图像。为便于直观理解,这里采用离散时间步的表述,其思想与第四章的连续时间视角一致。扩散模型包含两个方向相反的过程(图~
\ref
{
fig:diffusion
}
)。
\keyword
{
正向过程
}
对一幅真实图像
$
\mathbf
{
x
}_
0
\sim
p
_{
\mathrm
{
data
}}$
逐步加入高斯噪声,经过
$
T
$
步后得到接近纯噪声的
$
\mathbf
{
x
}_
T
$
;这一过程是预先设定的,无需学习。
\keyword
{
反向过程
}
则需要学习:训练一个神经网络,使其能从带噪图像中估计所含噪声,从而每步去除一部分噪声。学会“去噪”之后,生成时便从先验分布
$
\mathcal
{
N
}
(
\mathbf
{
0
}
,
\mathbf
{
I
}
)
$
采样出发,反复去噪,逐步还原出一幅图像。
\begin{figure}
[htbp]
\centering
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论