
作者:Dale Markowitz
翻譯:王可汗
校對:和中華
本文為大家介紹自然語言處理中當(dāng)下最流行的語言模型——Transformer模型。
標(biāo)簽:自然語言處理
你知道這句話嗎,當(dāng)你有一把錘子的時候,所有東西看起來都像釘子? 在機(jī)器學(xué)習(xí)中,我們似乎真的發(fā)現(xiàn)了一種神奇的錘子。實際上,在這個模型面前所有東西都是釘子,這就是Transformer模型。Transformer模型可以用來翻譯文本、寫詩、寫文章,甚至生成計算機(jī)代碼。事實上,我在daleonai.com上寫的很多驚人的研究都是建立在Transformer基礎(chǔ)之上,比如AlphaFold 2,它是一種從基因序列中預(yù)測蛋白質(zhì)結(jié)構(gòu)的模型,以及GPT-3、BERT、T5、Switch、Meena等功能強(qiáng)大的自然語言處理(NLP)模型。你可能會說,他們不僅僅是遇到了……呃,先往下說吧。如果你想在機(jī)器學(xué)習(xí),特別是自然語言處理方面與時俱進(jìn),你至少要對Transformer有一點了解。所以在這篇文章中,我們將討論它們是什么,它們是如何工作的以及為什么它們?nèi)绱擞杏绊懥Α?/span>Transformer是一種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。簡單地說,神經(jīng)網(wǎng)絡(luò)是分析圖像、視頻、音頻和文本等復(fù)雜數(shù)據(jù)類型的一種非常有效的模型。針對不同類型的數(shù)據(jù)有專門優(yōu)化過的的神經(jīng)網(wǎng)絡(luò)。例如,在分析圖像時,我們通常會使用卷積神經(jīng)網(wǎng)絡(luò)。大體來說,它們模仿了人腦處理視覺信息的方式。
卷積神經(jīng)網(wǎng)絡(luò),圖片來自Renanar2,wikiccommons大約從2012年開始,我們已經(jīng)用CNN相當(dāng)成功地解決了視覺問題,比如識別照片中的物體,識別人臉,手寫數(shù)字識別。但在很長一段時間里,語言任務(wù)(翻譯、文本摘要、文本生成、命名實體識別等)都沒有較好的方法。這很不幸,因為語言是我們?nèi)祟惤涣鞯闹饕绞健?/span>在2017年推出Transformer之前,我們使用深度學(xué)習(xí)來理解文本的方法是使用一種稱為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的模型,它看起來像這樣:循環(huán)神經(jīng)網(wǎng)絡(luò),圖片來自fdeloche,Wikimedia假設(shè)你想把一個句子從英語翻譯成法語。RNN將一個英語句子作為輸入,一次處理一個單詞,然后按順序吐出對應(yīng)的法語單詞。這里的關(guān)鍵詞是“順序”。在語言中,單詞的順序很重要,你不能隨意打亂它們。比如下面的句子:“Jane went looking for trouble.(簡到處找麻煩。)”意思與句子非常不同: “Trouble went looking for Jane” (麻煩到處找簡。)因此,任何能夠理解語言的模型都必須捕捉詞序,而循環(huán)神經(jīng)網(wǎng)絡(luò)是通過在一個序列中,一次處理一個單詞來做到的。但是RNN有問題。首先,他們很難處理冗長的文本序列,比如長段落或文章。當(dāng)他們讀到一段的結(jié)尾時,他們會忘記開頭發(fā)生了什么。例如,基于RNN的翻譯模型可能很難記住長段落主語的性別。更糟糕的是,RNN很難訓(xùn)練。它們很容易受到所謂的消失/爆炸梯度問題的影響(有時候你只能重新開始訓(xùn)練并祈禱)。更有問題的是,因為RNN是按順序處理單詞的,所以很難并行化。這意味著你不能通過添加更多GPU來加快訓(xùn)練速度,這也意味著你不能用那么多數(shù)據(jù)來訓(xùn)練它們。這就是Transformer大顯身手的地方。它們是谷歌和多倫多大學(xué)的研究人員在2017年開發(fā)的,最初設(shè)計用于翻譯。但與循環(huán)神經(jīng)網(wǎng)絡(luò)不同,Transformer可以非常有效地并行化。這就意味著,只要有合適的硬件,你就可以訓(xùn)練出一些非常大的模型。GPT-3是一種特別令人印象深刻的文本生成模型,它的寫作能力幾乎與人類相當(dāng),它是在45TB的文本數(shù)據(jù)上訓(xùn)練而成,包括幾乎所有的公共網(wǎng)絡(luò)數(shù)據(jù)。所以,用一句話總結(jié)Transformer,一定是這樣的: 當(dāng)一個擴(kuò)展性極佳的模型和一個巨大的數(shù)據(jù)集邂逅,結(jié)果可能會讓你大吃一驚。
Transformer,圖片出自原稿:https://arxiv.org/abs/1706.03762
雖然原稿中的圖表有點嚇人,但Transformer背后的創(chuàng)新可以歸結(jié)為三個主要概念:1. 位置編碼(Positional Encodings)3. 自注意力機(jī)制(Self-Attention)讓我們從第一個開始,位置編碼。假設(shè)我們要把文本從英語翻譯成法語?;貞汻NN,即之前的翻譯方法,是通過按順序處理單詞來理解單詞順序。但這也是讓它們難以并行化的原因。Transformer通過一種稱為位置編碼的創(chuàng)新方法繞過了這一障礙。其思路是將輸入序列中的所有單詞——在本例中是一個英語句子,在每個單詞后面加上一個數(shù)字,表明它的順序。所以,你為你的網(wǎng)絡(luò)提供如下序列:[("Dale", 1), ("says", 2), ("hello", 3), ("world", 4)]
從概念上講,你可以把理解語序的重?fù)?dān)從神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)轉(zhuǎn)移到數(shù)據(jù)本身。起初,在對Transformer進(jìn)行任何數(shù)據(jù)訓(xùn)練之前,它并不知道如何解釋這些位置編碼。但是隨著這個模型看到越來越多的句子和它們的編碼,它學(xué)會了如何有效地使用它們。我在這里做了一點過度簡化——最初的作者使用正弦函數(shù)來進(jìn)行位置編碼,而不是簡單的整數(shù)1、2、3、4——但要點是相同的。將語序存儲為數(shù)據(jù),而不是靠網(wǎng)絡(luò)結(jié)構(gòu),這樣你的神經(jīng)網(wǎng)絡(luò)就更容易訓(xùn)練了。Transformer的下一個重要部分叫做注意力機(jī)制。注意力是一種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),在機(jī)器學(xué)習(xí)中隨處可見。事實上,2017年介紹Transformer的那篇論文標(biāo)題并不是《我們向你介紹Transformer》(We Present You the Transformer)。相反,它被稱為《注意力就是你需要的一切》(Attention is All You Need)。Attention is All You Need
https://arxiv.org/pdf/1706.03762.pdf
在2015年文本翻譯中引入了注意力機(jī)制。要理解它,請參考原文中的例句:關(guān)于歐洲經(jīng)濟(jì)區(qū)的協(xié)定是1992年8月簽署的。(The agreement on the European Economic Area was signed in August 1992.)
L’accord sur la zone économique européenne a été signé en ao?t 1992.
對于翻譯這個句子,一個不好的方法是對照著英語句子中的每個單詞,然后試著把法語中的對應(yīng)單詞一次翻譯出來。出于幾個原因,這并不奏效,但其中一個原因是,法語翻譯中的一些詞顛倒過來了:英語中是“歐洲經(jīng)濟(jì)區(qū)”(European Economic Area),法語中是“l(fā)a zone économique européenne”。此外,法語是一種有陰陽性詞匯的語言。形容詞“économique”和“européenne”必須是陰性形式,以匹配陰性賓語“l(fā)a zone”。注意力是一種機(jī)制,它允許文本模型在決定如何翻譯輸出句子中的單詞時“查看”原始句子中的每一個單詞。下圖是最初的注意力論文中的一個很好的可視化:
圖片來自論文,“Neural Machine Translation by joint Learning to Align and Translate(2015)”,https://arxiv.org/abs/1409.0473
這是一種熱力圖,顯示出當(dāng)模型輸出法語句子中的每個單詞時,它“注意”的位置。如你所料,當(dāng)模型輸出“européenne”時,它會重點關(guān)注輸入詞“European”和“Economic”。模型如何知道在每個時間步中應(yīng)該“注意”哪些單詞呢? 這就是從訓(xùn)練數(shù)據(jù)中學(xué)到的東西。通過觀察成千上萬的法語和英語句子,該模型學(xué)會了什么類型的單詞是相互依賴的。學(xué)會了如何遵守詞性、復(fù)數(shù)和其他語法規(guī)則。自2015年被發(fā)現(xiàn)以來,注意力機(jī)制一直是自然語言處理一個非常有用的工具,但在其原始形式中,它是與循環(huán)神經(jīng)網(wǎng)絡(luò)一起使用的。因此,2017年《Transformer》論文的創(chuàng)新之處在于,在一定程度上完全拋棄了RNN。這就是為什么2017年的論文被稱為《注意力就是你需要的一切》。Transformer的最后一點(也許是最具影響力的一點)是對注意力的變式,即自注意力。我們剛才談到的那種普通的注意力有助于在英語和法語句子中匹配單詞,這對翻譯很重要。但是,如果你不是試圖翻譯單詞,而是建立一個能夠理解語言潛在含義和模式的模型——這種模型可以用于完成任何數(shù)量的語言任務(wù)呢?一般來說,讓神經(jīng)網(wǎng)絡(luò)強(qiáng)大的是,它們通常會自動建立起訓(xùn)練數(shù)據(jù)有意義的內(nèi)部表示。例如,當(dāng)你檢查視覺神經(jīng)網(wǎng)絡(luò)的不同層時,你會發(fā)現(xiàn)不同神經(jīng)元負(fù)責(zé)“識別”不同的模式,比如邊緣、形狀,甚至像眼睛和嘴巴這樣的高級結(jié)構(gòu)。在文本數(shù)據(jù)上訓(xùn)練的模型可能自動學(xué)習(xí)了詞性、語法規(guī)則以及單詞是否同義。神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)語言的內(nèi)部表征越好,它在任何語言任務(wù)中的表現(xiàn)就越好。事實證明,如果注意力機(jī)制應(yīng)用于輸入文本本身,它同樣是一種非常有效的方式。“服務(wù)員,能給我賬單嗎?”( “Server, can I have the check?”)"我好像讓服務(wù)器崩潰了"(“Looks like I just crashed the server.”)
在這里,單詞“server”意味著兩種非常不同的意思,我們?nèi)祟惪梢酝ㄟ^查看周圍的單詞輕松地消除歧義。自注意力使神經(jīng)網(wǎng)絡(luò)能夠在單詞周圍的語境中理解單詞。因此,當(dāng)模型處理第一句話中的“服務(wù)員”(“Server”)時,它可能是“注意”單詞“賬單”(“check),這有助于消除該單詞代表不同意思——服務(wù)員和服務(wù)器之間的歧義。在第二個句子中,模型可能會注意單詞“崩潰”(“crash”),以確定這個“服務(wù)器”(“server”)指的是一臺機(jī)器。自注意力幫助神經(jīng)網(wǎng)絡(luò)消除單詞歧義,做詞性標(biāo)注,命名實體識別,學(xué)習(xí)語義角色等等。我們在這里高度概括和總結(jié)了一下Transformer。如果你想要更深入的技術(shù)解釋,我強(qiáng)烈推薦你去看看Jay Alammar的博客文章The Illustrated Transformer。最流行的基于Transformer的模型之一BERT,它是“來自Transformer的雙向編碼器表示”( “Bidirectional Encoder Representations from Transformers”)的縮寫。它是谷歌的研究人員在我2018年加入公司前后引入的,很快就進(jìn)入了幾乎所有的NLP項目,包括谷歌搜索。BERT不僅指模型體系結(jié)構(gòu),還指經(jīng)過訓(xùn)練的模型本身,您可以在這里免費(fèi)下載和使用。這里
https://github.com/google-research/bert
谷歌的研究人員在一個龐大的文本語料庫上對它進(jìn)行了訓(xùn)練,它已經(jīng)成為一種用于自然語言處理的通用模型。它可以擴(kuò)展來解決一系列不同的任務(wù),比如:BERT證明,您可以在未標(biāo)記的數(shù)據(jù)上建立非常好的語言模型,比如從Wikipedia和Reddit中提取的文本,并且這些大型的“基礎(chǔ)”模型可以與特定領(lǐng)域的數(shù)據(jù)相適應(yīng),適用于許多不同的用例。最近,OpenAI創(chuàng)建的模型GPT-3生成真實文本的能力讓人們大吃一驚。谷歌搜索去年推出的Meena是一個基于變形金剛的聊天機(jī)器人(akhem,對話代理),幾乎可以就任何話題進(jìn)行引人入勝的對話(其作者曾花了20分鐘與Meena爭論作為人類意味著什么)。Tansformer也在自然語言處理之外掀起了一股浪潮,例如作曲、根據(jù)文本描述生成圖像以及預(yù)測蛋白質(zhì)結(jié)構(gòu)。現(xiàn)在你已經(jīng)被Transformer的力量所吸引,你可能想知道如何在自己的應(yīng)用中使用它們。沒問題。你可以從TensorFlow Hub下載常見的基于Transformer的模型,比如BERT。關(guān)于代碼教程,請查看我寫的關(guān)于構(gòu)建基于語義語言應(yīng)用程序的文章。文章
https://daleonai.com/semantic-ml
但是如果你想要真正的跟隨潮流,并且你寫Python,我強(qiáng)烈推薦由HuggingFace公司維護(hù)的Transformer庫。該平臺允許您以一種非常開發(fā)人員友好的方式訓(xùn)練和使用當(dāng)今大多數(shù)流行的NLP模型,如BERT、Roberta、T5、GPT-2。Transformers, Explained: Understand the Model Behind GPT-3, BERT, and T5https://towardsdatascience.com/transformers-explained-understand-the-model-behind-gpt-3-bert-and-t5-cdbf3fc8a40a?source=collection_home---------0----------------------------
王可汗,清華大學(xué)機(jī)械工程系直博生在讀。曾經(jīng)有著物理專業(yè)的知識背景,研究生期間對數(shù)據(jù)科學(xué)產(chǎn)生濃厚興趣,對機(jī)器學(xué)習(xí)AI充滿好奇。期待著在科研道路上,人工智能與機(jī)械工程、計算物理碰撞出別樣的火花。希望結(jié)交朋友分享更多數(shù)據(jù)科學(xué)的故事,用數(shù)據(jù)科學(xué)的思維看待世界。
工作內(nèi)容:需要一顆細(xì)致的心,將選取好的外文文章翻譯成流暢的中文。如果你是數(shù)據(jù)科學(xué)/統(tǒng)計學(xué)/計算機(jī)類的留學(xué)生,或在海外從事相關(guān)工作,或?qū)ψ约和庹Z水平有信心的朋友歡迎加入翻譯小組。
你能得到:定期的翻譯培訓(xùn)提高志愿者的翻譯水平,提高對于數(shù)據(jù)科學(xué)前沿的認(rèn)知,海外的朋友可以和國內(nèi)技術(shù)應(yīng)用發(fā)展保持聯(lián)系,THU數(shù)據(jù)派產(chǎn)學(xué)研的背景為志愿者帶來好的發(fā)展機(jī)遇。
其他福利:來自于名企的數(shù)據(jù)科學(xué)工作者,北大清華以及海外等名校學(xué)生他們都將成為你在翻譯小組的伙伴。
點擊文末“閱讀原文”加入數(shù)據(jù)派團(tuán)隊~
轉(zhuǎn)載須知
如需轉(zhuǎn)載,請在開篇顯著位置注明作者和出處(轉(zhuǎn)自:數(shù)據(jù)派ID:DatapiTHU),并在文章結(jié)尾放置數(shù)據(jù)派醒目二維碼。有原創(chuàng)標(biāo)識文章,請發(fā)送【文章名稱-待授權(quán)公眾號名稱及ID】至聯(lián)系郵箱,申請白名單授權(quán)并按要求編輯。
發(fā)布后請將鏈接反饋至聯(lián)系郵箱(見下方)。未經(jīng)許可的轉(zhuǎn)載以及改編者,我們將依法追究其法律責(zé)任。