Commit f9180bf8 by wangchenglong

修正一些符号(全文一致性)

parent 0de349d0
No preview for this file type
...@@ -342,7 +342,7 @@ ...@@ -342,7 +342,7 @@
\end{eqnarray} \end{eqnarray}
对每个样本,我们将其切分为输入段 $\mathbf{x}_{\text{sample}}$ 和输出段 $\mathbf{y}_{\text{sample}}$,损失函数只作用于后者: 对每个样本,我们将其切分为输入段 $\mathbf{x}_{\text{sample}}$ 和输出段 $\mathbf{y}_{\text{sample}}$,损失函数只作用于后者:
\begin{eqnarray} \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} \end{eqnarray}
在具体实现中,前向传播照常对整个拼接序列进行计算,但反向传播时,误差梯度仅流经 $\mathbf{y}_{\text{sample}}$ 对应的位置。考虑这样一个序列: 在具体实现中,前向传播照常对整个拼接序列进行计算,但反向传播时,误差梯度仅流经 $\mathbf{y}_{\text{sample}}$ 对应的位置。考虑这样一个序列:
\begin{equation} \begin{equation}
......
...@@ -246,14 +246,14 @@ Text: Congratulations! You've won a \$500 gift card... & \\ ...@@ -246,14 +246,14 @@ Text: Congratulations! You've won a \$500 gift card... & \\
\noindent 我们的目标是最大化在给定输入下生成正确输出的条件概率。沿用概述部分的记号,令 $\hat{\theta}$ 为预训练得到的参数,则微调后的最优参数 $\tilde{\theta}$ 由下式给出(为书写简洁,后文将用 $\theta$ 表示从 $\hat{\theta}$ 开始调整后的参数): \noindent 我们的目标是最大化在给定输入下生成正确输出的条件概率。沿用概述部分的记号,令 $\hat{\theta}$ 为预训练得到的参数,则微调后的最优参数 $\tilde{\theta}$ 由下式给出(为书写简洁,后文将用 $\theta$ 表示从 $\hat{\theta}$ 开始调整后的参数):
\begin{eqnarray} \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} \label{eq:sft-objective}
\end{eqnarray} \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$,仅保留输出部分的梯度。这一过程可以借助链式法则清晰地表达为 与标准语言模型训练不同,这里我们不关心输入序列 $\mathbf{x}$ 自身的生成概率。在实际实现中,通常将 $[\mathbf{x}, \mathbf{y}]$ 拼接为一个完整序列进行前向传播,而在反向传播时强行将输入部分的损失设为 $0$,仅保留输出部分的梯度。这一过程可以借助链式法则清晰地表达为
\begin{eqnarray} \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} \label{eq:sft-chain}
\end{eqnarray} \end{eqnarray}
\ref{fig:sft-forward-backward} 给出了这种“前向计算全序列,反向仅传播输出部分”的训练方式示意图。由此可见,SFT 本质上就是一种修改了损失掩码的标准语言模型训练。 \ref{fig:sft-forward-backward} 给出了这种“前向计算全序列,反向仅传播输出部分”的训练方式示意图。由此可见,SFT 本质上就是一种修改了损失掩码的标准语言模型训练。
...@@ -269,20 +269,20 @@ Text: Congratulations! You've won a \$500 gift card... & \\ ...@@ -269,20 +269,20 @@ Text: Congratulations! You've won a \$500 gift card... & \\
\noindent\textbf{扩展到多轮对话。} \noindent\textbf{扩展到多轮对话。}
上述单轮预测假定每次交互相互独立,但在聊天机器人等真实应用中,往往需要进行多轮对话。假设一段对话包含 $K$ 轮,每轮依次为用户输入 $\mathbf{x}^k$ 和助手回复 $\mathbf{y}^k$,整体构成序列 $\mathbf{x}^1,\mathbf{y}^1,\dots,\mathbf{x}^K,\mathbf{y}^K$。我们希望模型在每一轮都能基于已有的对话历史生成恰当的回复,即最大化 上述单轮预测假定每次交互相互独立,但在聊天机器人等真实应用中,往往需要进行多轮对话。假设一段对话包含 $K$ 轮,每轮依次为用户输入 $\mathbf{x}^k$ 和助手回复 $\mathbf{y}^k$,整体构成序列 $\mathbf{x}^1,\mathbf{y}^1,\dots,\mathbf{x}^K,\mathbf{y}^K$。我们希望模型在每一轮都能基于已有的对话历史生成恰当的回复,即最大化
\begin{eqnarray} \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} \label{eq:multi-turn-obj}
\end{eqnarray} \end{eqnarray}
一种朴素的实现方式是对每个 $k$ 分别运行一次 LLM,但这样做的效率极低。更高效的做法与单轮情形类似:将整个对话序列 $[\mathbf{x}^1,\mathbf{y}^1,\dots,\mathbf{x}^K,\mathbf{y}^K]$ 视为一个长序列,在单次前向传播中完成所有轮次的损失计算。应用链式法则展开: 一种朴素的实现方式是对每个 $k$ 分别运行一次 LLM,但这样做的效率极低。更高效的做法与单轮情形类似:将整个对话序列 $[\mathbf{x}^1,\mathbf{y}^1,\dots,\mathbf{x}^K,\mathbf{y}^K]$ 视为一个长序列,在单次前向传播中完成所有轮次的损失计算。应用链式法则展开:
\begin{eqnarray} \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 \\ \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 \mathrm{Pr}_{\theta}(\mathbf{x}^K|\mathbf{x}^1,\mathbf{y}^1,\dots,\mathbf{y}^{K-1})}_{\text{设为 }0} \nonumber \\ &+& \underbrace{\log \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{损失}} &+& \underbrace{\log \Pr_{\theta}(\mathbf{y}^K|\mathbf{x}^1,\mathbf{y}^1,\dots,\mathbf{x}^K)}_{\text{损失}}
\label{eq:multi-turn-chain} \label{eq:multi-turn-chain}
\end{eqnarray} \end{eqnarray}
我们只需将每一处用户输入项对应的对数概率损失设为 $0$,仅计算助手回复部分的损失,便能在单次运行中达到式(\ref{eq:multi-turn-obj})所描述的目标。图\ref{fig:sft-conversational-models} 展示了多轮对话 SFT 的训练范式。最终,整体训练目标依然可以简洁地写为 我们只需将每一处用户输入项对应的对数概率损失设为 $0$,仅计算助手回复部分的损失,便能在单次运行中达到式(\ref{eq:multi-turn-obj})所描述的目标。图\ref{fig:sft-conversational-models} 展示了多轮对话 SFT 的训练范式。最终,整体训练目标依然可以简洁地写为
\begin{eqnarray} \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} \end{eqnarray}
其中 $\mathrm{seq}$ 即上述完整对话序列,损失掩码模式保证了模型仅学习如何生成助手回复,而不会去预测用户提问。 其中 $\mathrm{seq}$ 即上述完整对话序列,损失掩码模式保证了模型仅学习如何生成助手回复,而不会去预测用户提问。
......
...@@ -62,7 +62,7 @@ RLHF 涉及两个学习任务:一、利用人类反馈训练奖励模型;二 ...@@ -62,7 +62,7 @@ RLHF 涉及两个学习任务:一、利用人类反馈训练奖励模型;二
\begin{eqnarray} \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}^+}) \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} \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 通过学习奖励模型来捕捉人类偏好,再用它来指导策略训练,尤其适用于那些“演示难、评判易”的场景。此外,强化学习的探索机制还能让模型发现标注数据之外的潜在有益策略,从而进一步提升对齐效果。 % 为什么不直接将偏好学习视为标准监督学习问题?因为要让标注者精确描述人类的价值观,并给出完美对齐的输出,往往异常困难;相比之下,对已有输出进行偏好排序就简单得多。RLHF 通过学习奖励模型来捕捉人类偏好,再用它来指导策略训练,尤其适用于那些“演示难、评判易”的场景。此外,强化学习的探索机制还能让模型发现标注数据之外的潜在有益策略,从而进一步提升对齐效果。
......
...@@ -39,11 +39,11 @@ r(\mathbf{x},\mathbf{y}) & = & \mathbf{h}_{\mathrm{last}} \mathbf{W}_{r} ...@@ -39,11 +39,11 @@ r(\mathbf{x},\mathbf{y}) & = & \mathbf{h}_{\mathrm{last}} \mathbf{W}_{r}
训练奖励模型时,我们希望奖励模型赋予被偏好输出更高的分数,也就是最大化上述偏好概率。由此可以得到基于 Bradley-Terry 模型的损失函数 训练奖励模型时,我们希望奖励模型赋予被偏好输出更高的分数,也就是最大化上述偏好概率。由此可以得到基于 Bradley-Terry 模型的损失函数
\begin{eqnarray} \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} \end{eqnarray}
其中 $(\mathbf{x},\mathbf{y}_a,\mathbf{y}_b)$ 采样自包含输入及其偏好输出对的人类标注数据集 $\mathcal{D}_r$$\phi$ 表示奖励模型的参数(包括 Transformer 解码器的参数和线性映射矩阵 $\mathbf{W}_{r}$)。实际中通常假设样本均匀采样,因此可以用求和代替期望: 其中 $(\mathbf{x},\mathbf{y}_a,\mathbf{y}_b)$ 采样自包含输入及其偏好输出对的人类标注数据集 $\mathcal{D}_r$$\phi$ 表示奖励模型的参数(包括 Transformer 解码器的参数和线性映射矩阵 $\mathbf{W}_{r}$)。实际中通常假设样本均匀采样,因此可以用求和代替期望:
\begin{eqnarray} \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} \end{eqnarray}
训练的目标是找到最小化该损失的最优参数 $\hat{\phi}$ 训练的目标是找到最小化该损失的最优参数 $\hat{\phi}$
......
...@@ -32,9 +32,9 @@ ...@@ -32,9 +32,9 @@
\paragraph{2. 自一致性} \paragraph{2. 自一致性}
自一致性绕过显式的评分器,转而利用“多数真理”的直觉:对于复杂推理题,通常有多条不同的推理路径能导向同一个正确答案,而错误路径的答案则较为分散。因此,我们只需从每条路径中抽取出最终答案 $\hat{a}^k = \mathrm{Extract}(\hat{\mathbf{y}}^k)$,然后对 $N$ 个答案进行多数投票: 自一致性绕过显式的评分器,转而利用“多数真理”的直觉:对于复杂推理题,通常有多条不同的推理路径能导向同一个正确答案,而错误路径的答案则较为分散。因此,我们只需从每条路径中抽取出最终答案 $\hat{a}^k = \mathrm{Extract}(\hat{\mathbf{y}}^k)$,然后对 $N$ 个答案进行多数投票:
\begin{eqnarray} \begin{eqnarray}
\hat{a}_{\mathrm{sc}} = \argmax_{a \in A} \sum_{k=1}^N \mathbbm{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} \end{eqnarray}
其中 $\mathbbm{1}(\cdot)$ 是指示函数。这种方法简单且无需额外训练,在答案形式明确的任务中非常有效。 其中 $\mathbb{I}(\cdot)$ 是指示函数。这种方法简单且无需额外训练,在答案形式明确的任务中非常有效。
在使用以上方法时,一个不可忽视的实践要点是平衡路径的\textbf{多样性与质量}。较高的温度能提升多样性,增加覆盖正确推理的机会,但也可能使单条路径的文本质量下降,甚至出现逻辑混乱。因此,需要根据任务特点仔细调节采样参数(温度 $T$ 以及 $k$$p$ 的值),在探索的广度与单路输出的可靠性之间找到最优点。 在使用以上方法时,一个不可忽视的实践要点是平衡路径的\textbf{多样性与质量}。较高的温度能提升多样性,增加覆盖正确推理的机会,但也可能使单条路径的文本质量下降,甚至出现逻辑混乱。因此,需要根据任务特点仔细调节采样参数(温度 $T$ 以及 $k$$p$ 的值),在探索的广度与单路输出的可靠性之间找到最优点。
......
...@@ -40,7 +40,7 @@ v(\mathbf{x}, \mathbf{y}) & = & \min_{1 \le t \le n_p} v_{\mathrm{prm}}(\bar{\ma ...@@ -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{人工标注}:人类专家将模型生成的中间步骤标记为“正确”或“错误”。这种方法准确,但成本高、难以扩展,尤其在需要领域专家的高级任务上。
\item \textbf{通过 Rollout 自动验证}:如果我们拥有已知最终答案的数据集,就可以用自动方法估计步骤价值 \cite{wang-etal:2024math}。从中间步骤 $\bar{\mathbf{y}}_t$ 出发,让模型继续生成多条完整路径。如果这些路径中很大比例最终得到了正确答案 $a^*$,我们就可以认为该步骤走在正确的轨道上。步骤的估计值 $\hat{r}_t$ 可以定义为达到正确答案的期望概率: \item \textbf{通过 Rollout 自动验证}:如果我们拥有已知最终答案的数据集,就可以用自动方法估计步骤价值 \cite{wang-etal:2024math}。从中间步骤 $\bar{\mathbf{y}}_t$ 出发,让模型继续生成多条完整路径。如果这些路径中很大比例最终得到了正确答案 $a^*$,我们就可以认为该步骤走在正确的轨道上。步骤的估计值 $\hat{r}_t$ 可以定义为达到正确答案的期望概率:
\begin{eqnarray} \begin{eqnarray}
\hat{r}_t & = & \mathbb{E}_{\mathbf{y}_{>t} \sim \pi_\theta} [ \mathbbm{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} \end{eqnarray}
有了这些估计值后,就可以训练 PRM 去预测 $\hat{r}_t$ 有了这些估计值后,就可以训练 PRM 去预测 $\hat{r}_t$
\end{itemize} \end{itemize}
......
...@@ -2183,7 +2183,7 @@ d\mathbf{x}(t) & = & \underbrace{f(\mathbf{x}(t), t) dt}_{\text{deterministic}} ...@@ -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}$ 的无穷小高斯噪声向量。 \item 维纳过程(也称为布朗运动)$\mathbf{w}(t) \in \mathbb{R}^d$ 表示随机性的来源。增量 $d\mathbf{w}(t)$ 可以视为一个均值为 $\mathbf{0}$、协方差为 $dt \cdot \mathbf{I}$ 的无穷小高斯噪声向量。
\end{itemize} \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] \begin{figure}[!t]
\centering \centering
...@@ -2284,8 +2284,7 @@ d\mathbf{x}(t) & = & -\frac{1}{2} \beta(t) \mathbf{x}(t) d t + \sqrt{\beta(t)} d ...@@ -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 条目 & 方差爆炸(NCSN) & 方差保持(DDPM) \\ \hline
漂移系数 $f(\mathbf{x}(t), t)$ & $\mathbf{0}$ & $-\frac{1}{2} \beta(t) \mathbf{x}(t)$ \\ 漂移系数 $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)}$ \\ 扩散系数 $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$ \\ 连续时间 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
& & \hspace{1.25cm} $+ \sqrt{\beta(t)} d\mathbf{w}(t)$ \\ \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}_{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}$ 单步扩散(离散) & $\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} \end{tabular}
...@@ -2956,7 +2955,7 @@ p_\theta(\mathbf{x}(t-1)| \mathbf{x}(t), \mathbf{c}), \quad t=T,T-1,\dots,1, ...@@ -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} \label{eq:mdm-reverse-kernel}
\end{eqnarray} \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} \begin{eqnarray}
...@@ -2988,7 +2987,7 @@ p_\theta(x_i(t-1)=v| \mathbf{x}(t), \mathbf{c}) ...@@ -2988,7 +2987,7 @@ p_\theta(x_i(t-1)=v| \mathbf{x}(t), \mathbf{c})
\end{eqnarray} \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})$。我们定义掩码索引集为: 尽管上述训练目标看起来有些繁琐,但在实践中,一个更简单且广泛使用的方法是训练模型以恢复掩码位置处的原始标记。我们采样一个时间步 $t\sim U\{1,\dots,T\}$,然后采样一个损坏序列 $\mathbf{x}(t)\sim q(\mathbf{x}(t)| \mathbf{x}(0),\mathbf{c})$。我们定义掩码索引集为:
\begin{eqnarray} \begin{eqnarray}
...@@ -2999,7 +2998,7 @@ p_\theta(x_i(t-1)=v| \mathbf{x}(t), \mathbf{c}) ...@@ -2999,7 +2998,7 @@ p_\theta(x_i(t-1)=v| \mathbf{x}(t), \mathbf{c})
\begin{eqnarray} \begin{eqnarray}
& & \mathcal{L}_{\text{denoise}}(\theta) \nonumber \\ & & \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]} \mathbb{E}_{t\sim U[T]}
\; \;
......
...@@ -1271,7 +1271,7 @@ Qwen-Audio\cite{qwenaudio}和 SALMONN\cite{salmonn}等工作均通过混合多 ...@@ -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} 所要求的“建模分布并采样”。 \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] \begin{figure}[htbp]
\centering \centering
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论