Table of Contents[Veşartin][Rêdan]
Teknolojiyên fêrbûna kûr ku wekî "torên neuralî yên grafî" (GNN) têne zanîn di qada grafîkê de dixebitin. Van toran van demên dawî di warên cûrbecûr de bikar anîne, di nav de dîtina komputerê, pergalên pêşniyarker, û xweşbîniya hevbeş, ku çend navan bikin.
Wekî din, van toran dikarin ji bo temsîlkirina pergalên tevlihev, di nav de torên civakî, torên pêwendiya proteîn-proteîn, grafikên zanînê, û yên din di gelek warên lêkolînê de werin bikar anîn.
Cihê ne-Eklîdyosî ew e ku daneyên grafîkî lê dixebitin, berevajî celebên din ên daneyan mîna wêneyan. Ji bo dabeşkirina girêkan, pêşbînkirina girêdan, û daneyên komê, analîza grafîkê tê bikar anîn.
Di vê gotarê de, em ê Grafikê lêkolîn bikin Network jittery bi hûrgulî, celebên wê, û her weha mînakên pratîkî yên ku PyTorch bikar tînin pêşkêş dikin.
Ji ber vê yekê, Graph çi ye?
Grafek celebek avahiyek daneyê ye ku ji girêk û xalan pêk tê. Têkiliyên di navbera girêkên cûrbecûr de ji hêla vertîkan ve têne destnîşankirin. Ger rêgez di girêkan de were destnîşan kirin, grafîk tê gotin ku arastekirî ye; wekî din, ew bêserûber e.
Serlêdanek baş a grafikan modelkirina têkiliyên di navbera kesên cihêreng de ye torên sosyal re. Dema ku bi rewşên tevlihev re mijûl dibin, wek girêdan û danûstendinan, grafîk pir alîkar in.
Ew ji hêla pergalên pêşniyarê, analîzên semantîk, analîzên torê yên civakî, û naskirina nimûne têne xebitandin
. Afirandina çareseriyên-based grafik qadek nû-nû ye ku têgihiştinek têgihîştî ya daneyên tevlihev û pêwenddar pêşkêşî dike.
Graf Tora Neuralî
Torên neuralî yên grafîkî celebên tora neuralî yên pispor in ku dikarin li ser forma daneya grafîkî bixebitin. Veguheztina grafikan û torên neuralî yên konvolutional (CNN) bandorek girîng li ser wan dike.
Tora Neuralî ya Grafîk di peywirên ku tê de pêşbînkirina girêk, qerax û grafîkan tê de têne bikar anîn.
- CNN ji bo dabeşkirina wêneyan têne bikar anîn. Bi heman awayî, ji bo pêşbînîkirina çînek, GNN li tora pixelê ya ku avahiya grafê temsîl dike têne sepandin.
- Kategorîzekirina nivîsê bi karanîna torên neuralî yên dubare. GNN di heman demê de bi mîmarên grafîkî re têne bikar anîn ku her peyvek di hevokekê de girêkek e.
Ji bo pêşbînkirina girêk, kevî, an grafikên tevahî, torên neuralî têne bikar anîn ku GNN-an çêbikin. Ji bo nimûne, pêşbîniyek di asta girêk de, dikare pirsgirêkek mîna tespîtkirina spam çareser bike.
Pêşbîniya lînkê di pergalên pêşniyarker de dozek tîpîk e û dibe ku mînakek pirsgirêkek pêşbîniya-aqilmend be.
Grafik Cureyên Tora Neuralî
Gelek celebên torê yên neuralî hene, û Tora Neuralî ya Convolutional di piraniya wan de hene. Em ê di vê beşê de li ser GNN-ên herî naskirî fêr bibin.
Grafîk Tora Hevbeş (GCN)
Ew bi CNN-ên klasîk re têne berhev kirin. Bi dîtina girêkên nêzik ve taybetmendiyan werdigire. Fonksiyona aktîvkirinê ji hêla GNN-an ve tê bikar anîn da ku piştî berhevkirina vektorên girêk ne-xêziyê zêde bike û hilberan bişîne qata qelew.
Ew di eslê xwe de ji berhevkirina Graf, qatek rêzik, û fonksiyonek çalakkirina ne-xwendekar pêk tê. GCN di du celebên sereke de têne: Tora Tevlihevî ya Spektral û Tora Hevbeş a Cihanî.
Graf Torên Auto-Encoder
Ew şîfreyek bikar tîne da ku fêr bibe ka meriv çawa grafikan temsîl dike û dekoderek bikar tîne da ku hewl bide grafikên têketinê ji nû ve ava bike. Qatek şûşê heye ku şîfreker û dekoderê girêdide.
Ji ber ku kodkerên otomatîkî di hilgirtina balansa polê de karekî hêja dikin, ew bi gelemperî di pêşbîniya girêdanê de têne bikar anîn.
Tora Neuralî ya Dubarekirî (RGNN)
Di torên pir-pêwendî de, ku yek girêk xwedan gelek têkiliyan e, ew şêwaza belavkirina çêtirîn fêr dibe û dikare grafiyan birêve bibe. Ji bo zêdekirina nermbûn û kêmkirina zêde-parametrekirinê, rêkûpêk di vê forma tora neuralî ya grafîkî de têne bikar anîn.
Ji bo ku encamên çêtir bi dest bixin, RGNN hêza pêvajoyê ya kêmtir hewce dike. Ew ji bo hilberîna nivîsê, naskirina axaftinê, wergera makîneyê, ravekirina wêneyê, nîşankirina vîdyoyê, û kurtkirina nivîsê têne bikar anîn.
Tora Grafika Neuralî ya Deryayî (GGNN)
Dema ku ew tê ser karên girêdayî dirêj-dirêj, ew ji RGNN-ê derdixin. Bi tevlêkirina dergehên girêk, qirax û demkî yên li ser girêdanên demdirêj, torên neuralî yên grafîkî yên dergehî torên neuralî yên grafîkî yên dûbare zêde dikin.
Derî bi heman rengî wekî Yekîneyên Vegera Gated (GRU) dixebitin ku ew di qonaxên cihêreng de ji bo bîranîn û jibîrkirina daneyan têne bikar anîn.
Cîbicîkirina Graf Tora Neuralî bi karanîna Pytorch
Pirsgirêka taybetî ya ku em ê li ser bisekinin pirsgirêkek kategorîzekirina nodê ya hevpar e. Tora me ya mezin a civakî heye ku jê re tê gotin musae-github, ku ji API-ya vekirî, ji bo pêşdebirên GitHub hate berhev kirin.
Kevir têkiliyên şopîner ên hevbeş di navbera girêkan de destnîşan dikin, ku pêşdebiran (bikarhênerên platformê) yên ku bi kêmî ve di 10 depoyan de stêrk kirine temsîl dikin (bala xwe bidin ku peyva hevûdu têkiliyek bêserûber destnîşan dike).
Li ser bingeha cîhê girêk, depoyên stêrk, kardêr, û navnîşana e-nameyê, taybetmendiyên girêk têne wergirtin. Pêşbînîkirin ka bikarhênerek GitHub pêşdebirek malperê ye an a pêşdebirê fêrbûna makîneyê wezîfeya me ye.
Sernavê karê her bikarhêner ji bo vê fonksiyona armanckirinê bingehek xizmet kir.
Sazkirina PyTorch
Ji bo destpêkirinê, divê em pêşî saz bikin PyTorch. Hûn dikarin wê li gorî makîneya xwe ji mîheng bikin vir. Li vir ya min e:
Importing modules
Naha, em modulên pêwîst derdixin
Import û keşifkirina daneyan
Pêngava jêrîn ew e ku hûn daneyan bixwînin û pênc rêzên pêşîn û pênc rêzên paşîn ji pelê labelan binivîsin.
Tenê du ji çar stûnan-nasnameya girêkê (ango, bikarhêner) û ml_target, ku 1 e heke bikarhêner endamê civata fêrbûna makîneyê be û 0 wekî din - di vê rewşê de ji me re têkildar in.
Ji ber ku tenê du çîn hene, em niha dikarin piştrast bin ku peywira me pirsgirêkek dabeşkirina binar e.
Wekî encamek bêhevsengiyên çîna girîng, dabeşker tenê dikare bihesibîne ka kîjan çîn piraniyek e ji bilî nirxandina çîna ku kêm tê temsîl kirin, û hevsengiya polê bike faktorek din a girîng ku meriv li ber çavan bigire.
Pîşesazkirina histogramê (dabeşkirina frekansê) hin bêhevsengiyê eşkere dike ji ber ku ji fêrbûna makîneyê (label=1) ji çînên din kêmtir ders hene.
Şîfrekirina taybetmendiyê
Taybetmendiyên girêkan me ji taybetmendiya ku bi her girêkekê ve girêdayî ye agahdar dike. Bi pêkanîna rêbaza me ya ji bo şîfrekirina daneyan, em dikarin tavilê wan taybetmendiyan şîfre bikin.
Em dixwazin vê rêbazê bikar bînin da ku beşek piçûk a torê (bibêjin, 60 nod) ji bo pêşandanê vehewînin. Kod li vir tête navnîş kirin.
Sêwirandin û nîşandana grafikan
Em ê geometrîk meşaleyê bikar bînin. daneyên ji bo avakirina grafika me.
Ji bo modela grafikek yekane bi taybetmendiyên cihêreng (vebijarkî), daneyên ku hêmanek Python-ê hêsan e tê bikar anîn. Bi karanîna vê çîn û taybetmendiyên jêrîn - ku hemî jî tensorên meşaleyê ne - em ê grafika xwe biafirînin.
Forma nirxa x, ku dê ji taybetmendiyên girêka kodkirî re were veqetandin, [hejmara girêkan, hejmara taybetmendiyan] ye.
Şêweyê y [hejmara girêkan] ye, û ew ê li ser etîketên girêkan were sepandin.
Indeksa qeraxê: Ji bo danasîna grafek nerasterêkirî, pêdivî ye ku em nîşaneyên qeraxên orîjînal berfireh bikin da ku rê bidin hebûna du keviyên arastekirî yên cihê ku heman du girêkan bi hev ve girêdidin lê berovajî arasteyan nîşan didin.
Ji bo nimûne, di navbera girêkên 100 û 200 de, yek ji girêka 200 heta 100 û ya din jî ji 100 heta 200 nîşan dide, cotek kevroşkan pêwîst e. Heger nîşaneyên qeraxê werin peyda kirin, wê hingê grafika nerastkirî bi vî rengî dikare were temsîl kirin. [2,2*hejmara keviyên orîjînal] dê forma tensor be.
Em rêbaza grafiya xweya xêzkirinê diafirînin da ku grafiyek nîşan bidin. Gava yekem ev e ku em tora xweya homojen veguherînin grafek NetworkX, ku paşê bi karanîna NetworkX.draw dikare were kişandin.
Modela me ya GNN çêbikin û wê perwerde bikin
Em dest bi şîfrekirina tevaya daneyan dikin û daneya kodê bi light=False bi darve dikin û dûv re gazî grafika çêkirinê bi light=False dikin da ku tevahiya grafê ava bikin. Em ê hewl nedin ku vê grafika mezin xêz bikin ji ber ku ez texmîn dikim ku hûn makîneyek herêmî ya ku xwedan çavkaniyên sînordar e bikar tînin.
Mask, ku vektorên binar in ku bi karanîna reqemên 0 û 1-ê destnîşan dikin ka kîjan girêk girêdayî her maskek taybetî ne, dikarin werin bikar anîn da ku qonaxa perwerdehiyê agahdar bikin ka kîjan girêk divê di dema perwerdehiyê de tê de bin û ji qonaxa encamnameyê re bêjin ka kîjan girê daneyên ceribandinê ne. Meşaleya geometrîk.veguherîne.
Parçebûnek-asta girêk dikare bi karanîna maskeya perwerdehiyê, maskeya val, û taybetmendiyên maskeya testê ya çîna AddTrainValTestMask were zêdekirin, ku dikare were bikar anîn da ku grafiyek bikişîne û rê bide me ku em diyar bikin ka em çawa dixwazin maskeyên xwe çawa bêne çêkirin.
Em tenê 10% ji bo perwerdehiyê bikar tînin û 60% daneyê wekî ceribandina testê bikar tînin dema ku 30% wekî berhevoka pejirandinê bikar tînin.
Naha, em ê du qatên GCNConv li hev bixin, ya yekem ji wan xwedî hejmarek taybetmendiya derketinê ye ku bi hejmara taybetmendiyên di grafiya me de wekî taybetmendiyên têketinê wekhev e.
Di qata duyemîn de, ku tê de girêkên derketinê yên bi hejmara çînên me re wekhev in, em fonksiyonek çalakkirina relu bicîh dikin û taybetmendiyên dereng peyda dikin.
Indeksa qiraxê û giraniya qiraxê du ji gelek vebijarkên x in ku GCNConv dikare di fonksiyona pêş de qebûl bike, lê di rewşa me de, em tenê du guhêrbarên pêşîn hewce ne.
Digel vê yekê ku modela me dê bikaribe çîna her girêkek di grafîkê de pêşbîn bike, dîsa jî pêdivî ye ku em li gorî qonaxê ji bo her setê ji hev cuda rast û windabûnê diyar bikin.
Mînakî, di dema perwerdehiyê de, em tenê dixwazin ku seta perwerdehiyê bikar bînin da ku rastbûn û windabûna perwerdehiyê diyar bikin, û ji ber vê yekê ev e ku maskên me bi kêr tê.
Ji bo hesabkirina winda û rastbûna guncan, em ê fonksiyonên windabûna maske û rastbûna maske diyar bikin.
Perwerdekirina modelê
Naha ku me armanca perwerdehiyê diyar kir ku dê meşale ji bo ku were bikar anîn. Adem optimîzatorek master e.
Em ê perwerdehiyê ji bo hejmarek diyarkirî ya serdeman bi rê ve bibin, dema ku çavê xwe li rastbûna pejirandinê digirin.
Di heman demê de em windahiyên perwerdehiyê û rastbûna di serdemên cûda de jî plan dikin.
Dezawantajên Graph Tora Neuralî
Bikaranîna GNN-ê çend kêmasiyên xwe hene. Kengî em GNNa bikar bînin û meriv çawa performansa modelên fêrbûna makîneya xwe zêde bike dê piştî ku em wan çêtir têgihiştin ji me re diyar bikin.
- Digel ku GNN torgilokên hûrik in, bi gelemperî bi sê qatan, pir torên neuralî dikarin kûr biçin da ku performansê baştir bikin. Ji ber vê sînordarkirinê em nekarin li ser danûstendinên mezin di dereceya pêşîn de pêk bînin.
- Zehmettir e ku meriv modelek li ser grafikan perwerde bike, ji ber ku dînamîkên wan ên strukturel dînamîk in.
- Ji ber lêçûnên zêde yên hesabker ên van toran, pîvandina modela ji bo hilberînê dijwariyan peyda dike. Ger avahiya grafiya we mezin û tevlihev be, pîvandina GNN-an ji bo hilberînê dê dijwar be.
Xelasî
Di van çend salên çûyî de, GNN ji bo pirsgirêkên fêrbûna makîneyê di qada grafîkê de amûrên hêzdar û bi bandor pêşve xistin. Awirek bingehîn a torên neuralî yên grafîkî di vê gotarê de tê dayîn.
Piştî wê, hûn dikarin dest bi afirandina daneya ku dê ji bo perwerdekirin û ceribandina modelê were bikar anîn dest pê bikin. Ji bo ku hûn fêm bikin ka ew çawa kar dike û çi jêhatî ye, hûn jî dikarin pir pêşde biçin û wê bi karanîna celebek databasê perwerde bikin.
Kodkirina we pîroz be!
Leave a Reply