在最新的博客文章中,谷歌公布了一个新的 NLP 模型,在文本分类任务上可以达到 BERT 级别的性能,但参数量仅为 BERT 的 1/300。

在过去的十年中,深度神经网络从根本上变革了自然语言处理(NLP)领域的发展,但移动端有限的内存和处理能力对模型提出了更高的要求。人们希望它们可以变得更小,但性能不打折扣。

去年,谷歌发布了一种被称为 PRADO 的神经架构,该架构当时在许多文本分类问题上都实现了 SOTA 性能,并且参数量少于 200K。大多数模型对每个 token 使用固定数目的参数,而 PRADO 模型使用的网络结构只需要很少的参数即可学习与任务最相关或最有用的 token。

论文链接:https://www.aclweb.org/anthology/D19-1506.pdf

在最新的博客文章中,谷歌的研究者宣布它们改进了 PRADO,并将改进后的模型称为 pQRNN。新模型以最小的模型尺寸达到了 NLP 任务的新 SOTA。pQRNN 的新颖之处在于,它将简单的投影运算与 quasi-RNN 编码器相结合,以进行快速、并行的处理。该研究表明,pQRNN 模型能够在文本分类任务上实现 BERT 级别的性能,但参数量仅为原来的 1/300

PRADO 的工作原理

在一年前开发该模型时,PRADO 在文本分割上充分利用特定领域的 NLP 知识,以降低模型大小和提升模型性能。通常来说,首先通过将文本分割成与预定义通用词典中的值相对应的 token,将 NLP 模型的文本输入处理成适用于神经网络的形式。然后,神经网络使用可训练参数向量(包括嵌入表)来唯一识别每个文本片段。但是,文本分割的方式对模型性能、大小和延迟都有显著的影响。

下图展示了 NLP 社区使用的各种文本分割方法及其相应的优缺点:

由于文本片段的数量是影响模型性能和压缩的重要参数,因此引出了一个问题,即 NLP 模型是否需要能够清楚地识别每个可能的文本片段。为了回答这个问题,研究者探索了 NLP 任务的固有复杂性。

只有语言建模和机器翻译等少数 NLP 任务需要了解文本片段之间的细微差异,因此可能需要唯一识别所有可能的文本片段。其他大多数任务仅通过了解这些文本片段的子集即可解决。此外,任务相关的文本片段子集并不一定是频率最高的部分,因为可能很大一部分是专用的冠词,如 a、an 和 the,而这些对很多任务来说并不重要。

所以,允许网络决定给定任务的最相关片段可以实现更好的性能。并且,网络不需要唯一识别这些文本片段,只需要识别出文本片段的聚类即可。举例而言,情感分类器只需要了解与文本中的情感强相关的片段聚类就行了。

基于此,PRADO 被设计成从词(word)中学习文本片段的聚类,而不是 word piece 或字符,从而使它能够在低复杂度 NLP 任务中实现良好的性能。由于 word unit 更有意义,而且与大多数任务最相关的词并不多,所以学习相关词聚类的简化子集所需要的模型参数就少了很多。

改进 PRADO

谷歌研究者在 PRADO 的基础上开发了一个更强的 NLP 模型——pQRNN。该模型由三个构建块组成——一个是将文本中的 token 转化为三元向量序列的投影算子、一个密集 bottleneck 层和若干 QRNN 编码器

pQRNN 中投影层的实现与 PRADO 中所用到的一致,帮助模型学习相关性最强的 token,但没有一组固定的参数来定义这些 token。它首先对文本中的 token 进行识别,然后使用一个简单的映射函数将其转换为三元特征向量。这将产生一个三元向量序列,该序列具有平衡对称分布,用来表示文本。这种表示没有直接用途,因为它不包含解决感兴趣任务所需的任何信息,而且网络无法控制这种表示。

研究者将其与一个密集 bottleneck 层结合在一起,以使网络可以学习到一个与手头任务相关的逐词表示。bottleneck 层产生的表示仍然没有考虑到词的上下文。因此,研究者利用若干双向 QRNN 编码器学习了一个上下文表示。这样可以得到一个仅从文本输入就能学到上下文表示的网络,并且无需任何预处理。

pQRNN 的性能

研究者在 civil_comments 数据集上评估了 pQRNN,并将其与 BERT 模型在相同的任务中进行了比较。模型的大小与其参数量成正比,因此 pQRNN 比 BERT 小得多

此外,pQRNN 还进行了量化处理(quantized),因此模型体积进一步缩小到原来的 1/4。公开训练的 BERT 在本文的任务中表现不好,因此拿来对比的 BERT 其实是在几个不同的相关多语言数据源上进行预训练得到的,以使其达到最好的表现。

在实验中,研究者得到了两个模型的 AUC 信息。在没有任何预训练、只在监督数据训练的情况下,pQRNN 的 AUC 是 0.963,用到了 130 万个量化(8-bit)参数。在几个不同数据源进行预训练并在监督数据上进行微调之后,BERT 模型得到的 AUC 是 0.976,用到了 1.1 亿个浮点参数。

为了鼓励社区在谷歌研究成果的基础上做出进一步改进,谷歌还开源了 PRADO 模型。

项目地址:https://github.com/tensorflow/models/tree/master/research/sequence_projection

【编辑推荐】

  1. 人工智能技术走向成熟,AI语音行业迎来广阔发展前景
  2. 字节跳动发布说明:不涉及任何算法和技术的转让
  3. 对于 JavaScript 中循环之间的技术差异概述
  4. 技术人员思维和认知升级
  5. 两月不到,如何从新手成为谷歌认证TensorFlow开发者?

性能媲美BERT,参数量仅为1/300,谷歌最新的NLP模型相关推荐

  1. 性能媲美BERT,但参数量仅为1/300,这是谷歌最新的NLP模型

    选自Google AI Blog 作者:Prabhu Kaliamoorthi 机器之心编译 机器之心编辑部 在最新的博客文章中,谷歌公布了一个新的 NLP 模型,在文本分类任务上可以达到 BERT ...

  2. bert 中文 代码 谷歌_ELECTRA中文预训练模型开源,110个参数,性能媲美BERT

    感谢参考原文-http://bjbsair.com/2020-03-27/tech-info/7050/ 在去年11月份,NLP大神Manning联合谷歌做的ELECTRA一经发布,迅速火爆整个NLP ...

  3. 谷歌更强 NLP 模型 XLNet 开源:20 项任务全面碾压 BERT!

    谷歌更强 NLP 模型 XLNet 开源:20 项任务全面碾压 BERT! 11 月份,谷歌研究团队在 GitHub 上发布了万众期待的 BERT,它不仅在 11 项 NLP 测试中刷新了最高成绩,甚 ...

  4. 谷歌最强 NLP 模型 BERT 解读

    谷歌最强 NLP 模型 BERT 解读 https://mp.weixin.qq.com/s/N7Qp_Fx0rAFbvrpLSETi8w 本文是追一科技潘晟锋基于谷歌论文为 AI 科技评论提供的解读 ...

  5. 谷歌最强NLP模型BERT官方代码来了!GitHub一天3000星

    新智元报道 来源:GitHub 作者:Google Research 编辑:肖琴 [新智元导读]谷歌AI团队终于开源了最强NLP模型BERT的代码和预训练模型.从论文发布以来,BERT在NLP业内引起 ...

  6. 性能堪比GPT-3,但参数量仅为0.1%,LMU团队推出NLP最强文本生成模型

    2020-09-24 04:21:08 作者 | 贝爽 编辑 | 陈彩娴 模型越大,性能越佳?不一定. 在NLP领域,谈到超大模型必然想到预训练语言模型GPT-3,自今年3月份对外开放以来,其因超大模 ...

  7. 性能媲美BERT却只有其1/10参数量? | 近期最火模型ELECTRA解析

    快速传送门   论文链接 https://openreview.net/forum?id=r1xMH1BtvB Google开源地址 https://github.com/google-researc ...

  8. 12层的bert参数量_只需一个损失函数、一个超参数即可压缩BERT,MSRA提出模型压缩新方法...

    来自武汉大学.北京航空航天大学和微软亚洲研究院的这项研究为模型压缩提供了新方向. 机器之心报道,参与:魔王. 论文链接:https://arxiv.org/pdf/2002.02925.pdf 这篇论 ...

  9. 谷歌最强NLP模型BERT如约开源,12小时GitHub标星破1500,即将支持中文

    夏乙 晓查 乾明 问耕 发自 凹非寺 量子位 报道 | 公众号 QbitAI BERT终于来了!今天,谷歌研究团队终于在GitHub上发布了万众期待的BERT. 代码放出不到一天,就已经在GitHub ...

最新文章

  1. 手机应用软件测试的思路与要点
  2. 华为发布《AR洞察与应用实践白皮书》,提出用5G点燃AR,用AR照亮5G
  3. 如何确定敏捷是否适合你的团队?
  4. 颈椎病2句话就能治疗好,你也试试看,一学就会!
  5. ES6之let(理解闭包)和const命令
  6. 除了分析引擎 2.0,神策再发一波儿新功能!
  7. 有向加权图 最大弱连通分支_买入加权组合式等价对敲
  8. SAP JAM的自定义widget编辑功能
  9. c语言如何把void换成汉字,有没有大佬帮我把这个代码改成void函数形式的代码。拜托了!...
  10. 集合系列之fail-fast 与fail-safe 区别
  11. 文言色彩的客套话之感想
  12. 对应版本_DNF:韩服新增天域之母等13件特殊史诗,老版本装备全部直升100级
  13. 计算机一级ms office选择题题库,全国计算机等级考试一级MSOFFICE选择题题库.doc
  14. C#开发工控上位机编程 csdn_C#联合WINCC之数据通信
  15. Linux audit详解
  16. win10中Charles从下载安装到证书设置和雷电模拟器或浏览器中抓包测试
  17. 邢台一中2021年许计勇高考成绩查询,文理Top10!2020邢台高考成绩揭晓...
  18. 基于51单片机的故障灯检测
  19. 西门子PCS7系统NTP网络时钟同步(NTP时钟发生器)介绍
  20. Swift中的类和结构体(2)

热门文章

  1. 网站留言板防重复留言_如何做一个2000年风格复古的个人网站(3)创建个人小站-主页...
  2. java中class对象的理解 讲得相当不错 很接地气 引用下
  3. 线程的挂起是错误的概念实际是线程的阻塞,挂起只针对进程,将进程挂起会将进程从内存空间交换到磁盘空间的过程
  4. tensorflow.unstack() and tensorflow.stack()
  5. 批处理中百分号%的作用
  6. build.xml(黎活明安全管理部署文件)
  7. 在windows下基于visual studio2017和CMake的安装Google glog
  8. 当深度学习搭上一双鞋,有人要用这检测你的压力水平!可无线操作,准确率达84%...
  9. 中国工业机器视觉产业发展白皮书(附ppt)
  10. 研究了北京的14848条道路,我们竟然发现……