圖深度生成模型 deep generative models for graph

回顧上一節課中的圖編碼,圖卷積等
今天,來學習圖深度解碼,也就是反編碼,最終輸出一個圖結構
Problem of Graph Generation圖生成需要解決的問題
給定一個真實圖,生成一個合成圖
那么,什么才是好的生成模型?

圖生成的意義
生成→深入探索圖行程的過程
異常檢測
預測——從過去預測未來
新網絡的仿真
圖填充
如果。。。場景??

圖生成的任務:
真實圖的生成
目標導向圖的生成,例如分子生成

為什么如此吸引人?
葯物分子發現


發現一個全新的結構

網絡科學:真實網絡的空模型?

圖生成為什么如此有難度:
大的且多變的輸出空間 n^2

非唯一的表達,因為如果輸出是鄰接矩陣,那么根據節點的順序不同,矩陣也是不同的

復雜的依賴→邊的形成有遠程的依賴關系
ML Basics for Graph Generation
圖生成的機器學習基礎
輸入與輸出:
輸入:G
目標:學習G的分布;生成G?

起初:假設我們有圖的數據集{xi}
p_data(x):數據分布,是未知的,但是我們可以抽樣知道一些
p_model(x;θ) :參數為θ的模型,用於近似
p_data(x)
目標:
讓p_model(x;θ) 趨近於 p_data(x)
可以從p_model(x;θ)中抽樣,形成新圖

核心思想:最大似然

從
p_model(x;θ)中抽樣,也就是,輸入一個噪聲,輸出一個近似的網絡。采用神經網絡的方式

深度生成模型的分類,本節采用的是自動回歸模型,該模型是基於過去預測未來
自動回歸模型:
p_model(x;θ)用於密度估計和抽樣
應用鏈式規則:聯合分布是條件分布的積

GraphRNN 生成真實圖譜
與RNN的思想同源,通過節點和邊序列的迭代輸入生成一個圖

那么,首先,需要將圖看做序列
一個圖,當順序固定時,可唯一通過序列標識?

那么,序列有兩個層次:節點層次(添加節點,一個一次);邊層次(從現有節點中添加邊)


總結:一個圖+節點順序=一個序列
節點順序是虛機選擇的

因此,將圖生成,轉變為序列的生成
因此,需要兩個步驟的模型:
生成新節點,生成新邊
方法:使用RNN

GraphRNN:兩個層次的RNN
node-level rnn生成初始狀態,可應用於edge-level rnn
edge-level rnn為新節點生成邊,探后更新node-level rnn的狀態


rnn的基礎

用於序列生成的RNN
如何初始化s0,x1?什么時候停止生成?→使用開始符和結束符
yt=前面t-1個的生成
rnn的每一步都輸出一個概率向量
從該向量中抽樣,並喂入下一步
訓練時:y是邊,采用教師模式,即輸入是真實的數據用於修正模型

損失函數:交叉式

訓練的過程
節點1已經在網絡中了,現在添加節點2
edge rnn預測節點1是否與節點2關聯;
edge rnn得到監督結果,並輸入修正;
新的邊用來更新node rnn;
預測節點3與節點2是否關聯
edge rnn得到監督結果,並輸入修正;
新的邊用來更新node rnn;
節點4與其他點不相連,停止生成
回傳,梯度更新







測試
小結:
讓graphrnn更易於管控
每個節點可以跟前面的任一節點相連
邊生成的步驟太多:需生成一個全的鄰接矩陣;負責的過長的邊依賴關系
如何限制復雜度?

解決方案:使用廣度優先,只需要兩步而不是n-1步



如何評估生成的網絡?
定義網絡的相似度量,但沒有有效的網絡同構測試
解決方案:視覺相似度;圖的統計相似度

視覺相似度



Applications and Open Questions
應用於開放問題
葯物發現


基於規則的圖卷積網絡:將圖卷積與強化學習相結合,同時還有對抗訓練


