Oppikaa tekoälyä Pythonilla · Oppitunti

Graafikonvoluutioverkot (GCN)

Viestinvälityskehys, GCNConv, solmupiirteiden aggregointi, PyTorch Geometricin käyttöönotto.

Oppitunti 2/413 vaihetta

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 GCNConv

Yksi 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 GCNConv toteuttaa yhden konvoluution
  • Yleinen arkkitehtuuri on kaksikerroksinen GCN
  • Liian suuri syvyys aiheuttaa over-smoothing-ilmiön
Aloita maksutta

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

  1. Graafiteoria koneoppimista varten
  2. Graafikonvoluutioverkot (GCN)
  3. Solmujen luokittelu GNN:llä
  4. Linkkien ennustaminen ja graafien luokittelu
← Takaisin: Oppikaa tekoälyä Pythonilla