91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

GNN教程:GraghSAGE算法細(xì)節(jié)詳解!

深度學(xué)習(xí)自然語言處理 ? 來源:深度學(xué)習(xí)自然語言處理 ? 作者:深度學(xué)習(xí)自然語言 ? 2020-11-24 09:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

本文為GNN教程的第三篇文章 【GraghSAGE算法】,在GCN的博文中我們重點(diǎn)討論了圖神經(jīng)網(wǎng)絡(luò)的逐層傳播公式是如何推導(dǎo)的,然而,GCN的訓(xùn)練方式需要將鄰接矩陣和特征矩陣一起放到內(nèi)存或者顯存里,在大規(guī)模圖數(shù)據(jù)上是不可取的。 其次,GCN在訓(xùn)練時需要知道整個圖的結(jié)構(gòu)信息(包括待預(yù)測的節(jié)點(diǎn)), 這在現(xiàn)實(shí)某些任務(wù)中也不能實(shí)現(xiàn)(比如用今天訓(xùn)練的圖模型預(yù)測明天的數(shù)據(jù),那么明天的節(jié)點(diǎn)是拿不到的)。GraphSAGE的出現(xiàn)就是為了解決這樣的問題,這篇博文中我們將會詳細(xì)得討論它。

一、Inductive learning v.s. Transductive learning

首先我們介紹一下什么是inductive learning。與其他類型的數(shù)據(jù)不同,圖數(shù)據(jù)中的每一個節(jié)點(diǎn)可以通過邊的關(guān)系利用其他節(jié)點(diǎn)的信息,這樣就產(chǎn)生了一個問題,如果訓(xùn)練集上的節(jié)點(diǎn)通過邊關(guān)聯(lián)到了預(yù)測集或者驗(yàn)證集的節(jié)點(diǎn),那么在訓(xùn)練的時候能否用它們的信息呢? 如果訓(xùn)練時用到了測試集或驗(yàn)證集樣本的信息(或者說,測試集和驗(yàn)證集在訓(xùn)練的時候是可見的), 我們把這種學(xué)習(xí)方式叫做transductive learning, 反之,稱為inductive learning。

顯然,我們所處理的大多數(shù)機(jī)器學(xué)習(xí)問題都是inductive learning, 因?yàn)槲覀兛桃獾膶颖炯譃橛?xùn)練/驗(yàn)證/測試,并且訓(xùn)練的時候只用訓(xùn)練樣本。然而,在GCN中,訓(xùn)練節(jié)點(diǎn)收集鄰居信息的時候,用到了測試或者驗(yàn)證樣本,所以它是transductive的。

二、概述

GraphSAGE是一個inductive框架,在具體實(shí)現(xiàn)中,訓(xùn)練時它僅僅保留訓(xùn)練樣本到訓(xùn)練樣本的邊。inductive learning 的優(yōu)點(diǎn)是可以利用已知節(jié)點(diǎn)的信息為未知節(jié)點(diǎn)生成Embedding. GraphSAGE 取自 Graph SAmple and aggreGatE, SAmple指如何對鄰居個數(shù)進(jìn)行采樣。aggreGatE指拿到鄰居的embedding之后如何匯聚這些embedding以更新自己的embedding信息。下圖展示了GraphSAGE學(xué)習(xí)的一個過程:

對鄰居采樣

采樣后的鄰居embedding傳到節(jié)點(diǎn)上來,并使用一個聚合函數(shù)聚合這些鄰居信息以更新節(jié)點(diǎn)的embedding

根據(jù)更新后的embedding預(yù)測節(jié)點(diǎn)的標(biāo)簽

三、算法細(xì)節(jié)

3.1 節(jié)點(diǎn) Embedding 生成(即:前向傳播)算法

這一節(jié)討論的是如何給圖中的節(jié)點(diǎn)生成(或者說更新)embedding, 假設(shè)我們已經(jīng)完成了GraphSAGE的訓(xùn)練,因此模型所有的參數(shù)(parameters)都已知了。具體來說,這些參數(shù)包括個聚合器(見下圖算法第4行)中的參數(shù), 這些聚合器被用來將鄰居embedding信息聚合到節(jié)點(diǎn)上,以及一系列的權(quán)重矩陣(下圖算法第5行), 這些權(quán)值矩陣被用作在模型層與層之間傳播embedding的時候做非線性變換。

下面的算法描述了我們是怎么做前向傳播的:

算法的主要部分為:

(line 1)初始化每個節(jié)點(diǎn)embedding為節(jié)點(diǎn)的特征向量

(line 3)對于每一個節(jié)點(diǎn)

(line 4)拿到它采樣后的鄰居的embedding并將其聚合,這里表示對鄰居采樣

(line 5)根據(jù)聚合后的鄰居embedding()和自身embedding()通過一個非線性變換()更新自身embedding.

算法里的這個比較難理解,下面單獨(dú)來說他,之前提到過,它既是聚合器的數(shù)量,也是權(quán)重矩陣的數(shù)量,還是網(wǎng)絡(luò)的層數(shù),這是因?yàn)槊恳粚泳W(wǎng)絡(luò)中聚合器和權(quán)重矩陣是共享的。

網(wǎng)絡(luò)的層數(shù)可以理解為需要最大訪問到的鄰居的跳數(shù)(hops),比如在figure 1中,紅色節(jié)點(diǎn)的更新拿到了它一、二跳鄰居的信息,那么網(wǎng)絡(luò)層數(shù)就是2。

為了更新紅色節(jié)點(diǎn),首先在第一層()我們會將藍(lán)色節(jié)點(diǎn)的信息聚合到紅色節(jié)點(diǎn)上,將綠色節(jié)點(diǎn)的信息聚合到藍(lán)色節(jié)點(diǎn)上。在第二層()紅色節(jié)點(diǎn)的embedding被再次更新,不過這次用的是更新后的藍(lán)色節(jié)點(diǎn)embedding,這樣就保證了紅色節(jié)點(diǎn)更新后的embedding包括藍(lán)色和綠色節(jié)點(diǎn)的信息。

3.2 采樣 (SAmple) 算法

GraphSAGE采用了定長抽樣的方法,具體來說,定義需要的鄰居個數(shù), 然后采用有放回的重采樣/負(fù)采樣方法達(dá)到,。保證每個節(jié)點(diǎn)(采樣后的)鄰居個數(shù)一致是為了把多個節(jié)點(diǎn)以及他們的鄰居拼成Tensor送到GPU中進(jìn)行批訓(xùn)練。

3.3 聚合器 (Aggregator) 架構(gòu)

GraphSAGE 提供了多種聚合器,實(shí)驗(yàn)中效果最好的平均聚合器(mean aggregator),平均聚合器的思慮很簡單,每個維度取對鄰居embedding相應(yīng)維度的均值,這個和GCN的做法基本一致(GCN實(shí)際上用的是求和):

舉個簡單例子,比如一個節(jié)點(diǎn)的3個鄰居的embedding分別為 ,按照每一維分別求均值就得到了聚合后的鄰居embedding為.

論文中還闡述了另外兩種aggregator:LSTM aggregator和Pooling aggregator, 有興趣的可以去論文中看下。

3.4 參數(shù)學(xué)習(xí)

到此為止,整個模型的架構(gòu)就講完了,那么GraphSAGE是如何學(xué)習(xí)聚合器的參數(shù)以及權(quán)重變量的呢? 在有監(jiān)督的情況下,可以使用每個節(jié)點(diǎn)的預(yù)測label和真實(shí)label的交叉熵作為損失函數(shù)。在無監(jiān)督的情況下,可以假設(shè)相鄰的節(jié)點(diǎn)的輸出embeding應(yīng)當(dāng)盡可能相近,因此可以設(shè)計出如下的損失函數(shù):

其中是節(jié)點(diǎn)的輸出embedding,是節(jié)點(diǎn)的鄰居(這里鄰居是廣義的,比如說如果和在一個定長的隨機(jī)游走中可達(dá),那么我們也認(rèn)為他們相鄰),是負(fù)采樣分布,是負(fù)采樣的樣本數(shù)量,所謂負(fù)采樣指我們還需要一批不是鄰居的節(jié)點(diǎn)作為負(fù)樣本,那么上面這個式子的意思是相鄰節(jié)點(diǎn)的embedding的相似度盡量大的情況下保證不相鄰節(jié)點(diǎn)的embedding的期望相似度盡可能小。

四、后話

GraphSAGE采用了采樣的機(jī)制,克服了GCN訓(xùn)練時內(nèi)存和顯存上的限制,使得圖模型可以應(yīng)用到大規(guī)模的圖結(jié)構(gòu)數(shù)據(jù)中,是目前幾乎所有工業(yè)上圖模型的雛形。然而,每個節(jié)點(diǎn)這么多鄰居,采樣能否考慮到鄰居的相對重要性呢,或者我們在聚合計算中能否考慮到鄰居的相對重要性? 這個問題在我們的下一篇博文Graph Attentioin Networks中做了詳細(xì)的討論。

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4838

    瀏覽量

    107871
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4784

    瀏覽量

    98102
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3757

    瀏覽量

    52130

原文標(biāo)題:GNN教程:GraghSAGE算法細(xì)節(jié)詳解!

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    FFT算法原理詳解

    /* 功能:將input里的數(shù)據(jù)進(jìn)行快速傅里葉變換 并且輸出 */ #include #include #define FFT_LENGTH 8 double input[FFT_LENGTH]={1,1,1,1,1,1,1,1}; struct complex1{ //定義一個復(fù)數(shù)結(jié)構(gòu)體 double real; //實(shí)部 double image; //虛部 }; //將input的實(shí)數(shù)結(jié)果存放為復(fù)數(shù) struct complex1 result_dat[8]; /* 虛數(shù)的乘法 */ struct complex1 con_complex(struct complex1 a,struct complex1 b){ struct complex1 temp; temp.real=(a.real*b.real)-(a.image*b.image); temp.image=(a.image*b.real)+(a.real*b.image); return temp; } /* 簡單的a的b次方 */ int mypow(int a,int b){ int i,sum=a; if(b==0)return 1; for(i=1;i sum*=a; } return sum; } /* 簡單的求以2為底的正整數(shù) */ int log2(int n){ unsigned i=1; int sum=1; for(i;;i++){ sum*=2; if(sum>=n)break; } return i; } /* 簡單的交換數(shù)據(jù)的函數(shù) */ void swap(struct complex1 *a,struct complex1 *b){ struct complex1 temp; temp=*a; *a=*b; *b=temp; } /* dat為輸入數(shù)據(jù)的數(shù)組 N為抽樣次數(shù) 也代表周期 必須是2^N次方 */ void fft(struct complex1 dat[],unsigned char N){ /*最終 dat_buf計算出 當(dāng)前蝶形運(yùn)算奇數(shù)項與W 乘積 dat_org存放上一個偶數(shù)項的值 */ struct complex1 dat_buf,dat_org; /* L為幾級蝶形運(yùn)算 也代表了2進(jìn)制的位數(shù) n為當(dāng)前級蝶形的需要次數(shù) n最初為N/2 每級蝶形運(yùn)算后都要/2 i j為倒位時要用到的自增符號 同時 i也用到了L碟級數(shù) j是計算當(dāng)前碟級的計算次數(shù) re_i i_copy均是倒位時用到的變量 k為當(dāng)前碟級 cos(2*pi/N*k)的 k 也是e^(-j2*pi/N)*k 的 k */ unsigned char L,i,j,re_i=0,i_copy=0,k=0,fft_flag=1; //經(jīng)過觀察,發(fā)現(xiàn)每級蝶形運(yùn)算需要N/2次運(yùn)算,共運(yùn)算N/2*log2N 次 unsigned char fft_counter=0; //在此要進(jìn)行補(bǔ)2 N必須是2^n 在此略 //蝶形級數(shù) (L級) L=log2(N); //計算每級蝶形計算的次數(shù)(這里只是一個初始值) 之后每次要/2 //n=N/2; //對dat的順序進(jìn)行倒位 for(i=1;i i_copy=i; re_i=0; for(j=L-1;j>0;j--){ //判斷i的副本最低位的數(shù)字 并且移動到最高位 次高位 .. //re_i為交換的數(shù) 每次它的數(shù)字是不能移動的 并且循環(huán)之后要清0 re_i|=((i_copy 0x01)< i_copy>>=1; } swap( dat, dat[re_i]); } //進(jìn)行fft計算 for(i=0;i fft_flag=1; fft_counter=0; for(j=0;j if(fft_counter==mypow(2,i)){ //控制隔幾次,運(yùn)算幾次 fft_flag=0; }else if(fft_counter==0){ //休止結(jié)束,繼續(xù)運(yùn)算 fft_flag=1; } //當(dāng)不判斷這個語句的時候 fft_flag保持 這樣就可以持續(xù)運(yùn)算了 if(fft_flag){ dat_buf.real=cos((2*PI*k)/(N/mypow(2,L-i-1))); dat_buf.image=-sin((2*PI*k)/(N/mypow(2,L-i-1))); dat_buf=con_complex(dat[j+mypow(2,i)],dat_buf); //計算 當(dāng)前蝶形運(yùn)算奇數(shù)項與W 乘積 dat_org.real=dat[j].real; dat_org.image=dat[j].image; //暫存 dat[j].real=dat_org.real+dat_buf.real; dat[j].image=dat_org.image+dat_buf.image; //實(shí)部加實(shí)部 虛部加虛部 dat[j+mypow(2,i)].real=dat_org.real-dat_buf.real; dat[j+mypow(2,i)].image=dat_org.image-dat_buf.image; //實(shí)部減實(shí)部 虛部減虛部 k++; fft_counter++; }else{ fft_counter--; //運(yùn)算幾次,就休止幾次 k=0; } } } } void main{ int i; //先將輸入信號轉(zhuǎn)換成復(fù)數(shù) for(i=0;i result_dat.image=0; //輸入信號是二維的,暫時不存在復(fù)數(shù) result_dat.real=input; //result_dat.real=10; //輸入信號都為實(shí)數(shù) } fft(result_dat,FFT_LENGTH); for(i=0;i input=sqrt(result_dat.real*result_dat.real+result_dat.image*result_dat.image); //取模 printf(\"%lfn\",input); } while(1); } 這個程序中input這個數(shù)組是輸入信號,在這里只模擬抽樣了8次,輸出的數(shù)據(jù)也是input,如果想看其它序列的話,可以改變FFT_LENGTH 的值以及 input里的內(nèi)容,程序輸出的是實(shí)部和虛部的模
    發(fā)表于 01-22 06:36

    網(wǎng)絡(luò)跳線:細(xì)節(jié)決定成敗的網(wǎng)絡(luò)構(gòu)建者

    在構(gòu)建一個高效、穩(wěn)定的網(wǎng)絡(luò)環(huán)境時,我們往往會關(guān)注到大型的網(wǎng)絡(luò)設(shè)備、復(fù)雜的網(wǎng)絡(luò)架構(gòu)或是先進(jìn)的網(wǎng)絡(luò)技術(shù),而往往忽略了那些看似微不足道卻至關(guān)重要的細(xì)節(jié)——網(wǎng)絡(luò)跳線。然而,正是這些小小的跳線,在網(wǎng)絡(luò)的構(gòu)建
    的頭像 發(fā)表于 01-09 10:10 ?281次閱讀

    高速PCB打樣必知:細(xì)節(jié)決定成敗,這些點(diǎn)你不能忽視!

    23年P(guān)CBA一站式行業(yè)經(jīng)驗(yàn)PCBA加工廠家今天為大家講講高速pcb打樣需要注意什么細(xì)節(jié)?高速pcb打樣需要注意的細(xì)節(jié)。在高速PCB(印刷電路板)打樣階段,為確保最終產(chǎn)品的性能和可靠性,需要注意以下
    的頭像 發(fā)表于 12-16 09:19 ?344次閱讀
    高速PCB打樣必知:<b class='flag-5'>細(xì)節(jié)</b>決定成敗,這些點(diǎn)你不能忽視!

    SM4算法實(shí)現(xiàn)分享(一)算法原理

    SM4分組加密算法采用的是非線性迭代結(jié)構(gòu),以字為單位進(jìn)行加密、解密運(yùn)算,每次迭代稱為一輪變換,每輪變換包括S盒變換、非線性變換、線性變換、合成變換。加解密算法與密鑰擴(kuò)展都是采用32輪非線性迭代結(jié)構(gòu)
    發(fā)表于 10-30 08:10

    復(fù)雜的軟件算法硬件IP核的實(shí)現(xiàn)

    的實(shí)現(xiàn)的技術(shù)細(xì)節(jié),知道這些技術(shù)細(xì)節(jié)將有利于在使用 C 語言編寫算法時實(shí)現(xiàn)一些有針對性的優(yōu)化。 2.1 C to HASM HASM 是一種在 C 語言編譯到HDL 時、經(jīng)過嚴(yán)格定義的專用的語言
    發(fā)表于 10-30 07:02

    國密系列算法簡介及SM4算法原理介紹

    一、 國密系列算法簡介 國家商用密碼算法(簡稱國密/商密算法),是由我國國家密碼管理局制定并公布的密碼算法標(biāo)準(zhǔn)。其分類1所示: 圖1 國家商用密碼
    發(fā)表于 10-24 08:25

    加密算法的應(yīng)用

    加密是一種保護(hù)信息安全的重要手段,近年來隨著信息技術(shù)的發(fā)展,加密技術(shù)的應(yīng)用越來越廣泛。本文將介紹加密算法的發(fā)展、含義、分類及應(yīng)用場景。 1. 加密算法的發(fā)展 加密算法的歷史可以追溯到古代。在
    發(fā)表于 10-24 08:03

    數(shù)據(jù)濾波算法的具體實(shí)現(xiàn)步驟是怎樣的?

    (高頻電磁、瞬時脈沖等),選擇適配的濾波算法并落地。以下以電能質(zhì)量監(jiān)測中最常用的 IIR 低通濾波(抗高頻干擾)、滑動平均濾波(抗瞬時脈沖)、卡爾曼濾波(抗動態(tài)波動) 為例,詳解具體實(shí)現(xiàn)步驟: 一、前置準(zhǔn)備:明確濾波目標(biāo)與硬件基
    的頭像 發(fā)表于 10-10 16:45 ?837次閱讀

    DFT算法與FFT算法的優(yōu)劣分析

    一概述 在諧波分析儀中,我們常常提到的兩個詞語,就是DFT算法與FFT算法,那么一款功率分析儀/諧波分析儀采用DFT算法或者FFT算法,用戶往往關(guān)注的是能否達(dá)到所要分析諧波次數(shù)的目的,
    的頭像 發(fā)表于 08-04 09:30 ?1452次閱讀

    SVPWM的原理及法則推導(dǎo)和控制算法詳解

    小,使得電機(jī)轉(zhuǎn)矩脈動降低,旋轉(zhuǎn)磁場更逼近圓形,而且使直流母線電壓的利用率有了很大提高,且更易于實(shí)現(xiàn)數(shù)字化。下面將對該算法進(jìn)行詳細(xì)分析闡述。 1.1 SVPWM 基本原理 SVPWM 的理論基礎(chǔ)
    發(fā)表于 06-16 17:11

    安徽京準(zhǔn):北斗衛(wèi)星同步時鐘的安裝與調(diào)試詳解

    安徽京準(zhǔn):北斗衛(wèi)星同步時鐘的安裝與調(diào)試詳解
    的頭像 發(fā)表于 06-05 10:08 ?1561次閱讀
    安徽京準(zhǔn):北斗衛(wèi)星同步時鐘的安裝與調(diào)試<b class='flag-5'>詳解</b>

    SSH常用命令詳解

    SSH常用命令詳解
    的頭像 發(fā)表于 06-04 11:30 ?2032次閱讀

    芯片新關(guān)稅涉及的品牌/標(biāo)簽/產(chǎn)地—詳解

    芯片新關(guān)稅涉及的品牌/標(biāo)簽/產(chǎn)地—詳解
    的頭像 發(fā)表于 04-16 17:44 ?1077次閱讀
    芯片新關(guān)稅涉及的品牌/標(biāo)簽/產(chǎn)地—<b class='flag-5'>詳解</b>

    三維掃描儀新品 NimbleTrack-CR 極致細(xì)節(jié),靈動無線!

    搭載高性能工業(yè)相機(jī)與智能優(yōu)化算法,精準(zhǔn)還原表面細(xì)小紋理與復(fù)雜結(jié)構(gòu),賦能工業(yè)精密零部件、藝術(shù)文博等領(lǐng)域三維數(shù)字化革新,從工業(yè)產(chǎn)線質(zhì)量控制到千年文脈的數(shù)字化重生,讓每一處細(xì)節(jié)成為解鎖智造標(biāo)準(zhǔn)與文明密碼的全能密鑰。 細(xì)節(jié)捕捉 纖毫畢現(xiàn)
    的頭像 發(fā)表于 03-20 15:54 ?812次閱讀
    三維掃描儀新品  NimbleTrack-CR 極致<b class='flag-5'>細(xì)節(jié)</b>,靈動無線!

    SVPWM的原理及法則推導(dǎo)和控制算法詳解

    ,而且使直流母線電壓的利用率有了很大提高,且更易于實(shí)現(xiàn)數(shù)字化。下面將對該算法進(jìn)行詳細(xì)分析闡述。 文章過長,請點(diǎn)擊下方可查閱*附件:SVPWM的原理及法則推導(dǎo)和控制算法詳解.pdf
    發(fā)表于 03-14 14:51