打通語言理論和統(tǒng)計NLP,Transformers/GNNs架構(gòu)能做到嗎?
作者 | Chaitanya K. Joshi
譯者 | 蘇本如,責編 | 夕顏
我的工程師朋友經(jīng)常問我:圖深度學習聽起來很棒,但是有沒有實際應(yīng)用呢?
雖然圖神經(jīng)網(wǎng)絡(luò)被用于Pinterest、阿里巴巴和推特的推薦系統(tǒng),但一個更巧妙的成功案例是Transformer架構(gòu),它在NLP(Natural Language Processing ,自然語言處理)世界掀起了一場風暴。
在這篇文章中,我嘗試在圖神經(jīng)網(wǎng)絡(luò)(GNNs)和Transformers之間建立一種聯(lián)系。我將討論NLP和GNN社區(qū)對于模型架構(gòu)背后的直覺,用方程和圖形建立兩者之間的聯(lián)系,并討論兩者如何合作來共同進步。
讓我們從模型架構(gòu)的目的——表示學習(representation learning)開始。
01 NLP的表示學習
在較高的層次上,所有的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)都將輸入數(shù)據(jù)的“表示”構(gòu)建為嵌入向量,并對有關(guān)數(shù)據(jù)的有用統(tǒng)計和語義信息進行編碼。這些潛在的或隱藏的“表示”可以用于執(zhí)行一些有用的操作,例如對圖像進行分類或翻譯句子。神經(jīng)網(wǎng)絡(luò)通過接收反饋(通常是通過誤差/損失函數(shù))來學習構(gòu)建更好的“表示”。
對于自然語言處理(NLP),通常遞歸神經(jīng)網(wǎng)絡(luò)(RNNs)以順序的方式構(gòu)建句子中每個單詞的“表示”,即一次一個單詞。直觀地說,我們可以把一個RNN層想象成一個傳送帶,上面的文字從左到右進行遞歸處理。最后,我們得到了句子中每個單詞的一個隱藏的特征,我們將其傳遞給下一個RNN層或用于我們選擇的NLP任務(wù)。
如果你想回顧一下RNNs和NLP的表示學習,我強烈推薦Chris Olah的博客。
Transformers 最初是為機器翻譯而引入的,現(xiàn)在已經(jīng)逐漸取代了主流NLP中的RNNs。該架構(gòu)采用了一種全新的表示學習方法:完全不需要使用遞歸,Transformers使用一種注意力機制(attention mechanism)來構(gòu)建每個單詞的特征,以確定句子中所有其他單詞對前述單詞的重要性。了解了這一點,單詞的更新特征就是所有單詞特征的線性變換的和,并根據(jù)其重要性進行加權(quán)。
在2017年的時候,這種想法聽起來非常激進,因為NLP社區(qū)已經(jīng)習慣了使用RNN處理文本的順序式方式(即一次一個單詞)。它的名字可能也起到了推波助瀾的作用。
02 詳解Transformer
讓我們通過將前一段翻譯成數(shù)學符號和向量的語言來發(fā)展關(guān)于架構(gòu)的直覺。我們將句子S中第i個單詞的隱藏特征h從從第 ? 層更新到第 ?+1層,如下所示:
例如:
這里的:
其中j∈S表示句子中的詞集,、、是可學習的線性權(quán)重(分別表示注意力計算的Query、Key和Value)。
對于句子中的每個單詞,注意力機制是并行執(zhí)行的,以一個單詞一個單詞地方式獲得更新后的特征,這是RNNs上的Transformer的另一個優(yōu)點:它逐詞逐詞地更新特征。
我們可以通過以下管道(pipeline)來更好地理解注意力機制:
考慮到單詞的特征 和其他詞集的特征,通過向量點積計算每對(i,j)的注意力權(quán)重,然后對所有j的注意力權(quán)重執(zhí)行softmax運算。最后。我們得到單詞i的最新特征。句子中的每個單詞都會并行地通過相同的管道來更新其特征。
03 多頭注意力機制
讓這個簡單的向量點積注意力機制發(fā)揮作用是很棘手的。因為錯誤的可學習權(quán)重的隨機初始化會使訓練過程變得不穩(wěn)定。
我們可以通過并行執(zhí)行多個注意力“頭”并將結(jié)果串聯(lián)起來(讓每個“頭”現(xiàn)在都有獨立的可學習權(quán)重)來解決這個問題:
式中,是第k個注意力頭的可學習的權(quán)重,是降維投影,以匹配跨層的
和
的維度。
多個頭部允許注意力機制從本質(zhì)上“對沖****注”,可以從上一層觀察前一層隱藏特征的不同轉(zhuǎn)換或不同的方面。我們稍后會詳細討論。
04 規(guī)模大小問題
Transformer架構(gòu)的一個關(guān)鍵問題是,經(jīng)過注意力機制之后的單詞特征可能具有不同的規(guī)模和大小。這可能是由于在對一些單詞的其他單詞特征進行求和的時候,這些單詞具有非常尖銳或非常分散的注意力權(quán)重。此外,在單個特征向量條目層面上,將多個注意力頭拼接在一起,每個注意力頭的輸出值可以在不同的尺度上,從而導致最終向量的值具有很寬的動態(tài)值范圍。
按照傳統(tǒng)的機器學習(ML)的經(jīng)驗,這時候向pipeline中添加一個歸一化層似乎是合理的。
Transformer通過使用LayerNorm克服了第二個問題,LayerNorm在特征級別進行規(guī)一化并學習仿射變換。此外,通過特征維度的平方根來調(diào)整向量點積注意力有助于解決第一個問題。
最后,Transformer的作者提出了另一個控制尺度問題的“技巧”:一個具有特殊結(jié)構(gòu)的基于位置排列的2層MLP。在多頭注意力之后,他們通過一個可學習的權(quán)重將投射到一個(荒謬的)更高的維度,在那里它經(jīng)歷了ReLU非線性后,再被投射回其原始維度,然后再進行另一次歸一化:
老實說,我不確定這個過于參數(shù)化的前饋子層背后的確切直覺是什么。我想LayerNorm和scaled dot products并沒有完全解決前面提到的問題,所以大的MLP可以說是一種獨立地重新縮放特征向量的hack方法。根據(jù)Jannes Muenchmeyer的說法,前饋子層確保了Transformer是一個萬能逼近器。因此,投影到一個非常高的維度空間,經(jīng)歷一次ReLU非線性,然后重新投射到原始維度,使模型能夠比在隱藏層中保持相同維度時可以“表示”更多的功能。
Transformer層的最終結(jié)構(gòu)圖看起來是這樣的:
Transformer架構(gòu)也非常適合深度學習網(wǎng)絡(luò),這使得NLP社區(qū)在模型參數(shù)和擴展數(shù)據(jù)方面都能夠進行擴展。
每個多頭注意力子層和前饋子層的輸入和輸出之間的殘差連接是堆疊Transformer層的關(guān)鍵(但為了清晰起見,在圖中省略了)。
05 使用GNNs構(gòu)建圖的表示
現(xiàn)在,我們暫時先不討論NLP。
圖神經(jīng)網(wǎng)絡(luò)(GNNs)或圖卷積神經(jīng)網(wǎng)絡(luò)(GCNs)構(gòu)建圖數(shù)據(jù)中節(jié)點和邊的表示。它們通過鄰域聚合(或消息傳遞)來實現(xiàn)這一點,每個節(jié)點從其鄰域收集特征,以更新其對周圍的局部圖結(jié)構(gòu)的表示。堆疊幾個GNN層使得模型能夠在整個圖中傳播每個節(jié)點的特征--從它的鄰居傳播到鄰居的鄰居,依此類推。
以這個表情符號社交網(wǎng)絡(luò)為例: GNN產(chǎn)生的節(jié)點特征可以用于預(yù)測任務(wù),例如:識別最有影響力的成員或提出潛在的聯(lián)系。
在其最基本的形式中,GNNs通過對第?層節(jié)點(比如說)自身特征的非線性變換,在每個相鄰節(jié)點j∈N(i)的特征的集合中加入節(jié)點自身特征的非線性變換,從而更新第?層節(jié)點i的隱藏特征h:
在這里,,是GNN層的可學習權(quán)重矩陣,σ是一個類似于ReLU的非線性變換函數(shù)。在本示例中, = { }。
鄰域節(jié)點j∈N(i)上的求和可以用其他輸入大小不變的聚合函數(shù)來代替,例如簡單的mean/max或更強大的函數(shù),比如基于注意力機制的加權(quán)求和函數(shù)。
這聽起來耳熟嗎?
也許一個pipeline(管道)將有助于實現(xiàn)連接:
如果我們將多個并行的鄰域頭進行聚合,并用注意力機制(即加權(quán)和)代替鄰域j上的求和,加上歸一化和前饋MLP,看,我們就得到了一個圖Transformer!
06 句子是全連通的詞圖
為了使連接更加明確,可以將一個句子看作一個完全連通的圖,其中每個單詞都與其他每個單詞相連?,F(xiàn)在,我們可以使用GNN為圖(句子)中的每個節(jié)點(單詞)構(gòu)建特性,然后我們可以使用它執(zhí)行NLP任務(wù)。
廣義地說,這就是Transformers正在做的: 它們是具有以多頭注意力作為鄰域聚合函數(shù)的GNNs。而標準的GNNs從其局部鄰域節(jié)點j∈N(i)聚合特征,NLP的Transformer將整個句子S視為局部鄰域,在每一層聚合來自每個單詞j∈S的特征。
重要的是,各種特定于問題的技巧,-- 例如位置編碼、因果/屏蔽聚合、學習速率調(diào)度器和廣泛的預(yù)訓練 -- 對Transformers 的成功至關(guān)重要,但在GNN社區(qū)中很少出現(xiàn)。同時,從GNN的角度來看,Transformers可以啟發(fā)我們擺脫架構(gòu)中的許多華而不實的東西。
07 我們學到了什么?
句子都是全連通圖嗎?
既然我們已經(jīng)在Transformer和GNNs之間建立了聯(lián)系,讓我來談?wù)勔恍┫敕ā?/p>
首先,全連通圖是NLP的最佳輸入格式嗎?
在統(tǒng)計NLP和ML(機器學習)流行之前,像Noam Chomsky這樣的語言學家專注于發(fā)展語言結(jié)構(gòu)的形式化理論,例如語法樹/圖。樹形長短期記憶網(wǎng)絡(luò)(Tree LSTMs)模型已經(jīng)被嘗試過了,但是否有可能Transformers/GNNs是可以將語言理論和統(tǒng)計NLP這兩個世界結(jié)合在一起的更好的架構(gòu)?例如,MILA(蒙特利爾學習算法研究所和斯坦福大學最近的一項研究探索了使用語法樹增強預(yù)訓練的Transformer,如Sachan等人在2020年提出的基于Transformer的雙向編碼器表示( BERT)。
圖片來源: 維基百科
長期依賴性
全連通圖的另一個問題是,它們使得學習單詞之間的長期依賴關(guān)系變得困難。原因很簡單,這是因為圖的邊數(shù)量和節(jié)點的數(shù)量成平方量級關(guān)系,即在一個有著n個單詞的句子中,Transformer/GNN將在對單詞的量級上進行計算。對于非常大的n來說,這個計算規(guī)模大到無法控制。
NLP社區(qū)對長序列和依賴關(guān)系問題的看法很有趣:使注意力機制在輸入大小方面變得稀疏或自適應(yīng),在每一層中添加遞歸或壓縮,以及使用局部敏感哈希來獲得有效的注意力,這些都是可能使得Transformers變得更好的新想法。
看到來自GNN社區(qū)的想法加入其中是一件很有趣的事,例如用于句子圖稀疏化的二分法(BP- Binary Partitioning)似乎是另一種令人興奮的方法。BP-Transformers遞歸地將句子分為兩部分,直到它們能夠從句子標記中構(gòu)造出一個分層二叉樹。這種結(jié)構(gòu)化的歸納偏置有助于模型以內(nèi)存級效率的方式處理較長的文本序列。
資料來源:Ye等人,2019年
Transformers正在學習“神經(jīng)語法嗎” ?
在一些有關(guān)Transformers學習的文章中,基本假設(shè)是Transformers對句子中的所有詞對進行注意力計算,以確定哪些詞對是最有趣的,也就是能讓“Transformer”學習一些類似于特定任務(wù)語法的東西。在多頭注意力中,不同的頭也可以“觀察”不同的句法屬性。
用圖的術(shù)語來說,通過在全圖上使用GNN,我們能從GNN在每一層執(zhí)行鄰域聚合的方式恢復最重要的邊以及它們可能包含的內(nèi)容嗎?我還不太相信這個觀點。
資料來源:Clark等人, 2019
08 為什么是多頭注意力?為什么是注意力?
我更贊同多頭機制的優(yōu)化觀點,即擁有多個注意力頭可以改進學習,并克服糟糕的隨機初始化。例如,這些論文表明,Transformer頭可以在訓練后被“修剪”或移除,而不會對性能產(chǎn)生顯著影響。
多頭鄰域聚合機制在GNNs中也被證明是有效的,例如,GAT使用相同的多頭注意力,MoNet使用多個高斯核來聚合特征。雖然這些是為了穩(wěn)定注意力機制而發(fā)明的,但這些多頭技巧會成為擠出額外模型性能的標準嗎?
相反,具有簡單聚合函數(shù)(如sum或max)的GNN不需要多個聚合頭來進行穩(wěn)定的訓練。如果我們不必計算句子中每個詞對之間的配對兼容性,那對Transformers來說不是很好嗎?
Transformers能從完全擺脫注意力中獲益嗎?Yann Dauphin和合作者的最近工作提出了一種替代的ConvNet的架構(gòu)。Transformers也可能最終會做一些類似的事情。
資料來源:Wu等人,2019年
09 為什么Transformers的訓練這么難?
閱讀最新的Transformer論文讓我覺得,訓練這些模型需要一些類似于黑魔法的東西來確定最佳學習速率調(diào)度器、熱身策略和衰減設(shè)置。這可能只是因為模型太過龐大,而NLP的研究任務(wù)又太具有挑戰(zhàn)性了。
但是最近的結(jié)果表明,這也可能是因為歸一化的具體排列和架構(gòu)內(nèi)的殘差連接所導致的。
我很喜歡閱讀最新的@DeepMind Transformer論文,但是訓練這些模型為什么需要它樣的黑魔法呢?”對于基于單詞的語言模型(LM),我們使用了16,000個warmup-step和500,000個decay-step,并犧牲了9000個goat?!?/em>
https://t.co/dP49GTa4zepic.twitter.com/1K3Fx4s3M8
- Chaitanya K.Joshi(@chaitjo)于2020年2月17日
我知道自己過分激動了,但這讓我提出疑問:我們真的需要多頭的昂貴的配對的注意力,過分參數(shù)化的MLP子層,和復雜的學習速度調(diào)度器嗎?
我們真的需要如此之大的模型嗎?對于手頭的任務(wù)來說,具有良好的歸納偏差的體系結(jié)構(gòu)不應(yīng)該更容易訓練嗎?
原文鏈接:
https://thegradient.pub/transformers-are-graph-neural-networks/
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。