Skip to content

Transformers

字数
673 字
阅读时间
3 分钟

Autoregressive models

我们在上一讲提到了生成模型的种类 9 - Diffusion,其中我们提到: 其实我们就是想要拟合一个概率密度估计(PDE)。 我们的目标是找到一个参数化的模型Ptheta,令

pθ(x)pdata(x)

然而,这很困难。因为,有时候我们都不知道pdata是什么。另外,如果ptheta太复杂,我们都没法算出概率密度或者对数似然。 所以我们的做法是:

NOTE

当「直接最大化数据似然」maximize log⁡pθ(x) 不可行时,就用「让模型生成的数据和真实数据在统计上难以区分」的策略来代替。

比如GAN,并没有给出一个可以直接计算概率密度的函数ptheta, 而是只定义了“如何从随机噪声z生成样本x_tild = G(z)这一过程。 因此我们 没法 在每一步算出 logptheta(x) 去让其最大化。我们采用的方法是,不停地从模型里采一大批样本x_tild, 用某种度量(或对抗网络)来衡量这些假样本和真实数据的“差别”,不断调整theta,让真实x和x_tild差距越来越小。

而对于自回归模型,做法是:利用概率论的链式法则,将对:

x=(x1,x2,,xn)

的联合分布 pθ(x) 拆成:

pθ(x)=pθ(x1) × pθ(x2x1)×  × pθ(xnx1,,xn1).

优势就是,精确似然:能直接写出并计算logptheta, 但缺点就是生成速度比较慢。

Transformer

Self-Attention

序列中的每个元素都可以影响其他每个元素。

Encoder

Decoder

Decoder实际上就是一个自回归的过程: 也是一个Cross Attention的过程:

Training

首先,我们采用对decoder采用musked attention: 在计算注意力矩阵之前,把所有“未来”位置(即 ≥当前位置)的权重置为 −∞,经过 Softmax 后变成 0。 保证在训练时,用 teacher-forcing 把正确的前缀(“I am a”)喂给 Decoder,网络绝对不会看到后续词(“student”)的信息,从而满足自回归生成的因果性。

然后,decoders进行cross attention,以及feed forward,norm。 最后,与真实的下一个词(紫色“I”, “am”, “a”, “student”)做交叉熵损失,所有位置的损失加总(或平均)后,反向传播更新整个模型参数。

Generation

贡献者

文件历史