关于xlnet的一些理解

看张俊林老师的深度学习枕边书时,一直有个疑问,Bert既然那么好, 除了transformer提取特征,使用的又是双向的语言模型, 那跟单向的GPT比,肯定更好呀,为什么还会有人用GPT呢?
知道答案后,害,真是外行问题: Bert属于AE阵营,适用于语义理解等场景; GPT属于AR阵营,适用于生成文本。

两大阵营之间,发展出来了xlnet.
xlnet常搜到的一句话就是: 最大化所有可能的序列的因式分解顺序的期望对数似然
刚开始对这句话相当不理解,即使后面看明白了处理,感觉上面的描述也只是有关联关系,好像不是一个很好的概括?
还去搜了一下“因式分解”,这个跟我原来的理解是差不多的: 因式分解是针对多项式的,好像没有搜到 “序列”这个东西 可以做因式分解。
所以我觉得这句话 最好改变为: 最大化 所有可能的序列元素的排列顺序 的期望对数似然。
可能有的同学觉得 这样抠字眼没有意义, 我只是觉得 我没明白时,这样的描述不能很好的概括原理与点醒我;明白之后,可以考虑去纠正这个说法。


xlnet的文章中,常看到这样一幅图:关于xlnet的一些理解_第1张图片

当时不知道 这两个mask图中 红点代表什么意思? 虽然能很明显看出来 这两张图的差别是对角线上的全红和全白, 但为什么那些位置就是红点,另一些位置就是白点呢?
后来终于明白了:
红点是代表 某个词 可以attend to的词(左右方向)
比如右边的ContentMask 它的第一行全是红点, 其含义是 第一个词可以attend to 所有的词(根据 3->2->4->1)

更具体的:
第一行:第一个词 会用到第四个位置上能attend到的词, 第四个位置, 可以attend to 3->2->4->1中的 3 2 4 词以及1 它自己,也就是所有的词, 所以全是红点
第二行:第二个词 会用到第二个位置上能attend到的词, 第二个位置, 可以attend to 3->2->4->1中的 3 词以及2 它自己,所以二三是红点
第三行:第三个词 会用到第一个位置上能attend到的词, 第一个位置, 可以attend to 3->2->4->1中的 3 词 就是它自己,所以三是红点
第四行:第四个词 会用到第三个位置上能attend到的词, 第三个位置, 可以attend to 3->2->4->1中的 3 2词以及4 它自己,所以二三四是红点

而QueryMask 和ContentMask的区别 就是不能attend to 自己  因此对角线都是白点。 上面这四句话的最后 都去掉'它自己' 就OK。

位置信息要单独输入, 而不像之前的bert那些模型是concat后输入网络,因此才能这样单独利用位置信息,去预测下一个词。

能这样做,cnn/rnn/transformer三者中,只有transformer。因为它是 每两个词之间都在计算相似性,rnn有时间步的限制,cnn也不是两两之间去计算。

 

除了双流自注意力,xlnet也引用了transformer-xl前向计算时的思想和相对位置编码:
transformer-xl的思想 跟rnn很像,理解了rnn, 再理解这个就不难了。好比rnn是在发掘 前后单个元素之间的关系, transfermer-xl是'在把前一个固定长度的词序列segment每一层的输出 都放在一个cache里', 这样forward时可以重复使用。 但计算梯度时 还是只使用本segment的信息。

transformer-xl使用的相对位置编码 计算attention时‘利用当前query和key的相对位置' '判断两个词 是否属于同一个segment'

 

你可能感兴趣的:(深度学习,原来是这样)