Orodha ya Yaliyomo[Ficha][Onyesha]
Mbinu za kujifunza kwa kina zinazojulikana kama "mitandao ya neural ya grafu" (GNNs) hufanya kazi katika kikoa cha grafu. Mitandao hii hivi majuzi imepata matumizi katika nyanja mbalimbali, ikiwa ni pamoja na maono ya kompyuta, mifumo ya wapendekezaji, na uboreshaji wa pamoja, kutaja chache.
Kwa kuongeza, mitandao hii inaweza kutumika kuwakilisha mifumo changamano, ikiwa ni pamoja na mitandao ya kijamii, mitandao ya mwingiliano wa protini-protini, grafu ya maarifa, na mingineyo katika nyanja kadhaa za masomo.
Nafasi isiyo ya euclidean ndipo data ya grafu hufanya kazi, tofauti na aina zingine za data kama picha. Ili kuainisha nodi, kutabiri viungo, na data ya nguzo, uchambuzi wa grafu hutumiwa.
Katika makala hii, tutachunguza Grafu Mtandao wa Neural kwa undani, aina zake, na pia kutoa mifano ya vitendo kwa kutumia PyTorch.
Kwa hivyo, Grafu ni nini?
Grafu ni aina ya muundo wa data unaojumuisha nodi na wima. Miunganisho kati ya nodi mbalimbali imedhamiriwa na wima. Ikiwa mwelekeo unaonyeshwa kwenye nodes, grafu inasemekana inaelekezwa; vinginevyo, haijaelekezwa.
Utumiaji mzuri wa grafu ni kuiga uhusiano kati ya watu mbalimbali katika a mtandao wa kijamii. Wakati wa kushughulika na hali ngumu, kama vile viungo na kubadilishana, grafu husaidia sana.
Zinatumika na mifumo ya mapendekezo, uchanganuzi wa kisemantiki, uchanganuzi wa mitandao ya kijamii, na utambuzi wa muundo
. Kuunda suluhu zinazotegemea grafu ni sehemu mpya kabisa ambayo inatoa ufahamu wa kina wa data changamano na inayohusiana.
Mtandao wa Neural wa Grafu
Mitandao ya neural ya grafu ni aina maalum za mtandao wa neural zinazoweza kufanya kazi kwenye umbizo la data ya grafu. Upachikaji wa grafu na mitandao ya neva ya kubadilisha (CNNs) ina athari kubwa kwao.
Mitandao ya Neural ya Grafu huajiriwa katika kazi zinazojumuisha nodi za kutabiri, kingo, na grafu.
- CNN hutumiwa kuainisha picha. Vile vile, kutabiri darasa, GNN hutumika kwenye gridi ya pikseli inayowakilisha muundo wa grafu.
- Uainishaji wa maandishi kwa kutumia mitandao ya neva inayojirudia. GNN pia hutumiwa na usanifu wa grafu ambapo kila neno katika kifungu ni nodi.
Ili kutabiri nodi, kingo, au grafu kamili, mitandao ya neva hutumiwa kuunda GNN. Utabiri katika kiwango cha nodi, kwa mfano, unaweza kutatua tatizo kama vile ugunduzi wa barua taka.
Utabiri wa kiunga ni kisa cha kawaida katika mifumo ya wapendekezaji na inaweza kuwa mfano wa shida ya utabiri wa busara.
Aina za Mtandao wa Neural Graph
Kuna aina nyingi za mtandao wa neural, na Mitandao ya Neural ya Convolutional ipo katika nyingi yao. Tutajifunza kuhusu GNN zinazojulikana zaidi katika sehemu hii.
Grafu Convolutional Networks (GCNs)
Zinalinganishwa na CNN za kawaida. Inapata sifa kwa kuangalia nodes zilizo karibu. Kitendakazi cha kuwezesha hutumiwa na GNN kuongeza usawa baada ya kukusanya vekta za nodi na kutuma pato kwa safu mnene.
Inaundwa na ubadilishaji wa Grafu, safu ya mstari, na kazi ya kuwezesha isiyo ya mwanafunzi, kimsingi. GCNs huja katika aina mbili kuu: Mitandao ya Ubadilishaji ya Spectral na Mitandao ya Mabadilisho ya anga.
Mitandao ya Kisimbaji Kiotomatiki cha Grafu
Hutumia kisimbaji kujifunza jinsi ya kuwakilisha grafu na avkodare ili kujaribu kuunda upya grafu za ingizo. Kuna safu ya kizuizi inayounganisha encoder na avkodare.
Kwa kuwa visimbaji kiotomatiki hufanya kazi nzuri ya kushughulikia usawa wa darasa, hutumiwa mara kwa mara katika utabiri wa kiungo.
Mitandao ya Neural ya Kawaida ya Grafu (RGNNs)
Katika mitandao yenye mahusiano mengi, ambapo nodi moja ina mahusiano mengi, hujifunza muundo bora wa uenezaji na inaweza kudhibiti grafu. Ili kuongeza ulaini na kupunguza kuzidisha vigezo, vidhibiti hutumiwa katika aina hii ya mtandao wa neva wa grafu.
Ili kupata matokeo bora, RGNN zinahitaji nguvu kidogo ya uchakataji. Zinatumika kutengeneza maandishi, utambuzi wa usemi, tafsiri ya mashine, maelezo ya picha, kuweka lebo kwa video na muhtasari wa maandishi.
Mitandao ya Grafu ya Neural Gated (GGNNs)
Linapokuja suala la kazi tegemezi za muda mrefu, zinashinda RGNN. Kwa kujumuisha nodi, kingo, na milango ya muda kwenye utegemezi wa muda mrefu, mitandao ya neural ya grafu yenye lango huongeza mitandao ya neural ya grafu inayojirudia.
Milango hufanya kazi sawa na Vitengo vya Kawaida vya Gated (GRUs) kwa kuwa hutumiwa kukumbuka na kusahau data katika hatua mbalimbali.
Utekelezaji wa Mtandao wa Neural wa Graph kwa kutumia Pytorch
Suala mahususi ambalo tutazingatia ni suala la kawaida la uainishaji wa nodi. Tuna mtandao mkubwa wa kijamii unaoitwa musae-github, ambayo iliundwa kutoka kwa API wazi, kwa watengenezaji wa GitHub.
Kingo zinaonyesha uhusiano wa wafuasi wa pande zote kati ya nodi, ambazo zinawakilisha watengenezaji (watumiaji wa jukwaa) ambao wameweka nyota katika hazina angalau 10 (kumbuka kuwa neno kuheshimiana linaonyesha uhusiano ambao haujaelekezwa).
Kulingana na eneo la nodi, hazina zenye nyota, mwajiri, na anwani ya barua pepe, sifa za nodi hutolewa. Kutabiri ikiwa mtumiaji wa GitHub ni msanidi wa wavuti au a msanidi programu wa kujifunza mashine ni kazi yetu.
Jina la kazi la kila mtumiaji lilitumika kama msingi wa kipengele hiki cha kulenga.
Inasakinisha PyTorch
Kuanza, tunahitaji kwanza kufunga PyTorch. Unaweza kuisanidi kulingana na mashine yako kutoka hapa. Hapa kuna yangu:
Kuagiza moduli
Sasa, tunaingiza moduli zinazohitajika
Kuingiza na Kuchunguza data
Hatua ifuatayo ni kusoma data na kupanga safu tano za kwanza na safu tano za mwisho kutoka kwa faili ya lebo.
Safu wima mbili pekee kati ya nne—kitambulisho cha nodi (yaani, mtumiaji) na ml_target, ambayo ni 1 ikiwa mtumiaji ni mwanachama wa jumuiya ya kujifunza mashine na 0 vinginevyo—zinazofaa kwetu katika hali hii.
Kwa kuzingatia kwamba kuna madarasa mawili tu, sasa tunaweza kuwa na uhakika kwamba kazi yetu ni suala la uainishaji wa binary.
Kama matokeo ya usawa mkubwa wa darasa, mainishaji anaweza kudhani ni darasa lipi ndilo lililo wengi badala ya kutathmini darasa ambalo halijawakilishwa, na kufanya usawa wa darasa jambo lingine muhimu la kuzingatia.
Kupanga histogram (usambazaji wa masafa) huonyesha usawa fulani kwa sababu kuna madarasa machache kutoka kwa ujifunzaji wa mashine (lebo=1) kuliko kutoka kwa madarasa mengine.
Usimbaji wa Kipengele
Sifa za nodi hutufahamisha kuhusu kipengele ambacho kinahusishwa na kila nodi. Kwa kutekeleza mbinu yetu ya kusimba data, tunaweza kusimba sifa hizo papo hapo.
Tunataka kutumia njia hii kujumuisha sehemu ndogo ya mtandao (sema, nodi 60) ili kuonyesha. Kanuni imeorodheshwa hapa.
Kubuni na kuonyesha grafu
Tutatumia tochi ya kijiometri. data ya kujenga grafu yetu.
Ili kuiga grafu moja yenye sifa tofauti (ya hiari), data ambayo ni kitu rahisi cha Python hutumiwa. Kwa kutumia darasa hili na sifa zifuatazo-zote ni vipini vya tochi-tutaunda kipengee chetu cha grafu.
Fomu ya thamani x, ambayo itatolewa kwa vipengele vya nodi zilizosimbwa, ni [idadi ya nodi, idadi ya vipengele].
Umbo la y ni [idadi ya nodi], na itatumika kwa lebo za nodi.
faharasa ya makali: Ili kuelezea grafu ambayo haijaelekezwa, tunahitaji kupanua fahirisi za makali asili ili kuruhusu kuwepo kwa kingo mbili tofauti zilizoelekezwa ambazo huunganisha nodi mbili sawa lakini zielekeze pande tofauti.
Jozi ya kando, moja inayoonyesha kutoka node 100 hadi 200 na nyingine kutoka 200 hadi 100, inahitajika, kwa mfano, kati ya nodes 100 na 200. Ikiwa fahirisi za makali hutolewa, basi hii ndiyo jinsi grafu isiyoelekezwa inaweza kuwakilishwa. [2,2*idadi ya kingo asili] itakuwa fomu ya tensor.
Tunaunda njia yetu ya kuchora grafu ili kuonyesha grafu. Hatua ya kwanza ni kubadilisha mtandao wetu wa homogeneous kuwa grafu ya NetworkX, ambayo inaweza kuchorwa kwa kutumia NetworkX.draw.
Tengeneza muundo wetu wa GNN na uifunze
Tunaanza kwa kusimba seti nzima ya data kwa kutekeleza data ya usimbaji na light=False na kisha kupiga construct graph na light=False ili kuunda grafu nzima. Hatutajaribu kuchora grafu hii kubwa kwa sababu ninadhania kuwa unatumia mashine ya karibu ambayo ina rasilimali chache.
Barakoa, ambazo ni vekta za binary ambazo hutambua ni nodi zipi ni za kila barakoa mahususi kwa kutumia tarakimu 0 na 1, zinaweza kutumika kuarifu awamu ya mafunzo ambayo nodi zinapaswa kujumuishwa wakati wa mafunzo na kueleza awamu ya uelekezaji ambayo nodi ni data ya majaribio. Mwenge wa kijiometri.hubadilisha.
Mgawanyiko wa kiwango cha nodi unaweza kuongezwa kwa kutumia kinyago cha mafunzo, kinyago, na sifa za barakoa za majaribio za darasa la AddTrainValTestMask, ambazo zinaweza kutumika kuchukua grafu na kutuwezesha kubainisha jinsi tunavyotaka vinyago vyetu viundwe.
Tunatumia tu 10% kwa mafunzo na kutumia 60% ya data kama jaribio huku tukitumia 30% kama seti ya uthibitishaji.
Sasa, tutaweka safu mbili za GCNConv, ya kwanza ambayo ina idadi ya vipengele vya matokeo ambayo ni sawa na idadi ya vipengele kwenye grafu yetu kama vipengele vya kuingiza.
Katika safu ya pili, ambayo ina nodi za pato sawa na idadi ya madarasa yetu, tunatumia kazi ya uanzishaji wa relu na kusambaza vipengele vilivyofichwa.
Kielezo cha kingo na uzani wa ukingo ni chaguo mbili kati ya nyingi ambazo GCNConv inaweza kukubali katika utendaji kazi wa mbele, lakini katika hali yetu, tunahitaji tu vigeu viwili vya kwanza.
Licha ya ukweli kwamba mtindo wetu utaweza kutabiri darasa la kila nodi kwenye grafu, bado tunahitaji kuamua usahihi na hasara kwa kila seti tofauti kulingana na awamu.
Kwa mfano, wakati wa mafunzo, tunataka tu kutumia seti ya mafunzo ili kubainisha usahihi na upotevu wa mafunzo, na kwa hivyo hapa ndipo barakoa zetu zinafaa.
Ili kukokotoa upotevu ufaao na usahihi, tutafafanua kazi za upotevu uliofichwa na usahihi uliofichwa.
Kufundisha mfano
Sasa kwa kuwa tumefafanua madhumuni ya mafunzo ambayo mwenge utatumika. Adam ni kiboreshaji bora.
Tutaendesha mafunzo kwa idadi fulani ya nyakati huku tukizingatia usahihi wa uthibitishaji.
Pia tunapanga hasara na usahihi wa mafunzo katika vipindi tofauti tofauti.
Hasara za Graph Neural Network
Kutumia GNN kuna hasara chache. Wakati wa kuajiri GNNa na jinsi ya kuboresha utendakazi wa miundo yetu ya kujifunza mashine zote zitafafanuliwa kwetu baada ya kuzielewa vyema.
- Ingawa GNN ni mitandao isiyo na kina, kwa kawaida yenye tabaka tatu, mitandao mingi ya neva inaweza kuingia ndani ili kuboresha utendakazi. Hatuwezi kufanya kazi kwa kasi kwenye hifadhidata kubwa kwa sababu ya kizuizi hiki.
- Ni vigumu zaidi kufundisha mfano kwenye grafu, kwa kuwa mienendo yao ya kimuundo ni ya nguvu.
- Kwa sababu ya gharama kubwa za hesabu za mitandao hii, kuongeza muundo wa uzalishaji kunaleta changamoto. Kuongeza GNN kwa uzalishaji itakuwa ngumu ikiwa muundo wako wa grafu ni mkubwa na mgumu.
Hitimisho
Katika miaka michache iliyopita, GNNs zimeundwa na kuwa zana zenye nguvu na bora za masuala ya kujifunza kwa mashine kwenye kikoa cha grafu. Muhtasari wa kimsingi wa mitandao ya neural ya grafu imetolewa katika nakala hii.
Baada ya hapo, unaweza kuanza kuunda hifadhidata ambayo itatumika kufunza na kujaribu mfano. Ili kuelewa jinsi inavyofanya kazi na ina uwezo gani, unaweza pia kwenda mbali zaidi na kuifundisha kwa kutumia aina tofauti ya mkusanyiko wa data.
Furaha ya Kuandika!
Acha Reply