您好,登錄后才能下訂單哦!
這篇文章主要介紹“python機(jī)器學(xué)習(xí)GCN圖卷積神經(jīng)網(wǎng)絡(luò)的原理是什么”,在日常操作中,相信很多人在python機(jī)器學(xué)習(xí)GCN圖卷積神經(jīng)網(wǎng)絡(luò)的原理是什么問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”python機(jī)器學(xué)習(xí)GCN圖卷積神經(jīng)網(wǎng)絡(luò)的原理是什么”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
圖卷積神經(jīng)網(wǎng)絡(luò)涉及到圖信號(hào)處理的相關(guān)知識(shí),也是由圖信號(hào)處理領(lǐng)域的知識(shí)推導(dǎo)發(fā)展而來,了解圖信號(hào)處理的知識(shí)是理解圖卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)。
拉普拉斯矩陣是體現(xiàn)圖結(jié)構(gòu)關(guān)聯(lián)的一種重要矩陣,是圖卷積神經(jīng)網(wǎng)絡(luò)的一個(gè)重要部分。
實(shí)例:
按照上述計(jì)算式子,可以得到拉普拉斯矩陣為:
1.1.3 拉普拉斯矩陣的性質(zhì)
傅里葉變換是一種分析信號(hào)的方法,它可分析信號(hào)的成分,也可用這些成分合成信號(hào)。它將信號(hào)從時(shí)域轉(zhuǎn)換到頻域,從頻域視角給出了信號(hào)處理的另一種解法。(1)對(duì)于圖結(jié)構(gòu),可以定義圖上的傅里葉變換(GFT),對(duì)于任意一個(gè)在圖G上的信號(hào)x,其傅里葉變換表示為:
從線代角度,可以清晰的看出:v1,…, vn構(gòu)成了N維特征空間中的一組完備基向量,G中任意一個(gè)圖信號(hào)都可表示為這些基向量的線性加權(quán)求和,系數(shù)為圖信號(hào)對(duì)應(yīng)傅里葉基上的傅里葉系數(shù)。
回到之前提到的拉普拉斯矩陣刻畫平滑度的總變差:
可以看成:刻畫圖平滑度的總變差是圖中所有節(jié)點(diǎn)特征值的線性組合,權(quán)值為傅里葉系數(shù)的平方??傋儾钊∽钚≈档臈l件是圖信號(hào)與最小的特征值所對(duì)應(yīng)的特征向量完全重合,結(jié)合其描述圖信號(hào)整體平滑度的意義,可將特征值等價(jià)成頻率:特征值越低,頻率越低,對(duì)應(yīng)的傅里葉基變化緩慢,即相近節(jié)點(diǎn)的信號(hào)值趨于一致。
把圖信號(hào)所有的傅里葉系數(shù)結(jié)合稱為頻譜(spectrum),頻域的視角從全局視角既考慮信號(hào)本身,也考慮到圖的結(jié)構(gòu)性質(zhì)。
圖濾波器(Graph Filter)為對(duì)圖中的頻率分量進(jìn)行增強(qiáng)或衰減,圖濾波算子核心為其頻率響應(yīng)矩陣,為濾波器帶來不同的濾波效果。
故圖濾波器根據(jù)濾波效果可分為低通,高通和帶通。
低通濾波器:保留低頻部分,關(guān)注信號(hào)的平滑部分;
高通濾波器:保留高頻部分,關(guān)注信號(hào)的劇烈變化部分;
帶通濾波器:保留特定頻段部分;
而拉普拉斯矩陣多項(xiàng)式擴(kuò)展可形成圖濾波器H:
圖卷積運(yùn)算的數(shù)學(xué)定義為:
上述公式存在一個(gè)較大問題:學(xué)習(xí)參數(shù)為N,這涉及到整個(gè)圖的所有節(jié)點(diǎn),對(duì)于大規(guī)模數(shù)據(jù)極易發(fā)生過擬合。
進(jìn)一步的化簡(jiǎn)推導(dǎo):將之前說到的拉普拉斯矩陣的多項(xiàng)式展開代替上述可訓(xùn)練參數(shù)矩陣。
此結(jié)構(gòu)內(nèi)容即定義為圖卷積層(GCN layer),有圖卷積層堆疊得到的網(wǎng)絡(luò)模型即為圖卷積網(wǎng)絡(luò)GCN。
圖卷積層是對(duì)頻率響應(yīng)矩陣的極大化簡(jiǎn),將本要訓(xùn)練的圖濾波器直接退化為重歸一化拉普拉斯矩陣
優(yōu)點(diǎn):GCN作為近年圖神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)之作,對(duì)處理圖數(shù)據(jù)非常有效,其對(duì)圖結(jié)構(gòu)的結(jié)構(gòu)信息和節(jié)點(diǎn)的屬性信息同時(shí)學(xué)習(xí),共同得到最終的節(jié)點(diǎn)特征表示,考慮到了節(jié)點(diǎn)之間的結(jié)構(gòu)關(guān)聯(lián)性,這在圖操作中是非常重要的。
缺點(diǎn):過平滑問題(多層疊加之后,節(jié)點(diǎn)的表示向量趨向一致,節(jié)點(diǎn)難以區(qū)分),由于GCN具有一個(gè)低通濾波器的作用(j聚合特征時(shí)使得節(jié)點(diǎn)特征不斷融合),多次迭代后特征會(huì)趨于相同。
GCN層的pytorch實(shí)現(xiàn):
class GraphConvolutionLayer(nn.Module): ''' 圖卷積層:Lsym*X*W 其中 Lsym表示正則化圖拉普拉斯矩陣, X為輸入特征, W為權(quán)重矩陣, X'表示輸出特征; *表示矩陣乘法 ''' def __init__(self, input_dim, output_dim, use_bias=True): #初始化, parameters: input_dim-->輸入維度, output_dim-->輸出維度, use_bias-->是否使用偏置項(xiàng), boolean super(GraphConvolutionLayer,self).__init__() self.input_dim=input_dim self.output_dim=output_dim self.use_bias=use_bias #是否加入偏置, 默認(rèn)為True self.weight=nn.Parameter(torch.Tensor(input_dim, output_dim))#權(quán)重矩陣為可訓(xùn)練參數(shù) if self.use_bias==True: #加入偏置 self.bias=nn.Parameter(torch.Tensor(output_dim)) else: #設(shè)置偏置為空 self.register_parameter('bias', None) self.reset_parameters() def reset_parameters(self): #初始化參數(shù) stdv = 1. / math.sqrt(self.weight.size(1)) self.weight.data.uniform_(-stdv, stdv)#使用均勻分布U(-stdv,stdv)初始化權(quán)重Tensor if self.bias is not None: self.bias.data.uniform_(-stdv, stdv) def forward(self, adj, input_feature): #前向傳播, parameters: adj-->鄰接矩陣(輸入為正則化拉普拉斯矩陣), input_future-->輸入特征矩陣 temp=torch.mm(input_feature, self.weight)#矩陣乘法, 得到X*W output_feature=torch.sparse.mm(adj, temp)#由于鄰接矩陣adj為稀疏矩陣, 采用稀疏矩陣乘法提高計(jì)算效率, 得到Lsym*temp=Lsym*X*W if self.use_bias==True: #若設(shè)置了偏置, 加入偏置項(xiàng) output_feature+=self.bias return output_feature
定義兩層的GCN網(wǎng)絡(luò)模型:
class GCN(nn.Module): ''' 定義兩層GCN網(wǎng)絡(luò)模型 ''' def __init__(self, input_dim, hidden_dim, output_dim): #初始化, parameters: input_dim-->輸入維度, hidden_dim-->隱藏層維度, output_dim-->輸出維度 super.__init__(GCN, self).__init__() #定義兩層圖卷積層 self.gcn1=GraphConvolutionLayer(input_dim, hidden_dim) self.gcn2=GraphConvolutionLayer(hidden_dim, output_dim) def forward(self, adj, feature): #前向傳播, parameters: adj-->鄰接矩陣, feature-->輸入特征 x=F.relu(self.gcn1(adj, feature)) x=self.gcn2(adj, x) return F.log_softmax(x, dim=1)
到此,關(guān)于“python機(jī)器學(xué)習(xí)GCN圖卷積神經(jīng)網(wǎng)絡(luò)的原理是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。