本文将分 3 期进行连载,共介绍 20 个在文本分类任务上曾取得 SOTA 的经典模型。
- 第 1 期:RAE、DAN、TextRCNN、Multi-task、DeepMoji、RNN-Capsule
- 第 2 期:TextCNN、DCNN、XML-CNN、TextCapsule、、Bao et al.、AttentionXML
- 第 3 期:ELMo、GPT、BERT、ALBERT、X-Transformer、LightXML、TextGCN、TensorGCN
您正在阅读的是其中的第 3 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
第1期回顾:TextRCNN、TextCNN、RNN…你都掌握了吗?一文总结文本分类必备经典模型(一)
第2期回顾:TextCNN、DCNN、AttentionXML…你都掌握了吗?一文总结文本分类必备经典模型(二)
本期收录模型速览
模型 | SOTA!模型资源站收录情况 | 模型来源论文 |
ELMo | https://sota.jiqizhixin.com/models/models/e473edac-88cc-4a83-b533-d15c2ca0ea17 收录实现数量:3 支持框架:TensorFlow、PyTorch、MXNet 等 |
Deep Contextualized Word Representations |
GPT | https://sota.jiqizhixin.com/models/models/09877886-65c3-44b0-a5be-9e5043964787 收录实现数量:1 支持框架:TensorFlow、PyTorch |
Improving language understanding by generative pre-training |
BERT | https://sota.jiqizhixin.com/models/models/1d27a74a-8668-4d64-9615-ce889b88700b 收录实现数量:7 支持框架:TensorFlow、PyTorch 等 |
BERT: pre-training of deep bidirectional transformers for language understanding |
ALBERT | https://sota.jiqizhixin.com/models/models/0306236e-ce20-4886-98cb-45730fda6cf9 收录实现数量:13 支持框架:PyTorch、TensorFlow、CANN |
ALBERT: A lite BERT for self-supervised learning of language representations |
X-Transformer | https://sota.jiqizhixin.com/models/models/fa67640c-fedb-400e-a6fb-e83b4eedbb65 收录实现数量:1 支持框架:TensorFlow |
Taming pretrained transformers for extreme multi-label text classification |
LightXML | https://sota.jiqizhixin.com/models/models/7f477837-72fe-435d-b8e4-13d5308c7bfa 支持框架:PyTorch |
Lightxml: Transformer with dynamic negative sampling for high-performance extreme multi-label text classification |
TextGCN | https://sota.jiqizhixin.com/models/models/64a6edf7-3e03-455c-bb54-26ab72607c0e 收录实现数量:1 支持框架:TensorFlow |
Graph convolutional networks for text classification |
TensorGCN | https://sota.jiqizhixin.com/models/models/2702592d-f69f-41a6-9c29-924999576bd3 收录实现数量:1 支持框架:TensorFlow |
Tensor graph convolutional networks for text classification |
文本分类是自然语言处理中最基本、最经典的任务,大部分自然语言处理任务都可以看作是分类任务。近年来,深度学习在众多研究领域中获得了巨大的成功,如今,也成为了 NLP 领域的标配技术,广泛渗透入文本分类任务中。
与数字、图像不同,对文本的处理强调精细化的处理能力。传统的文本分类方法一般需要对输入模型的文本数据进行预处理,此外还需要通过人工标注的方法来获得良好的样本特征,然后使用经典的机器学习算法对其进行分类。类似的方法包括 NaiveBayes(NB)、K 近邻(KNN)、支持向量机 SVM 等。特征提取的水平对文本分类效果的影响甚至高于图像分类,而文本分类中的特征工程往往非常耗时且计算成本高。2010 年后,文本分类的方法逐渐过渡到深度学习模型。应用于文本分类的深度学习通过学习一系列的非线性变换模式将特征工程直接映射到输出,从而将特征工程集成到模型拟合过程中,一经应用就获得了巨大的成功。
与图像分类模型不同,文本分类模型一般不会采用堆叠模块、修改深度模型结构等方式去改进,更多则是通过引入其它技术手段改进模型效果,例如引入注意力机制、预训练、图神经网络、胶囊网络等。所以在介绍经典文本分类模型时,更多的是介绍为了解决文本分类中的哪一类具体问题,针对性的引入了哪些专门的技术 trick,以及这些引入的 trick 是如何与原有的经典架构融合的。
此外,NLP 领域中大量工作都聚焦于前端的词、语句、文本的处理或语义理解,目的是为下游的各类任务服务,当然也包括文本分类任务。为了更聚焦于文本分类模型,我们在这篇文章中只介绍专门的文本分类模型,其它 NLP 模型会放在后续的专题报告中介绍。最后,文本分类模型以 BERT 的出现明显呈现出两个不同的发展阶段,BERT 提出后(2019 年之后),单纯基于 RNN、CNN 改进的且效果比较突出的方法就比较少了。
一、Pre-train
预训练的语言模型可以有效地学习全局语义代表,并显著提升NLP任务的效果,包括文本分类。它通常使用无监督的方法来自动挖掘语义知识,然后构建预训练目标,使机器能够学习理解语义。如图1所示,我们给出了Embeddingfrom Language Model (ELMo)、OpenAI GPT和BERT之间模型架构的差异。ELMo是一个深度的语境化单词表示模型,它很容易被整合到模型中。它可以对单词的复杂特征进行建模,并为各种语言环境学习不同的表示方法。它根据双向LSTM的上下文词来学习每个词的嵌入。GPT采用有监督的微调和无监督的预训练来学习一般的表征,这些表征在有限的适应下转移到许多NLP任务。此外,目标数据集的领域不需要与未标记的数据集的领域相似。GPT算法的训练过程通常包括两个阶段。首先,神经网络模型的初始参数是通过在未标记的数据集上的建模目标学习的。我们可以采用相应的监督目标来适应目标任务的这些参数。谷歌提出的BERT模型,通过对每一层的左右上下文进行联合调节,从未标记的文本中预训练出深层次的双向表征,显著提高了NLP任务的性能,包括文本分类。BERT应用了双向编码器,旨在通过联合调整所有层的上下文来预先训练深度的双向表示。它可以在预测哪些词被掩盖时利用上下文信息。它只需增加一个额外的输出层就可以进行微调,为多个NLP任务构建模型。
图1 包括BERT、OpenAI GPT和ELMo在内的预训练模型架构的差异。𝐸𝑖代表第𝑖个输入的嵌入。Trm代表Transformer块。𝑇𝑖代表𝑖稀疏输入的预测标签
与这三个模型相比,ELMo是一种使用LSTM的基于特征的方法,而BERT和OpenAI GPT是使用Transformer的微调方法(也可以归类到本文第七类Transformer模型里,为了表述清晰,本文将GPT和BERT放入Pre-train类别中介绍)。此外,ELMo和BERT是双向训练模型,而OpenAI GPT是从左到右的训练。因此,BERT得到了一个更好的结果,它结合了ELMo和OpenAI GPT的优点。
1.1 ELMo
词向量模型ELMo的相关论文发表在NAACL 2018上。具体的方法是将每个词的表示看作是对于整体句子的函数,通过利用在语料上训练的双向LSTM的语言模型得到词向量,因此将其称为ELMo(Embeddings from Language Models)。对比传统Word2Vec这种静态形式的词向量,ELMo是一种动态模型。对于静态形式的词向量来说,无论在任何的上下文中都使用同一个向量,因此很难表示一词多义的现象,而ELMo则可以通过上下文动态生成词向量,从理论上会是更好的模型,从实测效果来看在很多任务上也都达到了当时的SOTA成绩。ELMo引入了上下文语境的概念。ELMo的架构如下图所示。
图2 ELMo架构
首先介绍双向语言模型biLM,这是ELMo的基础。给定N个tokens的序列,一个前向语言模型通过对t_o的概率进行建模来计算t_k的概率:
而双向语言模型就是添加了另一个方向的预测,利用N~k+1个token来预测第k个token:
目标函数则是上述两者的联合损失(BiLM):
不同于其他类型的模型采用最顶层的输出作为token的表示,ElMo采用多个层的线性加和作为token的表示,对于每个token,在一个L层的biLm中可以输出2L+1表示:
在下游任务中,可以将上述2L+1个表示进行整合:
具体到ELMo的架构,还是按照训练语言模型的方式,使用了CNN-BIG-LSTM结构和一个层之间的残差链接。使用ELMo可以针对一个token产生三个向量,:原始向量、第一层向量、第二层向量。作者认为低层的bi-LSTM层能提取语料中的句法信息,而高层的bi-LSTM能提取语料中的语义信息。
当前 SOTA!平台收录 ELMo 共 3 个模型实现资源。
模型 | SOTA!平台模型详情页 |
ELMo | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/e473edac-88cc-4a83-b533-d15c2ca0ea17 |