当前位置: 首页 > 科技观察

盘点8个优秀的预训练模型,NLP应用就是这么简单!

时间:2023-03-20 20:40:51 科技观察

大数据文摘出品编译:李雷、蔡杰如今,自然语言处理(NLP)可以说是百花齐放,可以说是我们了解它的好时机。NLP的快速增长主要归功于通过预训练模型进行迁移学习的概念。在NLP中,迁移学习本质上意味着在一个数据集上训练模型,然后调整该模型以在不同的数据集上实现NLP功能。这一突破使NLP应用程序变得如此简单,特别是对于那些没有时间或资源从头开始构建NLP模型的人来说。或者,它非常适合想要从其他领域学习或过渡到NLP的初学者。1.为什么要使用预训练模型?该模型的作者设计了基准模型,以便我们可以在自己的NLP数据集上使用预训练模型,而无需从头开始构建模型来解决类似问题。虽然需要做一些微调,但是为我们节省了大量的时间和计算资源。在本文中,我们展示了可帮助您开始NLP之旅的顶级预训练模型,以及该领域的最新研究。要查看有关计算机视觉中顶级预训练模型的文章,请参阅:https://www.analyticsvidhya.com/blog/2018/07/top-10-pretrained-models-get-started-deep-learning-part-1-computer-vision/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article2.本文涉及的NLP预训练模型我把预训练模型按照应用场景分为三类:多用途NLPmodelULMFiTTransformerGoogleBERTTransformer-XLOpenAI的GPT-2wordembeddingNLP模型ELMoFlair其他预训练模型StanfordNLPmulti-purposeNLPmodel多用途模型在NLP领域一直备受人们关注。这些模型为许多有趣的NLP应用提供动力——机器翻译、问答系统、聊天机器人、情感分析等。这些多用途NLP模型的核心是语言建模的思想。简而言之,语言模型的目的是预测句子序列中的下一个单词或字符,当我们查看模型时,这一点就很清楚了。如果你是NLP爱好者,那么你一定会喜欢这部分,让我们深入研究5个最先进的多用途NLP模型框架。在这里,我提供了每个模型的研究论文和预训练模型的链接,快来探索吧!1.ULMFiT模型ULMFiT是由fast.ai(深度学习网站)的JeremyHoward和DeepMind(一家人工智能公司)的SebastianRuder提出并设计的。可以说,ULMFiT开启了迁移学习的浪潮。正如我们在本文中所描述的,ULMFiT使用新颖的NLP技术取得了令人印象深刻的结果。该方法对预训练语言模型进行微调,在WikiText-103数据集(维基百科长期依赖语言建模数据集Wikitext之一)上进行训练,得到新的数据集。这样,它就不会忘记你以前学过的东西。ULMFiT优于许多最先进的文本分类模型。我喜欢ULMFiT,因为它只需要很少的数据就能产生令人印象深刻的结果,让我们更容易理解并在机器上实现它!也许你不知道,ULMFiT其实就是通用语言模型微调(UniversalLanguageModelFine-Tuning)语言模型微调的简称)。“通用”一词在这里非常贴切——该框架几乎可以应用于任何NLP任务。要了解有关ULMFiT的更多信息,请参阅以下文章和论文:TextClassification(NLP)TutorialUsingULMFiTModelandPython'sfastaiLibrary:https://www.analyticsvidhya.com/blog/2018/11/tutorial-text-classification-ulmfit-fastai-library/?utm_source=blog&utm_medium=top-pretrained-models-nlp-articleULMFiT的预训练模型论文:https://www.paperswithcode.com/paper/universal-language-model-fine-tuning-for-text其他研究论文:https://arxiv.org/abs/1801.061462。Transformer模型Transformer架构是NLP的最新核心发展,由谷歌于2017年提出。当时,递归神经网络(RNN)用于机器翻译和问答系统等语言处理任务。Transformer架构比RNN和CNN(卷积神经网络)性能更好,并且需要更少的计算资源来训练模型,这对使用NLP的每个人来说都是双赢的。看看下面的比较:每个模型的英德翻译质量根据谷歌的说法,Transformer模型“应用了一种自我注意机制,直接对句子中所有单词之间的关系建模,而不管它们各自的位置。”。它使用固定长度的上下文(即前面的词)来做到这一点。太复杂?没问题,下面举个例子简单说明一下。有一句“她在河边找到了贝壳”。这时候模型需要明白这里的“银行”指的是岸上,而不是金融机构(bank)。Transformer模型只需一步即可理解这一点。我希望您阅读下面链接的完整论文以了解其工作原理。Itwilldefinitelysurpriseyou.下面的动画很好地说明了Transformer如何处理机器翻译任务:https://mp.weixin.qq.com/s?__biz=MjM5MTQzNzU2NA==&mid=2651669109&idx=2&sn=29b4e45291eac659af2967a1e246aa03&chksm=bd4c65e68a3becf0fdbb58b02a4c517c4dc62a6715763c9997b5139e4f6f96baab3ea850b96a&mpshare=1&scene=23&srcid=0401s7dijTRyCBQwv75Mh3I3#rdGoogle去年发布了Transformer模型的改进版本,称为UniversalTransformer。它还有一个更新、更直观的名称,称为Transformer-XL,我们将在后面介绍。想要了解和阅读更多关于Transformer的内容,请访问:谷歌官方博文:https://ai.googleblog.com/2017/08/transformer-novel-neural-network.htmlTransformer预训练模型论文《Attention Is All You Need》:https://www.paperswithcode.com/paper/attention-is-all-you-need其他研究论文:https://arxiv.org/abs/1706.037623。BERT模型(谷歌)谷歌发布了BERT框架并开源了代码,在业界掀起波澜,甚至有人怀疑这是否标志着一个“NLP新时代”的到来。但至少有一点可以肯定,BERT是一个非常有用的框架,可以很好地扩展到各种NLP任务中。BERT是BidirectionalEncoderRepresentations(双向编码器表示)的缩写。该模型可以同时考虑一个词的两侧(左和右)上下文,而以前的所有模型每次只考虑一个词的单侧(左或右)上下文。这种双向考虑有助于模型更好地理解单词的上下文。此外,BERT还具备多任务学习能力,即可以同时执行不同的NLP任务。BERT是第一个无监督、深度双向预训练的NLP模型,仅使用纯文本语料库进行训练。在发布时,谷歌表示BERT执行了11项自然语言处理(NLP)任务并产生了高水平的结果,这是一项意义深远的壮举!您可以在短短几个小时内(在单个GPU上)用BERT训练好自己的NLP模型(例如问答系统)。更多关于BERT的资源可以参考:谷歌官方博文:https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.htmlBERT预训练模型论文:https://www.paperswithcode.com/paper/bert-pre-training-of-deep-bidirectional#code其他研究论文:https://arxiv.org/pdf/1810.04805.pdf4.Transformer-XL模型(Google)从长远来看,Google发布的版本对于NLP来说非常重要。如果您是初学者,这个概念可能有点棘手,所以我鼓励您多读几遍以掌握窍门。我还在本节下方提供了各种资源,以帮助您开始使用Transformer-XL。想象一下——你正在读一本书的一半,当书的开头提到的一个单词或句子弹出时,你可以回忆起它是什么。但可以理解,机器很难建立长期记忆模型。如上所述,一种方法是使用Transformers,但它们是在固定长度的上下文中实现的。换句话说,如果您使用这种方法,您将没有太多的灵活性。Transformer-XL很好地弥补了这一差距。它由GoogleAI团队开发,是一种新颖的NLP架构,可帮助机器理解超出固定长度限制的上下文。Transformer-XL的推理速度是传统Transformer的1800倍。通过查看下面由Google发布的两个gif,您可以看到不同之处:正如您现在可能已经预测的那样,Transformer-XL在各种语言建模基准/数据集上取得了最先进的结果。这是他们页面上的一个小表格来说明这一点:链接到前面和下面提到的Transformer-XLGitHub存储库包含PyTorch和TensorFlow中的代码。学习和阅读更多关于Transformer-XL的资源:谷歌官方博文:https://ai.googleblog.com/2019/01/transformer-xl-unleashing-potential-of.htmlTransformer-XL预训练模型:https://www.paperswithcode.com/paper/transformer-xl-attentive-language-models研究论文:https://arxiv.org/abs/1901.028605。GPT-2模型(OpenAI)这是一个非常有趣的一个有争议的模型,有人会争辩说GPT-2的发布是OpenAI的营销噱头。我能理解他们的想法,但我认为你至少应该先试试OpenAI发布的代码。首先,为那些不知道我在说什么的人提供一些背景信息。OpenAI在2月份发表了一篇博文,他们声称设计了一个名为GPT-2的NLP模型,这个模型非常好,以至于他们因为害怕被恶意使用而无法发布完整版本,这当然引起了社会的强烈抗议。专注于。GPT-2经过训练可以预测40GB互联网文本数据中的下一个单词。该框架也是一个基于transformer的模型,这个模型是基于800万个网页的数据集进行训练的。他们在网站上发布的结果简直令人震惊,因为该模型能够根据我们输入的几句话写出一个完整的故事。看看这个例子:难以置信,是吧?开发人员发布了较小版本的GPT-2供研究人员和工程师进行测试。原始模型有15亿个参数——开源示例模型有1.17亿个参数。学习和阅读更多关于GPT-2的资源:OpenAI的官方博文:https://openai.com/blog/better-language-models/GPT-2预训练模型:https://github.com/openai/gpt-2研究论文:https://d4mucfpksywv.cloudfront.net/better-language-models/language-models.pdf词嵌入模型我们使用的大部分机器学习和深度学习算法都不能直接处理字符串和纯文本。这些技术要求我们在执行任务(例如回归或分类)之前将文本数据转换为数字。因此,简单来说,词嵌入是将文本块转换为数字以用于执行NLP任务。词嵌入格式通常尝试使用字典将词映射到向量。您可以在以下文章中了解有关词嵌入、其不同类型以及如何在数据集中使用它们的更多信息。如果您不熟悉这个概念,我认为本指南是必读的:对词嵌入的直观理解:从计算向量到Word2Vec:https://www.analyticsvidhya.com/blog/2019/03/pretrained-models-get-started-nlp/在本节中,我们将介绍两种最先进的NLP词嵌入。我还提供了教程链接,以便您可以亲身体验每个主题。6.ELMo模型这个ELMo并不是《芝麻街》中的人物,但是这个ELMo(EmbeddingsfromLanguageModels(语言模型嵌入)的缩写)在构建NLP模型的场景中非常有用。ELMo是一种用向量和嵌入表示单词的新方法。这些ELMo词嵌入(wordembeddings)帮助我们在几个NLP任务上取得了最先进的结果,如下图所示:让我们花点时间了解一下ELMo是如何工作的。回想一下我们之前讨论的双向语言模型。从这篇文章中我们可以得到一个提示,“ELMo词向量是在一个两层双向语言模型(biLM)的基础上计算出来的。这个biLM模型有两层堆叠在一起,每层有2个通道-一个前向通道和一个后向通道:ELMo词表示考虑计算词嵌入的完整输入句子。因此,“读”这个词在不同的上下文中有不同的ELMo向量。这与旧词嵌入有很大不同,在旧词嵌入中,无论在什么上下文中使用,单词“read”都被分配了相同的向量。学习和阅读更多关于ELMo的资源:Step-by-stepNLPguidetolearnaboutELMoextracting文本特征:https://www.analyticsvidhya.com/blog/2019/03/learn-to-use-elmo-to-extract-features-from-text/?utm_source=blog&utm_medium=top-pretrained-models-nlp-文章预训练模型的GitHub存储库:https://github.com/allenai/allennlp/blob/master/tutorials/how_to/elmo.md研究论文:https://arxiv.org/pdf/1802.05365.pdf7。Flair模型Flair不是词嵌入(wordembedding),而是它的组合。我们可以将Flair称为结合了GloVe、BERT和ELMo以及嵌入式方法的NLP库。ZalandoResearch的优秀人员开发了开源Flair。该团队已针对以下NLP任务发布了多个预训练模型:名称-实体识别(NER)词性标注(PoS)文本分类训练自定义模型不信服?那么,这个清单将帮助您找出:“FlairEmbedding”是打包在Flair库中的签名嵌入,它由上下文字符串嵌入提供支持。想了解支持Flair的核心组件,可以阅读这篇文章:https://www.analyticsvidhya.com/blog/2019/02/flair-nlp-library-python/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article我特别喜欢Flair的地方在于它支持多种语言,而许多NLP发行版大多只有英语。如果NLP要在全球范围内获得吸引力,我们需要以此为基础。了解并阅读有关Flair的更多资源:NLP的Flair简介:一个简单但功能强大的先进NLP库:https://www.analyticsvidhya.com/blog/2019/02/flair-nlp-library-python/?utm_source=blog&utm_medium=top-pretrained-models-nlp-articleFlair的预训练模型:https://github.com/zalandoresearch/flair8。其他预训练模型:StanfordNLP(斯坦福)提到扩展NLP,使其不局限于英语,已经有一个库在做这件事——StanfordNLP。它的作者声称StanfordNLP支持超过53种语言,这当然引起了我们的注意。我们的团队是最早使用该库并在真实数据集上发布结果的团队之一。我们尝试发现,StanfordNLP确实提供了很多将NLP技术应用于非英语语言的可能性,比如印地语、汉语和日语。StanfordNLP是预训练的最先进NLP模型的集合。这些模型不仅在实验室中进行了测试——作者在2017年和2018年的CoNLL竞赛中都使用了它们。StanfordNLP中打包的所有预训练NLP模型都是基于PyTorch构建的,可以在您自己的注释数据上进行训练和评估。我们认为您应该考虑使用StanfordNLP的主要原因有两个:用于执行文本分析的完整神经网络管道,包括。TokenizationMulti-WordToken(MWT)ExtensionLemmatizationPart-of-Speech(POS)和LemmatizationtaggingDependencyParsing稳定的StanfordCoreNLP软件的官方Python接口。学习和阅读更多关于StanfordNLP的资源:StanfordNLP简介:一个令人难以置信的最先进的NLP库(Python代码),支持53种语言:https://www.analyticsvidhya.com/blog/2019/02/stanfordnlp-nlp-library-python/?utm_source=blog&utm_medium=top-pretrained-models-nlp-articleStanfordNLP的预训练模型:https://github.com/stanfordnlp/stanfordnlpendnote这绝不是预训练NLP模型的详尽列表,以及此站点提供的更多信息:https://paperswithcode.com以下是学习NLP的一些有用资源:使用Python进行自然语言处理课程https://courses.analyticsvidhya.com/courses/natural-language-processing-nlp?utm_source=blog&utm_medium=top-pretrained-models-nlp-article认证项目:NLP初学者https://courses.analyticsvidhya.com/bundles/nlp-combo?utm_source=blog&utm_medium=top-pretrained-models-nlp-article自然语言处理(NLP)系列文章https://www.analyticsvidhya.com/blog/category/nlp/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article我很想听听您对此列表的看法。您以前使用过这些预训练模型吗?或者你探索过其他人吗?请在下面的评论部分告诉我-我很乐意搜索它们并将其添加到此列表中。相关报道:https://www.analyticsvidhya.com/blog/2019/03/pretrained-models-get-started-nlp/id:BigDataDigest)》】点此查看作者更多好文