03.03 原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?

點擊上方 "程序員小樂"關注, 星標或置頂一起成長

每天凌晨00點00分, 第一時間與你相約


每日英文

The more you know who you are, and what you want, the less you let things upset you.

你越瞭解自己,越懂得自己想要什麼,能令你沮喪的事情就越少。


每日掏心話

不要總是羨慕別人的美好,要用心經營自己的幸福。放棄了,就不該後悔。失去了,就不該回憶。


原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?

程序員小樂(ID:study_tech)第 793 次推文 圖片來自百度


往日回顧:美團面試題:Hashmap的結構,1.7和1.8有哪些區別,史上最深入的分析


正文


Transformer和GNN有什麼關係?一開始可能並不明顯。但是通過這篇文章,你會從GNN的角度看待Transformer的架構,對於原理有更清楚的認知。
有的工程師會問這個問題:圖深度學習聽起來不錯,但是有沒有商業上的成功案例?它是否已經在實際應用中使用過了?
除了一些以下企業中的推薦系統,如 Pinterest、阿里巴巴和推特,實際上在商業中已經取得成功的案例是 Transformer,它極大地改變了 NLP 業界。
通過這篇博文,現為南洋理工大學助理研究員的 Chaitanya Joshi 將為讀者介紹圖神經網絡和 Transformer 之間的內在聯繫。具體而言,作者首先介紹 NLP 和 GNN 中模型架構的基本原理,使用公式和圖片來加以聯繫,然後討論怎樣能夠推動這方面的進步。


原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?

本文作者、南洋理工大學助理研究員 Chaitanya Joshi。
對「Transformer 是圖神經網絡」這一概念,這篇文章做了很好的解釋。

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


首先,我們從表示學習開始。
NLP 中的表示學習
從一個很高的角度來看,所有的神經網路架構都是對輸入數據的表示——以向量或嵌入矩陣的形式。這種方法將有用的統計或語義信息進行編碼。這些隱表示可以被用來進行一些有用的任務,如圖像分類或句子翻譯。神經網絡通過反饋(即損失函數)來構建更好的表示。


對於 NLP 來說,傳統上,RNN 對每個詞都會建立一個表示——使用序列的方式。例如,每個時間步一個詞。從直觀上來說,我們可以想象,一個 RNN 層是一個傳送帶。詞彙以自迴歸的方式從左到右被處理。在結束的時候,我們可以得到每個詞在句子中的隱藏特徵,然後將這些特徵輸入到下一個 RNN 層中,或者用到任務中去。

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


從機器翻譯開始,Transformer 就逐漸開始取代 RNN。這一模型有著新的表示學習策略。它不再使用遞歸,而是使用注意力機制對每個詞構建表示——即每個詞語在句子中的重要程度。知道了這一點,詞的特徵更新則是所有詞的線性變換之和——通過其重要性進行加權。
Transformer 故障
通過將前一段翻譯成數學符號以及向量的方式去創建對整個體系結構的認知。將長句 S 中的第 i 個單詞的隱藏特徵 h 從 ℓ 層更新至ℓ+1 層:

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


其中 j∈S 為句子中單詞的集合,Q^ℓ、K^ℓ、V^ℓ為可學習的線性權重(分別表示注意力計算的 Query、Key 以及 Value)。針對句子中每個單詞的並行執行注意力機制,從而在 one shot 中(在 RNNs 轉換器上的另外一點,逐字地更新特徵)獲取它們的更新特徵。
我們可通過以下途徑更好地理解注意力機制:

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


考慮到 h_j^l; ∀j∈S 句中 h_i^l 和其他詞的特徵,通過點積計算每對(i,j)的注意力權重,然後在所有 j 上計算出 softmax。最後通過所有 h_j^l 的權重進行相應的加權,得到更新後的單詞特徵 h_i^l+1。
多頭注意力機制
讓點積注意力機制發揮作用是被證明較為棘手:糟糕的隨機初始化可能會破壞學習過程的穩定性,此情況可以通過並行執行多頭注意力將結果連接起來,從而克服這個問題(而每個「head」都有單獨的可學習權重):

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


其中 Q^k,ℓ、K^k,ℓ、V^k,ℓ是第 K 個注意力 head 的可學習權重,O^ℓ 是向下的投影,用以匹配 h_i^l+1 和 h_i^l 跨層的維度。
此外,多頭允許注意力機制從本質上做「對沖」,從上一層看不同的轉換或隱藏特徵方面。
尺度問題和前向傳播子層
一個推動 Transformer 的關鍵問題是詞的特徵在經過了注意力機制後可能會有不同的尺度:1)這可能是因為在相加之後,有些詞有非常高或分佈注意力權重 w_ij;2)在獨立特徵/向量輸入階段,將多個注意力頭級聯(每個注意力頭都可能輸出不同尺度的值),最終會導致最後的向量 h_i^ℓ+1 有不同的值。根據傳統的 ML 思路,似乎增加一個歸一化層是個合理的選擇。
Transformer 克服了這一點,因為它使用了 LayerNorm,可以在特徵層級歸一和學習一個仿射變化。此外,Transformer 使用平方根來縮放點乘規模。
最終,Transformer 的作者還提出了另一個小竅門,用來控制尺度——一個有著特殊架構的、位置級別的雙層全連接層。在多頭注意力之後,它們會使用可學習權重來映射 h_i^ℓ+1 到一個更高維度。這其中使用了 ReLU 非線性,然後再將它映射會原有的維度,並使用另一個歸一化操作。

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


Transformer 層的結構如下圖所示:

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


在很多深度網絡中,Transformer 架構是可以調整的,使得 NLP 社區可以從模型參數量和數據層面提升其規模。而殘差連接也是堆棧 Transformer 層的關鍵。
GNN 構建圖展示
圖神經網絡(GNNs)或圖卷積網絡(GCNs)在圖形數據中建立節點和邊的表示。通過鄰域聚合(或者信息傳遞)來實現這一點,每一個節點從其相鄰處收集特徵,用以更新其相鄰本地圖結構的表示。堆疊多個 GNN 層能夠使模型在整個圖中傳播每個節點的特徵,從相鄰處擴散到相鄰處的相鄰處,等等。

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?

以社交網絡為例:由 GNN 產生的節點特徵可以用於預測,比如識別最有影響力的成員或提供潛在的聯繫。
在最基本的形式中,GNNs 更新了第一層節點 i 的隱藏特徵 h,並通過節點自身特徵 h_i^l 的非線性轉換添加到每個相鄰節點 j∈N(i) 的特徵 h_i^l 集合中:

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


其中 U^l,V^l 是 GNN 層的可學習矩陣,類似於 ReLU 的非線性矩陣。


領域 j 節點 j∈N(i) 上的和可以用其他輸入大小不變的聚合函數來代替,如簡單的均值/最大值或者是其他更有效的函數,比如通過注意機制得到的加權和。

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


如果我們採用鄰域聚合的多個並行 head,用注意機制(即加權和)代替鄰域 J 上的和,我們就得到了圖注意網絡(GAT)。添加正則化和前饋 MLP 就得到了 Graph Transformer。


句子就是全連接詞語的圖
為了讓 Transformer 和圖神經網絡的關係更直接,我們可以將一個句子想象為一個全連接圖,每個詞都和其餘的詞相連接。現在,我們使用圖神經網路來構建每個節點(詞)的特徵,這是之後可以在其他 NLP 任務中用到的。
廣義來說,這其實就是 Transformer 所做的事情。它們實際上就是有著多頭注意力(作為集群聚合函數:neighbourhood aggregation function)的 GNN。標準的 GNN 從局部集群節點 j∈N(i) 中聚合特徵,而 Transformer 則將整個句子 S 視為一個局部集群,在每個層中從每個詞 j∈S 獲得聚合特徵。
重要的是,各種針對問題的技巧,如位置編碼、masked 聚合、規劃學習率和額外的預訓練——對於 Transformer 的成功很重要,但是很少在 GNN 中見到。同時,從 GNN 的角度來看 Transformer,可以幫助我們在架構上舍棄很多無用的部分。
可以從 Transformers 和 GNN 學到什麼?
現在我們已經建立起了 Transformers 與 GNN 之間的聯繫,那麼以下一些問題也就隨之而來:
全連接圖對於 NLP 來說是最佳的輸入格式嗎?
在統計型 NLP 和 ML 出現之前,諾姆·喬姆斯基等語言學家著重創建語言結構的形式化理論,如語法樹/圖等。Tree-LSTM 就是其中一種嘗試,但 Transformers 或者 GNN 架構是否能夠更好地拉近語言學理論和統計型 NLP 呢?這又是一個問題。

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


如何學習長期依賴(long-term dependency)
全連接圖的另一個問題是它們會使得學習單詞之間的長期依賴變得困難。這僅僅取決於全連接圖中的邊數如何隨著節點數而呈平方地擴展,例如在包含 n 個單詞的句子中,Transformer 或者 GNN 將計算 n^2 個單詞對。n 數越大,計算愈加困難。
NLP 社區對於長序列和依賴的觀點很有趣,即為了獲得更好的 Transformers,我們可以在考慮輸入大小的時候執行稀疏或自適應的注意力機制,在每一層添加遞歸或壓縮,以及使用局部敏感哈希來實現有效注意力。


所以,融合 GNN 社區的一些觀點有可能收穫顯著的效果,例如用於句子圖稀疏化的二元分區(binary partitioning)似乎就是一個不錯的方法。

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


Transformers 學習『神經句法』(neural syntax)嗎?
NLP 社區已經有一些論文來探究 Transformers 學習什麼的問題。但這需要一個基本前提,即執行句子中所有單詞對的注意力(目的在於識別哪些單詞對最有趣)使得 Transformers 能夠學習到特定於任務的句法等。


此外,多頭注意力中的不同 head 可能也關注不同的句法特徵。
就圖而言,在全圖上使用 GNN 的情況下,我們是否能夠基於 GNN 在每層執行臨域聚合(neighbourbood aggregation)的方式來恢復最重要的邊以及這些邊的衍生?對此我並不確定。

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


為什麼採用多頭注意力?
我本人更贊同多頭注意力機制的優化觀點,因為擁有多注意力頭能夠增強學習效果,克服糟糕的隨機初始化。例如,論文《Are Sixteen Heads Really Better than One?》中表明,在無重大性能影響的訓練之後,Transformer 頭可以被『剪枝』或『移除』。


多頭鄰域聚合機制也已證明在 GNN 中有效,例如 GAT 使用相同的多頭注意力,論文《Geometric deep learning on graphs and manifolds using mixture model CNNs》中的 MoNet 使用多個高斯核(Gaussian Kernel)來聚合特徵。儘管多頭方法是用來實現注意力機制的平穩化,但這些方法是否能夠成為發揮模型剩餘性能的標準呢?
與之相反,具有和或最大值等更簡單聚合功能的 GNN 不需要用多聚合頭來實現平穩訓練。所以,如果我們不計算句子中任意單詞對之間的成對兼容性,它對 Transformers 不是更好的替代嗎?
此外,完全擺脫注意力,Transformer 是否又會獲益呢?Yann Dauphin 等人所寫的論文《Convolutional Sequence to Sequence Learning》提出了一個替代性的 ConvNet 架構。所以,Transformers 最終也可能會做出一些類似於 ConvNets 的改進。

原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?


從以上幾點來看,GNN 和 Transformer 有很多共同點。以 GNN 的視角來分析 Transformer,對於理解語言模型的思路,在今後提升模型訓練的效率,減少參數量等方面有著重要意義。
參考鏈接:graphdeeplearning.github.io/post/transformers-are-gnns/


原來Transformer就是一種圖神經網絡,這個概念你清楚嗎?

歡迎在留言區留下你的觀點,一起討論提高。如果今天的文章讓你有新的啟發,學習能力的提升上有新的認識,歡迎轉發分享給更多人。


猜你還想看


阿里、騰訊、百度、華為、京東最新面試題彙集

Undertow技術:為什麼很多Spring Boot開發者放棄了Tomcat?

一文了解 Kafka 分佈式!

IntelliJ IDEA 最常用配置詳細圖解,適合剛剛用的新人!

關注訂閱號「程序員小樂」,收看更多精彩內容
嘿,你在看嗎?


分享到:


相關文章: