Graafikonvoluutioverkot (GCN)
Viestinvälityskehys, GCNConv, solmupiirteiden aggregointi, PyTorch Geometricin käyttöönotto.
Graafikonvoluutioverkot (GCN) on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.
CNN-verkoista GCN-verkkoihin
CNN:t hyödyntävät kuvien ruudukkorakennetta. Graafikonvoluutioverkko (GCN) yleistää konvoluution epäsäännöllisiin graafeihin, jolloin kukin solmu voi päivittää esitystään naapureilta saadun tiedon avulla. Näin voidaan käsitellä dataa, jolla ei ole kiinteää ruudukkoa.
Viestinvälitys
GCN-verkot noudattavat viestinvälityksen viitekehystä: kullakin kerroksella jokainen solmu (1) kerää viestejä naapureiltaan, (2) yhdistää ne ja (3) päivittää oman upotuksensa. Kerrosten pinoaminen mahdollistaa tiedon kulkemisen graafin läpi.
Naapureiden aggregointi
Ydintoiminto on naapureiden piirteiden aggregointi. Yksinkertainen GCN-kerros laskee solmun naapurien (ja solmun itsensä) piirrevektoreiden keskiarvon ja soveltaa siihen opittua lineaarista muunnosta sekä epälineaarisuutta.
# For each node v:
# h_v = activation( W * mean(features of v and its neighbors) )Miksi vierekkäisyysmatriisi normalisoidaan
Suuriasteiset solmut hallitsisivat tulosta, jos naapurit vain summattaisiin. GCN käyttää normalisoitua vierekkäisyysmatriisia vaikutusten skaalaamiseen, jolloin solmujen upotusten suuruus pysyy vakaana eri asteisilla solmuilla.
Normalisointikaava
Symmetrinen normalisointi lisää ensin itsesilmukat ja skaalaa sitten solmujen asteiden perusteella. Se kirjoitetaan muodossa D^(-1/2) (A + I) D^(-1/2). Identiteettimatriisin I lisääminen antaa solmun säilyttää omat piirteensä aggregoinnin aikana.
# A_hat = A + I (add self-loops)
# D_hat = degree matrix of A_hat
# A_norm = D_hat^(-1/2) * A_hat * D_hat^(-1/2)PyTorch Geometric
PyTorch Geometric (PyG) on PyTorchin vakiokirjasto GNN-verkkoja varten. Se tarjoaa valmiita kerroksia, kuten GCNConv, jotka toteuttavat normalisoidun viestinvälitykseen perustuvan konvoluution puolestanne.
import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConvYksi GCNConv-kerros
GCNConv(in_channels, out_channels) luo yhden graafikonvoluution. Se ottaa syötteeksi solmujen piirrematriisin x ja graafin yhteydet COO-muodossa sisältävän edge_index-rakenteen sekä palauttaa päivitetyt solmujen upotukset.
conv = GCNConv(in_channels=16, out_channels=32)
# x: [num_nodes, 16], edge_index: [2, num_edges]
h = conv(x, edge_index) # -> [num_nodes, 32]Kaksikerroksinen GCN
Tyypillinen GCN koostuu kahdesta kerroksesta: ensimmäinen muuntaa piirteet ja kokoaa yhden askeleen päässä olevien naapureiden tiedot, kun taas toinen kokoaa toisen askeleen päässä olevat tiedot. Näin kukin solmu saa kahden askeleen reseptiivisen kentän.
class GCN(torch.nn.Module):
def __init__(self, in_dim, hid, out):
super().__init__()
self.conv1 = GCNConv(in_dim, hid)
self.conv2 = GCNConv(hid, out)
def forward(self, x, edge_index):
x = F.relu(self.conv1(x, edge_index))
x = F.dropout(x, training=self.training)
return self.conv2(x, edge_index)Reseptiivinen kenttä kasvaa syvyyden myötä
Jokainen GCN-kerros laajentaa solmun reseptiivistä kenttää yhdellä askeleella. Kaksi kerrosta näkee kahden askeleen naapurustot, kolme kerrosta kolmen askeleen naapurustot ja niin edelleen. Syvyys mahdollistaa etäisen tiedon saavuttamisen solmussa.
Over-smoothing
Liian monen kerroksen pinoaminen aiheuttaa kuitenkin over-smoothing-ilmiön: toistuva naapureiden keskiarvoistaminen saa kaikkien solmujen upotukset lähestymään lähes samaa vektoria, mikä tuhoaa luokittelussa tarvittavat erot. Siksi useimmissa GCN-verkoissa käytetään vain kahta tai kolmea kerrosta.
Over-smoothingin lieventäminen
Over-smoothingia voidaan torjua esimerkiksi residuaali- ja skip-yhteyksillä, eri kerrosten tulosteita yhdistävillä jumping knowledge -verkoilla sekä pitämällä verkko yksinkertaisesti matalana. Matalat GCN-verkot suoriutuvat usein syviä verkkoja paremmin vakiomuotoisissa vertailutesteissä.
Pikatesti
Testatkaa tietonne GCN-verkoista.
Kertaus
Opitte graafikonvoluutioverkoista:
- GCN-verkot noudattavat viestinvälityksen viitekehystä: ne kokoavat naapureiden piirteet ja päivittävät sitten solmun
- Normalisoitu vierekkäisyysmatriisi itsesilmukoineen pitää upotukset vakaina
- PyTorch Geometricin
GCNConvtoteuttaa yhden konvoluution - Yleinen arkkitehtuuri on kaksikerroksinen GCN
- Liian suuri syvyys aiheuttaa over-smoothing-ilmiön
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 53
- Oppitunnit
- 225
Usein kysytyt kysymykset
Onko oppitunti ”Graafikonvoluutioverkot (GCN)” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Graafikonvoluutioverkot (GCN)”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Graafikonvoluutioverkot (GCN)”?
Viestinvälityskehys, GCNConv, solmupiirteiden aggregointi, PyTorch Geometricin käyttöönotto. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Graafikonvoluutioverkot (GCN)”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?
Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Graafiteoria koneoppimista varten
- Graafikonvoluutioverkot (GCN)
- Solmujen luokittelu GNN:llä
- Linkkien ennustaminen ja graafien luokittelu