觀Graph Neural Networks筆記

更新於 發佈於 閱讀時間約 9 分鐘

此為中央大學資工系蔡宗翰老師提供給修課學生的參考資料的handout,為Jure Leskovec 課程的Graph Neural Network投影片的簡略解說,在此分享給有興趣的同好。這可不是完整的介紹文章,請對照原投影片使用。

投影片來源:http://web.stanford.edu/class/cs224w/slides/08-GNN.pdf
前面的標號為頁碼。

  1. Node embeddings
    將輸入圖的所有節點映射到d維空間,使得相像的節點被映射在附近
  2. 讓嵌入空間中的相似度(例如內積)逼近原本網路中的相似度
  3. 需要定義similarity(u,v)及ENC(u)及ENC(v)
  4. 兩個重要元素:編碼器ENC(v)與相似度函數
  5. 由淺層的編碼器開始。在嵌入矩陣中,節點i的向量對應到第i欄
  6. 單隱藏層將u映射到嵌入Zu, 透過某個函數f。例如將u的每一個鄰居v的嵌入Zv都當成是輸入。
  7. 淺層編碼器的缺點
    *輸入需要O|V|這麼多個參數,節點間未共享參數,每個點有自己的嵌入
    *無法為訓練時未見過的節點產生嵌入向量
    *無法納入節點本身的特徵
  8. 深度圖編碼器:ENC(v)=圖構的多層非線性轉換。這些深度編碼器都可以和節點相似度函數合起來用。
  9. 深度圖編碼器
    輸入一圖,取卷積
  10. 網路遠比影像或文字複雜:(a)節點沒有固定順序或參考點 (b) 多半是動態的,且特徵為多模態。
  11. 由影像到圖
    轉換鄰居的信息並合併之
  12. 真實世界的圖比前頁的圖要複雜
  13. 簡易法
    *將鄰接矩陣與特徵連接,餵入深度神經網路
    *這方法的問題為:(a) 有O(N)個參數 (b) 無法套用到大小相異的圖 (c) 節點順序變動會影響到輸出
  14. 本地網路鄰域:描述匯總策略、定義計算圖
    堆疊多層
  15. V是點集合;A是鄰接矩陣;X是mx|V|的節點特徵矩陣
    節點特徵:
    *社交網路是用戶資料、用戶圖片
    *節點若沒特徵,可以用one-hot編碼來指出某個節點,或是用全1向量
  16. 圖卷積網路。想法:節點的鄰域定義了一個計算圖
    (1) 決定節點計算圖 (2) 傳播和轉換信息
    學習如何在整個圖上傳播信息以計算節點特徵
  17. 匯總鄰居:基於本地網路鄰域生成節點嵌入
  18. 直覺:節點使用神經網路匯總來自鄰居的信息(每個方框都是神經網路)
  19. 直覺:每個節點都基於其鄰域定義一個計算圖!
  20. 模型可以是任意深度的:
    §節點在每一層都有嵌入
    §節點𝑢的第0層嵌入是其輸入特徵𝑥𝑢
    §K層嵌入從K跳之外的節點獲取信息
  21. 鄰居聚合:不同方法的分別在於如何跨層聚合信息
  22. 基本方法:平均來自鄰居的信息並套用神經網路
  23. 將第0層嵌入初始為節點特徵
    非線性函數;鄰居們上一層嵌入的平均; v的上一層嵌入
    Zv:在K層鄰居聚合之後所得到的嵌入
  24. 訓練模型:必須在嵌入上定義損失函數
  25. Wk與Bk是待訓練的矩陣
    我們可以將這些嵌入餵給任何損失函數,並進行隨機梯度下降以訓練權重參數
  26. 非監督式訓練
    *僅使用圖結構,讓“相似”節點具有相似的嵌入
    *損失函數可以是基於Random walks、圖分解、或圖中的節點接近度
  27. 監督式訓練:直接以某個監督式學習任務訓練模型(例如,節點分類)
  28. 編碼器輸出為節點嵌入;節點類別標籤;分類權重
  29. 模型設計:(1)定義鄰域匯總函數 (2)在嵌入上定義損失函數
  30. (3)在一個點集合(一批計算圖)上訓練
  31. (4)為點產生所需的嵌入(包含訓練時未曾見過的點)
  32. 所有節點共享相同的匯總參數
  33. 例如,以來自生物A的蛋白質相互作用圖訓練模型,並在有關生物B的新數據上生成嵌入
  34. 許多應用程序設置不斷遇到以前看不見的節點,需要“即時”生成新的嵌入
  35. 總結:通過匯總鄰域信息來生成節點嵌入
    §我們看到了這個想法的基本變體
    §關鍵區別在於不同方法如何跨層匯總信息
    Next:描述GraphSAGE圖神經網絡架構
  36. 到目前為止,我們已透過取鄰居們的(加權)平均值來匯總鄰居訊息。
    有更好的方法嗎?
  37. 可將𝑁(𝑢)中的向量集映射到單個向量的任何微分函數
    對每一層的每個點嵌入套用L2歸一化
    連接鄰居嵌入自嵌入
  38. 各種匯總鄰居法
    *取平均
    *池化:變換鄰居向量並套用對稱向量函數 (每個元素取平均值或最大值)
    *LSTM
  39. 關鍵思想:根據本地鄰域生成節點嵌入,節點用神經網路匯總來自鄰居們的“消*息”
    *圖卷積網絡:平均鄰域信息和堆疊神經網絡
    *GraphSAGE:泛化的鄰域聚合
  40. 通過(稀疏)矩陣運算可以有效地執行許多匯總
  41. 𝛼vu = 1 / |𝑁(𝑣)| 是節點𝑢到節點𝑣的消息的權重因子(重要性)
    𝛼vu是根據圖的結構特性明確定義的
    所有鄰居𝑢∈𝑁(𝑣)對節點同樣重要
  42. 我們能比簡單的鄰域聚合做得更好嗎?
    我們可以隱式定義加權因子𝜶𝒗𝒖嗎?
    目標:對圖中每個節點的不同鄰居指定任意重要性
    想法:按照注意力計算圖中每個節點的嵌入:
    *節點注意他們鄰居的消息
    *隱式地為附近的不同節點指定不同的權重
  43. 讓𝛼uv被計算為注意力機制𝒂的副產物:
    𝒂基於各組節點(u,v)的訊息,計算注意力係數𝒆𝒗𝒖:
    *𝒆𝒗𝒖表示節點u的消息對節點v的重要性
    *使用softmax函數歸一化係數,以便在不同鄰域之間可比較:
    *下一步:注意機制𝑎的形式是什麼?
  44. 注意力機制𝑎:
    *該方法與𝑎的選擇無關。例如,使用簡單的單層神經網絡。𝑎可以具有參數,需要對其進行估算。
    *𝑎的參數是一起被訓練的:以端到端的方式學習參數以及權重矩陣(即神經網絡的其他參數)
    多頭注意力:可穩定注意力機制的學習過程:
    *給定某層中的注意力操作被獨立地複製R次(每個副本具有不同的參數)
    *輸出匯總(通過串聯或相加)
  45. 主要優點:允許(隱式)為不同的鄰居指定不同的重要性值(𝜶𝒗𝒖)
    *計算效率高:注意係數的計算可以在圖的所有邊上並行化;匯總可以在所有節點上並行化
    *存儲效率高:稀疏矩陣運算不需要存儲超過O(V + E)個項;固定數量的參數,與圖形大小無關
    *直觀的本地化:僅注意本地網路鄰居
    *歸納能力:這是一種共享的逐邊機制;並不依賴於全局圖結構
  46. 基於GAT的節點嵌入的t-SNE圖:節點顏色:7個刊物類
    邊緣厚度:節點𝑖與節點𝑗之間的歸一化注意係數,跨越八個注意力頭
  47. 圖:2B圖釘,1B板,20B邊
    *圖是動態的:需要應用於新節點而無需模型重新訓練
    *豐富的節點特徵:內容,圖像
  48. PinSage圖卷積網絡:
    *目標:在包含數十億個物件的Pinterest圖中為節點(例如,圖釘/圖像)生成嵌入
    *關鍵:從附近節點借信息
    *例如床欄杆看起來像花園圍欄,但門和床在圖中很少相鄰
    圖釘嵌入對於各種任務至關重要,例如針推薦,分類,聚類,排名(諸如“相關圖釘”,“搜索”,“購物”,“廣告”之類的服務)
  49. 目標:將節點映射到d維嵌入,以便將相關的節點緊密地嵌入在一起
  50. 如何將訓練和節點嵌入的推論擴展到具有數十億個節點和數百億個邊的圖形?
    *比任何先前的圖神經網絡應用程式大10,000倍的數據集
    關鍵創新
    *子樣本鄰域可有效地進行GPU批處理
    *生產者-消費者CPU-GPU訓練管線
    *否定樣本的課程學習(主要思想是模仿人類學習的特點,由簡單到困難來學習課程《在機器學習裡就是容易學習的樣本和不容易學習的樣本》,這樣容易使模型找到更好的局部最優,同時快速訓練的速度。)
    *MapReduce可以進行有效的推理
  51. 三項關鍵創新:
    1. 動態圖卷積
    §對節點周圍的鄰域進行採樣並動態構建計算圖
    §圍繞特定節點執行局部圖卷積
    §訓練過程中不需要整個圖
  52. 2. 通過隨機遊走構造卷積
    §在完整的鄰域上進行卷積是不可行的:如何選擇要進行卷積的節點的鄰居集?§重要性池化:以〈模擬隨機步行並選擇訪問量最高的鄰居〉來定義基於重要性的鄰域
    3. 高效的MapReduce推論
    §自下而上的節點嵌入匯總使其適用於MapReduce。也就是將所有節點上的每個聚合步驟分解為MapReduce中的三個操作,即map,join和reduce
  53. 使用CNN產生的視覺嵌入
    使用Word2vec產生的文字嵌入
    將兩者合併
  54. Pixie是一種純粹基於圖的方法,它使用有偏的隨機遊走通過模擬從查詢Pin開始的隨機遊走來生成排名分數。檢索得分最高的項目作為建議。[Eksombatchai等,2018]
  55. 數據預處理很重要:
    §使用重新正規化技巧
    §方差縮放的初始化
    §網絡數據白化
    ADAM優化器:ADAM自然會降低學習率
    ReLU激活函數通常效果很好
    輸出層沒有激活功能:如果用一個函數構建多層,則容易出錯
    為每一層添加偏差項
    大小為64或128的GCN層已經足夠
  56. 人類基因網路
  57. 蛋白質交互作用預測




留言
avatar-img
留言分享你的想法!
avatar-img
蔡宗翰的沙龍
22會員
127內容數
從小就愛看各大報的AI界李白蔡宗翰教授發現,現今市面上很少有給小朋友讀的線上媒體,希望能開始做這件事
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
給定一個輸入陣列,每一個tuple代表節點之間了從屬關係。 請從從屬關係重建整顆二元樹,並且返回整顆二元樹的根結點。
Thumbnail
給定一個輸入陣列,每一個tuple代表節點之間了從屬關係。 請從從屬關係重建整顆二元樹,並且返回整顆二元樹的根結點。
Thumbnail
題目敘述 Merge Nodes in Between Zeros 給定一個鏈結串列,合併非零區間的節點(以加總的方式合併),輸出合併後的鏈結串列。
Thumbnail
題目敘述 Merge Nodes in Between Zeros 給定一個鏈結串列,合併非零區間的節點(以加總的方式合併),輸出合併後的鏈結串列。
Thumbnail
給定兩個輸入整數陣列, 若在兩個陣列遇到相同的數字可以連成一線, 但是有規定連線不可和別的連線有交叉, 請問最多可以形成幾條連線? 解答中探討了演算法化簡的技巧和DP模型, 可以透過演算法化簡的技巧, 把這題映射到原本已經學會的Longest Common Subsequence的DP模型來解開。
Thumbnail
給定兩個輸入整數陣列, 若在兩個陣列遇到相同的數字可以連成一線, 但是有規定連線不可和別的連線有交叉, 請問最多可以形成幾條連線? 解答中探討了演算法化簡的技巧和DP模型, 可以透過演算法化簡的技巧, 把這題映射到原本已經學會的Longest Common Subsequence的DP模型來解開。
Thumbnail
Append Characters to String to Make Subsequence 給定兩個字串s和字串t。 請計算最少的字元串接數量是多少,串接在s的尾端,使得t是s的子序列。 測試範例 Example 1: Input: s = "coaching", t =
Thumbnail
Append Characters to String to Make Subsequence 給定兩個字串s和字串t。 請計算最少的字元串接數量是多少,串接在s的尾端,使得t是s的子序列。 測試範例 Example 1: Input: s = "coaching", t =
Thumbnail
這篇文章,會帶著大家複習以前學過的 區間DP框架, 並且以回文子字串、回文子序列的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 回文字串的基本定義 s = s[::-1] 也就是說字串s的正序 和 逆序完全相同。 回文字串的基本結構 空字串"
Thumbnail
這篇文章,會帶著大家複習以前學過的 區間DP框架, 並且以回文子字串、回文子序列的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 回文字串的基本定義 s = s[::-1] 也就是說字串s的正序 和 逆序完全相同。 回文字串的基本結構 空字串"
Thumbnail
這篇文章,會帶著大家複習以前學過的格子點DP框架, 並且以移動路徑Unique Path的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 格子點DP框架 依循題目的定義和規則,找出格子點移動的共同模式。 以本篇文章的例題為例,每一步可以選擇往右走一個
Thumbnail
這篇文章,會帶著大家複習以前學過的格子點DP框架, 並且以移動路徑Unique Path的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 格子點DP框架 依循題目的定義和規則,找出格子點移動的共同模式。 以本篇文章的例題為例,每一步可以選擇往右走一個
Thumbnail
這篇文章,會帶著大家複習以前學過的遞回框架, 並且鏈結串列的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 遞回框架 尋找共通模式(common pattern),對應到演算法的General case 確立初始條件(initial conditio
Thumbnail
這篇文章,會帶著大家複習以前學過的遞回框架, 並且鏈結串列的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 遞回框架 尋找共通模式(common pattern),對應到演算法的General case 確立初始條件(initial conditio
Thumbnail
題目已經給了依照起點升序排列好的區間陣列。 接下來新插入一個區間,插入後如果和原本的區間重疊,請把他們合併,要求我們輸出插入後的結果。 這是一個線性掃苗,所需時間為O(n)的演算法。 題目已經幫我們排序好區間順序,我們只要接著依序檢查區間、(假如有重疊的話)合併區間。
Thumbnail
題目已經給了依照起點升序排列好的區間陣列。 接下來新插入一個區間,插入後如果和原本的區間重疊,請把他們合併,要求我們輸出插入後的結果。 這是一個線性掃苗,所需時間為O(n)的演算法。 題目已經幫我們排序好區間順序,我們只要接著依序檢查區間、(假如有重疊的話)合併區間。
Thumbnail
題目敘述 題目會給定我們一條鏈結串列Linked list的起始節點,要求我們刪除Linked List正中央的節點。 註: 正中央的節點,題目定義為索引為floor( 串列長度 / 2 ) 的節點,索引從零(Head Node)出發開始數。 例如 1 -> 2 -> 3 -> 4 鏈結
Thumbnail
題目敘述 題目會給定我們一條鏈結串列Linked list的起始節點,要求我們刪除Linked List正中央的節點。 註: 正中央的節點,題目定義為索引為floor( 串列長度 / 2 ) 的節點,索引從零(Head Node)出發開始數。 例如 1 -> 2 -> 3 -> 4 鏈結
Thumbnail
題目敘述 題目會給定一個輸入字串s和一套編碼規則,要求我們針對字串s進行解碼,並且以字串的形式返回答案。 編碼規則: 數字[字串] -> []內的字串以對應倍數做展開,而且允許巢狀編碼。 例如: 3[a] 解碼完就是 aaa 2[bc] 解碼完就是 bcbc 2[a2[b]] = 2
Thumbnail
題目敘述 題目會給定一個輸入字串s和一套編碼規則,要求我們針對字串s進行解碼,並且以字串的形式返回答案。 編碼規則: 數字[字串] -> []內的字串以對應倍數做展開,而且允許巢狀編碼。 例如: 3[a] 解碼完就是 aaa 2[bc] 解碼完就是 bcbc 2[a2[b]] = 2
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News