赞
踩
©PaperWeekly 原创 · 作者|王馨月
学校|四川大学本科生
研究方向|自然语言处理
随深度学习的发展,多种神经网络都被应用在 NLP 任务中,比如 CNN、RNN、GNN 和 attention 机制等,但由于现有的数据集对于大部分有监督 NLP 任务来说都很小,因此,早期的模型对 NLP 任务来说都很“浅”,往往只包含 1-3 层。
而预训练模型(Pre-trained Models, PTMs)的出现将NLP带入一个新的时代,更“深”的模型和训练技巧的增强也使得 PTMs 由“浅”变“深”,在多项任务都达到了 SOTA 性能。
近日,复旦大学的邱锡鹏老师等人发布了预训练模型综述 Pre-trained Models for Natural Language Processing: A Survey,从背景、分类到应用与前景对 PTMs 做了详细而全面的调研。
论文标题:Pre-trained Models for Natural Language Processing: A Survey
论文链接: https://arxiv.org/abs/2003.08271
对于语言来说,一个好的表示应当描绘语言的内在规则比如词语含义、句法结构、语义角色甚至语用。
而分布式表示的核心思想就是通过低维实值向量来描述一段文本的意义,而向量的每一个维度都没有对于意义,整体则代表一个具体的概念。图 1 是 NLP 的通用神经体系架构。
有两种 embedding(词嵌入)方式:上下文嵌入和非上下文嵌入,两者的区别在于词的 embedding 是否根据词出现的上下文动态地改变。
非上下文嵌入:表示语言的第一步就是将分离的语言符号映射到分布式嵌入空间中。也就是对于词汇表中的每个单词(词根),通过 lookup table 映射到一个向量。
这种嵌入方式有两个局限:一是一个词通过这种方法获得的词嵌入总是静态且与上下文无关的,无法处理多义词;二是难以解决不在词汇表中的词(针对这个问题,很多 NLP 任务提出了字符级或词根级的词表示,如 CharCNN、FastText、Byte-Pair Encoding (BPE))。
上下文嵌入:为解决多义性和上下文相关的问题,将词在不同上下文的语义做区分。通过对词(词根)的 token 加一层 Neural Contextual Encoder(神经上下文编码器)得到词的上下文嵌入。
如图 2 中所示,大部分的神经上下文编码器都可以被分为三类:卷积模型、序列模型、基于图的模型。
卷积模型 :卷积模型通过卷积操作将输入句子中的 embeddings 与其相邻的局部信息集成。
序列模型 :序列模型通常使用 RNN(如 LSTM 和 GRU)来描述词的上下文表示。实践中,双向 RNN 常用于收集词的两边信息,但表现往往会受到长程依赖问题的影响。
基于图的模型 :基于图的模型将词视做节点,通过预先定义的语言结构(如句法结构和语义联系)来学习上下文表示。但如何构造一个好的图结构往往严重依赖于专家知识和外部 NLP 工具,如依存分析器。
实际操作中往往直接通过一个全连接图来建模并让模型自己学习结构(一般通过自注意力机制)。一个典型的成功运用就是 Transformer。
分析:卷积模型和序列模型都很难解决词之间的长程依赖问题,而 Transformer 虽然能更好地描述词之间的深层联系,却往往需要非常大的语料来训练,且容易在中等规模的数据集上过拟合。
正如上文提到的,模型参数的数量增长迅速,而为了训练这些参数,就需要更大的数据集来避免过拟合,而大规模的标注数据集成本又非常高。而相比之下,大规模未标注的语料却很容易构建。
为了利用大量的未标注文本数据,我们可以先从其中学习一个好的表示,再将这些表示用在别的任务中。这一通过 PTMs 从未标注大规模数据集中提取表示的预训练过程在很多 NLP 任务中都取得了很好的表现。
预训练的优点可以总结为以下三点:1 在大规模语料上通过预训练学习通用语言表示对下游任务很有帮助;2) 预训练提供了更好的模型初始化参数,使得在目标任务上有更好的泛化性能和更快的收敛速度;3) 预训练是一种有效的正则化方法,能够避免在小数据集上过拟合。
PTMs 的主要区别在于上下文编码器的使用、预训练任务和目标。上下文编码器已在 2.2 中做了叙述,接下来对预训练任务进行分析,并提出一种 PTMs 分类方法。
如图 3,这一部分内容作者在文中有一张非常详细的分类图可供参考。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。