本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。2019年自然语言处理(NLP)有哪些突破?提到NLP,BERT可以说是家喻户晓。在情感分析、问答、句子相似度等多项NLP任务中均取得了优异的成绩。而且,在Kaggle这样的比赛中,或者在媒体报道中,总能看到它的身影。它于2018年底出版,从那以后的一年里,NLP和NLU(自然语言理解)领域有了长足的发展。然后,本文以BERT的发布为时间节点,梳理了其前后NLP领域的重要项目和模型。BERT之前的一些主要NLP项目时间表在BERT模型提出之前,NLP领域的主要项目按时间排序,如下图所示:Word2Vec模型发布于2013年1月,至今仍然很受欢迎。这是研究人员在任何NLP任务中可能尝试的第一个模型。https://arxiv.org/abs/1301.3781FastText和GloVe分别于2016年7月和2014年1月提出。FastText是一个开源、免费、轻量级的库,允许用户学习文本表示和文本分类器。https://fasttext.cc/GloVe是一种无监督学习算法,用于获取单词的向量表示。https://nlp.stanford.edu/projects/glove/Transformer于2017年6月提出,是一个基于encoder-decoder结构的模型。其在机器翻译任务上的表现超越了RNN和CNN,仅使用encoder-decoder和attention机制就能取得不错的效果。最大的优点是可以高效并行化。https://ai.googleblog.com/2017/08/transformer-novel-neural-network.htmlELMo于2018年2月提出,使用预训练的双向语言模型,然后根据具体的输入可以得到语言模型将上下文相关的当前词表示作为特征添加到特定的NLP监督模型中。https://allennlp.org/elmo还有一个叫做Ulmfit,是NLP任务的迁移学习模型。它只需要使用极少量的标记数据,文本分类的准确率就可以达到标记数据训练量的数千倍的水平。.https://arxiv.org/abs/1801.06146值得注意的是,ELMo和Ulmfit出现在BERT之前,并没有采用基于Transformer的结构。BERTBERT模型于2018年10月提出,全称是BidirectionalEncoderRepresentationfromTransformers,即双向Transformer的Encoder(因为解码器无法获取到要预测的信息)。△论文地址:https://arxiv.org/abs/1810.04805模型的主要创新点在pre-train方法上,即使用MaskedLM和NextSentencePrediction方法来捕捉词和句子级别的representations分别。谷歌甚至开始使用BERT来改进搜索结果。这里有更详细的BERT模型教程:http://jalammar.github.io/illustrated-bert/预训练权重相关内容可以从官方Githubrepo下载:https://github.com/google-research/bertBert也可以作为Tensorflowhub模块使用:https://tfhub.dev/google/collections/bert/1文末会有各种非常好用的库。BERT之后的一些主要NLP项目时间表在Google提出BERT之后,NLP领域还出现了其他更突出的工作项目。Transformer-XLTransormer-XL是Transformer的升级版,在速度上比Transformer快1800多倍。这里的XL指的是extralong,就是extralong的意思,也就是说Transformer-XL在语言建模中的长距离依赖问题上有非常好的表现。同时,也暗示着它是为远距离依赖问题而生。长距离依赖问题是当前文本处理模型面临的难题,也是RNN失败的地方。相比之下,Transformer-XL学习依赖关系的时间比RNN长80%。比原版变形金刚快450%。它在短序列和长序列上都有很好的性能。https://arxiv.org/abs/1901.02860GPT-2GPT-2可以说是BERT之后媒体报道中最受关注的NLP模型。这是OpenAI发布的“挑衅”语言AI。整个模型包含15亿个参数。无需针对性训练即可横扫各种领域特定的语言建模任务,同时具备阅读理解、问答、生成文章摘要、翻译等能力。而且,OpenAI最初是担心这个项目太强大,所以选择不开源。但在10个月后,它决定出版它。https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdfERNIEEERNIE基于百度自研深度学习框架PaddlePaddle构建,可同时利用词汇、句法和知识信息。实验结果表明,在不同的知识驱动任务上取得了显着的改进,同时在其他常见任务上与现有的BERT模型相当。目前,ERNIE2.0版本在GLUE排行榜上排名第一。https://github.com/PaddlePaddle/ERNIEXLNETXLNet是一种类BERT模型,也是一种通用的自回归预训练方法。它不像传统AR模型那样使用固定的前向或后向分解顺序,而是最大化所有可能分解顺序的预期对数似然。其次,作为一种广义的AR语言模型,XLNet不依赖于不完整的数据。此外,XLNet还改进了预训练架构设计。https://arxiv.org/abs/1906.08237RoBERTaRoBERTa由Facebook提出。它并没有在模型层面改变谷歌的BERT,只是改变了预训练方式。在模型大小、计算能力和数据方面,与BERT相比,主要有以下改进:更大的模型参数:模型使用1024个V100GPU训练了1天。更大的bacthsize:RoBERTa在训练时使用了更大的bacthsize,并尝试过256到8000的bacthsize。更多训练数据:160GB纯文本,包括CC-NEWS等。https://arxiv.org/abs/1907.11692完整的SalesforceCTRLCTRL的名称是ConditionalTransformerLanguage,它包含16亿个参数。它具有强大且可控的人工文本生成功能,可以预测训练数据的哪个子集对生成的文本序列影响最大。它通过识别模型中最有影响力的训练数据源,提供了一种分析大量生成文本的潜在方法。CTRL还可以通过微调特定任务或转移模型学习的表示来改进其他NLP应用程序。https://blog.einstein.ai/introducing-a-conditional-transformer-language-model-for-controllable-generation/ALBERTALBERT是谷歌发布的轻量级BERT模型。比BERT模型的参数小18倍,性能也超越了它,在SQuAD和RACE测试上创造了一个新的SOTA。前不久,谷歌也对此进行了升级,发布了ALBERT2和中文版。在这个版本中,“nodropout”、“额外的训练数据”和“长时间训练”策略将应用于所有模型。在性能对比方面,对于ALBERT-base、ALBERT-large和ALBERT-xlarge,v2版本比v1版本要好很多。解释采用上述三种策略的重要性。https://arxiv.org/abs/1909.11942PerformanceBenchmark评估这些语言模型的方法之一是GlueBenchmark。它包括对分类、问答等各种NLP任务的评估模型。在GlueBenchmark刚刚发布时,BERT模型的性能位居榜首。但截至2020年1月2日,短短一年时间,BERT已经排名第19位。现在还有一个SuperGlue基准测试,其中包括更困难的语言任务。对于评估问答系统,更常用的是SQuAD。BERT和基于Transformer的模型的性能在这里更好。其他BERT相关项目DistilBERTDistilBERT是HuggingFace发布的小型NLPtransformer模型。它具有与BERT类似的架构,但仅使用了6600万个参数,但在GLUE基准测试中达到了BERT95%的性能。https://arxiv.org/abs/1910.01108Megatron-LMMegatron-LM是Nvidia发布的NLP模型。Nvidia将自家硬件与并行计算软件相结合,创造了当时的三项记录:训练速度仅为53分钟;推理速度仅为2.2ms;它包含83亿个参数。https://github.com/NVIDIA/Megatron-LMBioBERTBioBERT是一种用于生物医学文本挖掘的预训练生物医学语言表示模型。当在生物医学语料库上进行预训练时,它在各种生物医学文本挖掘任务上的表现大大优于BERT和之前的最先进模型。https://github.com/dmis-lab/biobertCamemBERTCamemBERT是一种基于RoBERTa结构的法语语言模型。https://camembert-model.fr/NLPLibraries这里有一些作者认为你需要了解的NLP库。SpacySpacy是一个流行且快速的NLP库,可以处理各种自然语言处理任务,如标记、词性等。它还提供预训练模型,如NER。https://spacy.io/HuggingFaceTransformers它是最早提供BERT的Pytorch实现的库之一,最初称为“Pytorch-pretrained-BERT”。后来,他们加入了更多的模型,如GPT-2、XLNET等。在不到一年的时间里,它已经成为最流行的NLP库之一,让BERT和其他模型的使用变得更加容易。https://github.com/huggingface/transformersAllenNLPAllenNLP是AllenInstituteofAI的一个NLP库,基于PyTorch。https://allennlp.org/FlairFlair也是一个NLP库,具有NER、POS等模型。它还支持BERT、ELMO、XLNET等嵌入。https://github.com/flairNLP/flairGluonNLPGluonNLP是一个NLPApacheMXNet上的工具包,它是首批包含预训练BERT嵌入的库之一。https://gluon-nlp.mxnet.io/那么,2020年,NLP的突破点是什么?传送门https://towardsdatascience.com/2019-year-of-bert-and-transformer-f200b53d05b9
