Deep Learning 101

Deep Learning 101, Taiwan’s pioneering and highest deep learning meetup, launched on 2016/11/11 @ 83F, Taipei 101

AI是一條孤獨且充滿惶恐及未知的旅程,花俏絢麗的收費課程或活動絕非通往成功的捷徑。
衷心感謝當時來自不同單位的AI同好參與者實名分享的寶貴經驗;如欲移除資訊還請告知。
TonTon Huang Ph.D. 發起,及其當時任職公司(台灣雪豹科技)無償贊助場地及茶水點心。

Deep Learning 101 Buy Me A Coffee

YouTube | Facebook | 回 GitHub Pages | 網站 | Hugging Face Space

2022/05/06, 杜岳華, On the Relationship among Convolution Attention and GNN

卷積、注意力與圖神經網路的關聯性探討

On the Relationship among Convolution, Attention, and GNN

2022/05/06 杜岳華

深度學習核心:自動化表示學習 Deep Learning Core: Automated Representation Learning

首先,讓我們回顧一下深度學習相較於傳統機器學習的核心突破點。在傳統機器學習流程中,我們通常需要手工進行繁瑣的資料前處理、特徵工程(feature engineering),將原始資料轉換成模型容易理解的「好表示」後,再送入模型進行學習 [1-3]。這就像是廚師必須先把食材切好、備好料才能下鍋。深度學習則像是擁有了會自己學習備料的智慧廚具 [1, 4]。它的強大之處在於能夠透過多層次的網路結構,自動從原始資料中學習對特定任務(如分類、回歸)最有效的特徵表示(representation learning) [1, 2, 4, 5]。這種能力使得深度學習模型在處理大規模、高維度的資料時,能夠學習到更強健(robust)的特徵提取器 [1, 2, 4]。

對於新手入門者,理解「表示學習」很重要。想像你有一堆照片,傳統方法可能需要你手動標記照片裡的物件(特徵),告訴模型哪裡有眼睛、鼻子。表示學習是讓模型自己去看很多照片後,學會如何識別眼睛、鼻子,甚至更抽象的概念,並將相似的照片在一個「表示空間」中放在一起 [1, 3]。深度學習就是實現這種自動學習表示的一種主要技術,透過堆疊不同的層 (layer) 來逐步提取更抽象的特徵 [1, 2, 5]。

AI 這個大領域就像是一個廣闊的蛋糕 [1, 6]。早期的基於規則系統(rule-based system)是基礎,機器學習是讓電腦從資料中學習規則,而不是直接被告知規則 [1, 2, 6]。表示學習則是機器學習中讓模型自動學習資料「好表示」的方法 [1, 2, 6]。深度學習,透過多層神經網路,是實現表示學習的一種主要方式 [1, 6]。有人比喻,強化學習(reinforcement learning)是蛋糕上的櫻桃,監督學習(supervised learning)是糖霜,而表示學習,尤其是自監督學習(self-supervised learning),則是支撐整個蛋糕的蛋糕體本身,它學習到的良好表示能極大地提升後續監督學習和強化學習的效果 [1, 6]。

卷積神經網路 (CNN) 解析 CNN Explained

接著,我們來看看 CNN [2]。CNN 的核心是卷積運算 (convolution) [2, 3, 7, 8]。它最初是為處理影像資料而設計的 [2, 7]。影像資料有幾個關鍵特性很適合卷積操作 [2, 7, 9, 10]:

  1. 局部性 (Locality of patterns): 影像中的重要圖案(如眼睛、邊緣)通常只佔影像的一小部分 [7, 9]。卷積層使用一個小型「濾波器 (filter)」或「核心 (kernel)」來掃描影像的局部區域,從中學習和辨識這些局部圖案 [7, 9, 11]。
  2. 平移同變性 (Translational Equivariance): 同一個圖案可能出現在影像的不同位置 [7, 10]。卷積操作本身具有這種特性:如果輸入影像中的模式發生平移,卷積層輸出的特徵圖中對應的響應也會發生相應的平移 [2, 7, 8, 12, 13]。
  3. 平移不變性 (Translation Invariance): 對於某些任務(如影像分類),我們希望模型在識別圖案時,對其在影像中的位置不敏感 [2, 7]。雖然卷積提供同變性,但 CNN 中的池化層 (pooling layer)(如 MaxPooling)可以對偵測到的特徵進行降採樣 (subsampling) [2, 7, 10, 11],降低細節敏感度,從而實現一定程度的平移不變性 [2, 7, 8, 12]。

對於新手,可以把濾波器想成一個小放大鏡,它在圖片上到處移動,尋找特定的紋理(例如,找到所有水平線)[7, 9, 11]。池化層則像是在找到的紋理中做總結,只記錄最重要的發現,忽略其精確位置,這樣即使紋理移動了一點,總結的結果可能還是差不多 [7, 10, 11]。CNN 的前幾層通過卷積和池化學習這些局部且具有一定位置不變性的特徵表示,後面的全連接層再利用這些特徵進行最終的分類或迴歸 [2, 5]。

注意力機制 (Attention) 詳解 Attention Mechanism Explained

接著,我們轉向注意力機制 (Attention) [2, 3, 8]。它最初在處理序列資料(特別是自然語言)時展現威力 [2, 14]。傳統序列模型如 RNN/LSTM 在處理長句子時,難以捕捉相隔較遠的詞語之間的依賴關係,即**遠程依賴性 (long-term dependency)** 問題 [2, 15, 16]。這就像是讀一個很長的故事,讀到後面時常常忘記開頭的細節。注意力機制,尤其是**自注意力機制 (self-attention)**,讓模型在處理序列中的一個元素時,可以「回頭」或「向前」關注序列中的所有其他元素,並根據它們之間的關聯性來加權這些元素的表示 [2, 15, 16]。

自注意力機制的核心思想可以類比為一個動態的資料庫查詢 [8, 15, 17]。對於序列中的每個元素(例如一個詞),我們計算它的Query (Q) 向量 [11, 15, 16]。然後,我們拿這個 Q 去與序列中所有元素的Key (K) 向量進行比較(例如計算內積),得到一組關聯分數 [11, 15, 16]。這些分數經過 Softmax 轉換成權重(機率分佈),表示當前元素對序列中其他元素的關注程度 [15-17]。最後,我們根據這些權重,對序列中所有元素的Value (V) 向量進行加權求和,得到當前元素新的表示,這個新表示就包含了它與序列中其他所有元素互動的資訊 [11, 15, 17]。此外,還有交叉注意力 (cross-attention) 處理不同序列之間的關係(如翻譯時源語言和目標語言)[2, 17] 以及多頭自注意力 (multi-head self-attention) 允許模型同時關注不同類型的關係 [2, 9]。

對新手來說,Q, K, V 可以想像成:Q 是你感興趣的問題 (What am I looking for?),K 像是書的目錄或索引 (What information do you have?),V 則是書的實際內容 (Here is the information) [11, 15]。自注意力就是拿你的問題去跟所有書的目錄比對,找到相關的書,然後把這些相關書的內容(根據相關程度加權後)匯總起來,形成你對當前問題的答案。這種機制使得模型能夠有效地「跳躍」式地捕捉遠程依賴,即使詞語相隔很遠也能建立聯繫 [15, 16]。

然而,純粹的注意力機制有一個重要的限制:它將序列視為一個集合 (set),只計算元素之間的關聯性,不考慮元素的順序或位置 [2, 8, 9, 18]。對於文字序列而言,詞語的順序至關重要(例如,「狗咬人」和「人咬狗」意思完全不同)。為了解決這個問題,Transformer 架構 [2, 8, 15] 引入了位置編碼 (Positional Encoding) [2, 8, 11, 18-20]。位置編碼將元素在序列中的位置信息編碼成向量,並加到原始的詞嵌入 (word embedding) 中 [2, 11, 18, 19]。這樣,注意力機制在計算關聯性時,就能同時考慮元素的內容(詞嵌入)和位置信息(位置編碼),從而感知到序列的順序結構 [11, 18, 19]。

新手需要知道的是,注意力機制本身就像是把所有詞語打散,然後根據詞語內容的重要性重新組合。但如果沒有位置信息,模型就不知道哪個詞是第一個,哪個是第二個。位置編碼就像是給每個詞貼上一個小標籤,上面寫著它在句子裡是第幾個詞,這樣模型在組合時就知道它們原來的相對位置了 [11, 18, 19]。

幾何深度學習:內容與幾何信息 Geometric Deep Learning: Content & Geometry

現在,讓我們引入一個更廣泛的視角:幾何深度學習 (Geometric Deep Learning) [2, 8, 21, 22]。這個框架提出,許多深度學習模型的核心都在於處理資料的兩種基本資訊:內容資訊 (Content Information)幾何資訊 (Geometry Information) [2, 8, 18, 22-24]。

  • 內容資訊指的是資料本身的屬性或數值,例如影像中像素的顏色、文字中詞語的含義、圖中節點的特徵 [11, 18, 24]。
  • 幾何資訊指的是資料元素之間的關係、位置或結構,例如影像中像素的座標、文字中詞語的順序、圖中節點之間的連接關係(鄰接矩陣, adjacency matrix)[11, 18, 19, 24]。

不同的神經網路模型在處理這兩種信息的方式上有所側重和差異 [19, 22, 23]:

  • CNN: 卷積層主要關注局部內容信息,但其卷積操作本身就隱含地利用了像素的局部幾何信息(相鄰像素的固定相對位置)[19, 23]。
  • Attention/Transformer: 純粹的注意力機制主要關注內容信息之間的關聯性(集合上的操作)[9, 23]。Transformer 透過位置編碼顯式地將序列的幾何信息(位置/順序)整合進來 [19, 23]。
  • GNN: 圖神經網路設計來處理圖結構資料。節點特徵是內容信息,而圖的邊和整體結構是幾何信息。GNN 的操作(如訊息傳遞或圖卷積)同時結合了節點的內容及其鄰居的內容和結構信息來更新表示 [19, 23, 24]。

從這個角度看,CNN、Attention 和 GNN 都可以被視為處理具有不同幾何結構資料的工具 [2, 20-22]。

卷積:自注意力的特例 Convolution as a Special Case of Self-Attention

值得注意的是,有研究從理論上證明,卷積操作實際上是自注意力機制的一種特例 [2, 11, 15, 20, 25]。從概念上理解 [11, 15, 26]: 卷積可以看作是一種特殊的自注意力。它的「查詢」範圍(即卷積核的大小)是固定且規則的(例如一個 3x3 的方形框),而且只關注這個固定框內的元素 [11, 26]。它的權重也不是動態學習的(不像注意力機制中的機率分佈),而是固定的卷積核權重 [11, 26]。可以想像成,卷積是一種「硬性 (hard)」且「局部 (local)」的注意力,注意力範圍固定且框外權重為零 [11, 15, 26]。而自注意力是一種「軟性 (soft)」且「全局 (global)」的注意力,其關注範圍和權重都是根據資料內容動態學習的,可以連接序列中的任意元素 [15, 26]。雖然自注意力不考慮順序而卷積設計包含了局部位置信息 [15, 26],但從數學形式上,卷積確實可以透過一些數學轉換,被表達為一種受限的自注意力形式 [15, 25]。

圖神經網路 (GNN) 概覽 Graph Neural Networks (GNN) Overview

最後,我們來探討圖神經網路 (GNN) [2, 3, 8]。GNN 是專門設計用於處理圖結構資料的模型,例如社交網絡、分子結構、引文網絡等 [2, 8]。圖資料由節點 (node)邊 (edge) 組成,節點和邊都可以有自己的特徵 [2, 8]。圖結構資料的一個關鍵特性是置換不變性 (Permutation Invariance) [2, 8, 27]。這意味著,對於一個圖,如果僅僅改變節點在列表中的排列順序,但其連接關係和節點特徵不變,那麼圖的本質結構和整體屬性(例如整個圖的分類結果或所有節點的嵌入表示的集合)應該保持不變 [2, 8, 27]。相應地,某些操作(如圖卷積)具有置換等變性 (Permutation Equivalence) [2, 8, 27],即當輸入圖的節點順序發生置換時,輸出的節點表示也會以相應的方式進行置換 [2, 27]。

GNN 最常被理解為將傳統卷積概念推廣到非歐幾里得空間,也就是圖結構資料上 [2, 8, 20, 21, 23, 27]。標準卷積在規則網格(如影像像素點)上操作,關注中心點及其固定位置的鄰居。圖卷積則在任意圖結構上操作,關注中心節點本身及其連接的鄰居節點 [2, 23, 27]。這將卷積的局部感知能力擴展到更通用的圖結構 [23, 27]。實現圖卷積的方法有很多種,早期的 Spectral GNN [2, 28, 29] 計算量較大 [28-30],實際應用中更常用的是基於空間域的簡化或逼近方法,例如 Message Passing Network (MPN) [2, 8, 28, 30, 31]。

對新手而言,可以想像標準卷積只在一個整齊的棋盤格上移動「放大鏡」 [12, 27]。圖卷積則是在一個任意連線的網絡上移動「放大鏡」 [27, 28]。這個「放大鏡」關注的不再是固定方向(上、下、左、右),而是與中心節點相連的所有鄰居節點 [23, 27, 28]。

Message Passing Network (MPN) 是一種通用的 GNN 框架 [2, 8, 28]。它通過在圖的節點之間傳遞和匯總信息來更新節點的表示。一個典型的 MPN 包含三個步驟 [11, 28]:

  1. Message Function: 定義每個節點如何根據自身特徵、鄰居特徵和邊特徵生成要發送給中心節點的「訊息」 [11, 28]。
  2. Aggregate Function: 中心節點如何匯總從所有鄰居接收到的訊息(例如,相加、取平均、取最大值等) [11, 28]。
  3. Update Function: 中心節點如何結合自身當前的特徵和匯總後的訊息來更新自己的特徵表示 [11, 28]。

這種訊息傳遞機制使得 GNN 能夠學習到結合局部結構和節點內容的表示 [23, 28]。雖然 MPN 在實踐中非常流行且高效 [2, 30, 31],但其理論基礎可能不如基於圖譜分析 (spectral graph theory) 的方法那樣紮實 [30, 31]。

GNN 在許多科學領域有重要應用 [2, 13, 28]。例如,AlphaFold 2 [2, 28] 在蛋白質結構預測上取得巨大成功 [2, 28],它利用了圖結構來表示氨基酸殘基之間的關係 [28]。另一個有趣的例子是使用 GNN 結合 Symbolic Regression 來學習物理系統的定律,如預測行星軌跡 [13, 21]。在推薦系統中,GNN 也被廣泛應用 [30, 31]。可以將用戶和物品表示為圖中的節點,用戶與物品之間的交互(如購買、評分)表示為邊,形成一個用戶-物品的二部圖 (bipartite graph) [30-32]。也可以構建用戶-用戶或物品-物品之間的關係圖 [30, 32]。GNN 能夠有效地處理這種圖結構,學習更豐富的用戶和物品表示,從而改進推薦效果,尤其是在處理包含不同類型節點和邊的異質圖 (heterogeneous graph) 時 [30, 32]。

回到幾何深度學習的框架 [2, 20-22]。CNN 可以被視為處理在規則網格上的資料(一種特殊的圖結構)的特例 [2, 21, 22]。Transformer 處理序列資料,可以將序列視為鏈狀圖或完全連接圖 (complete graph) [2, 21, 22],通過自注意力處理任意節點(元素)間的內容關係,並用位置編碼引入幾何信息 [2, 18, 21]。GNN 則是處理任意圖結構資料的通用框架 [2, 21, 22]。此外,還有將卷積推廣到其他對稱性操作下的 Group Equivariant CNN (G-CNN) [2, 8, 13, 20, 21, 33],例如處理具有旋轉對稱性的影像 [2, 21, 33]。這進一步擴展了卷積的概念,使其能夠在更廣泛的具有特定幾何結構的空間上進行有效的特徵提取 [2, 20-22]。這種通用性也體現在,即使是像 Wavelet Transform 這樣的訊號處理技術,也可以從 Geometric Deep Learning 的角度被視為一種考慮尺度和平移等變性的廣義卷積 [2, 22, 33]。

總結:共通核心與展望 Conclusion: Common Core & Outlook

總而言之,從研究者的角度看,CNN、Attention 和 GNN 雖然有不同的應用背景和最初的設計目標,但它們都共享著處理資料內容幾何資訊的核心任務 [2, 20, 22, 34]。它們的成功在於設計了能夠捕捉資料特定集合特性(如影像的局部性和平移特性、序列的遠程依賴性、圖的連接結構和置換特性)的運算單元 [2, 12, 22, 27]。卷積、自注意力以及圖卷積,都可以被視為處理資料結構的工具,並可以透過設計等變性層 (Equivariance Layer)不變性層 (Invariance Layer) [2, 8, 20] 來構建能夠在特定幾何變換下保持輸出與輸入變換關係或保持輸出不變的深度學習模型 [2, 8, 21]。

希望這個整理對您及入門者有所幫助。深入探索這些模型,不僅要理解其數學原理,更要理解它們背後所針對的資料特性和設計哲學。