使用高效的基于投影的模型架构推进 NLP

深度神经网络在过去十年中彻底改变了自然语言处理(NLP) , 主要是通过它们在使用专用硬件的数据中心中的应用 。 然而 , 诸如保护用户隐私、消除网络延迟、启用离线功能和降低运营成本等问题迅速推动了可以在设备上而不是在数据中心运行的NLP模型的开发 。 然而 , 移动设备的内存和处理能力有限 , 这要求在其上运行的模型既小又高效——同时不影响质量 。
去年 , 我们发布了一个名为PRADO的神经架构 , 当时它在许多文本分类问题上取得了最先进的性能 , 使用的模型参数少于20万 。 虽然大多数模型对每个标记使用固定数量的参数 , 但PRADO模型使用的网络结构需要极少的参数来学习与任务最相关或最有用的标记 。
使用高效的基于投影的模型架构推进 NLP】今天 , 我们描述了该模型的一个新扩展 , 称为pQRNN , 它以最小的模型尺寸提高了NLP性能的最新技术水平 。 pQRNN的新颖之处在于它如何将简单的投影操作与准RNN编码器相结合 , 以实现快速、并行处理 。 我们表明pQRNN模型能够在文本分类任务上实现BERT级别的性能 , 并且参数数量少几个数量级 。
是什么让普拉多发挥作用?
一年前开发时 , PRADO利用NLP领域特定的文本分割知识来减小模型大小并提高性能 。 通常 , 输入到NLP模型的文本首先被处理成适合神经网络的形式 , 方法是将文本分割成与预定义通用字典(所有可能标记的列表)中的值相对应的片段(标记) 。 然后 , 神经网络使用包含嵌入表的可训练参数向量来唯一标识每个段 。 然而 , 文本分割的方式对模型性能、大小和延迟有重大影响 。 下图显示了NLP社区使用的一系列方法及其优缺点 。
只有少数NLP任务(例如语言模型和机器翻译)需要知道文本片段之间的细微差别 , 因此需要能够唯一地识别所有可能的文本片段 。 相比之下 , 大多数其他任务可以通过了解这些细分的一小部分来解决 。 此外 , 这部分与任务相关的细分可能不是最常见的 , 因为毫无疑问 , 很大一部分细分将专门用于文章 , 例如a、an、the等 , 这对于许多任务来说并不重要 。 因此 , 允许网络为给定任务确定最相关的段会带来更好的性能 。 此外 , 网络不需要能够唯一地识别这些段 , 而只需要识别文本段的集群 。 例如 , 情感分类器只需要知道与文本中的情感密切相关的片段集群 。
使用高效的基于投影的模型架构推进 NLP
文章图片
利用这些见解 , PRADO旨在从单词而不是单词片段或字符中学习文本片段的集群 , 这使其能够在低复杂度的NLP任务上取得良好的性能 。 由于词单元更有意义 , 而且大多数任务中最相关的词都相当小 , 因此学习这种减少的相关词簇子集所需的模型参数要少得多 。
改进PRADO
在PRADO的成功基础上 , 我们开发了一种改进的NLP模型 , 称为pQRNN 。 该模型由三个构建块组成 , 一个将文本中的标记转换为三元向量序列的投影算子、一个密集的瓶颈层和一堆QRNN编码器 。
pQRNN中投影层的实现与PRADO中使用的相同 , 并帮助模型学习最相关的标记 , 而无需一组固定的参数来定义它们 。 它首先对文本中的标记进行指纹识别 , 然后使用简单的映射函数将其转换为三元特征向量 。 这导致具有平衡对称分布的三元向量序列唯一地表示文本 。 这种表示不是直接有用的 , 因为它没有解决感兴趣的任务所需的任何信息 , 并且网络无法控制这种表示 。 我们将它与一个密集的瓶颈层结合起来 , 让网络学习与手头任务相关的每个单词的表示 。 瓶颈层产生的表示仍然没有考虑单词的上下文 。 我们通过使用一堆双向QRNN编码器来学习上下文表示 。 结果是一个网络能够仅从文本输入中学习上下文表示 , 而无需使用任何类型的预处理 。