1. 首页 > 知识问答

基准模型的概念(最先进的NLP领域的预训练模型)

这是一篇来自AnalyitcsVidhya的中文翻译。使用预训练模型处理NLP任务是目前深度学习中一个非常火热的领域。本文总结了8个顶级的预训练模型,并提供了每个模型相关的资源(包括官方文档、Github代码和别人已经基于这些模型预训练好的模型等)。

如今,自然语言处理(NLP)应用程序已经无处不在。 我似乎经常偶然发现网络和应用程序正在以某种形式利用NLP。 简而言之,这是参与NLP领域的美好时光。

NLP采用率的快速增长主要得益于通过预训练模型实现迁移学习的概念。 在NLP的上下文中,迁移学习本质上是在一个数据集上训练模型然后调整该模型以在不同数据集上执行不同NLP函数的能力。

这一突破使每个人都非常容易和简单,特别是那些没有时间或资源从头开始构建NLP模型的人。 对于想要学习或过渡到NLP的初学者来说,它是完美的。

由于导入的时候官方切除了外部资源链接,可以查看原文链接,包含了所有资源的链接。

为什么要使用预训练模型?

1. 这是研究者设计的基准模型! 我们可以在我们自己的NLP数据集上使用该预训练模型,而不是从头开始构建模型来解决类似的NLP问题

2. 需要进行一些微调,但它为我们节省了大量的时间和计算资源

在本文中,我展示了可用于开始NLP之旅的顶级预训模型,并复制了该领域的最新研究成果。

本文涵盖的预训练NLP模型

我根据应用将预训练模型分为三类:

· Multi-Purpose NLP Models

· ULMFiT

· Transformer

· Google's BERT

· Transformer-XL

· OpenAI's GPT-2

· Word Embeddings

· ELMo

· Flair

· Other Pretrained Models

· StanfordNLP

多用途NLP模型(Multi-Purpose NLP Models)

多用途模型是NLP世界的话题。 这些模型为我们感兴趣的NLP应用程序提供动力 - 机器翻译,问答系统,聊天机器人,情感分析等。这些多用途NLP模型的核心组件是语言建模的概念。

简单来说,语言模型的目的是预测序列中的下一个单词或字符。 我们在这里看每个模型时都会理解这一点。

如果您是NLP爱好者,那么您会喜欢这一部分。 现在,让我们深入研究5个最先进的多用途NLP模型框架。 我提供了每种模型的研究论文和预训练模型的链接。 继续探索吧!

ULMFiT

ULMFiT由fast.ai的Jeremy Howard和DeepMind的Sebastian Ruder提出并设计。

代码:

正如我们在本文中所述,ULMFiT使用新颖的NLP技术实现了最先进的结果。 该方法涉及将在Wikitext 103数据集上训练的预训练语言模型微调到新数据集,使其不会忘记它之前学到的内容。

 

ULMFiT优于众多最先进的文本分类任务。 我对ULMFiT的喜爱之处在于它只需要很少的例子来产生这些令人印象深刻的结果。 让您和我这样的人更容易理解并在我们的机器上实现它!

如果您想知道,ULMFiT代表通用语言模型微调。 "通用"这个词在这里非常贴切 - 该框架几乎可以应用于任何NLP任务。

有关ULMFiT的更多信息,请参阅:

Tutorial on Text Classification (NLP) using ULMFiT and fastai Library in Python

Pretrained models for ULMFiT

Research Paper

Transformer

Transformer架构是NLP近期所有重大发展的核心。 它于2017年由谷歌推出。 当时,循环神经网络(RNN)被用于语言任务,如机器翻译和问答系统。

这种Transformer架构的性能优于RNN和CNN(卷积神经网络)。 训练模型所需的计算资源也减少了。 NLP中的每个人都是双赢的。 看看下面的比较:

 

根据Google的说法,Transformer"应用了一种自我关注机制,可直接模拟句子中所有单词之间的关系,无论其各自的位置如何"。 它使用固定大小的上下文(也就是前面的单词)来实现。 太复杂了? 我们举一个例子来简化这个。

"She found the shells on the bank of the river."该模型需要明白,这里的"bank"是指岸,而不是金融机构。 Transformer只需一步就能理解这一点。 我鼓励您阅读下面链接的完整论文,以了解其工作原理。 它会让你大吃一惊。

下面的动画很好地说明了Transformer如何处理机器翻译任务:

 

谷歌去年发布了一款名为Universal Transformer的改进版Transformer。 还有一个更新,更直观的版本,名为Transformer-XL,我们将在下面介绍。

学习和阅读更多有关Transformer的资源:

Google’s official blog post

Pretrained models for Transformer

Research Paper

Google's BERT

自谷歌公布其结果以来,BERT框架一直在掀起波澜,然后开放源代码背后的代码。 我们可以辩论这是否标志着"NLP的新时代",但毫无疑问BERT是一个非常有用的框架,可以很好地推广到各种NLP任务。

 

BERT是双向编码器表示的缩写,它考虑单词两侧(左侧和右侧)的上下文。 以前的所有努力都是一次一个词的一面 - 左边或右边。 这种双向性有助于模型更好地理解使用单词的上下文。 此外,BERT旨在进行多任务学习,也就是说,它可以同时执行不同的NLP任务。

BERT是第一个用于预训练NLP模型的无监督方法,深度双向系统。 它仅使用纯文本语料库进行训练。

在发布时,BERT正在11个自然语言处理(NLP)任务中产生最先进的结果。 相当不朽的壮举! 您可以在短短几个小时内(在单个GPU上)使用BERT训练您自己的NLP模型(例如问答系统)。

学习和阅读更多有关BERT的资源:

Google’s official blog post

Pretrained models for BERT

Research Paper

Google's Transformer-XL

从长期来看,谷歌发布的模型对于NLP来说可能是非常重要的一个。如果你是一个初学者,这个概念可能会变得有点棘手,所以我鼓励你多读几遍来掌握它。我还在本节下面提供了多种资源,以帮助您开始使用Transformer-XL。

想象一下 - 你正在读书,突然出现了一本书或者一句话,这本书开头就提到过了。现在,你或我可以回想起它是什么。但可以理解的是,一台机器难以模拟长期依赖。

正如我们上面所看到的,实现此目的的一种方法是使用Transformers。但它们是使用固定长度的上下文实现的。换句话说,如果使用这种方法,就没有太大的灵活性。

Transformer-XL很好地弥合了这个差距。它由Google AI团队开发,是一种新颖的NLP架构,可帮助机器理解超出固定长度限制的上下文。 Transformer-XL比典型的Transformers快1800倍。

您可以通过Google发布的以下2个GIF了解这种差异:

 


 

如您现在所预测的,Transformer-XL在各种语言建模基准/数据集上实现了最好的结果。 这是从他们的页面中取出的一个表格,说明了这一点:

有关学习和阅读有关Transformer-XL的更多信息的资源:

Google’s official blog post

Pretrained models for Transformer-XL

Research Paper

OpenAI's GPT-2

现在,这是一个非常有争议的条目。 一些人可能会争辩说,GPT-2的发布是OpenAI的营销噱头。 我当然知道他们来自哪里。 但是,我认为至少还要尝试OpenAI发布的代码是很重要的。

 

首先,为那些不知道我在说什么的人提供一些背景信息。 OpenAI在2月写了一篇博客文章(下面的链接),他们声称已经设计了一个名为GPT-2的NLP模型,它非常好,以至于他们担心恶意使用而没有发布完整版本的费用。 这当然得到了社区的关注。

GPT-2经过训练,可以预测40GB互联网文本数据中的下一个词。 该框架也是基于transformer的模型,该模型在800万个网页的数据集上训练。 他们在他们的网站上发布的结果简直令人震惊。 该模型能够根据我们输入的几个句子编写一个完全清晰的故事。 看看这个例子:

 

难以置信,对吧?

开发人员已经发布了一个小得多的GPT-2版本供研究人员和工程师测试。 原始模型有15亿个参数 - 开源样本模型有1.17亿个。

有关学习和阅读有关GPT-2的更多信息的资源:

OpenAI’s official blog post

Pretrained models for GPT-2

Research paper

Word Embeddings

我们使用的大多数机器学习和深度学习算法都无法直接使用字符串和纯文本。 这些技术要求我们在执行任何任务(例如回归或分类)之前将文本数据转换为数字。

因此,简单来说,Word Embeddings是将文本块转换为用于执行NLP任务的数字。 Word Embeddings格式通常尝试使用字典将单词映射到向量。

在本节中,我们将介绍NLP的两个最先进的Word Embeddings。 我还提供了教程链接,以便您可以对每个主题有实际的了解。

ELMo

这个ELMo是语言模型嵌入(Embeddings from Language Models)的缩写,在构建NLP模型的环境中非常有用。

ELMo是一种在向量和Embeddings中表示单词的新方法。 这些ELMo Embeddings有助于我们在多个NLP任务上获得最先进的结果,如下所示:

 

让我们花点时间了解ELMo的工作原理。 回想一下我们之前讨论过的双向语言模型。 从这篇文章中得到启示,"ELMo单词向量是在双层双向语言模型(biLM)之上计算的。 这个biLM模型有两层堆叠在一起。 每层有2次传递 - 前传和后传:

 

ELMo单词表示考虑用于计算单词Emebeddings的完整输入句子。 因此,"读取"在不同的上下文中将具有不同的ELMo向量。 当相同的向量被分配给单词"read"而不管使用它的上下文时,与旧的单词Emebeddings相去甚远。

学习和阅读有关ELMo的更多信息的资源:

Step-by-Step NLP Guide to Learn ELMo for Extracting Features from Text

GitHub repository for pretrained models

Research Paper

Flair

Flair不是一个Word Embeddings,而是Word Embeddings的组合。 我们可以将Flair称为一个NLP库,它结合了GloVe,BERT,ELMo等Word Embeddings程序。Zalando Research的优秀人员开发并开源了Flair。

 

该团队已经为以下NLP任务发布了几个预训练模型:

· Name-Entity Recognition (NER)

· Parts-of-Speech Tagging (PoS)

· Text Classification

· Training Custom Models

下表格展示了其效果:

 

'Flair Embedding'是Flair库中包含的signature embedding。 它由上下文字符串embedding提供支持。

我特别喜欢Flair的是它支持多种语言。 如此多的NLP版本都在执行英语任务。 如果NLP要在全球范围内获得影响力,我们需要扩展到这一点!

学习和阅读更多有关Flair的资源:

Introduction to Flair for NLP: A Simple yet Powerful State-of-the-Art NLP Library

Pretrained models for Flair

Other Pretrained Models

StanfordNLP

说到扩展NLP到非英语领域,这里有一个已经设置基准的库。 作者声称StanfordNLP支持超过53种语言 - 这当然引起了我们的注意!

 

我们的团队是第一批使用该库并在真实数据集上发布结果的团队。 我们发现StanfordNLP真正开辟了很多在非英语语言中应用NLP技术的可能性。 像印地语,中文和日语。

StanfordNLP是一系列经过预先训练的最先进的NLP模型。 这些模型不仅仅经过实验室测试 - 作者在2017年和2018年的CoNLL比赛中使用了这些模型。 在StanfordNLP中打包的所有预训练NLP模型都是基于PyTorch构建的,可以在您自己的注释数据上进行训练和评估。

我们认为您应该考虑StanfordNLP的两个主要原因是:

· 用于执行文本分析的完整神经网络pipeline,包括:

· 符号化(Tokenization)

· Multi-word token (MWT)扩展

· 词形还原

· 词性标注(POS)和形态特征标记

· 依赖性解析(Dependency Parsing)

· 一个稳定的官方维护的CoreNLP Python接口

学习和阅读更多有关StanfordNLP的资源:

Introduction to StanfordNLP: An Incredible State-of-the-Art NLP Library for 53 Languages (with Python code)

Pretrained models for StanfordNLP

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ15101117,本站将立刻清除。

联系我们

在线咨询:点击这里给我发消息

微信号:666666