標籤:

網路表徵學習綜述

背景

當前機器學習在許多應用場景中已經取得了很好的效果,例如人臉識別與檢測、異常檢測、語音識別等等,而目前應用最多最廣泛的機器學習演算法就是卷積神經網路模型。但是大多應用場景都是基於很結構化的數據輸入,比如圖片、視頻、語音等,而對於圖結構(網路結構)的數據,相對應的機器學習方法卻比較少,而且卷積神經網路也很難直接應用到圖結構的數據中。在現實世界中,相比圖片等簡單的網格結構,圖結構是更泛化的數據結構,比如一般的社交網路、互聯網等,都是由圖這種數據結構表示的,圖的節點表示單個用戶,圖的邊表示用戶之間的互聯關係。針對網路結構,用向量的數據形式表示網路結構、節點屬性的機器學習方法就是網路表徵學習。

圖的鄰接矩陣是將邊的信息表示成了N*N的矩陣(N為節點個數)通過鄰接矩陣可以將圖重建,那麼是否可以直接用鄰接矩陣的列向量作為圖節點的表示向量呢?其實是可以的,但是這種表示形式有兩個問題:第一,圖結構中,任意兩個節點不一定是相連的,通常一個節點僅有很少的鄰居,因此鄰接矩陣是稀疏矩陣,倘若節點數目很多(如社交網路,用戶可能達百萬級甚至更多),以鄰接矩陣直接表示圖結構將非常不划算。第二,鄰接矩陣僅僅表示了邊的信息,而無法加入節點的本身屬性,在當前的很多應用中,我們不僅僅需要表示圖的結構屬性,而且還伴隨著節點本身的屬性(比如社交網路中,每個用戶的性別,年齡,愛好等)綜合以上兩點問題,網路表徵學習的目的就有了兩個:第一,我們要學習一種低維度的向量表示網路節點,將節點映射到相應的向量空間,這種網路表徵學習就是關於圖結構的網路表徵學習,也稱網路嵌入;第二,我們的表示不僅僅可以表徵網路結構,同時也可以表徵節點本身自帶的屬性,這種表徵學習,就是伴隨節點屬性的網路表徵學習。通常第二種表徵學習方法都是從第一種方法中推廣而來。

傳統網路分析 VS. 網路表徵學習【1】

關於圖結構的網路表徵

學習關於圖結構的網路表徵學習重點關注的是網路的拓撲結構與性質,是網路表徵學習中最基本的一類方法,其目的在於如何得到節點在低維空間中的向量表示,使得向量之間的關係可以保持圖結構中節點之間的結構關係。同時,我們需要確定向量之間距離的一種度量方式,用來表徵對應節點之間的相似性。

節點之間的結構關係就是邊的連接,比如直接鄰居節點,就應該比二階鄰居(鄰居的鄰居)或高階鄰居(鄰居的鄰居的…)與原本節點的關係更緊密,因為直接鄰居與原節點有邊的直接連接。這種緊密關係應該可以用向量的距離來表示。節點之間的性質關係,則對應在邊的性質。首先是邊的權重,如果兩個向量距離較小,那麼在原圖中對應兩個節點之間邊的權重越小(也可能越大,權重表示距離則權重越小;權重表示相似度則權重越大)。其次是邊的方向,在無向圖中邊僅代表連接,但對於有向圖,邊的指向將影響節點之間的連接方式。下面我將介紹幾種常見且有效的網路表徵方法。

DeepWalk

DeepWalk【2】是KDD 2014的一篇文章,這種方法的核心思想是,採用隨機遊走的方式,將網路結構節點之間的關係轉化成句子,那麼不同節點就代表不同的詞,然後用自然語言處理中Word2Vec的方法得到節點的低維度向量表示。那麼這種方法其實就是分兩步:隨機遊走,和詞向量表示學習。我們分別來看看這兩步操作到底是什麼:

隨機遊走就是在網路結構中,以某個節點做起點,然後以一定的概率隨機移動到其鄰居位置,再從鄰居位置隨機移動,直到走t步(t是預先設定好的參數),於是得到一個由t個「詞」(節點)組成的「句子」(序列)。圖中每個節點都要作為起點做隨機遊走,設有N個節點;且每個節點都要做r次隨機遊走,那麼最後就可以得到N*r個「句子」,每個「句子」都是由t個「詞」組成。

接下來是詞向量表示學習的方法,原工作中使用Skip-gram的方法學習詞向量表示,具體思想類似於極大似然概率:比如現在有一個隨機遊走得到的句子(序列) A B C D E,每個字母代表一個詞(節點),這個句子共5個詞。這個句子之所以出現,是因為這種詞的順序是常見的形式(比如我們只能從一群學生中抽1個學生,問他考試前是否複習,如果這個同學說複習,那麼我們就會更傾向於相信在這個群體中,考試動作之前會發生複習動作的概率更大),所以我們可以認為C詞很大概率就是與B詞和D詞相鄰的,我們以C詞的詞向量作為輸入,那麼其鄰居詞中,B詞和D詞出現的概率就應該更高,也就是P(鄰居是B詞和D詞 | 輸入為C詞的詞向量)的值應該更高,那麼我們就應該更新C詞的詞向量,使得上述的條件概率最大。其更新公式如下所示:

Node2Vec

Node2Vec【3】是KDD 2016的一篇文章,Node2Vec的方法同樣也是採用了隨機遊走和Skip-gram的學習方法,主要的創新點在於隨機遊走的策略。在 Node2Vec方法中對隨機遊走向鄰節點轉移的概率做了調整。

Node2Vec偏置示意圖【3】

圖中t是上一次走的節點,v是當前節點,α是一個偏置,影響最終的轉移概率,轉移概率的公式如下:

式中 w_{vx} 為邊的權重, pi_{vx} 表示轉移概率。由圖可知,v點回到t點轉移概率的偏置設為1/p,v點向x1點(既與v相連,又與t相連)轉移概率的偏置設為1,v點向其他點轉移概率的偏執設為1/q

這種方法的好處是結合了BFS(p控制)與DFS(q控制)來做隨機遊走(DeepWalk方法是基於DFS的)以兩個參數p,q來控制,得到的序列可以更全面地表示網路結構中節點的鄰居關係。

LINE

LINE方法由2015年發表在WWW會議上的論文【4】提出來。首先我們需要使用卷積神經網路模型對節點提特徵,得到節點的低維向量表示,那麼究竟怎樣的低維向量表示是更好的呢?作者提出了兩種相似度的衡量方式:一階相似度和二階相似度,其中一階相似度表示節點與直接鄰居之間的相似性,二階相似度表示節點與高階鄰居之間的相似性。原本網路結構中邊的連接和權重表示了節點之間的相似性,在這裡不妨設權重越大,表示兩個節點越相近。那麼我們得到的低維向量表示,也一定需要符合原結構中各個節點的相似性關係。

一階鄰節點與二階鄰節點【4】

首先我們來看看一階相似度。式中, widehat{P_1} (i,j) 是根據網路邊的權重計算出的節點之間相似度, w_{ij} 是連接節點i,j邊的權重。其本質是選中i,j兩個節點的經驗概率。

而節點的低維向量的內積,可以用來衡量兩個向量的相似度(距離),式中使用了sigmoid函數,將向量的內積映射到[0,1]之間。也可以表示i,j兩個節點同時出現的聯合概率

接下來作者以KL散度,來衡量兩個概率分布的距離作為損失函數,並通過BP演算法更新卷積神經網路的參數。優化函數如下所示

對於二階相似度,首先求得在節點i出現的條件下,節點j出現的條件概率,即從i出發,能到達j的條件概率;然後求得網路結構中兩個節點的經驗條件概率,始終的分母表示i點的度;最後同樣利用KL散度表示兩個分布的差異,求得優化函數如下。

最後我們可以將一階相似度和二階相似度結合在一起,共同訓練卷積神經網路的參數。

SDNE

論文【8】提出了一種半監督模型來做圖嵌入,引入了自動編碼機的模型架構,以鄰接矩陣中第i個列向量表示節點i,設為,輸入編碼器,得到低維的SDNE模型結構

編碼向量設為 y_{i} ,那麼對於原圖結構中相連的節點i,j,對應的編碼向量的距離應該很小,因此這裡引入一個監督學習的目標函數

式中 s_{ij} 表示鄰接矩陣中i,j兩個節點的連接情況。同時我們還需要訓練解碼器,使得解碼得到的輸出設為 widehat{x_l} ,與輸入 x_{i} 相同,於是引入了無監督學習的損失函數

但是由於輸入x_{i}為鄰接矩陣的列向量,其中會有很多0元素,我們更希望要求輸出與輸入在非0元素處的值相近,即最好保證原始邊的權重不變,因此在上式中加入了一個懲罰因子b_{i}R_{n},使損失函數在非0處不同的值有更大的懲罰項。

於是總損失函數包含三個部分:監督學習的損失函數 L_{1} 、無監督學習的損失函數L_{1},以及參數正則化項

最終我們編碼器的輸出????即為對節點i的向量表示。

伴隨節點屬性的網路表徵學習

伴隨節點屬性的網路表徵學習,則是在關於圖結構的網路表徵學習基礎上,加入了節點本身的屬性,例如社交用戶組成的網路,每個節點表示一個用戶,同時每個用戶有其自己的屬性,比如年齡、性別、星座、愛好等,我們其實最需要的是節點本身的屬性,但經常我們得到的標籤可能並不完全精準或全面,而網路中邊的存在,使用戶之間的信息可以得到交流,我們可以通過鄰居的節點屬性,更新原節點的屬性,可以得到相對更精準或全面的節點屬性,在推薦系統等方面有著很好的應用前景。

伴隨節點屬性的網路表徵學習方法,通常都是由關於圖結構的網路表徵學習方法變體而來,這裡我將主要介紹圖卷積的方法,將神經網路應用在網路結構中。

一般的網格結構,如圖片,可以看作網路結構的一種特殊形式:一個像素點表示一個節點,而相鄰的像素點表示互聯的鄰居。這種結構的特殊性在於每個節點的鄰居個數是固定的(每個節點有6個鄰居,H,W,C維度各2個),所以神經網路的卷積可以很輕鬆地做到參數共享。而對於一般網路結構的節點,其鄰居個數是不固定的,因此普通的神經卷積網路很難直接應用其中。最近幾年研究者提出圖卷積的操作,並逐漸進行改進,最終取得了很好的效果。

圖譜域的圖卷積

起初圖卷積是在圖譜域計算的。兩個時域信號的卷積,在頻域上是相乘的關係;兩個圖片的卷積,也可以通過二維傅立葉變換轉化成頻域的乘法。因此研究者定義了圖結構數據的傅立葉變換,將圖從節點域轉換到圖譜域,那麼圖卷積就可以通過圖譜域上的乘法來實現。如果大家想詳細了解圖卷積的理論知識的話,可以參考論文【5】,或者網址【6】中的回答。

首先類比連續信號的傅立葉變換??(??) = F[??(??)] = ∫ ??(??)e^{-iwt}????,其中 e^{-iwt} 是拉普拉斯運算元的特徵函數,那麼對於圖結構,拉普拉斯矩陣數學意義上等同於離散的拉普拉斯運算元,我們找到拉普拉斯矩陣的特徵向量和特徵值?? = ???????1 = ????????(u的列向量是單位特徵向量, ∧ 為特徵值的對角矩陣),那麼圖的傅立葉變換即為 widehat{f} = ???? ? ??。最終圖卷積可以表示為圖譜域的乘法,再做逆傅立葉變換得到節點域的結果

我們設?? = ( u^{t} ? h)為卷積核,將向量點乘轉化為與對角矩陣的乘法,卷積層的輸出可以表示為

式中??{}表示激活函數。這就是最初的圖卷積操作流程,這個初版本的圖卷積有兩個很大問題:第一,每次前向傳播都需要計算?? ? ????????(??) ? u^{t};第二,參數個數與節點個數相同,倘若網路複雜,節點個數達百萬級,則卷積參數將非常大。因此論文【7】提出了圖卷積的改進版

節點域的圖卷積

經過簡化,則有

通過對參數的近似,將卷積從圖譜域的計算簡化到節點域,省去了計算?? ? ????????(??) ? u^{t}的操作,同時將參數個數從節點個數減少到K個,K是預先設定的參數。在節點域上這種簡化的卷積操作本質上表示K階鄰居的屬性向量,按權重????影響當前節點的屬性向量。下圖中表示K=1時(僅有一階鄰居影響當前節點屬性向量)的更新操作。

紅色節點的一階鄰居用來更新該節點

以上的方法,都是從圖譜理論出發,通過推導得到的計算過程,改進版的GCN方法實現了節點域的卷積操作,上述方法中的K類似於傳統CNN中的kernel_size,決定了卷積核的感受野(每個節點的感受野中節點數目很可能是不相同的,因為每個節點的鄰居個數不是固定的)。

除此之外,還有一種更加直觀,直接從節點域出發的計算卷積方法:我們固定每個節點的感受野中只有M個節點,然後對每個節點計算其他節點與它的距離(一階鄰居可以直接使用邊的權重;高階鄰居則需要額外的距離函數),並按照距離進行排序,選取前M個最近的節點作為感受野中的節點。這種方法中參數個數為M個,同樣也是在節點域執行了卷積操作,但這種方法的最大難點在於如何選取魯棒性強的距離函數。

小結

當前網路表徵學習仍是正在研究中的熱門課題之一,網路作為更加泛化的數據形式,其結構的複雜度也遠高於普通的網格結構(圖片)。為了挖掘網路結構本身的性質,出現了關於圖結構的網路表徵學習,研究著重於節點之間的拓撲結構關係。但是網路中蘊藏的信息不僅僅是拓撲關係,更重要的是每個節點自己的屬性,因此從關於圖結構的網路表徵學習中,衍生出伴隨節點屬性的網路表徵學習,起目的是利用網路中節點的拓撲關係,確定或完善每個節點本身的屬性信息。

推薦閱讀

[1]機器學習-波瀾壯闊40年【獲取碼】SIGAI0413.

[2]學好機器學習需要哪些數學知識?【獲取碼】SIGAI0417.

[3] 人臉識別演算法演化史【獲取碼】SIGAI0420.

[4]基於深度學習的目標檢測演算法綜述 【獲取碼】SIGAI0424.

[5]卷積神經網路為什麼能夠稱霸計算機視覺領域?【獲取碼】SIGAI0426.

[6] 用一張圖理解SVM的脈絡【獲取碼】SIGAI0428.

[7] 人臉檢測演算法綜述【獲取碼】SIGAI0503.

[8] 理解神經網路的激活函數 【獲取碼】SIGAI2018.5.5.

[9] 深度卷積神經網路演化歷史及結構改進脈絡-40頁長文全面解讀【獲取碼】SIGAI0508.

[10] 理解梯度下降法【獲取碼】SIGAI0511.

[11] 循環神經網路綜述—語音識別與自然語言處理的利器【獲取碼】SIGAI0515

[12] 理解凸優化 【獲取碼】 SIGAI0518

[13] 【實驗】理解SVM的核函數和參數 【獲取碼】SIGAI0522

[14]【SIGAI綜述】行人檢測演算法 【獲取碼】SIGAI0525

[15] 機器學習在自動駕駛中的應用—以百度阿波羅平台為例(上)【獲取碼】SIGAI0529

[16]理解牛頓法【獲取碼】SIGAI0531

[17] 【群話題精華】5月集錦—機器學習和深度學習中一些值得思考的問題【獲取碼】SIGAI 0601

[18] 大話Adaboost演算法 【獲取碼】SIGAI0602

[19] FlowNet到FlowNet2.0:基於卷積神經網路的光流預測演算法【獲取碼】SIGAI0604

[20] 理解主成分分析(PCA)【獲取碼】SIGAI0606

[21] 人體骨骼關鍵點檢測綜述 【獲取碼】SIGAI0608

[22]理解決策樹 【獲取碼】SIGAI0611

[23] 用一句話總結常用的機器學習演算法【獲取碼】SIGAI0611

[24] 目標檢測演算法之YOLO 【獲取碼】SIGAI0615

[25] 理解過擬合 【獲取碼】SIGAI0618

[26]理解計算:從√2到AlphaGo ——第1季 從√2談起 【獲取碼】SIGAI0620

[27] 場景文本檢測——CTPN演算法介紹 【獲取碼】SIGAI0622

[28] 卷積神經網路的壓縮和加速 【獲取碼】SIGAI0625

[29] k近鄰演算法 【獲取碼】SIGAI0627

[30]自然場景文本檢測識別技術綜述 【獲取碼】SIGAI0627

[31] 理解計算:從√2到AlphaGo ——第2季 神經計算的歷史背景 【獲取碼】SIGAI0704

[32] 機器學習演算法地圖【獲取碼】SIGAI0706

[33] 反向傳播演算法推導-全連接神經網路【獲取碼】SIGAI0709

[34] 生成式對抗網路模型綜述【獲取碼】SIGAI0709.

[35]怎樣成為一名優秀的演算法工程師【獲取碼】SIGAI0711.

[36] 理解計算:從根號2到AlphaGo——第三季 神經網路的數學模型【獲取碼】SIGAI0716

[37]【技術短文】人臉檢測演算法之S3FD 【獲取碼】SIGAI0716

[38] 基於深度負相關學習的人群計數方法【獲取碼】SIGAI0718

[39] 流形學習概述【獲取碼】SIGAI0723

[40] 關於感受野的總結 【獲取碼】SIGAI0723

[41] 隨機森林概述 【獲取碼】SIGAI0725

[42] 基於內容的圖像檢索技術綜述——傳統經典方法【獲取碼】SIGAI0727

[43] 神經網路的激活函數總結【獲取碼】SIGAI0730

[44] 機器學習和深度學習中值得弄清楚的一些問題【獲取碼】SIGAI0802

[45] 基於深度神經網路的自動問答系統概述【獲取碼】SIGAI0803

[46] 反向傳播演算法推導——卷積神經網路 【獲取碼】SIGAI0806

[47] 機器學習與深度學習核心知識點總結 寫在校園招聘即將開始時 【獲取 碼】SIGAI0808

[48] 理解Spatial Transformer Networks【獲取碼】SIGAI0810

[49]AI時代大點兵-國內外知名AI公司2018年最新盤點【獲取碼】SIGAI0813

[50] 理解計算:從√2到AlphaGo ——第2季 神經計算的歷史背景 【獲取碼】SIGAI0815

[51] 基於內容的圖像檢索技術綜述--CNN方法 【獲取碼】SIGAI0817

[52]文本表示簡介 【獲取碼】SIGAI0820

[53]機器學習中的最優化演算法總結【獲取碼】SIGAI0822

[54]【AI就業面面觀】如何選擇適合自己的舞台?【獲取碼】SIGAI0823

[55]濃縮就是精華-SIGAI機器學習藍寶書【獲取碼】SIGAI0824

[56]DenseNet詳解【獲取碼】SIGAI0827

[57]AI時代大點兵國內外知名AI公司2018年最新盤點【完整版】【獲取碼】SIGAI0829

[58]理解Adaboost演算法【獲取碼】SIGAI0831

[59]深入淺出聚類演算法 【獲取碼】SIGAI0903

[60]機器學習發展歷史回顧【獲取碼】SIGAI0905

原創聲明:本文為 SIGAI 原創文章,僅供個人學習使用,未經允許,不能用於商業目的


推薦閱讀:

TAG:科技 |