Autoregressive和Autoencoding

假如输出序列为$(w_1,w_2,w_3,w_4,w_5)$。

Autoregressive

autoregressive模型应用前t-1个单词预测第t个单词,指标函数如下,
$$\max_{\theta} \log p_{\theta}(\mathbf{x})=\sum_{t=1}^{T}\log p_{\theta}(x_t|\mathbf{x}_{<t})$$
长处:

  1. =而非$\approx$,能够严格推到
  2. no discrependency
  3. 思考被预测单词之间的依赖关系

毛病:

  1. 不能同时思考双向信息(要么从左到右,要么从右到左)

Autoencoding

autoencoding模型,应用未被mask掉的单词预测被mask掉的单词,指标函数如下,
$$\max_{\theta} \log p_{\theta}(\overline{\mathbf{x}})|\hat{\mathbf{x}})\approx\sum_{t=1}^T m_t \log p_{\theta}(x_t | \hat{\mathbf{x}}) $$
其中,$\overline{\mathbf{x}}$示意句子中被mask掉的单词, $\hat{\mathbf{x}}$示意句子中没有被mask掉的单词。 $m_t$示意如果输出句子的第t个单词被mask掉,则为1,否则为0。

长处:

  1. 能同时思考双向信息

毛病:

  1. Independent Assumption没有思考被mask掉的单词的相关性(即独自地思考被mask掉的单词);
  2. Training和Testing之间存在Discrependency(在训练时,输出有mask token,然而在预测时没有)。

两种模型取其精华,去其糟粕。

改良

使Autoregressive model能够同时思考双向信息

具体做法是应用Permutation Language Model

对于长度为$T$的序列,有$T!$种排列。为了缩小计算复杂度,对所有的permutation进行采样,最初计算冀望。
$$\max_{\theta}\mathbb{E}_{z\sim \mathcal{Z}_T}[\sum_{t=1}^{T}\log p_{\theta}(x_t | \mathbf{x}_{<t})]$$
其中,$\mathcal{Z}_T$示意所有可能的permutation。
训练时,还是应用一部分词去预测另一部分词,然而会思考相关性。
在具体实现时,输出单词的程序是不扭转的,通过引入attention mask,起到permutation的成果。

图2
例如,对于一个输出$(x_1,x_2,x_3,x_4)$,对单词$x_3$进行预测,当permutation为$(x_3,x_2,x_4,x_1)$时,通过attention mask使得$h_3$只会思考$mem$,即求$p_{\theta}(x_3|mem)$;当permutation为$(x_2,x_4,x_3,x_1)$时,$h_3$会思考$mem$、$x_2$和$x_4$的信息,即求概率$p_{\theta}(mem,x_2,x_4)$。

target aware

假如应用规范的softmax来示意next-token的散布,即给定前t-1个单词,第t的单词的概率 $p_\theta(x_{z_t}|\mathbf{x}_{z_{<t}})$,
$$p_\theta(x_{z_t}=x|\mathbf{x}_{z_{<t}})=\frac{exp(e(x)^Th_{\theta}(\mathbf{x}_{z_{<t}}))}{\sum_{x^{'}}exp(e(x^{'})^Th_{\theta}(\mathbf{x}_{z_{<t}}))}$$
其中,$h_{\theta}(\mathbf{x}_{z_{<t}})$示意permutation z种前t-1个单词的组成的序列的hidden representation。显然,$h_{\theta}(\mathbf{x}_{z_{<t}})$不蕴含predict word $x_{z_t}$的地位信息,这样就会造成在预测predict word的散布时,没有思考它在句子中的地位信息,从而使得如果两个不同的单词,在句子中的地位不同,然而在不同permutation中的地位雷同(sequence position不同然而factorization position雷同),则这两个单词预测的概率分布也会雷同。例如,
存在两个不同的permutation $z^{(1)}$和$z^{(2)}$,满足$z^{(1)}_{<t}=z^{(2)}_{<t}=z_{<t}$,然而$z^{(1)}_t = i \neq j=z^{(2)}_t$,尽管单词$x_i$和$x_j$不同,然而却具备雷同的预测值,这显然是不正确的。
为此,xlnet提出了target position aware next-token distribution。
$$p_\theta(x_{z_t}=x|\mathbf{x}_{z_{<t}})=\frac{exp(e(x)^T g_{\theta}(\mathbf{x}_{z_{<t}},z_t))}{\sum_{x^{'}}exp(e(x^{'})^Tg_{\theta}(\mathbf{x}_{z_{<t}},z_t))}$$
其中,$g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$额定思考了taget position $z_t$。

地位信息

接下来须要思考如何定义$g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$。应用规范的transformer架构会有如下问题。

  1. 在预测单词$x_{z_t}$时,$g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$该当晓得单词$x_{z_t}$的地位信息$z_t$然而不能晓得单词的内容;
  2. 当预测单词$x_{z_j},(j>t)$,$g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$须要晓得单词$x_{z_t}$的内容(因为单词$x_{z_t}$是单词$x_{z_j}$的上下文,对单词$x_{z_j}$预测时,须要晓得其上下文的内容)。

这就产生了矛盾,举例来说。例如,输出序列为$(x_1,x_2,x_3,x_4)$,须要对$x_2$和$x_4$进行预测,此时permutation为(3,2,4,1)。当预测$x_2$,心愿模型只能晓得$x_2$的地位信息然而不能晓得$x_2$的内容,然而预测$x_4$又心愿晓得$x_2$的内容,即既不心愿$g_2$蕴含$x_2$的内容,又心愿$g_2$蕴含$x_2$的内容。这就产生了矛盾。

图3

Two-Stream Self Attention

xlnet的解决办法是,应用两种hidden representation。

  1. content representation $h_{\theta}(\mathbf{x}_{\leq t})$
  2. query representation $g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$

其中,content representation $h_{\theta}(\mathbf{x}_{\leq t})$与规范的transfomer中的hidden state一样,都编码了单词$x_{z_t}$本身的内容信息和其上下文的内容信息。query representation $g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$蕴含单词$x_{z_t}$其上下文的内容信息和其地位信息。
能够将这两种representation类比word2vec模型中的context embeding和target embedding。content representation $h_{\theta}(\mathbf{x}_{\leq t})$能够看作是单词$x_{z_t}$作为其它单词的上下文(context)时,应用的hidden state;query representation $g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$能够看作是单词$x_{z_t}$作为被预测的token(target)时,应用的hidden state。
如图4(c)所示,在输出层,$h^{(0)}$为单词的embedding,$g^{(0)}$为随机初始化的向量。

图4

图5

图6
query representaion和hidden representation在前向流传中的计算形式为
$$g^{(m)}_{z_t}=Attention(Q=g^{(m-1)}_{z_t},KV=h^{(m-1)}_{z_{<t}};\theta)$$
$$h^{(m)}_{z_t}=Attention(Q=h^{(m-1)}_{z_t},KV=h^{(m-1)}_{z_{\leq t}};\theta)$$
如图4(c)所示在计算query representaion$g^{(m)}_{z_t}$时不会应用到单词本身的内容信息,对应的attention mask,其主对角线上的值为0;在计算hidden representaion$h^{(m)}_{z_t}$时,会应用到单词本身的内容信息,对应的attention mask,其主对角线上的值不为0。

xlnet抉择的Autoregressive Model时Transfomer-XL,引入Transfomer-XL的两大个性:relative positional encoding schemasegment recurrence mechanism
对于xlnet的输出,假设又两个segment,$\tilde{\mathbf{x}}$和$\mathbf{x}$,别离对两个segment进行permutation,并且前一个segment的hidden state会被后一个segment应用。

训练采纳partial prediction

xlnet通过应用permutation language modeling,使得模型能够同时思考双向的信息(上下文),然而也带来了一些问题。(1)permuation数量大,可通过采样解决;(2)在一个permutation中地位靠前的单词,其上下文的长度是很短的,对这些单词进行预测,收益不大,因而xlnet在训练模型时,只对permutation中靠后的单词进行预测,即采纳partial prediction的做法。
这样做的益处是,(1)靠后的单词,上下文长度较长,因而对样本的利用较为充沛;(2)只对虑靠后的大量单词进行预测(假如为后$c$个的单词),因而没必要计算前$c$个单词的query representation(前$c$个单词全副充当的是上下文的角色,因而只需计算hidden representation),极大地缩小了计算量。
指标函数为,
$$\max_{\theta}\mathbb{E}_{z\sim \mathcal{Z}_T}[\log p_{\theta}(\mathbf{x}_{z_{>c}}|\mathbf{x}_{z_{\leq c}})]=\mathbb{E}_{z\sim \mathcal{Z}_T}[\sum_{t=c+1}^{|z|}\log p_{\theta}(x_{z_t})|\mathbf{x}_{z_{<t}}]$$