導言

最近一段時間NLP領域的突破層出不窮,自從去年10月Google的Bert橫空出世,刷爆各種閱讀理解競賽。不到半年Google又推出了XLNet,又把Bert甩在身後。緊接著FaceBook釋出了RoBERT,百度也推出了ERNIE2。0,一個又一個新的模型不斷刷爆著評分。不過也有不一樣的聲音,臺大近期發表的論文指出BERT等一眾模型在對抗資料集上的表現下降明顯,根本沒有理解,甚至還不如盲猜。

不管怎樣,最近一個多月NLP圈內算是夠熱鬧的了。因此我們準備了這篇文章,帶你一路瞭解NLP的發展,和最新突破。炎炎夏日,吃一吃NLP的瓜。

本文內容主要整理自北京奔影演算法團隊負責人張海雷在2019年8月的技術分享,以及其他網際網路內容,文章由作者與同事高麗媛整理彙總。

溫馨提示

文章較長,共計約8000字,讀完大約需要35分鐘,歡迎先mark了再看。

No.1

那些為NLP拾柴的前輩

在開始之前,先讓我們認識一些在NLP領域有過突出貢獻的大師們,從他們的故事逐步瞭解NLP領域的發展。

從SMT到NMT,寫給小白的NLP基礎

Frederek Jelinek

弗萊德里克·賈里尼克在 IBM 實驗室工作期間,提出了基於統計的語音識別的框架,在此之前, 科學家們把語音識別問題當作人工智慧問題和模式匹配問題。而賈里尼克把它當成通訊問題,並用兩個隱含馬爾可夫模型(聲學模型和語言模型)把語音識別概括得清清楚楚。自此NLP領域進入了用資訊理論解決語言問題的時代,這套框架結構對至今的語音和語言處理仍有著深遠的影響,它從根本上使得語音識別有實用的可能。

(大佬軼事:因為和語言學家不愉快的合作經歷,以致後來他說:“我每開除一名語言學家,我的語音識別系統錯誤率就降低一個百分點。” 這句話倒是在NLP業界廣為流傳。)

從SMT到NMT,寫給小白的NLP基礎

J。R。 Firth

英語中有俗語You shall know a person by the company it keeps。 在《論語》中也有類似的表述,不知其人視其友。可以理解為一個人是由他的社會關係構成的,因此在瞭解一個人的時候,要看他都和哪些人結交。

而英國語言學家 J。 R。 Firth在此基礎上造出You shall know a word by the company it keeps。的語料庫語言學名句。這句話點出了上下文的重要性,即一個詞的意思,是要看所處的語境。無論是哪一國的語言或文字,脫離了語境之後只是一個孤零零的符號,失去了其含義。

自然語言處理的核心挑戰便是將模糊,有歧義的自然語言,轉換成嚴謹可編譯執行的機器語言。

1972年在IBM,賈里尼克組建了陣容空前絕後強大的研究隊伍,其中就包括第一個提出機器翻譯統計模型(SMT)的Peter Brown。

目前google上關於Brown的資料並不多,但是Brown的在NLP領域的諸多貢獻是你一定要知道的,在下一章裡我們會具體講到。

1990 ——《A statistical approach to machine translation》(簡稱Brown90)

1993 ——《The mathematics of statistical machine translation: parameter estimation》

IBM Model1-5

2001 —— IBM提出了機器翻譯自動評測方法BLEU

2002 —— NIST 開始舉行了每年一度的機器翻譯評測

從SMT到NMT,寫給小白的NLP基礎

Christopher Manning

斯坦福人工智慧實驗室負責人,爆款博士論文作者陳丹琦的導師,著作《統計自然語言處理基礎》,全書論述過程由淺入深,從數學基礎到資訊理論方法再到算法理論,夯實了NLP相關理論基礎。

從SMT到NMT,寫給小白的NLP基礎

《統計自然語言處理基礎》

No.2

NLP前期發展

從搜尋引擎到語音控制的智慧音箱,機器翻譯是所有現代語言處理系統的基礎,接下來我們會從機器翻譯問題來切入,開始這趟自然語言處理之旅。

鐵幕下崛起的機器翻譯

機器翻譯起源於1933年,前蘇聯科學家 Peter Troyanskii 向蘇聯科學院提交了一篇《雙語翻譯時用於選擇和列印文字的機器》的論文。這項發明非常簡單,包括有4種語言的卡片、一部打字機、以及一部舊式的膠捲照相機。

操作人員從文字中拿出第一個單詞,找到相應的卡片,然後拍張照片,並在打字機上打出詞態,如名詞,複數,所有格等。這部打字機的按鍵構成了一種特徵編碼。然後利用膠帶和照相機的膠捲製作出一幀幀的單詞與形態特徵的組合。

從SMT到NMT,寫給小白的NLP基礎

令人痛心的是,在當時的蘇聯這項發明被認作“無用”。直到20年後冷戰爆發,這一發明才被重新發掘,而當時Troyanskii已經死於心絞痛。

1954年1月7日,在IBM紐約總部,Georgetown-IBM實驗啟動了。IBM的701型計算機將60個俄語句子自動翻譯成英語,這是歷史上首次的機器翻譯。據當時IBM對外的報道,“一位不懂俄語的女孩在IBM的卡片上打出了俄語資訊。‘電腦’以每秒2。5行的驚人速度,在自動印表機上迅速完成了英語的翻譯。”

信源通道模型:Brown90

Brown90 即前文提到的《A statistical approach to machine translation》,Brown90提出的基於信源通道模型的統計機器翻譯框架,其基本思想是把機器翻譯看成是一個資訊傳輸的過程,用一種信源通道模型對機器翻譯進行解釋。

從SMT到NMT,寫給小白的NLP基礎

可以看出,這個框架基本上是學習和借鑑了賈里尼克將語音識別看成通訊問題的思想。

在Brown90中,機器翻譯的問題視作如下的過程,已知源語言中的一個句子T:

從SMT到NMT,寫給小白的NLP基礎

尋找翻譯機(translator)在產生T時所使用的源語言句子S:

從SMT到NMT,寫給小白的NLP基礎

而我們要選擇的句子S應能儘可能的使P(S|T)最大,結合貝葉斯定理,可以寫成:

從SMT到NMT,寫給小白的NLP基礎

在這個等式中,右邊的分母P(T)並不依賴於S,因此,這個問題也等價於選擇合適的S使P(S)P(T|S)最大,其中P(S)被稱為源語言S的語言模型機率(語言模型),P(T|S)被稱為給定S後到T的翻譯機率(翻譯模型),如下圖所示:

從SMT到NMT,寫給小白的NLP基礎

相應的,實際的翻譯過程由解碼器(Decoder)來執行,如下圖所示:

從SMT到NMT,寫給小白的NLP基礎

其目標是給定目標語言句子T的情況下,選擇一個源語言句子S,使:

從SMT到NMT,寫給小白的NLP基礎

在求解翻譯機率P(S|T)時,一個很關鍵的問題是怎樣定義目標語言句子中的詞與源語言中的詞的對應關係,這裡就需要引入一個詞對齊(Word Alignment)的概念。

從SMT到NMT,寫給小白的NLP基礎

如上圖所示,翻譯過程是建立法語到英語的對映關係。

最終,統計機器翻譯被分解為三大問題:

1、估計語言模型機率P(S); 2、估計翻譯模型機率P(T|S); 3、搜尋(解碼)問題:設計有效快速的搜尋演算法以求解P(S)*P(T|S)最大。

這三大問題也一一對應著語音識別中的語言模型,聲學模型和解碼問題。事實上,Brown90在具體描述這三大問題時,每一部分都與語音識別息息相關,如直接採用語音識別中廣泛使用的n-gram語言模型,在進行估計翻譯模型機率時使用語音識別中採用的EM演算法,而其搜尋演算法則採用語音識別中的“stack search”演算法。

毫不誇張的說,Brown90中的統計機器翻譯方法完全脫胎於語音識別的基本框架,語音識別這個保姆在早期統計機器翻譯誕生和成長的過程中給予了SMT無微不至的關懷和照顧。

IBM Model1-5

在1990年早期,IBM研究中心的一臺機器翻譯系統首次問世。它並不瞭解整體的規則和語言學,而是分析兩種語言中的相似文字,並試圖理解其中的模式。這個想法很簡單卻很出色。相同的一個句子用兩種語言分割成單詞,然後相互匹配。將這種操作重複大約5億次,並對每個單詞的匹配結果進行計數,如統計單詞“Das Haus”被翻譯成“house”、“building”、“construction”的次數。

從SMT到NMT,寫給小白的NLP基礎

如果大多數時候被翻譯成了“house”,那麼機器就會採用這個翻譯。請注意這裡並沒有設定任何規則,也沒有用到任何詞典,所有的結論都是機器根據統計以及“如果大家這麼翻譯,那我也這麼翻譯”的邏輯得出的 。於是統計型機器翻譯誕生了,這種方法比之前的方法更高效且準確,而且還不需要語言學家。使用的文字越多,翻譯效果就越佳。

但這個方法還有一個問題:機器如何或什麼時候才會將單詞“Das Haus”與單詞“building”關聯到一起?而我們又如何知道這是正確的翻譯呢?

答案是我們並不知道。最初,機器假定單詞“Das Haus”與翻譯後的句子中的其他詞的關聯性都相同。接下來,當“DasHaus”出現在別的句子裡,與“house”一詞的關聯性就會+1。這就是大學機器學習中的經典任務:“單詞對齊演算法”。

最初,第一個統計性翻譯系統將句子分割成單詞,因為這種方法最直觀且最有邏輯性。IBM的首個統計性翻譯模型稱之為Model 1。之後在起名上毫無天賦的IBM陸續退推出了Model 2 到 Model 5。

Model 1: “詞袋”

從SMT到NMT,寫給小白的NLP基礎

Model 1將句子分割成單詞,然後計數統計。其中並沒有考慮單詞的順序。最棘手的問題在於有時可以將多個字(或詞)翻譯成一個字(或詞)。例如,“吃飯”,“吃虧” 裡都有“吃”字,卻不能都翻譯成“eat”。

Model2:在句子中考慮單詞的順序

從SMT到NMT,寫給小白的NLP基礎

Model 2改善了對單詞順序的理解的問題:它記住了單詞在輸出句子中通常所處的位置,並在中間步驟重新排列單詞,讓句子聽上去更加自然,但是最後的翻譯結果依然有點蹩腳。

Model3:額外的處理

從SMT到NMT,寫給小白的NLP基礎

有些單詞在翻譯中出現得非常頻繁,例如德語中的冠詞或英語否定句中的“do”。“Ich will keine Persimonen” → “I do notwant Persimmons。” 為了處理這種情況,需要向Model 3中增加額外的兩步。

如果機器覺得有必要新增新詞的時候,先插入NULL標記,為每個標記詞選擇合適的語法助詞或單詞。

Model4:單詞對齊

Model 2也考慮了單詞的對齊,但是卻不懂得重新排序。舉例來說,形容詞通常都需要與名詞交換位置,並且不管它記住了多好的順序,都無法改善輸出的結果。因此,Model 4引入了被人稱之為“相對順序”的概念,即該模型學習了兩個單詞是否經常互換位置。

Model5:修正bug

Model 5在功能上沒有創新,只是為學習增加了更多引數,並修正了單詞位置衝突的問題。儘管基於單詞的系統為機器翻譯帶來了革命性的創新,但是它們依然無法處理大小寫、性別以及同音異意詞。每個單詞都由機器進行單一的看似正確的方法進行翻譯。

SMT的發展瓶頸

在IBM的翻譯模型之後,又相繼出現了基於短語的SMT,將文字分解成短語而非單詞,這種方法繼承了基於單詞的翻譯原則:統計、重新排序、以及詞彙的修改。透過學習片語的穩定關係,極大提高了翻譯精度。然而,侷限性依然很明顯。如果有人懂得語言學以及句子的結構,對其進行干涉,那麼翻譯的質量會大幅下降。

在2006年的NIST機器翻譯評測中,南加州大學的基於句法的統計機器翻譯系統在封閉測試中超越Google的基於短語的統計機器翻譯系統(Franz Josef Och領導),標誌著基於句法的統計機器翻譯系統與基於短語的統計機器翻譯分庭抗禮的時代來臨。

在神經網路真正出世之前,基於句法的翻譯被看作是“機器翻譯的未來”,但是這個想法卻未能成真。基於句法的翻譯的支持者認為,可以嘗試將其與基於規則的方法合併。有必要對句子進行非常精確的語法分析——確定主語、謂語以及其他部分,然後建立句子樹形結構。透過這個樹形結構,機器可以學習在語言之間進行語法單元的轉換,並透過但與或短語翻譯其餘部分。這將徹底解決單詞對齊的問題。

從SMT到NMT,寫給小白的NLP基礎

但是問題在於,句法分析的進行非常糟糕,儘管支持者們以為它在很早以前就得到了解決(因為有很多現成的語言庫)。但是當你嘗試用句法樹來解決比解析主語和謂語更復雜的問題時,每次都會以失敗告終。

基於統計的機器翻譯遺留下來了太多懸而未決的挑戰,常見的問題如下:

多詞(短語)對齊問題。最常見的例子是我們的外交部或者領導人在引用古詩文或成語時,同聲傳譯被難為到頭禿也做不到每次都能翻譯得信達雅。

不連續短語對齊問題(導致翻譯缺詞/多詞),常見的因不同語言的語法不同,帶來的挑戰。比如“在。。。基礎上/on the basis of。。。”

多義詞問題。比如同樣的一個詞“make”,在不同的語境下就需要被翻譯為不同的意思。闖下大禍(made a great misfortune);做了一個艱難的決定(made a tough decision)。

面對這些問題,業界也開始重新思考,為什麼一定要做詞對齊?這是正確的道路嗎?

在即將到來的2016年,神經網路的出世將會正式宣告統計機器翻譯的時代即將落幕,令人唏噓的是,在賈里尼克離開了IBM之後,Brown也相繼離開,並退出了NLP領域。曾經Brown90的8位作者,不知是對NLP領域失望了,還是志向發生了改變,或是悟出了人生真諦,紛紛退出NLP,轉去其他領域發光發熱。

(大佬們離開了NLP之後,在量化交易上搞得風生水起,畢竟都要恰飯的嘛。參考:《文藝復興科技公司:一群顛覆華爾街的數學家》

http://

money。hexun。com/2017-07

-07/189939103。html

No.3

NLP的騰飛

NLP的突破實際上來自於隔壁的 “計算機視覺”,Hinton多年研究的神經網路終於有所突破,並在影象分類,影象識別上產生了很好的效果。有了成功的案例,深度學習便很快地遷移到了其他的領域。NLP自此也進入了神經網路的時代,等待著的是一系列由學界蔓延到產業的連鎖反應。

從SMT到NMT,寫給小白的NLP基礎

NLP預訓練技術發展史

Google的BERT作為最近典型的NMT成功案例,重新整理了很多NLP任務的最好效能,有些任務甚至被刷爆,那bert真的有那麼好嗎?是有什麼重大的理論創新過著模型創新?客觀來說,模型創新並不算大,但效果是真的好,bert是近兩年來NLP領域重大進展的集大成者。

NLP的與訓練技術是如何一步步發展到bert模型的呢?這要先從圖形領域的預訓練說起,預訓練技術有哪些優點呢?

1、加快訓練速度;

2、引數初始化,有利於先找到好的初始點。

那麼這種老少皆宜、療效又好的方法是怎麼進行的呢?

對於同一個模型結構,簡單來講,就是複用其他資料集訓練好的模型引數,加快模型收斂。

對於多層疊加網路結構,幾百上千萬引數算起步價,訓練資料少的情況下很難訓練這麼複雜的網路,如果其中大量引數透過大的訓練集預先訓練好,對於目前手頭的任務,可以選擇完全按照這樣的引數進行訓練(Frozen),也可以選擇在訓練過程中不斷變更(Fine-Tuning)。

這種方式,對於資料量小的任務,解決了模型訓練不了的問題;對於資料量大的任務,加快了任務訓練的收斂速度。預訓練模式在使用過程中,底層特徵具備可複用性,網路引數抽象出的特徵與具體任務相關性小,通用性較好;高層特徵任務相關性較強,實際訓練中可以不採用,或者用Fine-Tuning用新的資料集清洗掉高層無關的引數。

在影象領域一般都採用ImageNet進行預訓練,對應到NLP,Word embedding技術其實就是早期的預訓練技術。

Word embedding 的故事

首先介紹下大名鼎鼎的“神經網路語言模型”,簡寫NNLM,訓練過程如下。學習某個句子中:

從SMT到NMT,寫給小白的NLP基礎

之前的 t-1個單詞,要求網路正確預測單詞Bert,即最大化:

從SMT到NMT,寫給小白的NLP基礎

從SMT到NMT,寫給小白的NLP基礎

神經網路語言模型(NNLM)

前面的任意單詞用Onehot編碼作為原始輸入,之後乘以矩陣Q(V*M)得到一個m列向量,這裡V代表詞典大小,訓練開始時採用隨機值初始化矩陣Q,當網路訓練完成後,矩陣Q每一行代表一個單詞對應的word embedding值。

上述模型在根據上文預測後續單詞的同時,收穫一個副產品:每個詞的word embedding。做word embedding 做火的工具是什麼?Word2Vec,以及之後出現的Glove。

從SMT到NMT,寫給小白的NLP基礎

CBOW模型

從SMT到NMT,寫給小白的NLP基礎

Skip-Gram模型

word2Vec也是做語言模型任務,

訓練方法有兩種:

1。CBOW:把句子中的一個詞扣掉,用這個詞的上文和下文預測被扣掉的詞。2。Skip-Gram :和CBOW正好相反,輸入某個單詞,要求網路預測它的上下文單詞。

word2Vec與NNLM的主要不同點:NNLM的主要任務是學習一個解決語言模型任務的網路結構,語言模型就是要根據上文預測下文,而word embedding 只是一個無心的副產品;而Word2Vec的目標就是得到單詞的word embedding,所以可以隨性的訓練網路。

word embedding就是標準的預訓練過程,但是為什麼在NLP領域取得CV領域那樣耀眼的效果呢?因為Word embedding存在問題。存在什麼問題呢?有哪些方面值得改進呢?

多義詞,這就是關鍵。

多義詞對word embedding有什麼負面影響呢?比如多義詞Bank,有兩個常用的含義(河岸;銀行),word embedding對bank進行編碼時,不能有效區分兩個詞的含義,儘管上下文不同,但在語言模型訓練的時候,經過word2Vec,都是預測相同的單詞bank,而同一個單詞佔用同一行的引數空間,這導致兩種不同的上下文資訊都會編碼到相同的word embedding空間中。因此word embedding無法區分多義詞的不同語義,ELMO提供的方案能夠很好的解決此類問題。

從Word embedding 到ELMO

ELMO全稱“Embedding from Language Models”,核心思想:首先使用語言模型得到單詞的word embedding(此時多義詞無法區分),在實際使用word embedding的時候,有具體的上下文環境,可以調整單詞的word embedding,這樣更能表達單詞在上下文中的具體含義,同時解決了多義詞的問題。

ELMO引入上下文動態調整單詞的embedding後,多義詞問題解決了嗎?解決了,而且超出我們的期待。

從SMT到NMT,寫給小白的NLP基礎

多義詞比如play(Glove訓練得到),因為訓練資料中包含play的句子體育領域居多,所以最接近的單詞結果集中大多數集中在體育領域;而使用ELMO,根據上下文動態調整後的embedding不僅能夠找出對應的同義詞,而且詞性也是相同的,這點超出了預期。這是因為第一層LSTM中編碼了很多句法資訊。

ELMO有什麼可改進的缺點呢?在特徵選取方面採用LSTM而不是Transformer,很多研究證明transformer提取特徵的能力要遠強於LSTM 。

NLP領域除了以ELMO為代表的基於特徵融合的預訓練方法外,還有一種“基於Fine-tuning的模式”,GPT是這一模式的典型開創者。

從Word embedding 到GPT

GPT是“Generative Pre-Training”的簡稱,即生成式預訓練。

GPT在做語言模型預訓練時,只採用了單詞的上文進行預測,沒有將單詞的下文嵌入到Word embedding中;對於不同的下游任務,需要將任務的網路結構改造成和GPT的網路結構是一樣的,那麼對於NLP各種花樣的任務,怎麼改造才能靠近GPT的網路結構呢?

對於分類問題:加上起始和終結符號即可;對於句子關係判斷問題:在兩個句子中間加個分隔符;對於文字相似性判斷問題:把兩個句子順序調到下,做成兩份輸入,這是為了告訴模型句子順序不重要;對於多項選擇問題:多路輸入,每一路把文章和答案選型拼接作為輸入。

GPT 有什麼可改進的缺點呢?單項語言模型,造成很多資訊損失。

BETR誕生

從SMT到NMT,寫給小白的NLP基礎

Bert 和GPT採用完全相同的兩階段模型,首先是語言模型預訓練,其次採用Fine-tuning模式解決下游任務。最大的不同點在於預訓練階段採用了類似ELMO的雙向語言模型,另一方面語言模型的資料規模要比GPT大。從模型或者方法的角度看,BERT借鑑了ELMO、GPT、CBOW,是近幾年NLP重大進展的集大成者,主要有兩點:

1、兩階段模型中,第一階段採用雙向語言模型預訓練,第二階段根據具體任務Fine-tuning或者做特徵整合;

2、特徵抽取採用Transformer,而不是RNN、CNN(捕獲長距離特徵TRansformer>LSTM >CNN)。

Bert最大的亮點在於效果好及普適性強,幾乎所有NLP任務都可以套用Bert這種兩階段解決思路,而且效果應該會有明顯提升。可以預見的是,未來一段時間在NLP應用領域,Transformer將佔據主導地位,而且這種兩階段預訓練方法也會主導各種應用。

神經網路(NN)在NLP領域起飛

從SMT到NMT,寫給小白的NLP基礎

早期,NLP的研究停留在符號層面,即基於邏輯、規則和本體,之後很長一段時間,NLP研究的主流基於SMT(基於統計的機器學習方法),大多采用監督學習中的現行模型,如感知機、現行SVM、LR等,大約從2014年起,NLP的主流方法轉移到非線性的神經網路方法,輸入也從稀疏高維特徵向量轉變為低維稠密特徵向量。

NN大幅簡化了特徵工程的工作,即僅需夠構建一個基本的核心特徵稽核,NN可以自動將其組合為更高層級的特徵。NN最大的優點就是可以學習到好的高層級特徵,通常這些特徵不是簡單的線性組合,因此不具有可解釋性。

基於核方法的ML演算法也可以實現根據核心特徵自動構建更高層次的特徵,但模型的計算複雜度與訓練資料的規模呈線性關係,無法處理大規模資料集;但是NN分類器的計算複雜度與網路規模呈線性關係,與訓練資料規模無關。

Encoder -Decoder框架

從SMT到NMT,寫給小白的NLP基礎

上圖是文字領域常用的Encoder-Decoder框架最抽象的一種表示。結合前文第二章信源通道Brown90模型,可以直觀的理解Encoder-Decoder框架:處理由一個句子生成另外一個句子的通用處理模型。輸入句子X和目標句子Y可以是同一種語言,也可以是兩種不同的語言,X、Y分別由各自的單詞序列構成:

從SMT到NMT,寫給小白的NLP基礎

Encoder對輸入句子X進行編碼,經過非線性變換轉化為中間語義C:

從SMT到NMT,寫給小白的NLP基礎

Decoder根據中間語義C和之前已經生成的歷史資訊y1,y2。。。yi-1生成下一時刻i要生成的單詞yi:

從SMT到NMT,寫給小白的NLP基礎

每個yi依次產生,整體來看系統是根據輸入句子X生成了目標句子Y:

Attention Model

關注NN在NLP領域的發展,Attention Model 是繞不開的話題,AM模型是2015年NLP領域重要的進展之一,在很多應用場景中被證明是有效的。上一節encoder-decoder提及目標句子Y的生成過程如下:

從SMT到NMT,寫給小白的NLP基礎

f是decoder的非線性變化函式,觀察發現,無論生成y1、y2 還是y3,都需要用到句子x的中間語義C,進一步引申,即:句子X中任意單詞對目標單詞yi的影響力都是一樣的,沒有區別。這一點對於較短的句子,影響不大,但如果輸入句子過長,所有語義完全透過一箇中間語義向量表示,會丟失很多細節資訊,這也是引入注意力模型的契機。

從SMT到NMT,寫給小白的NLP基礎

上圖是引入了AM模型的encoder-decoder框架,即生成目標句子中單詞的過程轉換為以下形式:

從SMT到NMT,寫給小白的NLP基礎

每個Ci對應著不同的源句子單詞的注意力分配機率分佈。舉個英漢翻譯的栗子:Tom chase Jerry ——> “湯姆 追逐 傑瑞”:

從SMT到NMT,寫給小白的NLP基礎

f2 :encoder 對輸入英文單詞的變換函式;

g :encoder根據單詞的中間表示,合成X的中間語義表示的變換函式,一般情況下,是對構成元素的加權求和。

這裡有個疑問?如何知道每個單詞的注意力分配機率值呢?即上例中的:

從SMT到NMT,寫給小白的NLP基礎

這裡對經典的encoder-decoder框架進行展開細化,encoder和decoder均採用RNN模型。

從SMT到NMT,寫給小白的NLP基礎

下面介紹下注意力機率分佈的通用計算過程:

從SMT到NMT,寫給小白的NLP基礎

生成單詞yi,之間的隱藏節點i時刻的輸出Hi-1是已知的,可以根據Hi-1和輸入句子中每個單詞對應的隱層節點狀態hj進行對比,透過函式F(hj,Hi-1)獲得目標單詞Yi和每個輸入單詞對齊的可能性。

注:F函式可以根據實驗情況採用不同的方法,經過Softmax進行歸一化後得到符合機率分佈取值區間的注意力機率分佈函式。上圖展示的是輸出單詞是“湯姆”時,對應輸入句子單詞的對齊機率。以上模型就是論文中常提到Soft Attention Model 的基本思想。

從SMT到NMT,寫給小白的NLP基礎

如果將Attention機制從encoder-decoder框架中剝離,可以更容易看懂Attention機制的本質,如上圖所示。Source有資料對構成,給定目標元素query,透過計算query和各個key的相似度,得到每個key對應的value,即權重係數,然後對value進行加權求和,得到最終的attention值。公式抽象如下:

從SMT到NMT,寫給小白的NLP基礎

這裡引入AM模型的物理含義,可以簡化並加深對該模型的理解。通常論文中會將AM模型看作單詞對齊模型,即目標句子生成的每個單詞對應輸入句子單詞的機率分佈,可以看作輸入句子單詞和目標生成單詞的對齊機率;另外,也可以把AM看成影響力模型,即生成目標單詞時,輸入句子每個單詞對生成這個單詞的影響程度。

Attention 機制的應用

在機器翻譯任務下,AM模型的應用非常直觀,矩陣中每一列代表生成的目標單詞對應輸入句子中每個單詞的AM分配機率,顏色越深機率越大。

從SMT到NMT,寫給小白的NLP基礎

在影象描述任務中,下圖四個例子形象展示了AM模型的過程(左側為輸入原題,下方句子是系統自動生成的描述語句,右側展示的是當系統生成語句中劃橫線單詞時,對應圖片中聚焦的位置區域)。

從SMT到NMT,寫給小白的NLP基礎

以上僅選取不同領域幾個典型的Attention機制應用案例,encoder-decoder+attention架構在深度學習領域得到廣泛應用,瞭解並熟練使用這一架構對於解決實際問題會有極大幫助。

No.4

結束語

NN推進NLP發展同時,也遇到了一些限時難以解決的問題,比如:翻譯過程中實體如何處理?自動摘要、聊天機器人任務中是不是引入copy機制更合理?採用指標最佳化Attention機制能否提升模型效能?

自然語言存在天然歧義,並且不斷變化演進,在前輩們的努力推動下,從符號層面,到統計學習,再到如今的深度學習,前路漫漫,吾輩仍需努力,共勉。

No.5

Reference

1。《統計機器翻譯 第一講》北京科技大學

https://

wenku。baidu。com/view/54

0e553983c4bb4cf7ecd1ae。html

2。《從冷戰到深度學習,一文看懂機器翻譯發展史》

https://www。

sohu。com/a/226151655_11

5128

3。《SMT經典再回首之Brown90:統計機器翻譯與語音識別》

http://www。

52nlp。cn/statistical-ma

chine-translation-and-speech-recognition-of-smt-classic-brown90

4。《從Word Embedding到Bert模型—自然語言處理中的預訓練技術發展史》

https://

zhuanlan。zhihu。com/p/49

271699

5。《自然語言處理中的Attention Model:是什麼及為什麼》

https://

blog。csdn。net/malefacto

r/article/details/50550211

6。《深度學習中的注意力機制》

https://

blog。csdn。net/malefacto

r/article/details/78767781