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

  机器之心编辑部html

  

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

  

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

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

  

  论文连接:https://www.aclweb.org/anthology/D19-1506.pdfweb

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

  PRADO 的工做原理架构

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

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

  

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

  只有语言建模和机器翻译等少数 NLP 任务须要了解文本片断之间的细微差别,所以可能须要惟一识别全部可能的文本片断。其余大多数任务仅经过了解这些文本片断的子集便可解决。此外,任务相关的文本片断子集并不必定是频率最高的部分,由于可能很大一部分是专用的冠词,如 a、an 和 the,而这些对不少任务来讲并不重要。google

  因此,容许网络决定给定任务的最相关片断能够实现更好的性能。而且,网络不须要惟一识别这些文本片断,只须要识别出文本片断的聚类便可。举例而言,情感分类器只须要了解与文本中的情感强相关的片断聚类就好了。

  

  基于此,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

  博客连接:https://ai.googleblog.com/2020/09/advancing-nlp-with-efficient-projection.html

相关文章
相关标签/搜索