南京研讀營(yíng)“?”合影
1. NN(神經(jīng)網(wǎng)絡(luò)) 人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,即ANN ),它從信息處理角度對(duì)人腦神經(jīng)元網(wǎng)絡(luò)進(jìn)行抽象,按不同的連接方式組成不同的網(wǎng)絡(luò)進(jìn)行計(jì)算,在工程與學(xué)術(shù)界也常直接簡(jiǎn)稱為神經(jīng)網(wǎng)絡(luò)或類神經(jīng)網(wǎng)絡(luò)。大多數(shù)情況下人工神經(jīng)網(wǎng)絡(luò)能在外界信息的基礎(chǔ)上改變內(nèi)部結(jié)構(gòu)(網(wǎng)絡(luò)的中參數(shù)),是一種自適應(yīng)系統(tǒng),通俗的講就是具備學(xué)習(xí)功能。[1]
一個(gè)有三層隱藏層的全連接神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖。它由輸入層-隱層-輸出層三部分組成 神經(jīng)網(wǎng)絡(luò)由基本的功能單元神經(jīng)元組成,以單個(gè)神經(jīng)元為例,我們看到它實(shí)際上在做這樣的一個(gè)操作,對(duì)輸入數(shù)據(jù)X進(jìn)行加權(quán)求和,再利用傳遞函數(shù)F (某種非線性函數(shù)),輸出數(shù)據(jù)。 單個(gè)神經(jīng)元的示意圖 那么單個(gè)神經(jīng)元的學(xué)習(xí)過程就是尋找最好的加權(quán)方式來最大化對(duì)輸出Y的期望(在這個(gè)部分,對(duì)期望最大化的理解是最小化損失函數(shù))。 我們可以把這個(gè)神經(jīng)元做計(jì)算的過程寫成下面的式子 表示向量X和向量W內(nèi)積,在這個(gè)是加權(quán)求和(或者回歸)的意思。F表示某一種激活函數(shù), 這里的b是偏置,可以理解為為了達(dá)成目標(biāo)而做出的調(diào)整。 那么,用來表示一個(gè)神經(jīng)元的作用。 當(dāng)我們把這個(gè)放到一個(gè)兩層的神經(jīng)元模型上去看這件事情,實(shí)際上它做的就是把輸入X(0)做了如下操作: 這個(gè)過程中,它做了類似核函數(shù)分解的過程,也就是,當(dāng)完成訓(xùn)練以后,每一個(gè)神經(jīng)元被訓(xùn)練出可以看到數(shù)據(jù)的一部分特征,或者回歸出來數(shù)據(jù)的一部分特征。多個(gè)神經(jīng)元從不同角度來回歸信息特征。然后下一層的神經(jīng)元對(duì)提取出來的特征X(1),再做一次回歸 ,擬合觀測(cè)數(shù)據(jù)Y。 激活函數(shù)F 常見的激活函數(shù)有ReLu、Sigmoid、tanh函數(shù)等,現(xiàn)在在隱層中常見的激活函數(shù)是ReLu激活函數(shù)。 我們以ReLu為例, f(x)=max(0,x) 實(shí)際上它做的是事情是正向激勵(lì)。也就是說,它相當(dāng)于把負(fù)向的信息過濾掉,只激勵(lì)正向的信息學(xué)習(xí)。從計(jì)算上來看,簡(jiǎn)單粗暴,將計(jì)算復(fù)雜度降低,并且把提取到的一些近乎為0的信息過濾掉,進(jìn)而能產(chǎn)生稀疏數(shù)據(jù),可以加快學(xué)習(xí)。 2. CNN(卷積神經(jīng)網(wǎng)絡(luò)) 我們?nèi)粘V械暮芤徊糠中盘?hào)是以圖像的形式存在的,意味著這一類的數(shù)據(jù)是有位置結(jié)構(gòu)關(guān)系的。對(duì)于卷積層的一個(gè)神經(jīng)元,他實(shí)際上在是對(duì)輸入圖像和濾波矩陣(對(duì)應(yīng)一個(gè)神經(jīng)元)做內(nèi)積,也就是所謂的卷積操作,也是卷積神經(jīng)網(wǎng)絡(luò)( Convolutional Neural Network,CNN )的名字來源。 如下圖[3]: 全連接層與卷積層的對(duì)比((b)中所有的同顏色連接上的權(quán)重是相同的,橘紅色圓圈表示上一層輸入) 相較于全連接網(wǎng)絡(luò)(a),(b)中的5個(gè)神經(jīng)元實(shí)際上參數(shù)完全一致,只是與輸入的連接方式不一樣。我們以下圖為例,描述一個(gè)卷積核的操作:最左邊的矩陣是5*5像素矩陣邊緣補(bǔ)零后的7*7矩陣,一個(gè)中間的3*3矩陣時(shí)一個(gè)神經(jīng)元對(duì)應(yīng)的濾波矩陣,通過與像素矩陣中的每個(gè)元素為中心的與濾波矩陣同等大小的矩陣對(duì)應(yīng)相乘求和之后得到數(shù)值-8,這樣,我們能得到一個(gè)的5*5的矩陣,與原來的像素矩陣大小相同。 這樣,每一個(gè)卷積核都可以通過這種方式提取出特征,利用多個(gè)卷積核,提取出特征。如果把這些特征直接接入到一個(gè)全連接層,就可以構(gòu)成一層卷積層+一層全連接層的神經(jīng)網(wǎng)絡(luò)模型了。 我們可以把這種操作推廣到N層卷積層去,卷積層以顯著減少網(wǎng)絡(luò)中連接的數(shù)量著稱,但特征映射組中的神經(jīng)元個(gè)數(shù)并沒有顯著減少。例如,一個(gè)5*5的像素矩陣,經(jīng)過一次卷積操作后,還是一個(gè)5*5的矩陣。如果后面接一個(gè)分類器,分類器的輸入維數(shù)(25)依然很高,很容易出現(xiàn)過擬合。 為了解決這個(gè)問題,可以在卷積層之后加上一個(gè)匯聚層(pooling),從而降低特征維數(shù),避免過擬合。 匯聚層主要的作用是下采樣,通過去掉Feature Map中不重要的樣本,進(jìn)一步減少參數(shù)數(shù)量。匯聚的方法很多,最常用的是Max Pooling。Max Pooling實(shí)際上就是在n*n的樣本中取最大值,作為采樣后的樣本值。下圖就是一個(gè)Max Pooling的例子。 除了Max Pooling還有 Mean Pooling,就是取各個(gè)樣本的均值。下圖就是一個(gè)完整的卷積神經(jīng)網(wǎng)絡(luò),一層卷積層+一層匯聚層+一層卷積層+一層匯聚層+一層全連接層+輸出層。 整個(gè)過程如果忽略激活函數(shù)的話,就是通過卷積層提取數(shù)據(jù)在空間上的特征,利用匯聚層降低低特征維度,然后利用全連接層對(duì)這些特征進(jìn)行回歸。 卷積神經(jīng)網(wǎng)絡(luò)的一個(gè)卷積核就像是用拿著一個(gè)放大鏡局部地一個(gè)一個(gè)去看一幅畫,提取畫里的特征。匯聚層就像是發(fā)現(xiàn)在近處看,看到的信息太少,需要把畫拿遠(yuǎn)一點(diǎn)再看。當(dāng)我們反復(fù)這樣做,看得差不多了(把特征歸納得差不多了),就可以用全連接層匯總一下提取的特征,歸納總結(jié)一下這幅畫到底在畫的是什么。 3. GCN(圖卷積神經(jīng)網(wǎng)絡(luò)) 當(dāng)我們的數(shù)據(jù)是完全沒有結(jié)構(gòu)的數(shù)據(jù)時(shí),我們只能利用全連接網(wǎng)絡(luò)來訓(xùn)練數(shù)據(jù),當(dāng)我們的數(shù)據(jù)在結(jié)構(gòu)上有規(guī)則特征的時(shí)候,我們可以考慮利用卷積層共享權(quán)值的方式來計(jì)算,那如果我們的數(shù)據(jù)是結(jié)構(gòu)化的數(shù)據(jù),但并不規(guī)則,又該怎么辦呢? 圖神經(jīng)網(wǎng)絡(luò)GNN( Graph Neural Network )應(yīng)運(yùn)而生。 它是一類用來處理圖(Graph)數(shù)據(jù)結(jié)構(gòu)輸入的一類神經(jīng)網(wǎng)絡(luò)。其實(shí)圖像也是一種圖形結(jié)構(gòu),它是一類具有歐幾里得結(jié)構(gòu)的圖結(jié)構(gòu),每個(gè)節(jié)點(diǎn)與周圍的四個(gè)節(jié)點(diǎn)連接。同時(shí)時(shí)間信號(hào)是類似的數(shù)據(jù),只與周圍的兩個(gè)信號(hào)數(shù)據(jù)連接。 而對(duì)于下圖中圖結(jié)構(gòu)的數(shù)據(jù)來說,則要比上面的數(shù)據(jù)復(fù)雜得多,一個(gè)節(jié)點(diǎn)既可能與4個(gè)節(jié)點(diǎn)產(chǎn)生連接,又可能與2個(gè)節(jié)點(diǎn)產(chǎn)生連接,這種連接方式對(duì)于每個(gè)點(diǎn)可能是不一樣的。 對(duì)于一個(gè)圖G=(V,E)來說,V是它得節(jié)點(diǎn),每個(gè)結(jié)點(diǎn)有各自的特征,E表示圖上的邊組成的集合,表征了圖的結(jié)構(gòu),可以用圖的鄰接矩陣A表示。我們的目的,是通過利用圖的節(jié)點(diǎn)自身的特征以及圖的結(jié)構(gòu)特征來完成相應(yīng)任務(wù)。 那么,對(duì)于圖結(jié)構(gòu)的數(shù)據(jù),我們實(shí)際上的輸入是節(jié)點(diǎn)的初始特征以及節(jié)點(diǎn)與節(jié)點(diǎn)之間的連接關(guān)系(連接矩陣),期望輸出的是圖上節(jié)點(diǎn)的標(biāo)簽或者圖的標(biāo)簽等等。 對(duì)于原始的圖卷積神經(jīng)網(wǎng)絡(luò)來說,它完成的任務(wù)是,給定圖上某些節(jié)點(diǎn)的標(biāo)簽,去反推其他節(jié)點(diǎn)的標(biāo)簽信息。 回顧卷積神經(jīng)網(wǎng)絡(luò),卷積層中,對(duì)一個(gè)5*5的像素矩陣,每一個(gè)卷積核(以3*3的卷積核為例)對(duì)應(yīng)著5*5個(gè)參數(shù)共享的神經(jīng)元,每個(gè)神經(jīng)元除了連接自己所對(duì)應(yīng)的像素點(diǎn)之外,還和這個(gè)像素點(diǎn)周圍的8個(gè)像素點(diǎn)連接。那么在圖結(jié)構(gòu)上,我們其實(shí)也是給每一個(gè)節(jié)點(diǎn)分配了一個(gè)神經(jīng)元,只不過在GCN中這些神經(jīng)元的權(quán)重不會(huì)改變,每個(gè)節(jié)點(diǎn)i的加權(quán)方式是這樣的: 其中=1,表示i, j有連邊,=0 ,表示i,j沒有連邊,表示節(jié)點(diǎn)i的連邊數(shù)目(鄰居數(shù)目)。 對(duì)于一個(gè)圖卷積層,更新過程如下: 它其實(shí)由兩個(gè)中間過程構(gòu)成: 利用全連接網(wǎng)絡(luò)對(duì)上一層信息進(jìn)行特征降維度,或者說特征提取(embedding)。 利用圖結(jié)構(gòu)快速傳播局部信息(投票機(jī)制),加速學(xué)習(xí)特征 最后,利用激活函數(shù)輸出提取的特征。 這里的是提到的加權(quán)求和的方式。 在Thomas N. Kipf等人的實(shí)驗(yàn)[4]中發(fā)現(xiàn),相比其他模型,利用圖結(jié)構(gòu),可以快速有效的完成任務(wù),并且有很高的準(zhǔn)確率。 值得一提的是,在Kipf等人提出該模型之前,有很多處理GNN的方式。比如利用圖譜分解來處理處理圖結(jié)構(gòu)信號(hào),也有利用節(jié)點(diǎn)鄰居采樣的方式限制每次處理的鄰居數(shù),也有利用隨機(jī)游走構(gòu)造時(shí)間序列在利用word2vec的方法。 這些方法要么是嚴(yán)重依賴采樣方式來提取用全局信息,不確定性很大,要么是利用復(fù)雜的數(shù)學(xué)技巧提取圖譜特征,這個(gè)需要利用圖的全部信息,計(jì)算復(fù)雜度很高。而GCN的處理方式則要簡(jiǎn)潔很多。 4. GAT(圖注意力網(wǎng)絡(luò)) GCN中的投票是一種等權(quán)投票的模型,而圖注意力網(wǎng)絡(luò)( Graph Attention Network,GAT )利用注意力機(jī)制提出來一種不等權(quán)的投票機(jī)制。 投票的權(quán)重是按照一種叫做注意力機(jī)制的方式來實(shí)現(xiàn)的。 它通過訓(xùn)練一個(gè)全連接神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)前者對(duì)后者信息的關(guān)注度,然后進(jìn)行下述歸一化的方式賦權(quán)。 這里的就是我們學(xué)習(xí)到的投票權(quán)重。 在GAT中,它采用了多頭注意的機(jī)制 ,實(shí)際上就是按照我們之前提到的,是一種把注意力函數(shù)進(jìn)行核分解的方式,分解成若干個(gè)注意力頭(attention-head)然后綜合每一個(gè)注意力頭的信息得到節(jié)點(diǎn)i對(duì)節(jié)點(diǎn)j的注意力。 5. 圖神經(jīng)網(wǎng)絡(luò)可以 幫助我們思考哪些問題? 在幾天的研讀營(yíng)的活動(dòng)中,我們以圖網(wǎng)絡(luò)為核心,分享和梳理了常見的幾種神經(jīng)網(wǎng)絡(luò)模型。其實(shí),在我們?nèi)粘5难芯恐?,有很多問題都可以表述成一個(gè)網(wǎng)絡(luò)問題。除了去做網(wǎng)絡(luò)的社團(tuán)檢測(cè),還有一系列問題可以用GNN的框架研究問題。 例如,用戶推薦問題,給定用戶-產(chǎn)品的關(guān)系,給定用戶,推斷用戶會(huì)購買哪些產(chǎn)品。又比如說聯(lián)絡(luò)預(yù)測(cè)問題,給定網(wǎng)絡(luò)結(jié)構(gòu),預(yù)測(cè)連邊。再比如,給定網(wǎng)絡(luò)結(jié)構(gòu)(或時(shí)序上的結(jié)構(gòu)),推斷網(wǎng)絡(luò)的類型,預(yù)測(cè)網(wǎng)絡(luò)的演化,學(xué)習(xí)網(wǎng)絡(luò)上的動(dòng)力學(xué)(流行病轉(zhuǎn)播)等等。 同時(shí),GNN網(wǎng)絡(luò)還有可能幫助我們預(yù)測(cè)系統(tǒng)結(jié)構(gòu),學(xué)習(xí)圖像中的語義關(guān)系,學(xué)習(xí)關(guān)系推理,預(yù)測(cè)蛋白質(zhì)的特性等等。 網(wǎng)絡(luò)結(jié)構(gòu)的信息往往蘊(yùn)含著大量的與功能相關(guān)的信息?,F(xiàn)實(shí)中,絕大部分的大型網(wǎng)絡(luò)是具有稀疏結(jié)構(gòu)的,利用大型網(wǎng)絡(luò)的這種特性,可以幫助我們更快速地根據(jù)數(shù)據(jù)訓(xùn)練模型。 參考資料
|
|