如今,自然語(yǔ)言處理(NLP)可謂遍地開(kāi)花,可以說(shuō)正是我們了解它的好時(shí)機(jī)。
NLP的快速增長(zhǎng)主要得益于通過(guò)預(yù)訓(xùn)練模型實(shí)現(xiàn)轉(zhuǎn)移學(xué)習(xí)的概念。在NLP中,轉(zhuǎn)移學(xué)習(xí)本質(zhì)上是指在一個(gè)數(shù)據(jù)集上訓(xùn)練模型,然后調(diào)整該模型以便在不同數(shù)據(jù)集上實(shí)現(xiàn)NLP的功能。
這一突破使NLP應(yīng)用變得如此簡(jiǎn)單,尤其是那些沒(méi)有時(shí)間或資源從頭開(kāi)始構(gòu)建NLP模型的人。或者,對(duì)于想要學(xué)習(xí)或者從其他領(lǐng)域過(guò)渡到NLP的新手來(lái)說(shuō),這簡(jiǎn)直就是完美。
為什么要使用預(yù)訓(xùn)練模型?
模型的作者已經(jīng)設(shè)計(jì)出了基準(zhǔn)模型,這樣我們就可以在自己的NLP數(shù)據(jù)集上使用該預(yù)訓(xùn)練模型,而無(wú)需從頭開(kāi)始構(gòu)建模型來(lái)解決類(lèi)似的問(wèn)題
盡管需要進(jìn)行一些微調(diào),但這為我們節(jié)省了大量的時(shí)間和計(jì)算資源
在本文中展示了那些助你開(kāi)始NLP之旅的頂級(jí)預(yù)訓(xùn)練模型,以及該領(lǐng)域的最新研究成果。要查看關(guān)于計(jì)算機(jī)視覺(jué)中的頂級(jí)預(yù)訓(xùn)練模型的文章,請(qǐng)參閱:
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-article
本文涵蓋的NLP預(yù)訓(xùn)練模型
我根據(jù)應(yīng)用場(chǎng)景將預(yù)訓(xùn)練模型分為三類(lèi):
多用途NLP模型
ULMFiT
Transformer
谷歌的BERT
Transformer-XL
OpenAI的GPT-2
詞嵌入NLP模型
ELMo
Flair
其他預(yù)訓(xùn)練模型
StanfordNLP
多用途NLP模型
多用途模型在NLP領(lǐng)域里一直為人們所關(guān)注。這些模型為提供了許多令人感興趣的NLP應(yīng)用 - 機(jī)器翻譯、問(wèn)答系統(tǒng)、聊天機(jī)器人、情感分析等。這些多用途NLP模型的核心是語(yǔ)言建模的理念。
簡(jiǎn)單來(lái)說(shuō),語(yǔ)言模型的目的是預(yù)測(cè)語(yǔ)句序列中的下一個(gè)單詞或字符,在我們了解各模型時(shí)就會(huì)明白這一點(diǎn)。
如果你是NLP愛(ài)好者,那么一定會(huì)喜歡現(xiàn)在這部分,讓我們深入研究5個(gè)最先進(jìn)的多用途NLP模型框架。這里我提供了每種模型的研究論文和預(yù)訓(xùn)練模型的鏈接,來(lái)探索一下吧!
ULMFiT模型
ULMFiT由fast.ai(深度學(xué)習(xí)網(wǎng)站)的Jeremy Howard和DeepMind(一家人工智能企業(yè))的Sebastian Ruder提出并設(shè)計(jì)。可以這么說(shuō),ULMFiT開(kāi)啟了轉(zhuǎn)移學(xué)習(xí)的熱潮。
正如我們?cè)诒疚闹兴觯琔LMFiT使用新穎的NLP技術(shù)取得了令人矚目的成果。該方法對(duì)預(yù)訓(xùn)練語(yǔ)言模型進(jìn)行微調(diào),將其在WikiText-103數(shù)據(jù)集(維基百科的長(zhǎng)期依賴語(yǔ)言建模數(shù)據(jù)集Wikitext之一)上訓(xùn)練,從而得到新數(shù)據(jù)集,通過(guò)這種方式使其不會(huì)忘記之前學(xué)過(guò)的內(nèi)容。
ULMFiT比許多先進(jìn)的文本分類(lèi)模型還要好。我喜愛(ài)ULMFiT是因?yàn)樗恍枰苌俚臄?shù)據(jù)就可以來(lái)產(chǎn)生令人印象深刻的結(jié)果,使我們更容易理解并在機(jī)器上實(shí)現(xiàn)它!
也許你不知道ULMFiT其實(shí)是Universal Language Model Fine-Tuning(通用語(yǔ)言模型微調(diào))的簡(jiǎn)稱。“通用”一詞在這里非常貼切 - 該框架幾乎可以應(yīng)用于任何NLP任務(wù)。
想知道有關(guān)ULMFiT的更多信息,請(qǐng)參閱以下文章和論文:
使用ULMFiT模型和Python 的fastai庫(kù)進(jìn)行文本分類(lèi)(NLP)教程
https://www.analyticsvidhya.com/blog/2018/11/tutorial-text-classification-ulmfit-fastai-library/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article
ULMFiT的預(yù)訓(xùn)練模型論文
https://www.paperswithcode.com/paper/universal-language-model-fine-tuning-for-text
其他研究論文
https://arxiv.org/abs/1801.06146
Transformer模型
Transformer架構(gòu)是NLP近期最核心的發(fā)展,2017年由谷歌提出。當(dāng)時(shí),用于語(yǔ)言處理任務(wù)(如機(jī)器翻譯和問(wèn)答系統(tǒng))的是循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)。
Transformer架構(gòu)的性能比RNN和CNN(卷積神經(jīng)網(wǎng)絡(luò))要好,訓(xùn)練模型所需的計(jì)算資源也更少,這對(duì)于每個(gè)使用NLP的人來(lái)說(shuō)都是雙贏。看看下面的比較:
各模型的英德翻譯質(zhì)量
根據(jù)Google的說(shuō)法,Transformer模型“應(yīng)用了一種自注意力機(jī)制,可直接模擬句子中所有單詞之間的關(guān)系,而無(wú)需理會(huì)其各自的位置如何”。它使用固定長(zhǎng)度上下文(也就是前面的單詞)來(lái)實(shí)現(xiàn)。太復(fù)雜了?沒(méi)事,我們舉一例子簡(jiǎn)單說(shuō)明。
有句話“She found the shells on the bank of the river.”此時(shí)模型需要明白,這里的“bank”是指岸邊,而不是金融機(jī)構(gòu)(銀行)。Transformer模型只需一步就能理解這一點(diǎn)。我希望你能閱讀下面鏈接的完整論文,以了解其工作原理。它肯定會(huì)讓你大吃一驚。
谷歌去年發(fā)布了一款名為Universal Transformer的改進(jìn)版Transformer模型。它還有一個(gè)更新,更直觀的名字,叫Transformer-XL,我們將在后面介紹。
想學(xué)習(xí)和閱讀更多有關(guān)Transformer的信息,請(qǐng)?jiān)L問(wèn):
谷歌官方博文
https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html
Transformer預(yù)訓(xùn)練模型論文《Attention Is All You Need》
https://www.paperswithcode.com/paper/attention-is-all-you-need
其他研究論文
https://arxiv.org/abs/1706.03762
BERT模型(谷歌)
谷歌發(fā)布BERT框架并開(kāi)放其源代碼在業(yè)界掀起波瀾,甚至有人認(rèn)為這是否標(biāo)志著“ NLP新時(shí)代”的到來(lái)。但至少有一點(diǎn)可以肯定,BERT是一個(gè)非常有用的框架,可以很好地推廣到各種NLP任務(wù)中。
BERT是BidirectionalEncoderRepresentations(雙向編碼器表征)的簡(jiǎn)稱。這個(gè)模型可以同時(shí)考慮一個(gè)詞的兩側(cè)(左側(cè)和右側(cè))上下文,而以前的所有模型每次都是只考慮詞的單側(cè)(左側(cè)或右側(cè))上下文。這種雙向考慮有助于模型更好地理解單詞的上下文。此外,BERT可以進(jìn)行多任務(wù)學(xué)習(xí),也就是說(shuō),它可以同時(shí)執(zhí)行不同的NLP任務(wù)。
BERT是首個(gè)無(wú)監(jiān)督的、深度雙向預(yù)訓(xùn)練NLP模型,僅使用純文本語(yǔ)料庫(kù)進(jìn)行訓(xùn)練。
在發(fā)布時(shí),谷歌稱BERT進(jìn)行了11個(gè)自然語(yǔ)言處理(NLP)任務(wù),并產(chǎn)生高水平的結(jié)果,這一壯舉意義深遠(yuǎn)!你可以在短短幾個(gè)小時(shí)內(nèi)(在單個(gè)GPU上)使用BERT訓(xùn)練好自己的NLP模型(例如問(wèn)答系統(tǒng))。
想獲得更多有關(guān)BERT的資源,請(qǐng)參閱:
谷歌官方博文
https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html
BERT預(yù)訓(xùn)練模型論文
https://www.paperswithcode.com/paper/bert-pre-training-of-deep-bidirectional#code
其他研究論文
https://arxiv.org/pdf/1810.04805.pdf
Transformer-XL模型(谷歌)
從長(zhǎng)期來(lái)看,谷歌發(fā)布的版本對(duì)NLP而言是非常重要的。如果你是初學(xué)者,這個(gè)概念可能會(huì)有點(diǎn)棘手,所以我鼓勵(lì)你多讀幾遍來(lái)掌握它。我還在本節(jié)下面提供了多種資源來(lái)幫助你開(kāi)始使用Transformer-XL。
想象一下——你剛讀到一本書(shū)的一半,突然出現(xiàn)了這本書(shū)開(kāi)頭提到的一個(gè)詞或者一句話時(shí),就能回憶起那是什么了。但可以理解,機(jī)器很難建立長(zhǎng)期的記憶模型。
如上所述,要達(dá)成這個(gè)目的的一種方法是使用Transformers,但它們是在固定長(zhǎng)度的上下文中實(shí)現(xiàn)的。換句話說(shuō),如果使用這種方法,就沒(méi)有太大的靈活性。
Transformer-XL很好地彌補(bǔ)了這個(gè)差距。它由Google AI團(tuán)隊(duì)開(kāi)發(fā),是一種新穎的NLP架構(gòu),能夠幫助機(jī)器理解超出固定長(zhǎng)度限制的上下文。Transformer-XL的推理速度比傳統(tǒng)的Transformer快1800倍。
通過(guò)瀏覽下面谷歌發(fā)布的兩個(gè)gif文件,你就會(huì)明白這其中的區(qū)別:
正如你現(xiàn)在可能已經(jīng)預(yù)測(cè)到的,Transformer-XL在各種語(yǔ)言建模基準(zhǔn)/數(shù)據(jù)集上取得了最新的技術(shù)成果。以下是他們頁(yè)面上的一個(gè)小表格,說(shuō)明了這一點(diǎn):
之前給過(guò)鏈接并將在下面提到的Transformer-XL GitHub存儲(chǔ)庫(kù)包含了PyTorch和TensorFlow中的代碼。
學(xué)習(xí)和閱讀更多Transformer-XL有關(guān)信息的資源:
谷歌的官方博客文章
https://ai.googleblog.com/2019/01/transformer-xl-unleashing-potential-of.html
Transformer-XL的預(yù)訓(xùn)練模型
https://www.paperswithcode.com/paper/transformer-xl-attentive-language-models
研究論文
https://arxiv.org/abs/1901.02860
GPT-2模型(OpenAI)
這是一個(gè)十分有爭(zhēng)議的模型,一些人會(huì)認(rèn)為GPT-2的發(fā)布是OpenAI的營(yíng)銷(xiāo)噱頭。我可以理解他們的想法,但是我認(rèn)為至少應(yīng)該要先對(duì)OpenAI發(fā)布的代碼進(jìn)行嘗試。
首先,為那些不知道我在說(shuō)什么的人提供一些背景信息。OpenAI在2月份發(fā)表了一篇博客文章,他們聲稱已經(jīng)設(shè)計(jì)了一個(gè)名為GPT-2的NLP模型,這個(gè)模型非常好,以至于擔(dān)心被惡意使用而無(wú)法發(fā)布完整的版本,這當(dāng)然引起了社會(huì)的關(guān)注。
GPT-2經(jīng)過(guò)訓(xùn)練,可以用來(lái)預(yù)測(cè)40GB的互聯(lián)網(wǎng)文本數(shù)據(jù)中的下一個(gè)出現(xiàn)的詞。 該框架也是一個(gè)基于transformer的模型,而這個(gè)模型是基于800萬(wàn)個(gè)web頁(yè)面的數(shù)據(jù)集來(lái)進(jìn)行訓(xùn)練。他們?cè)诰W(wǎng)站上發(fā)布的結(jié)果簡(jiǎn)直令人震驚,因?yàn)樵撃P湍軌蚋鶕?jù)我們輸入的幾個(gè)句子編寫(xiě)出一個(gè)完整的故事。看看這個(gè)例子:
難以置信,是吧?
開(kāi)發(fā)人員已經(jīng)發(fā)布了一個(gè)更小版本的GPT-2,供研究人員和工程師測(cè)試。原始模型有15億個(gè)參數(shù)——開(kāi)放源碼示例模型有1.17億個(gè)參數(shù)。
學(xué)習(xí)和閱讀更多GPT-2有關(guān)信息的資源:
OpenAI的官方博客文章
https://openai.com/blog/better-language-models/
GPT-2的預(yù)訓(xùn)練模型
https://github.com/openai/gpt-2
研究論文
https://d4mucfpksywv.cloudfront.net/better-language-models/language-models.pdf
詞嵌入(word embedding)模型
我們使用的大多數(shù)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)算法都無(wú)法直接處理字符串和純文本。這些技術(shù)要求我們將文本數(shù)據(jù)轉(zhuǎn)換為數(shù)字,然后才能執(zhí)行任務(wù)(例如回歸或分類(lèi))。
因此簡(jiǎn)單來(lái)說(shuō), 詞嵌入(word embedding)是文本塊,這些文本塊被轉(zhuǎn)換成數(shù)字以用于執(zhí)行NLP任務(wù)。詞嵌入(word embedding)格式通常嘗試使用字典將單詞映射到向量。
你可以在下面的文章中更深入地了解word embedding、它的不同類(lèi)型以及如何在數(shù)據(jù)集中使用它們。如果你不熟悉這個(gè)概念,我認(rèn)為本指南必讀:
對(duì)詞嵌入的直觀理解:從計(jì)算向量到Word2Vec
https://www.analyticsvidhya.com/blog/2019/03/pretrained-models-get-started-nlp/
在本節(jié)中,我們將介紹NLP的兩個(gè)最先進(jìn)的詞嵌入(word embedding)。我還提供了教程鏈接,以便你可以對(duì)每個(gè)主題有實(shí)際的了解。
ELMo模型
這個(gè)ELMo并不是《芝麻街》里的那個(gè)角色,但是這個(gè)ELMo(Embeddings from Language Models(語(yǔ)言模型嵌入)的縮寫(xiě))在構(gòu)建NLP模型的上下文中非常有用。
ELMo是一種用向量和嵌入表示單詞的新方法。這些ELMo 詞嵌入(word embedding)幫助我們?cè)诙鄠€(gè)NLP任務(wù)上實(shí)現(xiàn)最先進(jìn)的結(jié)果,如下圖所示:
讓我們花點(diǎn)時(shí)間來(lái)了解一下ELMo是如何工作的。回想一下我們之前討論過(guò)的雙向語(yǔ)言模型。從這篇文章中我們能夠得到提示,“ELMo單詞向量是在雙層雙向語(yǔ)言模型(biLM)的基礎(chǔ)上進(jìn)行計(jì)算的。這個(gè)biLM模型有兩層疊加在一起,每一層都有2個(gè)通道——前向通道和后向通道:
ELMo單詞表示考慮計(jì)算詞嵌入(word embedding)的完整輸入語(yǔ)句。因此,“read”這單詞在不同的上下文中具有不同的ELMo向量。這與舊版的詞嵌入(word embedding)大不相同,舊版中無(wú)論在什么樣的上下文中使用單詞“read”,分配給該單詞的向量是相同的。
學(xué)習(xí)和閱讀更多ELMo有關(guān)信息的資源:
循序漸進(jìn)的NLP指南,了解ELMo從文本中提取特征
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-article
預(yù)訓(xùn)練模型的GitHub存儲(chǔ)庫(kù)
https://github.com/allenai/allennlp/blob/master/tutorials/how_to/elmo.md
研究論文
https://arxiv.org/pdf/1802.05365.pdf
Flair模型
Flair不是一個(gè)詞嵌入(word embedding),而是它的組合。我們可以將Flair稱為結(jié)合了GloVe、BERT與ELMo等嵌入方式的NLP庫(kù)。Zalando Research的優(yōu)秀員工已經(jīng)開(kāi)發(fā)了開(kāi)源的Flair。
該團(tuán)隊(duì)已經(jīng)為以下NLP任務(wù)發(fā)布了幾個(gè)預(yù)訓(xùn)練模型:
名稱 - 實(shí)體識(shí)別(NER)
詞性標(biāo)注(PoS)
文本分類(lèi)
培訓(xùn)定制模型
不相信嗎?那么,這個(gè)對(duì)照表會(huì)幫你找到答案:
“Flair Embedding”是Flair庫(kù)中打包的簽名嵌入,它由上下文字符串嵌入提供支持。了解支持Flair的核心組件可以閱讀這篇文章:
https://www.analyticsvidhya.com/blog/2019/02/flair-nlp-library-python/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article
我特別喜歡Flair的地方是它支持多種語(yǔ)言,而這么多的NLP發(fā)行版大多都只有英文版本。如果NLP要在全球獲得吸引力,我們需要在此基礎(chǔ)上進(jìn)行擴(kuò)展。
學(xué)習(xí)和閱讀更多有關(guān)Flair的資源:
Flair for NLP簡(jiǎn)介:一個(gè)簡(jiǎn)單但功能強(qiáng)大的最先進(jìn)的NLP庫(kù)
https://www.analyticsvidhya.com/blog/2019/02/flair-nlp-library-python/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article
Flair的預(yù)訓(xùn)練模型
https://github.com/zalandoresearch/flair
其他預(yù)訓(xùn)練模型
StanfordNLP (斯坦福)
提到擴(kuò)展NLP使其不局限于英語(yǔ),這里有一個(gè)已經(jīng)實(shí)現(xiàn)該目的的庫(kù)——StanfordNLP。其作者聲稱StanfordNLP支持超過(guò)53種語(yǔ)言,這當(dāng)然引起了我們的注意。
我們的團(tuán)隊(duì)是第一批使用該庫(kù)并在真實(shí)數(shù)據(jù)集上發(fā)布結(jié)果的團(tuán)隊(duì)之一。我們通過(guò)嘗試,發(fā)現(xiàn)StanfordNLP確實(shí)為在非英語(yǔ)語(yǔ)言上應(yīng)用NLP技術(shù)提供了很多可能性,比如印地語(yǔ)、漢語(yǔ)和日語(yǔ)。
StanfordNLP是一系列經(jīng)過(guò)預(yù)先訓(xùn)練的最先進(jìn)的NLP模型的集合。這些模型不僅是在實(shí)驗(yàn)室里進(jìn)行測(cè)試——作者在2017年和2018年的CoNLL競(jìng)賽中都使用了這些模型。在StanfordNLP中打包的所有預(yù)訓(xùn)練NLP模型都是基于PyTorch構(gòu)建的,可以在你自己的注釋數(shù)據(jù)上進(jìn)行訓(xùn)練和評(píng)估。
我們認(rèn)為你應(yīng)該考慮使用StanfordNLP的兩個(gè)主要原因是:
用于執(zhí)行文本分析的完整神經(jīng)網(wǎng)絡(luò)管道,包括。
標(biāo)記化
多字令牌(MWT)拓展
詞形還原
詞性(POS)和詞形特征標(biāo)記
依存語(yǔ)法分析
穩(wěn)定的Stanford CoreNLP軟件的官方Python接口。
學(xué)習(xí)和閱讀更多StanfordNLP有關(guān)信息的資源:
StanfordNLP簡(jiǎn)介:一個(gè)不可思議的支持53種語(yǔ)言的最先進(jìn)NLP庫(kù) (使用Python代碼)
https://www.analyticsvidhya.com/blog/2019/02/stanfordnlp-nlp-library-python/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article
StanfordNLP的預(yù)訓(xùn)練模型
https://github.com/stanfordnlp/stanfordnlp
尾注
這絕不是一個(gè)預(yù)訓(xùn)練NLP模型的詳盡列表,有更多能用的可以在這個(gè)網(wǎng)站上找到:https://paperswithcode.com
以下是學(xué)習(xí)NLP的一些有用資源:
使用Python課程進(jìn)行自然語(yǔ)言處理https://courses.analyticsvidhya.com/courses/natural-language-processing-nlp?utm_source=blog&utm_medium=top-pretrained-models-nlp-article
認(rèn)證項(xiàng)目:NLP初學(xué)者h(yuǎn)ttps://courses.analyticsvidhya.com/bundles/nlp-combo?utm_source=blog&utm_medium=top-pretrained-models-nlp-article
自然語(yǔ)言處理(NLP)系列文章https://www.analyticsvidhya.com/blog/category/nlp/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article
我很想聽(tīng)聽(tīng)你對(duì)這份清單的看法。你以前用過(guò)這些預(yù)訓(xùn)練過(guò)的模型嗎?或者你已經(jīng)探索過(guò)其他的模型?請(qǐng)?jiān)谙旅娴脑u(píng)論區(qū)告訴我——我很樂(lè)意搜索它們并添加到這個(gè)列表中。
-
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1212瀏覽量
24989 -
自然語(yǔ)言處理
+關(guān)注
關(guān)注
1文章
624瀏覽量
13722 -
nlp
+關(guān)注
關(guān)注
1文章
489瀏覽量
22228
原文標(biāo)題:8種優(yōu)秀預(yù)訓(xùn)練模型大盤(pán)點(diǎn),NLP應(yīng)用so easy!
文章出處:【微信號(hào):BigDataDigest,微信公眾號(hào):大數(shù)據(jù)文摘】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
從Open Model Zoo下載的FastSeg大型公共預(yù)訓(xùn)練模型,無(wú)法導(dǎo)入名稱是怎么回事?
用PaddleNLP在4060單卡上實(shí)踐大模型預(yù)訓(xùn)練技術(shù)

【「基于大模型的RAG應(yīng)用開(kāi)發(fā)與優(yōu)化」閱讀體驗(yàn)】+大模型微調(diào)技術(shù)解讀
KerasHub統(tǒng)一、全面的預(yù)訓(xùn)練模型庫(kù)
什么是大模型、大模型是怎么訓(xùn)練出來(lái)的及大模型作用

直播預(yù)約 |數(shù)據(jù)智能系列講座第4期:預(yù)訓(xùn)練的基礎(chǔ)模型下的持續(xù)學(xué)習(xí)

評(píng)論