层次分解位置编码,让BERT可以处理超长文本
©PaperWeekly 原创 · 作者|苏剑林
单位|追一科技
研究方向|NLP、神经网络
位置编码
BERT 使用的是训练出来的绝对位置编码,这种编码方式简单直接,效果也很不错,但是由于每个位置向量都是模型自己训练出来的,我们无法推断其余位置的编码向量,因此有了长度限制。
解决这个问题的一个主流思路是换成相对位置编码,这是个可行的办法,华为的 NEZHA [1] 模型便是一个换成了相对位置编码的 BERT 模型。相对位置编码一般会对位置差做个截断,使得要处理的相对位置都在一个有限的范围内,因此相对位置编码可以不受限于序列长度。
但相对位置编码也不是完美的解决方案,首先像 NEZHA 那样的相对位置编码会增加计算量(如果是 T5 那种倒是不会),其次是线性 Attention 则没法用相对位置编码,也就是不够通用。
层次分解
自我分析
至于为什么会觉得这样做有效?一是由于层次分解的可解释性很强,因此可以预估我们的结果具有一定外推能力,至少对于大于 n 的位置是一个不错的初始化;二则是下一节的实验验证了,毕竟实验是证明 trick 有效的唯一标准。
本质上来说,我们做的事情很简单,就是构建一种位置编码的延拓方案,它跟原来的前 n 个编码相容,然后还能外推到更多的位置,剩下的就交给模型来适应了。这类做法肯定有无穷无尽的,笔者只是选择了其中自认为解释性比较强的一种,提供一种可能性,并不是最优的方案,也不是保证有效的方案。
实践测试
至于效果,笔者首先测了 MLM 任务,直接将最大长度设为 1536,然后加载训练好的 RoBERTa 权重,发现 MLM 的准确率大概是 38% 左右(如果截断到 512,那么大概是 55% 左右),经过 finetune 其准确率可以很快(2000 步左右)恢复到 55% 以上。
这个结果表明这样延拓出来的位置编码在 MLM 任务上是行之有效的。如果有空余算力的话,在做其他任务之前先在 MLM 下继续预训练一会应该是比较好的。
然后测了两个长文本分类问题,分别将长度设为 512 和 1024,其他参数不变进行 finetune(直接 finetune,没有 MLM 继续预训练),其中一个数据集的结果没有什么明显变化;另一个数据集在验证集上 1024 的比 512 的要高 0.5% 左右。
这再次表明本文所提的层次分解位置编码是能起作用的。所以,大家如果有足够显存的显卡,那就尽管一试吧,反正在 bert4keras 下就是多一行代码的事情,有提升就是赚到了,没提升也没浪费多少精力。
文章小结
参考文献
更多阅读
#投 稿 通 道#
让你的论文被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得或技术干货。我们的目的只有一个,让知识真正流动起来。
📝 来稿标准:
• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)
• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接
• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志
📬 投稿邮箱:
• 投稿邮箱:hr@paperweekly.site
• 所有文章配图,请单独在附件中发送
• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关于PaperWeekly
PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。