谷歌最新模型pQRNN:效果接近BERT,参数量缩小300倍

2020 年 10 月 2 日 AINLP

文本分类是NLP最常见的应用之一,有了BERT之后更是可以通过小批量数据精调达到不错的效果。但在对速度要求高、没有钱买GPU、移动设备部署的场景下,还是得用浅层网络。

今天就跟大家介绍Google最近新出的一个模型——pQRNN,只利用监督数据(无蒸馏),以约1/300的参数量达到了接近BERT的效果。pQRNN是Google去年更小模型PRADO的一个改进版本,下面从PRADO讲起,来看看它们是如何以小博大的叭。

pQRNN官方博客:
https://ai.googleblog.com/2020/09/advancing-nlp-with-efficient-projection.html
PRADO论文:
https://www.aclweb.org/anthology/D19-1506/
PRADO代码:
https://github.com/tensorflow/models/tree/master/research/sequence_projection
关注「NLPCAB」回复「1001」下载论文~

PRADO模型

Embedding

对于我们常用的NLP模型来说,Embedding词表往往是参数量占比较大的一块儿。中文如果选用字级别的词表,大概在一两万级别,词级别则会几万或者更大,还会出现OOV。英文多出了子词级别,但无论哪种粒度的划分都是存在缺点的:

太细了就对模型要求很高,单独的词也不具有太大意义,而太粗了又没法涵盖所有词汇

这就需要我们在不同的任务上选取不同的粒度。PRADO的作者认为,对于文本分类这样的简单任务,很多词汇是和任务无关的,比如 a, the等。另外,也不需要embedding可以准确的表示每个词,只需要大概表示出词所属的类目就可以了。比如在情感分析任务中,只需要让模型知道“超棒”和“太赞了”都是一个positive的词汇,而不用知道这两个词的区别在哪里,甚至用一个embedding去表示这两个词都是可以的。

下面是不同任务和细粒度词表示的相关性,对于语言模型和翻译任务,就需要准确地区分每个词:

那PRADO是如何压缩embedding的呢?

以往在拿到token之后,我们会有一个转one-hot向量的操作,向量的大小是词表维度V,然后再经过lookup table得到embedding。而PRADO则是将向量进行了压缩,具体的操作是:

  1. 对token进行哈希,得到 2B bits 的哈希值,比如 011001010
  2. 用一个投影函数P,将 每2个连续的bit映射到 {-1, 0, 1} 中
  3. 得到B维的三元向量,比如 [-1, -1, 1, 0, 1] 这样
  4. 将 1xB 的三元向量和 Bxd 的矩阵相乘,得到 d维embedding表示

这样,我们就得到了一个压缩后的token表示,不用准确地用one-hot来表示每个token。作者把B的维度限制在 [128, 512],d的维度限制在[32, 96],从词表参数量上比BERT小了三四个数量级。

整体结构

PRADO主要的创新就在Embedding部分,后续就比较普通,选择了性价比较高的CNN+Attention。这里Attention其实是对CNN的结果进行了Pooling:先计算了一路CNN的结果,再计算softmax得到每个step的权重,然后把另一路CNN的结果加权起来,得到一个向量。

最后把不同尺寸kernel输出的向量concat,再过classifier(我们熟悉的套路又渐渐回来了)。

PRADO模型结构

实验效果

在效果上,PRADO肯定是比之前的浅层模型要好,然而我去看了一眼每个数据集的SOTA,emm。。效果上还需努力鸭

PRADO效果

令我感兴趣的是,8-bit量化之后的PRADO居然效果更好!作者认为主要是量化减少了过拟合,在数据越少的数据集上效果提升就更明显。

对比实验,性价比吊打LSTM

最后,作者还做了迁移实验,证明这种embedding改进的可迁移性,发现只freeze上embedding和encoder,只finetune分类器就收敛得很快

PRADO迁移学习实验

pQRNN

介绍完了PRADO,再来看谷歌新出的pQRNN就很好懂了,实际上只是把encoder换成了QRNN(quasi-RNN):

pQRNN模型结构

这里的Projection就是得到三元的过程,Bottleneck就是将三元向量embedding。

虽然没什么太大创新,但比较激动的是pQRNN的效果接近了BERT(之前PRADO都是惨不忍睹)

pQRNN

不过这个结论只在一个数据集上验证了,其他数据上的表现未可知。

总结

PRADO/pQRNN的主要改进点就在embedding部分,确实文本分类对于token的粒度要求不高,只用抓住句子里最主要的一两个词就行了,所以max-pooling经常会比mean-pooling效果要好。

但这里有个需要探讨的点,就是如何迁移到中文任务上。单纯的哈希是没法将相似的词映射到相似的三元向量的,这里我认为应该是进行字粒度的tokenization,这样相似的“好赞”、“超赞”的表示就很接近了,再过CNN就可以捕获到词级别的信息。

去年PRADO就出来了,但20年8月底才放出源码,同学们赶紧试用起来呀。




由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心


欢迎加入预训练模型交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注预训练模型

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
0

相关内容

【NeurIPS 2020】依图推出预训练语言理解模型ConvBERT
专知会员服务
11+阅读 · 2020年11月13日
【NeurIPS 2020】融入BERT到并行序列模型
专知会员服务
25+阅读 · 2020年10月15日
【KDD2020-UCLA-微软】GPT-GNN:图神经网络的预训练
专知会员服务
62+阅读 · 2020年8月19日
【Contextual Embedding】什么时候上下文嵌入值得使用?
专知会员服务
15+阅读 · 2020年8月2日
专知会员服务
44+阅读 · 2020年3月6日
BERT进展2019四篇必读论文
专知会员服务
67+阅读 · 2020年1月2日
一文详解Google最新NLP模型XLNet
PaperWeekly
18+阅读 · 2019年7月1日
通过预训练提升语言理解
开放知识图谱
4+阅读 · 2018年11月21日
谷歌BERT模型深度解析
AINLP
42+阅读 · 2018年11月15日
详细解读谷歌新模型 BERT 为什么嗨翻 AI 圈
人工智能头条
10+阅读 · 2018年10月25日
解读谷歌最强NLP模型BERT:模型、数据和训练
未来产业促进会
5+阅读 · 2018年10月20日
论文解读 | 基于递归联合注意力的句子匹配模型
Arxiv
6+阅读 · 2019年4月8日
The Evolved Transformer
Arxiv
5+阅读 · 2019年1月30日
VIP会员
相关VIP内容
【NeurIPS 2020】依图推出预训练语言理解模型ConvBERT
专知会员服务
11+阅读 · 2020年11月13日
【NeurIPS 2020】融入BERT到并行序列模型
专知会员服务
25+阅读 · 2020年10月15日
【KDD2020-UCLA-微软】GPT-GNN:图神经网络的预训练
专知会员服务
62+阅读 · 2020年8月19日
【Contextual Embedding】什么时候上下文嵌入值得使用?
专知会员服务
15+阅读 · 2020年8月2日
专知会员服务
44+阅读 · 2020年3月6日
BERT进展2019四篇必读论文
专知会员服务
67+阅读 · 2020年1月2日
相关资讯
一文详解Google最新NLP模型XLNet
PaperWeekly
18+阅读 · 2019年7月1日
通过预训练提升语言理解
开放知识图谱
4+阅读 · 2018年11月21日
谷歌BERT模型深度解析
AINLP
42+阅读 · 2018年11月15日
详细解读谷歌新模型 BERT 为什么嗨翻 AI 圈
人工智能头条
10+阅读 · 2018年10月25日
解读谷歌最强NLP模型BERT:模型、数据和训练
未来产业促进会
5+阅读 · 2018年10月20日
论文解读 | 基于递归联合注意力的句子匹配模型
Top
微信扫码咨询专知VIP会员