用Diffusion做语言建模这么做?
自回归
如果是transformer的话
用Encoder做语言建模(BERT)
两个loss-完形填空loss + 句子匹配loss
语言模型下,两个词的表示无法线性化,也就很难用浮点数表达语言数据
本文特点:非自回归、连续diffusion、端到端训练
固定的embeddign在端到端的训练中表现不好,
离散 - 连续
连续化
图片数据可以吧0~255的离散值,通过sigmoid或者什么的函数将它映射到一个0~1的连续空间中,但是文字数据是需要一个词典的,比如1-a 2-aaron…… 93845 - zoo之类的,这个如果投影到连续空间中,那么直观上理解就知道这个投影在文本的语义上不是线性的,也就是说我们的印象里应该是:
北京-中国+法国=巴黎
这种计算应该是线性的,可是如果直接从词典进行映射的话,没有办法达到语义上的线性。
基于此我们可以用embedding,将语义非线性的词表投影到一个语义线性的隐向量空间当中
离散化
如何让词向量变回句子呢?
首先让句子变成一个长度为$n \times d$的一维大向量,其中n是词汇个数,d是embedding的维度。
语言文本生成
生成式模型
假设训练有无监督训练的语言模型$p_{\operatorname{lm}}(\mathbf{w})$,从中采样$\mathbf{w}$:
$\mathbf{w} = \left[w_1 \cdots w_n\right]$
$w_1 \cdots w_n$表征的是word1…wordn,的n个单词
$p_{\operatorname{lm}}(\mathbf{w})$在这个语境中则表征出词向量$\mathbf{w} = \left[w_1 \cdots w_n\right]$的概率分布,从这个模型中采样出的w,它都是由哪些词汇经过什么顺序组成的,那么这么一个采样-还原的过程就是关于语言的生成模型。
可控的文本生成
基于上述对生成式模型的描述,可控的文本生成模型可以被写作有监督的语言概率模型:$p(\mathbf{w} \mid \mathbf{c})$
此处的$\mathbf{c}$是一个条件变量,可能是句子的语法、情感、语义。
这个模型需要一些带标签的数据集训练。
可控生成的目标就是让生成的$\mathbf{w}$尽可能吻合条件变量$\mathbf{c}$
贝叶斯定理的引入
根据贝叶斯的条件概率公式及其相关定理可以将语言模型的训练转换为:
$p(\mathbf{w} \mid \mathbf{c}) \propto p_{\mathrm{lm}}(\mathbf{w}) \cdot p(\mathbf{c} \mid \mathbf{w})$
释义:
原目标:给定条件$\mathbf{c}$的情况下,采样生成得到的句向量$\mathbf{w}$和我们给出的条件$\mathbf{c}$越接近越好
新目标:采样生成的文本的困惑度越低越好($p_{\mathrm{lm}}(\mathbf{w})$) 采样生成的$\mathbf{w}$和给定的条件$\mathbf{c}$越接近越好($p(\mathbf{c} \mid \mathbf{w})$)
变化:去除了采样的前提条件*,一定程度使得训练更易拆解
扩散模型
(用transformer预测的是降噪采样时的均值)
前向过程
$q_\phi\left(\mathbf{x}_0 \mid \mathbf{w}\right)=\mathcal{N}\left(\operatorname{EMB}(\mathbf{w}), \sigma_0 I\right)$
逆向过程
rounding 技巧
$p_\theta\left(\mathbf{w} \mid \mathbf{x}_0\right)=\prod_{i=1}^n p_\theta\left(w_i \mid x_i\right)$ (rounding回放 方法)
利用这个方法去近似还原原本的句子
$p_\theta\left(w_i \mid x_i\right)$是一个softmax
clamp技巧
在降噪采样的过程中,遵从重采样的分布:
$\mathbf{x}_{t-1}=\sqrt{\bar{\alpha}} f_\theta\left(\mathbf{x}_t, t\right)+\sqrt{1-\bar{\alpha}} \epsilon$
这里的clamp技巧会将$f_\theta\left(\mathbf{x}_t, t\right)$和其在隐向量空间中距离其最近的一个词向量钳在一起,让它的输出更准确