StructBERT(ALICE)
STRUCTBERT: INCORPORATING LANGUAGE STRUCTURES INTO PRE-TRAINING FOR DEEP LANGUAGE UNDERSTANDING
效果仅次于ERNIE2.0,在GLUE上比ERNIE2.0高,目前国内GLUE绑最高作品
先看两句话
-
i tinhk yuo undresatnd this sentneces.
-
研表究明,汉字序顺并不定一影阅响读。比如当你看完这句话后,才发这现里的字全是都乱的
- 上面全是乱序,改进思路也来于此
对于一个人,字或者character的顺序比应该是影响模型效果的因素。----->一个好的LM,需要能自己纠错
- 核心思想是在预训练中加入(新增,原来的MLM和NSP保留):word-level ordering和sentence-level ordering,即词序和句序
Word Structural Objective
- bert不能直接显示对词序和高阶依赖性建模
选取一定长度的子序列,将子序列中的单词进行打乱,然后让模型恢复顺序
- 长度为3(超参数)的子序列进行打乱,K大K小都不合适,论文设为3(大了难,小了太简单没用)
- 作者将重排子序列中选择5%,进行词序打乱
Sentence Structural Objective
- bert很容易预测下一句话,这里增加上一句话的预测,是的语言模型变成双向
- 给定句对(S1,S2)
- 1、预测S1是S2的上一句话;2、S2是S1的上一句话;3、S1和S2来自不同的文本
- 实验中,1/3的概率采样S的下一句话组成句子对,1/3的概率采样S的上一句话形成句子对,1/3的概率随机采样一个其他文档的句子组成句子对
效果
- GLUE上,结合RoBERTa效果更好,单体效果超过平均水平
- SNLI上表现很好,可见语序对NLI很有用
- SquAD上,比bert效果增加,可见顺序可以增强阅读能力
消融实验
整体来说合并比较好
老实说,这个想法就是借鉴XLNET的改变顺序,然后结合ERNIE2.0的加一堆预训练进去,不过没想到效果还不错