结合Autoencoding和Autogressive同时预训练语言模型

文献链接及详解见 文献阅读(1)-UniLMv2

1. 背景

BERT的出现将NLU问题的SOTA向前提升了很大的一步,然而,由于BERT属于Autoencoding语言模型,需要通过上下文信息来预测被mask掉的token,在生成模型中会面临训练过程与预测过程不一致的问题。因此,BERT并没有在NLG问题中取得那么好的效果。

UniLMv1用一种elegent的方式将BERT应用在NLG任务中,并且在使用同一个model的情况下,仅通过mask矩阵控制输入就进行了不同语言模型的训练。对NLU任务就是直接使用BERT,而对seq2seq任务则是把BERT的"S1 [EOS] S2"当成 encoder-decoder结构。UniLMv1可以说结合了Autoencoding和Autoregressive两种模型的优点,在NLU和NLG任务中都取得了SOTA的结果。

然而,虽然在形式上UniLMv1通过mask矩阵用BERT模拟了Autoregressive模型,但Autoregressive中的一个核心精髓并没有体现出来,也就是一个词预测的概率和之前预测出的概率相关。

更深入的解释这句话,BERT中的掩码[Mask]之间是相互独立的。比如“意大利面酱中除了牛肉还需要用到洋葱和西芹”,如果我们把“洋葱”和“西芹”mask掉,利用BERT去预测这两个词,是分别预测“洋葱”和“西芹”。而事实上,在预测出“洋葱”之后,“西芹”的概率理应受到“洋葱”的影响,这在生成任务中是很自然的,但BERT并没有很好的体现这一点。那么本质上仍是BERT的UniLMv1自然也不能体现这个特点。

从另一方面出发,如果我们使用GPT等传统的Autoregressive模型,他的分解序列都是单向的(GPT的双向也只是从左到右和从右到左各来一次LSTM,没有体现出BERT中“天涯若比邻”的优势),不能很好的利用全局信息。因此有了后来的XLNet,把一个序列的所有tokens做一次全排列,综合考量所有分解顺序,每种分解序列都做一个Autoregressive,这样实际上全局信息还是被捕获到了。

而UniLMv2,则是在BERT的架构下,结合了XLNet序列分解的想法,在UniLMv1中消除了[Mask]之间的独立性,又保留了不同语言模型共享参数的统一训练模式,从而取得了比UniLMv1更好的效果。

2. 实现思路

2.1 掩码块和分解序列

类似于XLNet,把masked positions做一次全排列。例如,mask掉第二,第四和第五个tokens,那么全排列有六种。

当序列是2 \to 4 \to 5时,掩码概率是

p(x_2 | x_{\setminus \{ 2,4,5 \}})p(x_4 | x_{\setminus\{4,5\}})p(x_5|x_{\setminus \{5\}})
事实上,相邻tokens间往往会有较强的关系,为了避免模型过多的只学到local关系而忽视global关系,UniLMv2采取了Partially Autoregressive,将一个或几个相邻tokens封装入一个span,对于整个个序列的所有spans,相当于还是Autoregressive,但每个span中的tokens不相互attention,这样避免了总是focus在local shortcuts上。

还是刚才的序列,把4, 5封装在一个span里,序列变为2 \to 4,5,掩码概率变成了

p(x_2 | x_{\setminus \{ 2,4,5 \}})p(x_4 | x_{\setminus\{4,5\}})p(x_5|x_{\setminus \{4,5\}})

2.2 伪掩码预训练模型

这一部分的描述在原文中比较清晰,可以参考我的文献阅读笔记 文献阅读(1)-UniLMv2

UniLMv2和UniLMv1一脉相承的点是都用mask矩阵来优雅地控制输入进行训练,但UniLMv2中,mask矩阵的设计要更加复杂,我们来看一个mask矩阵的样例:



self-attention公式为:

A_l=\text{softmax}( \frac {QK^\intercal}{ \sqrt{d_k}}+M )(H^{l-1}W^V_l )

在公式中可以看出mask矩阵M的第(i, j)项表示 output token_i能不能看到 input token_j的信息(能就是0,不能就是- \infty)。

把矩阵行列调整一下顺序更有助于我们理解(行是output,列是input):



也就是论文中的:



从中我们可以总结出如下几个原则:

1. 掩码 [M] 和未被mask的原码(这里是x_1,x_3,x_6)能看到的信息:

  • 所有的掩码 [M] 和所有未被mask的原码(x_1,x_3,x_6)。
    (这其实就是Autoencoder,也就是BERT的训练方式。事实上左上角是个0矩阵,也就是说mask矩阵M不起任何作用,可以直接拿掉,就变成了Autoencoder)

2. 被mask掉的原码(x_2,x_4,x_5)能看到的信息:

  • 所有的掩码 [M],所有未被mask的原码x_1,x_3,x_6(左半边7,8,9行)。
  • 它们自身。
  • 分解序列中前序序列的原码。这里分解序列是4,5 \to 2,因此x_2可以看到x_2,x_4,x_5x_4,x_5看不到x_2,只能看到他们自己。(这体现出了序列分解Autoregressive的思想)

3. 伪掩码 [P] 能看到的信息:

  • 所有的掩码 [M]和所有未被mask的原码(左半边11,12,13行)。
  • 它们自身。
  • 前序序列的原码,比如这里P_2X_2的伪掩码)能看到X_4,X_5

这样的设计同时结合了Autoencoder和 Partially Autoregressive,AE就是0矩阵。
而PAR,按照如上的原则,我们看一下伪掩码 [P] 都能看到什么:

  • P_4, P_5: X_1M_2X_3P_4P_5M_4M_5X_6
  • P_2: X_1P_2M_2X_3X_4X_5M_4M_5X_6

而这正是PAR的设计:


另外,值得注意的是,伪掩码实际上起到的是占位符的作用,因此可以看到原码时,则对应的 [P] 不能被看到。比如X_2不能看到P_2,P_4,P_5X_4,X_5不能看到P_4,P_5(不能看到P_2不是因为占位,而是顺序上本身就看不到)。而P_2因为看到了X_4,X_5就看不到P_4,P_5。因此,最终呈现上伪掩码只能被同一span内的伪掩码看到。

这样的设计原则,除了同时体现出AE和PAR(也就是本文说的对两种LM参数共享,一次forward就把两个LM都训练了,计算效率高)以外,还有一个很重要的点,就是防止信息泄露

信息泄露分为两种:
1. 直接泄露:

所有的掩码,如果直接看到其所对应原码,quiz的设计就失去意义了,训练时只需要把权重堆在这个通路上就行了,一定会过拟合。

上述原则可以观察到,无论是 [M] 还是 [P],都无法看到其所对应的原码,这样就避免了直接泄露。

2. 间接泄露:

因为model的结构是多层attention,因此如果存在这样一条路径P_4 \to X_6 \to X_4(两层attention造成的),X_4的伪掩码间接接触了它的原码,也会造成过拟合的问题。

观察上面的规则,我们先除去AE部分的X_1,X_3,X_6M_2,M_4,M_5(因为由原则1,这一部分只能看到这一部分自己,形成了闭环,而闭环内显然是不存在直接泄露的,通路中一旦链到了这个闭环,也就无法泄露,因此可以去除掉)

我们先看X_4及其伪掩码P_4P_4只能看到P_4,P_5,而P_4,P_5永远只能看到P_4,P_5。另一个角度,X_4只能被X_2,X_4,X_5以及P_2看到,而P_4,P_5的闭环显然是看不到这些的。

X_2P_2也是一样,P_2只能看到它自己和X_4,X_5,而X_4,X_5只能看到它们自己,因此永远看不到X_2。事实上,X_2只能被它自己看到。

通过上述分析我们可以看出,被mask掉的原码只能被它们自己,以及后序的原码和伪掩码看到。而由原则3,伪掩码只能看到它们自己和前序的原码,前序原码又只能看到更前序的原码,永远看不到后序的原码和伪掩码,因此不存在这样一条通路的存在,也就杜绝了间接泄露。

2.3 预训练

类似UniLMv1,在同时训练Autoencoding模型和Partially Autoregressive时共享参数,使训练出的model能够结合两种语言模型的优点。而误差函数则是两种语言模型误差的和。

3.结论

在许多NLG和NLU的baseline上取得了SOTA,证明了模型的有效性。对PMLM进行的消融研究表明了两种语言模型在预训练时是互补的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351