写点什么

NLP 领域最优秀的 8 个预训练模型(附开源地址)

  • 2019-03-27
  • 本文字数:7075 字

    阅读完需:约 23 分钟

NLP领域最优秀的8个预训练模型(附开源地址)

介 绍

如今,自然语言处理(Natural Language Processing,NLP)应用已经变得无处不在。我似乎总是不经意间发现一些网站和应用程序,以这样的或那样的形式利用了自然语言处理技术。简而言之,现在就是涉足自然语言处理领域的绝佳时机。


自然语言处理应用能够快速增长,很大程度上要归功于通过预训练模型实现迁移学习的概念。在自然语言处理的背景下,迁移学习本质上是在一个数据集上训练模型,然后对该模型进行调整,以在不同的数据集上执行不同的自然语言处理功能。


这一突破,使得每个人都能够轻松地完成任务,尤其是那些没有时间、也没有资源从头开始构建自然语言处理模型的人们。对于想要学习或过渡到自然语言处理的初学者来讲,它也堪称完美。

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

  • 作者已尽其所能设计了基准模型。我们可以在自己的自然语言处理数据集上使用预训练模型,而不是从头构建模型来解决类似的自然语言处理问题。

  • 尽管仍然需要进行一些微调,但它已经为我们节省了大量的时间和计算资源。


在本文中,我将介绍一些顶级的预训练模型,你可以用它们来开始你的自然语言处理之旅,并复制该领域的最新研究成果。


本文介绍的预训练自然语言处理模型

我根据应用,将预处理模型分为三类:


  • 多用途自然语言处理模型

  • ULMFiT

  • Transformer

  • Google BERT

  • Transformer-XL

  • OpenAI GPT-2

  • 词嵌入

  • ELMo

  • Flair

  • 其他预训练模型

  • StanfordNLP

多用途自然语言处理模型

多用途模型是自然语言处理领域的热门话题。这些模型为机器翻译、问答系统、聊天机器人、情绪分析等我们感兴趣的自然语言处理应用提供了动力。这些多用途自然语言处理模型的核心组件是语言建模的概念。


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


如果你是自然语言处理的爱好者,那么你将会喜欢这一节。现在,让我们深入研究这 5 个最先进的多用途自然语言处理模型框架吧。对于每个模型,我都提供了研究论文和预训练模型的链接。让我们继续探索吧!

ULMFiT

GitHub 项目地址:https://github.com/fastai/fastai/tree/master/courses/dl2/imdb_scripts


ULMFiT 由 fast.ai 的 Jeremy Howard 和 DeepMind 的 Sebastian Ruder 提出并设计。你可以说 ULMFiT 是去年启动迁移学习派对的发行版。


正如我们在本文中所述,ULMFiT 使用新的自然语言生成技术实现了最先进的结果。该方法包括在 Wikitext 103 数据集上训练的预处理语言模型进行微调,使其不会忘记以前所学的内容,从而将其微调为一个新的数据集。



在文本分类任务方面,ULMFiT 的性能优于许多最先进的技术。我喜欢 ULMFiT 的原因是,它只需要很少的例子就可以产生这些令人印象深刻的结果。让像你我这样的人更容易理解,并在我们的机器上实现它!


如果你好奇 ULMFiT 为什么叫这个名,我会告诉你,ULMFiT 其实就是 Universal Language Model Fine-Tuning(通用语言模型微调)的缩写。“Universal”(通用)这词用在这里非常贴切,因为这个框架几乎可以应用于任何自然语言处理任务。

有关 ULMFiT 的更多信息,请参阅以下资源:

Transformer

GitHub 项目地址:https://github.com/tensorflow/models/tree/master/official/transformer


Transformer 架构是自然语言处理领域最近几乎所有主要发展的核心,2017 年由 Google 推出。当时,RNN 递归神经网络被用于语言任务,如机器翻译和问答系统。


这种 Transformer 架构的性能优于 RNN 和 CNN(卷积神经网络)。而且训练模型所需的计算资源也大为减少。对自然语言处理的每个人来讲,这种结果是双赢的局面。看看下面的对比:



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


“She found the shells on the bank of the river.”模型需要理解这里的“bank”是指河岸,而不是金融机构。Transformer 只需一步就能理解这一点。我建议你阅读下面给出链接的完整论文,以了解 Transformer 的工作原理。它会让你大吃一惊。


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



Google 去年发布了一款 Universal Transformer 的改进版。还有一个更新、更直观的版本,叫做 Transformer-XL,我们将稍后予以介绍。

有关 Transformer 的更多信息,请参阅以下资源:

Google BERT

GitHub 项目地址:https://github.com/google-research/bert


自 Google 公布他们的结果以来,BERT 就一直在掀起波澜,然后 Google 开源了它背后的代码。我们可以讨论这是否标志着“自然语言处理领域的新时代”,但毫无疑问的是,BERT 是一个非常有用的框架,可以很好地推广到各种自然语言处理任务。



BERT,是 Bidirectional Encoder Representations(双向编码器表示)的缩写,它从单词的两边(左边和右边)来考虑上下文。以前所有的努力方向,都是一次只考虑单词的一边,要么是左边,要么是右边。这种双向性有助于模型更好地理解使用单词的上下文。此外,BERT 的设计目标是能够进行多任务学习,也就是说,它可以同时执行不同的自然语言处理任务。


BERT 是第一个无监督、深度双向的自然语言处理模型预训练系统。它只使用纯文本语料库进行训练。


在发布的时候,BERT 在 11 个自然语言处理任务上取得了最先进的结果。这真是相当了不起的成就!你可以在短短几个小时内(在单个 GPU 上)使用 BERT 训练自己的自然语言处理模型(例如问答系统)。

有关 BERT 的更多信息,请参阅以下资源:

Google Transformer-XL

GitHub 项目地址:https://github.com/kimiyoung/transformer-xl


从长远来看,Google 的这一发行版对自然语言处理领域来说可能是一个非常重要的版本。如果你是一名菜鸟,这个概念可能会变得有点棘手,所以我建议你多读几遍来掌握它。我还会在这一节中提供一些资源,帮助你开始入门 Transformer-XL。


想象一下,你正在读一本书,读到一半的时候,书中突然出现了某个单词或句子,而这些在这本书的开头都提到过。这时候,你我都能回忆起那些单词或句子指的是什么意思。但机器很难建立模拟长期依赖(long-term dependency)的模型,这是可以理解的。


如上所述,实现这一点的一种方法是使用 Transformer。但它们是在固定长度的上下文实现的。换句话说,如果使用这种方法,就没有多少灵活性而言。


而 Transformer-XL 很好地弥补了这一缺陷。它由 Google AI 团队开发,是一种新型的自然语言处理架构,可以帮助机器理解超出固定长度限制的上下文。Transformer-XL 比普通的 Transformer 要快上 1800 倍。


你可以通过 Google 发布的两个动图来了解这一区别:



普通 Transformer



Transformer-XL


正如你现在所预测的,Transformer-XL 在各种语言建模基准 / 数据集上实现了最新的、最先进的结果。下面是他们网页上的一张表,展示了这一点:


Method enwiki8 text8 One Billion Word WT-103 PTB (w/o finetuning)
Previous Best1.061.1323.720.555.5
Transformer-XL0.991.0821.818.354.5


上面的链接和下面提到的 Transformer-XL GitHub 存储库包含 PyTorch 和 TensorFlow 中的代码。

有关 Transformer-XL 的更多信息,请参阅以下资源:

OpenAI GPT-2

GitHub 项目地址:https://github.com/openai/gpt-2


目前这是一个颇有争议的条目。一些人可能会认为 GPT-2 的发布就是 OpenAI 的营销噱头。我当然理解他们的想法。然而,我还是认为,至少尝试一下 OpenAI 发布的代码还是很重要的。



首先,我得为那些不知道我在说什么的人们提供一些背景信息。OpenAI 在 2 月份的时候发表了一篇博文,声称他们已经设计了一个自然语言处理模型,表现非常出色,以至于他们担心被恶意使用,而没有选择发布完整版本。这当然引起了社区的关注。


GPT-2 经过训练后,可以预测 40GB 互联网文本数据的下一个出现的单词。这个框架也是基于 Transformer 的模型,该模型在 800 万个 Web 页面的数据集进行训练。他们在网站公布的结果令人震撼。这个模型能够根据我们输入的寥寥可数的句子就编织出一个完全清晰的故事,请看看下面的这个例子:



难以置信,对吧?


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

有关 GPT-2 的更多信息,请参阅以下资源:

词嵌入

我们使用的大多数机器学习和深度学习算法都无法直接处理字符串和纯文本。这些技术要求我们必须先将文本数据转换为数字,然后才能执行任何任务(如回归和分类)。


因此,简单来说,词嵌入就是为了将文本块转换为用于执行自然语言处理任务的数字。词嵌入格式通常尝试使用字典将单词映射到向量。


你可以在下面的文章中,更深入地理解词嵌入、它的不同类型以及如何在数据集中使用它们。如果你不熟悉这个概念的话,我认为这份指南对你来说是必读的:



在这一节中,我们将介绍自然语言处理领域中两个最先进的词嵌入。我还提供了教程的链接,这样你就可以对每个主题有实际的理解。

ELMo

GitHub 项目地址:https://github.com/allenai/allennlp/blob/master/tutorials/how_to/elmo.md


不,这个 ELMo 可不是《Sesame Street》(《芝麻街》,美国芝麻街工作制坐坐的一档著名的儿童教育电视节目)的角色。但这个 ELMo(是 Embedding from Language Models 的缩写)在构建自然语言处理模的上下文非常有用。


ELMo 是一种用向量和嵌入表示单词的新方法。这些 ELMo 词嵌入有助于我们在多个自然语言处理任务上获得最先进的结果,如下所示:



让我们花点时间来理解 ELMo 的工作原理。回忆一下我们之前讨论过的双向语言模型。从本文中得到的提示:“ELMo 词向量是在双层双向语言模型(bidirectional language model,biLM)智商计算的。这个 biLM 模型有两层堆叠在一起。每层有两个通道:前向通道和后向通道。



ELMo 词向量表示(word representations)考虑用于计算词嵌入的完整输入语句。因此“read”这个词在不同的上下文中有不同的 ELMo 向量。这点与旧词嵌入截然不同,对旧词嵌入而言,无论单词在什么上下文中使用,这个单词都会分配到相同的向量。

有关 ELMo 更多的信息,请参阅以下资源:

Flair

GitHub 项目地址:https://github.com/zalandoresearch/flair


Flair 并不完全是词嵌入,而是词嵌入的组合。我们可以称 Flair 更多的是一个自然语言处理程序库,它结合了 GloVe、BERT、EMLo 等嵌入。Zalando Research 的优秀人员开发并开源了 Flair。



该团队已经为以下自然语言处理任务发布了几个预训练模型:


  • Name-Entity Recognition (NER,名称 - 实体识别)

  • Parts-of-Speech Tagging (PoS,词性标注)

  • 文本分类

  • 训练自定义模型


还不确定?那么,看下面这张比较表就会让你明白:



“Flair Embedding”是封装在 Flair 库中的签名嵌入。它由上下文字符串嵌入提供支持。你应该自诩阅读这篇文章《Introduction to Flair for NLP: A Simple yet Powerful State-of-the-Art NLP Library》(《Flair 简介:简单而强大的,最先进的自然语言处理库》)来了解支持 Flair 的核心组件:https://www.analyticsvidhya.com/blog/2019/02/flair-nlp-library-python/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article


我特别喜欢 Flair 的地方就是它能够支持多种语言。如此多的自然语言处理版本都只做英语方面的任务。如果自然语言处理想在全球范围内获得吸引力的话,我们就必须超越这一点!

有关 Flair 更多的信息,请参阅以下资源:

其他预训练模型

StanfordNLP

GitHub 项目地址:https://github.com/stanfordnlp/stanfordnlp


说到将自然语言处理扩展到英语之外,现在有一个已设置基准的库了。据作者声称,StandfordNLP 支持超过 53 种语言,这当然引起了我们的关注。



我们的团队是第一批使用该库并在真实数据集上发布结果的团队之一。我们研究了一下,发现 StandfordNLP 确实为非英语语言中应用自然语言处理技术提供了很多可能性,比如印地语、汉语和日语。


StandfordNLP 是一个经过预训练的、最先进的自然语言处理模型的集合。这些模型并不只是仅在实验室内测试——在 2017 年、2018 年的 CoNLL 竞赛作者就曾使用 StandfordNLP 参赛。在 StandfordNLP 中打包的所有预训练自然语言处理模型都是基于 PyTorch 构建的,并且可以在你自己的注释数据上进行训练和评估。


我们认为,你应该考虑 StandfordNLP 的两个主要原因是:


  • 用于执行文本分析的完整神经网络管道,包括:

  • 标记化(Tokenization)

  • 多词标记扩展(Multi-word token (MWT) expansion)

  • 词性还原(Lemmatization)

  • 词性和词形特征标记(Parts-of-speech (POS) and morphological feature tagging)

  • 依存句法分析(Dependency Parsing)

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

有关 StandfordNLP 的更多信息,请参阅以下资源:

尾 注

本文绝不是预训练自然语言处理模型的详尽清单。还有更多可用的模型,你可以在这个网站上查看其中的一些:https://paperswithcode.com


下面是学习自然语言处理的一些有用资源:



原文链接:


https://www.analyticsvidhya.com/blog/2019/03/pretrained-models-get-started-nlp/



2019-03-27 08:0014809
用户头像

发布了 536 篇内容, 共 273.1 次阅读, 收获喜欢 1561 次。

关注

评论 1 条评论

发布
用户头像
图片都出不来
2019-06-10 08:05
回复
没有更多了
发现更多内容

解码微盟集团2022中报:SaaS收入5.81亿逆势增长,高质量增长路径更清晰

ToB行业头条

科普达人丨一图看懂阿里云ECS

阿里云弹性计算

云计算 IaaS 弹性计算 ECS

前端培训班排名口碑怎么样

小谷哥

QCN9074 WiFi 6E Card OpenWRT, IPQ6010,802.11ax,wallys,QCN9074 802.11ax 4x4 MU-MIMO 6GHz wifi6E

wallys-wifi6

IPQ6010 QCN9074

毕业设计

Asha

开源一夏 | Node.js实战之Node多进程与JXcore 打包深入运用

恒山其若陋兮

开源 8月月更

建木持续集成平台v2.5.3发布

Jianmu

DevOps 持续集成 CI/CD 持续交付 gitops

墙裂安利!用腾讯云AI语音合成打造自己的第一本有声书

牵着蜗牛去散步

腾讯云 腾讯 语音合成 技术实践 有声读物

深圳web前端培训费用多少?

小谷哥

蓝桥杯历届试题 蚂蚁感冒(模拟版+非模拟版)

Five

算法 算法竞赛 8月月更

元老级的存储类型:块存储,性能很强!

wljslmz

8月月更 块存储

华为被迫开源!从认知到落地SpringBoot企业级实战手册(完整版)

Java编程日记

Java 编程 程序员 面试 架构师

OceanBase 4.0发布:首次实现单机分布式一体化架构、全面上云

OceanBase 数据库

Vuex与前端表格施展“组合拳”,实现大屏展示应用的交互增强

葡萄城技术团队

Vue 前端 表格 vuex

RabbitMQ面试29连问,看完还过不了面试,我给你一Jio

小柴说Java

Java 编程 程序员 面试 架构师

【计算讲谈社】第九讲|“碳中和”时代下:计算的机会在哪里?

大咖说

计算 碳中和

兆骑科创创业赛事活动服务平台,投融资服务对接,政策申报

兆骑科创凤阁

哪家web前端培训班比较好

小谷哥

刘伟光:超大型金融机构国产数据库全面迁移成功实践

OceanBase 数据库

VPN是什么?VPN与堡垒机有啥区别?

源字节1号

软件开发 小程序开发

缓存穿透、缓存击穿、缓存雪崩及解决方案

Steven

学习总结-网关 架构演进

C++后台开发

网络编程 API 网关 C/C++后台开发 C/C++开发

兆骑科创创业大赛,线上直播路演,高层次人才引进服务平台

兆骑科创凤阁

2022 全球 AI 模型周报

Zilliz

深度学习 计算机视觉 Transformer 多模态

网易伏羲实验室入选信通院首批大模型优秀应用案例

网易伏羲

人工智能 网易伏羲

提升LED显示屏散热效果的7种方式

Dylan

LED显示屏 led显示屏厂家

大数据编程培训课程怎么选择

小谷哥

22年Java面试真题整理,一共343道,每一题都很经典,堪称秋招必备

Java编程日记

Java 编程 程序员 面试 架构师

RocketMQ面试33连问,答完面试官主动要给我提薪资待遇...

Java编程日记

Java 编程 程序员 面试 架构师

元宇宙里的下个社交时代

智捷云

元宇宙

武汉java培训技术学习对学历的要求

小谷哥

NLP领域最优秀的8个预训练模型(附开源地址)_AI&大模型_PRANAV DAR_InfoQ精选文章