Tartalomjegyzék[Elrejt][Előadás]
A „gráf neurális hálózatok” (GNN) néven ismert mély tanulási technikák a gráftartományban működnek. Ezeket a hálózatokat az utóbbi időben számos területen alkalmazzák, beleértve a számítógépes látást, az ajánlórendszereket és a kombinatorikus optimalizálást, hogy csak néhányat említsünk.
Ezen túlmenően ezek a hálózatok összetett rendszerek reprezentálására is használhatók, beleértve a közösségi hálózatokat, a fehérje-fehérje interakciós hálózatokat, a tudásgráfokat és egyebeket számos tanulmányi területen.
A nem euklideszi tér az, ahol a gráfadatok működnek, ellentétben más típusú adatokkal, például képekkel. A csomópontok osztályozására, a hivatkozások előrejelzésére és a fürtadatokra gráfelemzést használnak.
Ebben a cikkben megvizsgáljuk a grafikont Ideghálózat részletesen, típusaival, valamint gyakorlati példákkal szolgál a PyTorch használatával.
Szóval, mi az a Graph?
A gráf egyfajta adatstruktúra, amely csomópontokból és csúcsokból áll. A különböző csomópontok közötti kapcsolatokat a csúcsok határozzák meg. Ha az irányt a csomópontokban jelzik, a gráfot irányítottnak mondjuk; egyébként irányítatlan.
A gráfok jó alkalmazása a különböző egyének közötti kapcsolatok modellezése a szociális háló. A grafikonok nagyon hasznosak, ha összetett körülményekkel, például linkekkel és cserékkel foglalkozunk.
Az ajánlási rendszerek, a szemantikai elemzés, a közösségi hálózatok elemzése és a mintafelismerés használják őket
. A grafikon alapú megoldások létrehozása egy vadonatúj terület, amely az összetett és egymással összefüggő adatok áttekintő megértését kínálja.
Graph Neurális Hálózat
A gráf neurális hálózatok speciális neurális hálózatok, amelyek gráf adatformátumon működhetnek. A gráfbeágyazás és a konvolúciós neurális hálózatok (CNN-ek) jelentős hatással vannak rájuk.
A gráf neurális hálózatokat olyan feladatokban alkalmazzák, amelyek magukban foglalják a csomópontok, élek és gráfok előrejelzését.
- A CNN-eket a képek osztályozására használják. Hasonlóképpen egy osztály előrejelzéséhez GNN-eket alkalmaznak a grafikon szerkezetét képviselő pixelrácsra.
- Szöveg kategorizálása ismétlődő neurális hálózatok segítségével. A GNN-eket olyan gráfarchitektúrákkal is használják, ahol a kifejezés minden szava egy csomópont.
A csomópontok, élek vagy teljes gráfok előrejelzéséhez neurális hálózatokat használnak a GNN-ek létrehozására. Egy csomóponti szintű előrejelzés például megoldhat egy olyan problémát, mint a spamészlelés.
A link-előrejelzés tipikus eset az ajánlórendszerekben, és példa lehet az élek szerinti előrejelzési problémára.
Grafikon neurális hálózatok típusai
Számos neurális hálózattípus létezik, és többségükben jelen vannak a konvolúciós neurális hálózatok. Ebben a részben megismerjük a legismertebb GNN-eket.
Grafikus konvolúciós hálózatok (GCN)
A klasszikus CNN-ekhez hasonlíthatók. Jellemzőket a közeli csomópontok megtekintésével nyer. Az aktiválási funkciót a GNN-ek nemlinearitás hozzáadására használják a csomópontvektorok összesítése és a kimenetnek a sűrű rétegbe küldése után.
Lényegében egy gráfkonvolúcióból, egy lineáris rétegből és egy nem tanuló aktiválási függvényből áll. A GCN-eknek két fő fajtája létezik: spektrális konvolúciós hálózatok és térbeli konvolúciós hálózatok.
Graph Auto-Encoder Networks
Egy kódolót használ a grafikonok ábrázolásának megtanulására, egy dekódert pedig a bemeneti grafikonok rekonstruálására. A kódolót és a dekódert egy szűk keresztmetszetű réteg köti össze.
Mivel az automatikus kódolók kiváló munkát végeznek az osztályegyensúly kezelésében, gyakran használják őket a hivatkozások előrejelzésében.
Ismétlődő gráf neurális hálózatok (RGNN-ek)
A többrelációs hálózatokban, ahol egyetlen csomópontnak számos kapcsolata van, megtanulja az optimális diffúziós mintát, és képes kezelni a gráfokat. A zökkenőmentesség növelése és a túlparaméterezés csökkentése érdekében a gráf neurális hálózatának ezen a formájában regularizálókat használnak.
A jobb eredmények elérése érdekében az RGNN-eknek kevesebb feldolgozási teljesítményre van szükségük. Szöveggenerálásra, beszédfelismerésre, gépi fordításra, képleírásra, videocímkézésre és szövegösszegzésre használják.
Kapuzott neurális gráfhálózatok (GGNN-ek)
Ha a hosszú távú függő feladatokról van szó, azok jobban teljesítenek, mint az RGNN-ek. Azáltal, hogy csomópont-, él- és időkapukat tartalmaznak a hosszú távú függőségekre, a kapuzott gráf neurális hálózatok javítják az ismétlődő gráf neurális hálózatokat.
A kapuk a kapuzott ismétlődő egységekhez (GRU) hasonlóan működnek, mivel hozzá vannak szokva az adatok különböző szakaszokban történő visszahívásához és elfelejtéséhez.
Graph neurális hálózat megvalósítása Pytorch segítségével
A konkrét probléma, amelyre összpontosítani fogunk, egy gyakori csomópont-kategorizálási probléma. Van egy jókora közösségi hálózatunk, az úgynevezett musae-github, amelyet a nyílt API-ból állítottak össze, GitHub fejlesztők számára.
Az élek a csomópontok közötti kölcsönös követő kapcsolatokat mutatják, amelyek olyan fejlesztőket (platformfelhasználókat) képviselnek, akik legalább 10 tárolóban csillagoztak (megjegyzendő, hogy a kölcsönös szó irányítatlan kapcsolatot jelöl).
A csomópont helye, a csillaggal megjelölt adattárak, a munkáltató és az e-mail cím alapján lekéri a csomópont jellemzőit. Annak előrejelzése, hogy egy GitHub-felhasználó webfejlesztő-e vagy a gépi tanulás fejlesztő a mi feladatunk.
A célzási funkció alapjául az egyes felhasználók beosztása szolgált.
PyTorch telepítése
A kezdéshez először telepítenünk kell PyTorch. A gépednek megfelelően konfigurálhatod innen itt. Itt az enyém:
Modulok importálása
Most importáljuk a szükséges modulokat
Adatok importálása és felfedezése
A következő lépés az adatok beolvasása, és az első öt sor és az utolsó öt sor ábrázolása a címkefájlból.
A négy oszlop közül csak kettő – a csomópont azonosítója (azaz a felhasználó) és az ml_target, amely 1, ha a felhasználó tagja a gépi tanulási közösségnek, egyébként pedig 0 – releváns számunkra ebben a helyzetben.
Tekintettel arra, hogy csak két osztály van, most biztosak lehetünk abban, hogy a feladatunk bináris osztályozási kérdés.
A jelentős osztálykiegyensúlyozatlanságok eredményeként az osztályozó egyszerűen feltételezheti, hogy melyik osztály a többség, ahelyett, hogy az alulreprezentált osztályt értékelné, így az osztályegyensúly egy másik döntő tényező, amelyet figyelembe kell venni.
A hisztogram (gyakorisági eloszlás) ábrázolása némi egyensúlyhiányt mutat, mivel kevesebb osztály van a gépi tanulásból (címke=1), mint a többi osztályból.
Funkciókódolás
A csomópontok jellemzői tájékoztatnak bennünket az egyes csomópontokhoz társított jellemzőkről. Az adatok kódolására szolgáló módszerünk megvalósításával azonnal kódolhatjuk ezeket a jellemzőket.
Ezzel a módszerrel a hálózat egy kis részét (mondjuk 60 csomópontot) szeretnénk megjeleníteni. A kód itt található.
Grafikonok tervezése és megjelenítése
Használjuk a fáklya geometriát. adatokat a grafikonunk elkészítéséhez.
Egyetlen, különböző (nem kötelező) tulajdonságokkal rendelkező gráf modellezéséhez egy egyszerű Python-objektum adatot használunk. Ennek az osztálynak és a következő attribútumoknak a felhasználásával – amelyek mindegyike fáklya tenzor – létrehozzuk a gráf objektumunkat.
Az x érték alakja, amely a kódolt csomópont jellemzőihez lesz hozzárendelve, a következő: [csomópontok száma, jellemzők száma].
Az y alakja [csomópontok száma], és a csomópontcímkékre lesz alkalmazva.
élindex: Egy irányítatlan gráf leírásához ki kell bővítenünk az eredeti élindexeket, hogy lehetővé tegyük két különálló irányított él létezését, amelyek ugyanazt a két csomópontot kapcsolják össze, de ellentétes irányba mutatnak.
Például a 100 és 200 csomópontok között szükség van egy olyan élpárra, amelyek közül az egyik a 200-tól a 100-ig, a másik a 100-tól a 200-ig mutat. Ha megadjuk az élindexeket, akkor az irányítatlan gráf így ábrázolható. [2,2*eredeti élek száma] lesz a tenzorforma.
A grafikon megjelenítéséhez létrehozzuk a rajzolási grafikon módszerünket. Az első lépés az, hogy homogén hálózatunkat NetworkX gráftá alakítjuk, amelyet ezután a NetworkX.draw segítségével megrajzolhatunk.
Készítse el GNN-modellünket és képezze ki
Kezdjük azzal, hogy a teljes adathalmazt kódoljuk úgy, hogy végrehajtjuk a kódolási adatokat a light=False paraméterrel, majd a construct graph meghívásával light=False a teljes gráfot. Nem kíséreljük meg elkészíteni ezt a nagy grafikont, mert feltételezem, hogy olyan helyi gépet használ, amely korlátozott erőforrásokkal rendelkezik.
A maszkok, amelyek bináris vektorok, amelyek a 0 és 1 számjegyekkel azonosítják az egyes maszkokhoz tartozó csomópontokat, felhasználhatók arra, hogy értesítsék a betanítási fázist, mely csomópontokat kell bevonni a betanítás során, és megmondják a következtetési fázisnak, hogy mely csomópontok a tesztadatok. Fáklya geometriai.átalakítja.
Csomópont-szintű felosztás hozzáadható az AddTrainValTestMask osztály tanítómaszk, val maszk és tesztmaszk tulajdonságainak segítségével, amelyek segítségével grafikont készíthetünk, és lehetővé válik számunkra, hogy meghatározzuk, hogyan szeretnénk maszkjainkat felépíteni.
Csak 10%-ot használunk fel a képzésre, és az adatok 60%-át használjuk tesztkészletként, míg 30%-át validálási halmazként.
Most két GCNConv réteget rakunk egymásra, amelyek közül az elsőnek a kimeneti jellemzők száma megegyezik a grafikonunkban lévő bemeneti jellemzők számával.
A második rétegben, amely az osztályaink számával megegyező kimeneti csomópontokat tartalmaz, egy relu aktiváló függvényt alkalmazunk, és ellátjuk a látens jellemzőket.
Az élindex és az élsúly két lehetőség a sok x lehetőség közül, amelyeket a GCNConv elfogadhat a forward függvényben, de a mi helyzetünkben csak az első két változóra van szükségünk.
Annak ellenére, hogy modellünk képes lesz megjósolni a gráf minden csomópontjának osztályát, még mindig meg kell határoznunk a pontosságot és a veszteséget minden halmazhoz külön-külön a fázistól függően.
Például edzés közben csak a pontosság és az edzésveszteség meghatározására szeretnénk használni az edzéskészletet, ezért itt jönnek jól a maszkjaink.
A megfelelő veszteség és pontosság kiszámításához meghatározzuk a maszkolt veszteség és a maszkolt pontosság függvényeit.
A modell betanítása
Most, hogy meghatároztuk a kiképzési célt, amelyre a fáklyát használni fogjuk. Adam mester optimalizáló.
A képzést bizonyos számú korszakon keresztül folytatjuk, miközben figyelemmel kísérjük az érvényesítés pontosságát.
Ábrázoljuk a képzés veszteségeit és pontosságait is a különböző korszakokban.
A gráf neurális hálózat hátrányai
A GNN-ek használatának van néhány hátránya. Mikor alkalmazzuk a GNNa-t, és hogyan javítsuk gépi tanulási modelljeink teljesítményét, mindkettő világossá válik számunkra, miután jobban megértjük őket.
- Míg a GNN-ek sekély hálózatok, jellemzően háromrétegűek, a legtöbb neurális hálózat mélyre hat a teljesítmény javítása érdekében. E korlátozás miatt nem tudunk az élvonalban teljesíteni a nagy adatkészleteknél.
- Nehezebb modellt képezni gráfokon, mivel azok szerkezeti dinamikája dinamikus.
- E hálózatok magas számítási költségei miatt a modell termelésre való méretezése kihívást jelent. A GNN-ek éles méretezése kihívást jelent, ha a gráfszerkezete hatalmas és bonyolult.
Következtetés
Az elmúlt néhány évben a GNN-ek hatékony és hatékony eszközökké fejlődtek a gráftartomány gépi tanulási problémáinak megoldására. Ebben a cikkben egy alapvető áttekintést adunk a gráf neurális hálózatokról.
Ezt követően megkezdheti a modell betanításához és teszteléséhez használt adatkészlet létrehozását. Ahhoz, hogy megértse, hogyan működik és mire képes, sokkal messzebbre is mehet, és másfajta adatkészlettel taníthatja.
Boldog kódolás!
Hagy egy Válaszol