图神经网络之Node2Vec详解
生活随笔
收集整理的這篇文章主要介紹了
图神经网络之Node2Vec详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 背景
- 傳統算法存在的問題
- 算法背景
- 動機
- 算法
- 隨機序列的生成
- Node2Vec算法
- 算法的具體流程:
- 總結
- 相關資料
背景
傳統算法存在的問題
算法背景
1)同質性:社區關系結構,即同一社區節點表示相似。其中,社區指節點內部結構信息遠大于節點外部結構信息的多個節點組成的網絡結構,如圖中S1、S2、S3、S4、S5、u組成一個社區。
2)結構相似性:擁有類似結構特征的節點表示相似。如下圖中u和S6兩個節點存在結構相似性。
動機
設計一個既能保持節點鄰居信息而且又容易訓練的模型。
算法
隨機序列的生成
①條件獨立:即采樣的每個鄰居都是相互獨立的;
②特征空間的對稱性:兩個節點之間的連邊表示兩者互相之間的影響是等價的。
① 返回概率p:如果 p>max(q,1) ,那么采樣會盡量不往回走,對應上圖的情況,就是下一個節點不太可能是上一個訪問的節點t。如果 p>max(q,1),那么采樣會更傾向于返回上一個節點,這樣就會一直在起始點周圍某些節點來回轉來轉去。
② 出入參數q:如果 q >1 ,那么游走會傾向于在起始點周圍的節點之間跑,可以反映出一個節點的BFS特性。如果 q<1 ,那么游走會傾向于往遠處跑,反映出DFS特性。
③ 特殊的,當 p=1,q=1時,游走方式就等同于DeepWalk中的隨機游走。
Node2Vec算法
算法的具體流程:
1. 根據p、q和之前的公式計算一個節點到它的鄰居的轉移概率; 2. 將這個轉移概率加到圖G中形成G'; 3. walks用來存儲隨機游走,先初始化為空; 4. 外循環r次表示每個節點作為初始節點要生成r個隨機游走; 5. 其中,對圖中每個節點生成一條隨機游走walk的流程:a. 將初始節點u添加進去;b. walk的長度為l,因此還要再循環添加l-1個節點;c. 當前節點設為walk最后添加的節點;d. 找出當前節點的所有鄰居節點;e. 根據轉移概率采樣選擇某個鄰居s;f. 將該鄰居添加到walk中; 6. 將walk添加到walks中保存; 7. 然后用SGD的方法對walks進行訓練。總結
Node2Vec的思想跟DeepWalk類似,不過改進了DeepWalk中隨機游走的生成方式,使得生成的隨機游走可以反映深度優先和廣度優先兩種采樣的特性,從而增加單詞嵌入的準確性,提高網絡嵌入的效果。
相關資料
論文:node2vec: Scalable Feature Learning for Networks
總結
以上是生活随笔為你收集整理的图神经网络之Node2Vec详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LINUX中信号量的使用
- 下一篇: 程序员常用的画图软件推荐