14  Graph Convolutional Networks

İki parçalı hafta — konuk hoca Xavier Bresson (Nanyang Technological University, GNN uzmanı) Lecture’da ConvNet’in başarısını üç doğal-sinyal varsayımına (locality, stationarity, compositionality) dayandırır ve bu varsayımları düzensiz grafiklere taşımanın iki yolunu kurar: template matching (uzaysal) ve convolution teoremi (spektral); uzaysal yolda düğümlerin sırası ve konumu olmadığından şablon eşleştirme anlamsızdır, çözüm tek bir şablon vektörünü tüm komşulukla eşleyip toplamaktır; spektral yolda graf Laplacian’ı pürüzsüzlüğü ölçer, özvektörleri graf Fourier fonksiyonlarını verir, ve ChebNet filtreyi Laplacian’ın polinomu olarak yazarak K-hop yerelleştirilmiş, eigendecomposition gerektirmeyen, gerçek graflar seyrek olduğu için lineer karmaşıklıkta bir convolution elde eder; uzaysal GCN’ler izotropik (tüm komşuya aynı ağırlık: Vanilla, GraphSAGE, GIN) ve anizotropik (komşulara farklı ağırlık: MoNet, GAT, GatedGCN) diye ayrışır, ve dersin doruğunda Bresson Transformer’ın tam-bağlı bir graf üzerinde GCN olduğunu, yani aslında bir küme sinir ağı olduğunu gösterir. Ardından Alfredo Canziani (Practicum) aynı birliği ters yönden kurar: GCN’i okuyunca aslında self-attention olduğunu fark eder, çünkü attention katsayıları hesaplanmak yerine adjacency matrisinden verilir; dereceye bölme, self-connection ve ReLU eklenince izotropik GCN çıkar; Residual Gated GCN’in kenar geçidi izotropik ortalamayı anizotropik ağırlıklı toplama çevirir; ve DGL ile mesaj, reduce, update_all fonksiyonları kurulup graf-seviye sınıflandırma (mean-pool sonra MLP) ile düğüm-seviye yarı-denetimli sınıflandırma (Karate Club, yalnız iki etiket grafın yapısı boyunca yayılır) gösterilir — her iki hoca da aynı sonuca varır: seyreklik yapıdır, ve graph convolution ile attention’ı ayıran tek şey grafın kendisidir.

NotBölüm bilgisi (KONUK Xavier Bresson + Canziani)

⚠️ Atıf notu: Bu haftanın Lecture’ı LeCun değil, konuk Xavier Bresson (NTU, graph neural net dünyasının önde gelen isimlerinden). Doğrulama: LeCun (ders sahibi) tartışmada Bresson’a ismiyle hitap eder (“I can tell you, Xavier…”, 1:50:06) ve onu “NTU’dan, graph neural net dünyasının önde gelen isimlerinden” diye tanıtır. Lecture quote’ları — Bresson; Practicum — Canziani; LeCun katıldığında — LeCun.

14.1 Bu Derste Ne Var?

Bu hafta iki parça: konuk hoca Xavier Bresson (Nanyang Technological University, GNN uzmanı) Lecture’da ConvNet’i düzensiz grafiklere genelleyen graph convolutional network’leri (spektral + uzaysal) anlatıyor; Alfredo Canziani (Practicum) GCN’in aslında Hafta 12’nin self-attention’ı olduğunu (yalnız bağlantılar verili) gösteriyor ve Residual Gated GCN’i DGL koddan kuruyor.

Büyük birleştirici fikir iki yönden gelir: Bresson “Transformer = tam-bağlı bir graf üzerinde GCN’dir” der; Canziani “GCN = self-attention’dır, ama attention katsayıları hesaplanmaz, adjacency matrisinden verilir” der. İkisi aynı gerçeğe varır: attention ve graph convolution aynı işlemdir; onları ayıran tek şey seyreklik (sparsity) — yani grafın kendisi.

Bu haftanın üç ana fikri:

  1. Convolution’u grafa genellemenin iki yolu: template matching (uzaysal) ve convolution teoremi (spektral/Fourier). İkisi de farklı GCN sınıfları doğurur.
  2. Seyreklik = yapı. Gerçek grafikler (beyin, web, molekül) seyrektir; ChebNet, Laplacian’ın kuvvetleriyle K-hop yerelleştirilmiş, lineer karmaşıklıkta convolution yapar.
  3. GCN ↔︎ attention birliği. GCN = adjacency-verili attention (Canziani); Transformer = tam-bağlı GCN (Bresson) → attention ve graph conv aynı operasyon.

flowchart TB
    Hafta["Hafta 13 = iki parça<br/>(Bresson: spektral + uzaysal GCN · Canziani: GCN = attention)"]

    subgraph A["(A) ConvNet → Graf → Transformer — Bresson (Konuk)"]
        direction TB
        Varsayim["ConvNet 3 varsayım<br/>locality + stationarity + compositionality"]
        IzgaraGraf["Izgara vs graf<br/>(düzenli grid → düzensiz graf: sıra/konum yok)"]
        IkiYol["İKİ YOL<br/>template matching (uzaysal) · convolution teoremi (spektral)"]
        Spektral["Spektral: Laplacian → Fourier → ChebNet<br/>(K-hop, lineer çünkü seyrek)"]
        IzoAniso["Uzaysal: izotropik vs anizotropik<br/>(Vanilla/GIN · GAT/GatedGCN)"]
        Transformer["Transformer = tam-bağlı GCN<br/>(küme sinir ağı)"]
        Varsayim --> IzgaraGraf
        IzgaraGraf --> IkiYol
        IkiYol --> Spektral
        IkiYol --> IzoAniso
        IzoAniso --> Transformer
    end

    subgraph B["(B) GCN = attention — Canziani"]
        direction TB
        GcnAtt["GCN = attention<br/>(a = adjacency VERİLİ, hesaplanmaz)"]
        Katman["dereceye böl + self-connection + ReLU<br/>(izotropik GCN katmanı)"]
        Gated["Residual Gated GCN<br/>(kapı eta → anizotropi)"]
        DGL["DGL: mesaj / reduce / update_all"]
        Gorev["graf / düğüm sınıflandırma<br/>(yarı-denetimli, Karate Club)"]
        GcnAtt --> Katman
        Katman --> Gated
        Gated --> DGL
        DGL --> Gorev
    end

    Hafta --> Varsayim
    Hafta --> GcnAtt
    Ortak["Ortak sonuç: SEYREKLİK = YAPI<br/>(graph conv ile attention'ı ayıran tek şey grafın kendisi)"]
    Transformer --> Ortak
    Gorev --> Ortak

İpucuBuilder Notu — İki Hoca, Tek Fikir: Seyreklik = Yapı

Geriye (önkoşul + kurs):

  • ConvNet locality / stationarity / compositionality → Hafta 3 (doğal sinyaller); Fourier / Laplacian / eigendecomposition → Hafta 3 + 18.06.
  • Self-attention / sets → Hafta 12 (GCN onun adjacency-verili hâli).
  • Gate / softmax → Hafta 6 (LSTM gating) + Hafta 12 (attention softmax).

İleriye (production / research):

  • GCN → ilaç/protein (AlphaFold), öneri sistemleri, sosyal ağ, fizik.
  • Anisotropic gate + edge features → Graph Transformers (post-2020, §İleriye Köprü).

Tek cümleyle: Graph convolution, ConvNet’in locality/stationarity/compositionality varsayımlarını düzensiz grafiklere taşır — ya template matching (uzaysal GCN) ya da spektral teori (Laplacian/Fourier, ChebNet) ile; ve özünde Hafta 12’nin attention’ıyla aynıdır: GCN = adjacency-verili attention, Transformer = tam-bağlı GCN.

14.2 (Bresson — Konuk) ConvNet’ten Graf’a: Convolution’un İki Tanımı

Bresson ConvNet’in başarısının üç varsayıma dayandığını hatırlatır (Hafta 3’ün doğal-sinyal ilkeleri):

“the main assumption is that your data is compositional… it is formed of patterns that are local (locality)… you have stationarity… and it is hierarchical.” — Bresson, 2:54

Görüntü/ses/metin düzenli ızgaralardır (2D/1D grid); ızgarada convolution iyi tanımlı ve hızlıdır. Ama sosyal ağ, beyin bağlantısı, molekül ızgara değildir — düzensiz graflardır (köşeler V, kenarlar E, adjacency A). Şekil 14.1 bu çelişkiyi iki panelde gösterir: solda düzenli ızgarada her pikselin sabit komşuluğu (“yukarı/aşağı/sağ/sol”) ve paylaşılan bir \(3\times3\) kernel’i varken, sağda düzensiz grafta düğümlerin sırası, konumu ve komşu sayısı değişkendir. Convolution’u grafa nasıl genelleriz? İki yol:

  1. Template matching (uzaysal): kernel’i kaydır, nokta çarpımı al. Ama grafta iki sorun: düğümlerin sırası/konumu yok (hangi komşu “sağ üst”?), komşu sayısı değişken.

“on a graph you have no notion of where is up, where is down, where is right, where is left… so this matching generally has no meaning.” — Bresson, 22:01

  1. Convolution teoremi (spektral): convolution = Fourier uzayında nokta çarpımı. Ama grafta Fourier dönüşümünü yeniden tanımlamak gerek — ve hızlı olmalı.
Şekil 14.1: Izgara → Graf: convolution neden genelleşmez? SOL ‘Düzenli ızgara (görüntü)’: 7x7 piksel ızgarası + merkez piksel üzerinde 3x3 kernel penceresi; yukarı/aşağı/sağ/sol komşular SABİT ve bellidir, convolution iyi tanımlı (kernel = paylaşılan şablon). SAĞ ‘Düzensiz graf (sosyal ağ/molekül)’: networkx ile değişken-dereceli düzensiz bir graf; odak düğümde ‘?’ işareti ve ‘komşu sayısı/sırası belirsiz’ rozeti — düğümlerin sırası/konumu yok, komşu sayısı değişken, template matching anlamsız (çözüm: tek şablon w + komşuluk toplama, Bresson 22:01).
İpucuBuilder Notu — Izgaradan Grafa

Geriye (Hafta 3): locality/stationarity/compositionality = Hafta 3 doğal sinyaller; ızgara convolution = Hafta 3 ConvNet; template matching = korelasyon.

İleriye: “Düzenli ızgaradan düzensiz grafa” = geometric deep learning’in temel motivasyonu; molekül/protein/sosyal-ağ.

14.3 (Bresson — Konuk) Spektral GCN: Laplacian, Fourier ve ChebNet

Spektral yol için merkez operatör graf Laplacian’ıdır (normalize):

\[ \Delta = I - D^{-1/2} A\, D^{-1/2} \]

(\(D\) = derece köşegen matrisi.) Laplacian, bir fonksiyonun graf üzerindeki pürüzsüzlüğünün ölçüsüdür (\(h_i\) ile komşularının ortalaması farkı). Şekil 14.2 bunu iki topluluklu bir grafta GERÇEK rakamla gösterir: yavaş-değişen (pürüzsüz) bir sinyalde kuadratik form \(h^\top \Delta h\) küçük çıkar, komşular arasında zıt işaret alan (salınan) bir sinyalde büyük çıkar. Özayrışımı (\(\Delta = \Phi \Lambda \Phi^\top\)) graf Fourier fonksiyonlarını (özvektörler \(\Phi\)) ve spektrumu (özdeğerler \(\Lambda\)) verir. Şekil 14.3 bu modları bir yol grafında resmeder: en küçük özdeğere ait özvektör neredeyse sabittir (pürüzsüz mod), en büyük özdeğere ait olan komşular arası kutuplaşır (salınan mod); graf Fourier dönüşümü = fonksiyonu bu özvektörlere izdüşürmek.

  • Vanilla spektral GCN (Bruna, Zaremba, Szlam, LeCun 2014): spektral filtreyi backprop ile öğren. Sorun: uzaysal yerelleştirme garantisi yok, \(N\) parametre, \(O(N^2)\) (\(\Phi\) yoğun).
  • Pürüzsüz filtreler (spline): frekansta pürüzsüz = uzayda yerel (Heisenberg/Parseval) → \(K\) parametre. Ama hâlâ \(O(N^2)\).
  • ChebNet (Defferrard, Bresson, 2016): spektral filtre = Laplacian’ın polinomu (\(\sum_k w_k \Delta^k\)). \(\Delta^k\) tam K-hop yerelleştirilmiş; özyinelemeli \(x_k = \Delta \cdot x_{k-1}\). Şekil 14.4 bir “ısı kaynağını” alıp Laplacian’ı tekrar tekrar uygulayarak desteğin her adımda bir hop genişlediğini GERÇEK rakamla gösterir. Karmaşıklık = (kenar \(\times\) K) = seyrek grafikler için LİNEER — eigendecomposition gerekmez!

“every natural graph is usually sparse, because sparsity is structure.” — Bresson, 56:42

ChebNet “spektral” denilse de hesaplama tamamen uzaysaldır (Laplacian çarpımları). MNIST sanity-check: %99, lineer karmaşıklık.

Şekil 14.2: İki topluluklu grafta Laplacian pürüzsüzlüğü — GERÇEK kuadratik form. A = community_graph_adj() (8 düğüm, 2 topluluk + köprü). SOL ‘Pürüzsüz sinyal’: düğümler yavaş-değişen bir sinyalle (coolwarm) renklendirilir, komşular benzer, hᵀΔh KÜÇÜK. SAĞ ‘Salınan sinyal’: düğümler alternatif +1/−1 alır, komşular zıt, hᵀΔh BÜYÜK. Başlıklarda motordan gelen GERÇEK değerler yazılı. Sezgi: Δh = h_i ile komşu ortalaması farkı; pürüzsüz=komşular benzer→küçük, salınan=komşular zıt→büyük (Bresson 26:45).
Şekil 14.3: GERÇEK graf Fourier modları — yol grafı (path_graph_adj(12)) için Laplacian özvektörleri. SOL ‘Düşük frekans (lambda≈0, pürüzsüz)’: en küçük özdeğere ait özvektör neredeyse sabittir (işaret değişimi yok). ORTA ‘Yüksek frekans (lambda büyük, salınan)’: en büyük özdeğere ait özvektör komşular arası zıt işaret alır (kutuplaşma). SAĞ ‘Spektrum’: özdeğerler lambda artan sırada bar+çizgi. Sezgi: Laplacian özvektörleri = graf Fourier fonksiyonları (Bresson 30:03); düşük özdeğer=pürüzsüz mod, yüksek=salınan; graf Fourier dönüşümü = sinyalin özvektörlere izdüşümü.
Şekil 14.4: GERÇEK K-hop yerelleştirme (ChebNet) — Δᵏ ile ısı yayılımı. A = community_graph_adj(), kaynak = düğüm 0. 4 panel AYNI layout: her panelde düğümler |Δᵏe| büyüklüğüyle (Reds) renklendirilir, kaynak düğüm gold kenarla işaretli. Destek HER uygulamada bir hop genişler (panel başlıklarında GERÇEK aktif-düğüm sayısı). Sezgi: Δᵏ tam K-hop yerelleştirilmiş; ChebNet ΣwₖΔᵏ = K-hop filtre, lineer çünkü seyrek (Bresson 56:42).
İpucuBuilder Notu — Laplacian = Pürüzsüzlük, Fourier ve ChebNet K-hop

Geriye (Hafta 3 + 18.06): Fourier = Hafta 3 spektral görüş; Laplacian özayrışımı = 18.06 eigendecomposition; pürüzsüz↔︎yerel = belirsizlik ilkesi.

İleriye: Spektral GCN → graf sinyal işleme, spektral clustering; ChebNet polinomu = mesaj-geçişin erken hâli.

14.4 (Bresson — Konuk) Uzaysal GCN: Isotropic, Anisotropic ve Transformer = Tam-Bağlı GCN

Uzaysal yol template matching’i düğüm-yeniden-parametrizasyonuna değişmez kılar: tek şablon vektörü \(w\)’yi tüm komşularla eşleştir (komşuluk üzerinde topla). Matris formu: \(H^{l+1} = f(A H^l W)\).

  • Isotropic GCN (tüm komşulara aynı ağırlık): Vanilla GCN (Kipf-Welling 2016), GraphSAGE (merkez + komşuluk ayrı şablon), GIN (graf izomorfizmi). Komşuluk ortalaması; weight sharing; graf boyutundan bağımsız.
  • Anisotropic GCN (komşulara farklı ağırlık): MoNet (GMM), GAT (Velickovic-Bengio, komşuluk üzerinde softmax attention), GatedGCN (Bresson-Laurent 2017, kenar-geçidi + açık kenar öznitelikleri). Sosyal ağda “republican vs democrat”ı aynı işlememelisin → anizotropi.

Şekil 14.5 bu ayrımı GERÇEK rakamla gösterir: bir merkez düğüm + 4 komşu üzerinde, izotropik durumda tüm kenarlar eşit ağırlıklıdır (\(\eta = 1/d\), “bulanıklaştır”), anizotropik durumda kapı \(\eta_{ij} = \sigma(e_{ij})/\sum_k \sigma(e_{ik})\) her kenara farklı ağırlık verir (büyük öznitelikli kenar = kalın).

Dersin doruğu — Hafta 12’ye köprü:

“a standard transformer is actually a special case of graph convolutional nets when the graph is fully connected… transformers are set neural networks.” — Bresson, 1:19:39

GAT denkleminde komşuluğu tüm graf yaparsan (tam-bağlı), tam olarak Hafta 12’nin Transformer’ını elde edersin. Şekil 14.6 bu birliği dersin doruk figürü olarak iki panelde gösterir: solda seyrek graf (a = adjacency VERİLİ), sağda aynı düğümlerin tam-bağlı hâli (a = softmax HESAPLANAN), ortada “seyreklik ekseni”. Tam-bağlı olunca “graf” demek anlamsızlaşır (seyreklik = grafı ilginç yapan şey) — ona küme demek daha doğru. LeCun ekler: tüm öz-denetimli öğrenme bir graf yapısı (kelime eş-dizim, benzerlik grafiği) sömürür — “there is a very very strong connection between self-supervised learning and the graph view of a training set.” — LeCun, 1:43:49

Şekil 14.5: GERÇEK izotropik vs anizotropik komşu toplama (Residual Gated GCN, Canziani 27:53). Bir merkez düğüm i + 4 komşu (yıldız graf). SOL ‘İzotropik (eta = 1/d eşit)’: tüm kenarlar aynı kalınlık/renk, komşuluk ortalaması (Vanilla/GIN, ‘bulanıklaştır’). SAĞ ‘Anizotropik (kapı eta = sigma(e)/Σsigma(e))’: gate_eta(edge_feats) ile kenar kalınlıkları FARKLI; büyük kenar-özniteliği → kalın kenar (GAT/GatedGCN). Kenar üstündeki eta değerleri motordan GERÇEK. Sezgi: kapı eta backprop ile hangi komşunun önemli olduğunu öğrenir — Hafta 6 LSTM kapı mekanizmasının grafiksel akrabası.
Şekil 14.6: GCN ↔︎ Attention birliği: seyreklik = grafın kendisi (DERSİN DORUĞU). İki panel AYNI 6 düğüm, AYNI layout. SOL ‘GCN: seyrek graf (a=adjacency VERİLİ)’: birkaç kenarlı seyrek graf; a = adjacency, hesaplanmaz (Canziani 29:04). SAĞ ‘Transformer: tam-bağlı (a=softmax HESAPLANAN)’: aynı düğümler ama HER düğüm her düğüme bağlı (soluk yoğun kenarlar); a = softmax, küme→küme (Bresson 1:19:39). ORTADA çift-yönlü ‘SEYREKLİK ekseni’ oku. Sezgi: GCN = adjacency-verili attention (Canziani); Transformer = tam-bağlı GCN (Bresson), aynı operasyon, fark SEYREKLİK = grafın kendisi.
İpucuBuilder Notu — Isotropic vs Anisotropic ve Transformer = Tam-Bağlı GCN

Geriye (Hafta 12 + 6): Anizotropi gate = Hafta 6 LSTM gating + Hafta 12 attention softmax; Transformer = tam-bağlı GCN = Hafta 12; SSL-graf = Hafta 10 + 12 (word2vec=GNN).

İleriye: GAT/GatedGCN → Graph Transformers (post-2020); izotropi-anizotropi = GNN tasarımının ana sınıflandırması.

14.5 (İleriye Köprü) Graph Transformers, AlphaFold, Geometric DL (post-2020) — KURSTA YOK

Bresson (Mart 2020) GCN’i template matching + spektral teoriyle kurar; GAT/GatedGCN’i en güçlü anizotropik modeller olarak verir ve “düğümler için positional encoding nasıl bulunur = en önemli açık soru” der. Aşağıdakiler DLSP20’den sonra geldi, kursta YOKTUR:

Uyarıİleriye Köprü Notu (post-2020 — KURSTA YOK)
  • Graph Transformers (Graphormer 2021, GraphGPS 2022) ve Laplacian positional encoding — Bresson’un “düğüm positional encoding açık sorusunun” cevabı; “Transformer = tam-bağlı GCN” fikrinin olgunlaşması.
  • AlphaFold 2 (2021) — protein katlanmasını attention/graf ile çözer; Bresson’un “protein yapısı çok zor ama öğrenebiliriz” probleminin pratik zaferi.
  • Geometric Deep Learning (Bronstein ve ark., 2021) — CNN/GNN/Transformer’ı tek simetri/değişmezlik çerçevesinde birleştiren program.

Bunlar kurs terimi gibi eklenmez; “graf = yapı, attention = tam-bağlı graf” temelinin nereye vardığını göstermek için anılır.

İpucuBuilder Notu — Açık Soru: Düğüm Positional Encoding

Geriye (Hafta 12-13): Graph Transformers = bu haftanın anizotropik GAT + Hafta 12 Transformer’ının birleşimi; positional encoding = Bresson’un açık sorusu.

İleriye: Geometric DL, tüm derin öğrenmeyi “veri üzerindeki simetriler” diliyle birleştirir — CNN (öteleme), GNN (permütasyon), Transformer (küme).

14.6 Geçiş: Bresson’dan Canziani’ye

Bresson convolution’u grafa neden ve nasıl genellediğimizi (spektral + uzaysal) anlattı ve “Transformer = tam-bağlı GCN” köprüsünü kurdu. Şimdi Canziani aynı birliği ters yönden gösterir: geçen haftanın self-attention’ından başlayıp, attention katsayılarını adjacency matrisiyle değiştirerek GCN’i türetir — ve Residual Gated GCN’i DGL ile koddan kurar.

14.7 (Canziani) GCN = Attention, Ama Bağlantılar Verili

Canziani GCN literatürünü okuyunca şaşkınlığını paylaşır: bu zaten attention!

“graph convolutional networks… I read them and oh, it’s actually the same thing… it looks like attention to me.” — Canziani, 10:50

Hatırlatma (Hafta 12): self-attention’da \(h = X \cdot a\), ve \(a = \text{softmax}(\text{skorlar})\) sana kime bakacağını söyler (hesaplanır). GCN’de \(a\) = adjacency vektörüdür — kendine gelen kenar varsa 1, yoksa 0 (verilir, hesaplanmaz). Gerisi otomatik:

  • Dereceye böl (\(a\)’daki bir’lerin sayısı \(d\)): \(h\) ölçeği komşu sayısıyla büyümesin → komşuluk ortalaması.
  • Öğrenilen rotasyon \(W\) ekle, self-connection (\(U \cdot x\)) ekle, nonlinearity (ReLU) ekle.

\[ h_i = f\!\left(U x_i + \frac{1}{d_i} \sum_{j \in N(i)} W x_j\right) \]

Çok katman = yığ (her katman hâlâ bir kümedir, bağlantılar adjacency’den verili). Şekil 14.7 solda bu mesaj-geçiş katmanını (komşulardan gelen mesajları topla/ortala, self-connection ile güncelle) bir şema olarak, sağda ise yarı-denetimli düğüm sınıflandırmasını gösterir.

“the only difference between attention and this is that these connections are given to you by the adjacency matrix instead of being computed with attention.” — Canziani, 29:04

Şekil 14.7: GCN katmanı — mesaj geçişi ve yarı-denetimli düğüm sınıflandırması. SOL ‘Mesaj geçişi (bir merkez düğüm i)’: hᵢ = f(U·xᵢ + (1/dᵢ)Σ W·xⱼ) şeması — komşulardan mesaj (W·xⱼ) → topla/ortala (reduce 1/dᵢ Σ) → güncelle (U·xᵢ + ReLU) → yeni temsil hᵢ; DGL: message → reduce → update_all. SAĞ ‘Yarı-denetimli düğüm sınıf. (Karate Club sezgisi)’: iki topluluklu graf, yalnız 2 etiketli düğüm (0=eğitmen mavi, 7=yönetici turuncu), gerisi gri ‘?’; backprop etiketi tüm graf boyunca yayar → 2 kutba ayrışır. Sezgi: az etiket = yarı-denetimli (Canziani 58:30, Hafta 10 ruhu); graf-seviye = mean-pool→MLP, düğüm-seviye = logit/düğüm.
İpucuBuilder Notu — GCN = Verili Attention

Geriye (Hafta 12): \(h = X \cdot a\) = Hafta 12 attention; \(a\) = adjacency (verili) vs softmax (hesaplanan); dereceye bölme = \(\sqrt{d}\) ölçeklemesi akrabası; self-connection + ReLU = standart katman.

İleriye: “Attention = öğrenilen graf, GCN = verili graf” ekseni, tüm geometric DL’in birleştirici görüşü.

14.8 (Canziani) Residual Gated GCN: Kenar Geçidi (η) ile Anisotropy

Uyguladıkları model Residual Gated GCN (Bresson & Laurent): kenarların da öznitelikleri (\(e_j\)) vardır. Vanilla GCN tüm komşuları aynı işler (izotropik, “her şeyi bulanıklaştır”); buradaki kapı (gate) η bunu kırar — gelen her mesajı, o kenarın temsiline göre modüle eder:

“we’re not going to be just averaging all these incoming values, we’re going to be weighting them, modulating them based on what we think might be relevant.” — Canziani, 27:53

Kapı, kenarların sigmoid’inin normalize hâlidir (soft-attention’ın kenar versiyonu):

\[ \eta_{ij} = \frac{\sigma(e_{ij})}{\sum_{k \in N(i)} \sigma(e_{ik})} \]

Bu, izotropik ortalamayı anizotropik ağırlıklı toplama çevirir — hangi komşunun önemli olduğunu ağ backprop ile öğrenir. (Aynı kapı \(\eta_{ij}=\sigma(e_{ij})/\sum_k \sigma(e_{ik})\), daha önce Şekil 14.5’te merkez düğüm η kapısı olarak GERÇEK rakamla resmedilmişti: izotropik eşit-ağırlık vs anizotropik öğrenilen-ağırlık.) Residual + BatchNorm ile sarılır.

İpucuBuilder Notu — Kenar Kapısı η

Geriye (Hafta 6 + 11 + 12): Kapı η = Hafta 6 LSTM gating + Hafta 12 softmax attention; sigmoid normalize = soft argmax akrabası; residual+BatchNorm = Hafta 3 + 11; izotropik ortalama = bilgi yok etme (blur).

İleriye: Kenar-öznitelikli anizotropik GCN = molekül (bağ türü), trafik, öneri; GatedGCN benchmark’larda izotropikleri geçer.

14.9 (Canziani) DGL Kodu, Graf vs Düğüm Sınıflandırma (Semi-Supervised)

Kod DGL (Deep Graph Library) ile: mesaj fonksiyonu (kenar UDF — source/destination/edge öznitelikleri) + reduce fonksiyonu (düğüm UDF — gelen mesajların mailbox’ı) + update_all. Veri: MiniGCDataset — 8 graf sınıfı (circle, star, wheel, lollipop, hypercube, grid, clique, circular ladder). Görev: graf sınıflandırma (değişken düğüm sayısı). Düğüm özniteliklerini mean-pool → MLP → 8-yönlü sınıflandırıcı.

İki görev tipi (her ikisi Şekil 14.7’in sağ panelinde resmedildi):

  • Graf-seviye: tüm düğümleri ortala → MLP (graf başına tek etiket).
  • Düğüm-seviye: her köşe için logit; örn. Zachary Karate Club (eğitmen=düğüm 0, yönetici=düğüm 33, yalnız 2 etiket) → yarı-denetimli (semi-supervised) düğüm sınıflandırma: etiketleri graf yapısı boyunca yay; temsiller çekilip ayrışır.

“you only have a few labels… this is called semi-supervised learning.” — Canziani, 58:30

Canziani’nin son vurgusu Bresson’unkiyle aynı: seyreklik yapıdır — herkes herkese bağlıysa adjacency tüm-bir olur ve attention’a dönersin; seyrek olunca graf “kimin kiminle bağlı olduğunu” söyler.

İpucuBuilder Notu — Seyreklik = Yapı

Geriye (Hafta 10 + 12): Mean-pool = değişken-boyut çözümü (Hafta 12 küme); semi-supervised = Hafta 10 (az etiket, SSL); \(\sqrt{\text{boyut}}\) ölçekleme = Hafta 12 \(\sqrt{d}\).

İleriye: Düğüm/kenar/graf görevleri = GNN’in dört temel problemi; mesaj-geçiş = tüm modern GNN kütüphanelerinin (DGL, PyG) çekirdeği.

14.10 Bu Dersin Özeti

  1. Convolution’u grafa genelle (Bresson): template matching (uzaysal) — sıra/konum yok sorunu; convolution teoremi (spektral) — graf Fourier.
  2. Spektral GCN (Bresson): Laplacian \(\Delta = I - D^{-1/2}AD^{-1/2}\) (pürüzsüzlük); Fourier = özvektörler; ChebNet = Laplacian polinomu, K-hop, lineer (seyreklik = yapı).
  3. Uzaysal GCN (Bresson): isotropic (Vanilla/GraphSAGE/GIN) vs anisotropic (GAT/GatedGCN); Transformer = tam-bağlı GCN.
  4. GCN = attention (Canziani): \(h = X \cdot a\); \(a\) = adjacency (verili) vs softmax (hesaplanan); dereceye böl + self-connection + ReLU.
  5. Residual Gated GCN (Canziani): kenar geçidi \(\eta = \sigma(e)/\sum \sigma(e)\) → anizotropi; izotropik ortalamayı ağırlıklı toplama çevirir.
  6. DGL + görevler (Canziani): mesaj/reduce/update_all; graf sınıflandırma (mean-pool→MLP); düğüm sınıflandırma (Karate Club, semi-supervised).
  7. Post-2020 (KURSTA YOK): Graph Transformers + Laplacian PE, AlphaFold 2, Geometric DL.
ÖnemliTek Bir Cümle

Graph convolution, ConvNet’in locality/stationarity/compositionality varsayımlarını düzensiz grafiklere taşır — ya template matching (uzaysal GCN: izotropik/anizotropik) ya da spektral teori (Laplacian/Fourier, ChebNet, lineer çünkü graflar seyrektir) ile; ve özünde Hafta 12’nin attention’ıyla aynı operasyondur: Canziani’ye göre GCN = adjacency-verili attention, Bresson’a göre Transformer = tam-bağlı GCN — ikisini ayıran tek şey seyrekliktir (grafın kendisi).

14.11 Kontrol Soruları

Cevap: (1) Template matching (uzaysal): kernel’i kaydır, nokta çarpımı → uzaysal GCN. (2) Convolution teoremi (spektral): Fourier uzayında nokta çarpımı → spektral GCN. Template matching grafta doğrudan çalışmaz çünkü düğümlerin sırası/konumu yoktur (“yukarı/aşağı/sağ/sol” yok, Bresson 22:01) — hangi komşunun şablonun hangi hücresine karşılık geldiği belirsiz; ayrıca komşu sayısı değişken. Çözüm: tek şablon \(w\) (yeniden-parametrizasyona değişmez) + komşuluk üzerinde toplama.

Cevap: Normalize Laplacian \(\Delta = I - D^{-1/2}AD^{-1/2}\); bir fonksiyonun graf üzerindeki pürüzsüzlüğünü ölçer (\(h_i\) ile komşu ortalaması farkı). Özayrışımı (\(\Delta = \Phi\Lambda\Phi^\top\)) graf Fourier fonksiyonlarını (özvektörler) ve spektrumu verir. Vanilla spektral GCN \(O(N^2)\) (\(\Phi\) yoğun). ChebNet filtreyi Laplacian’ın polinomu (\(\sum_k w_k \Delta^k\)) olarak yazar: \(\Delta^k\) tam K-hop yerelleştirilmiş, özyinelemeli \(x_k = \Delta \cdot x_{k-1}\); karmaşıklık = kenar \(\times\) K. Graflar seyrek olduğundan (kenar \(\approx\) sabit\(\times N\)) bu lineerdir — eigendecomposition hiç gerekmez (Bresson 56:42).

Cevap: Bir GAT denkleminde komşuluğu tüm graf yaparsan (her düğüm her düğüme = tam-bağlı), Hafta 12’nin Transformer’ını elde edersin (Bresson 1:19:39). Tersinden Canziani: self-attention’da \(h = X \cdot a\), \(a\) hesaplanır; GCN’de \(a\) = adjacency (verili, Canziani 29:04). İkisi aynı operasyon — fark seyrekliktir: GCN seyrek (graf verili), Transformer tam-bağlı (her şey her şeye, “küme”). Tam-bağlı olunca seyreklik kaybolur, ona graf değil küme demek doğrudur.

Cevap: Isotropic GCN tüm komşulara aynı ağırlık (komşuluk ortalaması — Vanilla/GraphSAGE/GIN); “her şeyi bulanıklaştırmak” gibi. Anisotropic komşulara farklı ağırlık (GAT, GatedGCN) — sosyal ağda farklı grupları aynı işlememek için. Residual Gated GCN’in kapısı \(\eta = \sigma(e_{ij})/\sum \sigma(e_{ik})\) (kenar temsillerinin normalize sigmoid’i, Canziani 27:53), gelen mesajı kenara göre modüle eder → izotropik ortalamayı anizotropik ağırlıklı toplama çevirir; hangi komşunun önemli olduğunu backprop öğrenir. Hafta 6 LSTM gating + Hafta 12 attention akrabası.

Cevap: Graf-seviye: tüm düğümleri mean-pool → MLP → graf başına tek etiket (örn. MiniGCD 8 graf tipi). Düğüm-seviye: her köşe için ayrı logit (mean-pool yok) → düğüm başına etiket. Karate Club yarı-denetimlidir çünkü yalnız 2 etiket var (eğitmen=0, yönetici=33); kayıp yalnız bu iki düğümde ama backprop bilgiyi tüm graf yapısı boyunca yayar (Canziani 58:30) → etiketsiz düğümlerin temsilleri iki kutba çekilip ayrışır. Hafta 10’un “az etiketle öğren” ruhu.

14.12 Egzersizler

Egzersiz 1 (GCN = attention). Hafta 12 self-attention’ı (\(h = X \cdot a\), \(a = \text{softmax}(X^\top x)\)) yaz; sonra \(a\)’yı adjacency vektörüyle (1/0) değiştirip dereceye bölerek vanilla GCN’i türet. “Hesaplanan \(a\)” ile “verili \(a\)” farkı, GCN ile Transformer’ı nasıl ayırır?

import numpy as np

# Hafta 12 self-attention: a HESAPLANIR (softmax skorlari)
X = np.array([[1.0, 0.0],   # x1
              [0.0, 1.0],   # x2
              [0.8, 0.6]])  # x3
x = X[0]                    # sorgu = x1

def softmax(z):
    e = np.exp(z - z.max())
    return e / e.sum()

a_attn = softmax(X @ x)             # HESAPLANAN attention katsayilari
h_attn = a_attn @ X                 # h = X^T a (linear kombinasyon)

# GCN: a VERILIR (adjacency satiri), sonra dereceye bolunur (komsuluk ortalamasi)
a_adj = np.array([1.0, 1.0, 0.0])  # x1'in komsulari: x2 var, x3 yok (VERILI)
d = a_adj.sum()                     # derece
h_gcn = (a_adj / d) @ X             # komsuluk ortalamasi
print("attention h:", np.round(h_attn, 3), " (a HESAPLANAN)")
print("gcn h      :", np.round(h_gcn, 3), " (a VERILI = adjacency)")
# Fark: attention a'yi softmax ile HESAPLAR (kime bakacagini ogrenir);
# GCN a'yi adjacency'den ALIR (kim kime bagli VERILI). Transformer = tam-bagli GCN.

Egzersiz 2 (Laplacian pürüzsüzlük). Küçük grafta (5 düğüm) \(\Delta = I - D^{-1/2}AD^{-1/2}\)’yi elle hesapla. Sabit ve hızlı salınan sinyale uygula; pürüzsüz sinyalde \(\Delta h\) küçük, salınanda büyük olduğunu göster. Neden “pürüzsüzlük ölçüsü”?

import numpy as np

# 5 dugumlu yol grafi (zincir 0-1-2-3-4)
A = np.zeros((5, 5))
for i in range(4):
    A[i, i + 1] = A[i + 1, i] = 1.0
d = A.sum(1)
Dinv = np.diag(1.0 / np.sqrt(d))
Delta = np.eye(5) - Dinv @ A @ Dinv   # normalize Laplacian

h_smooth = np.array([1.0, 1.0, 1.0, 1.0, 1.0])   # sabit (puruzsuz)
h_osc    = np.array([1.0, -1.0, 1.0, -1.0, 1.0]) # salinan
print("puruzsuz hDh:", round(float(h_smooth @ Delta @ h_smooth), 3))  # ~0 (kucuk)
print("salinan  hDh:", round(float(h_osc @ Delta @ h_osc), 3))        # BUYUK
# Dh = h_i ile komsu ortalamasi farki; puruzsuzde komsular benzer -> kucuk,
# salinada komsular zit -> buyuk => "puruzsuzluk olcusu".

Egzersiz 3 (K-hop yerelleştirme). Bir düğüme “ısı kaynağı” (1, gerisi 0) koy. \(\Delta\)’yı 1/2/3 kez uygula; desteğin her seferinde bir hop genişlediğini göster. ChebNet’in \(\sum_k w_k \Delta^k\)’sı neden “tam K-hop yerelleştirilmiş”?

import numpy as np

# 6 dugumlu yol grafi, isi kaynagi = dugum 0
A = np.zeros((6, 6))
for i in range(5):
    A[i, i + 1] = A[i + 1, i] = 1.0
d = A.sum(1)
Delta = np.eye(6) - np.diag(1/np.sqrt(d)) @ A @ np.diag(1/np.sqrt(d))

e = np.zeros(6); e[0] = 1.0           # isi kaynagi (sadece dugum 0)
cur = e.copy()
for k in range(4):
    aktif = int(np.sum(np.abs(cur) > 1e-9))
    print(f"k={k}: destek {aktif} dugum")   # destek her adimda bir hop genisler
    cur = Delta @ cur
# Delta^k bir dugumden tam k-hop uzaktaki dugumlere erisir -> Sum w_k Delta^k = K-hop FILTRE.
# Seyrek grafta (kenar ~ sabit*N) maliyet kenar*K = LINEER (eigendecomposition yok).

Egzersiz 4 (Anisotropy gate). Bir düğümün 3 komşusu + kenar öznitelikleri olsun. \(\eta = \sigma(e)/\sum \sigma(e)\) kapısını hesapla; büyük öznitelikli kenarın katkısının nasıl arttığını göster. İzotropik (\(\eta = 1/d\)) ile karşılaştır — anizotropi sosyal ağda neden gerekli?

import numpy as np

edge_feats = np.array([2.0, 0.0, -2.0])     # 3 komsu, farkli kenar oznitelikleri
sig = 1.0 / (1.0 + np.exp(-edge_feats))     # sigmoid
eta = sig / sig.sum()                       # ANIZOTROPIK kapi
iso = np.full(3, 1.0 / 3)                   # IZOTROPIK (1/d esit)
print("anizotropik eta:", np.round(eta, 3))  # buyuk oznitelik -> buyuk agirlik
print("izotropik   eta:", np.round(iso, 3))  # hepsi esit (bulanikilastir)
# Buyuk e_ij olan komsu daha cok katkida bulunur (kapi onu "secer").
# Sosyal agda: farkli gruplari (republican/democrat) AYNI islememek icin anizotropi gerekli.

Egzersiz 5 (Hafta 14 habercisi — Yapılandırılmış Tahmin). Hafta 14’te LeCun (son dersi) yapılandırılmış tahmini (structured prediction), enerji-tabanlı faktör grafiklerini, dizi etiketlemeyi; Canziani düzenlileştirmeyi anlatacak. (a) GCN’in “düğüm başına logit + graf yapısı boyunca yayma” fikrini, dizi etiketlemedeki “her token’a etiket + komşuluk tutarlılığı” ile ilişkilendir. (b) Bir CRF/faktör grafiği, bu haftanın graf yapısını Hafta 7-9 EBM enerjisiyle nasıl birleştirir?

import numpy as np

# (a) GCN dugum-seviye: her dugum (token) icin logit + graf (komsuluk) tutarliligi.
#     Dizi etiketleme = ZINCIR graf: her token bir dugum, komsu = yan token.
tokens = ["isim", "fiil", "isim", "edat"]
A_zincir = np.array([[0, 1, 0, 0],     # her token sadece yan tokenlara bagli
                     [1, 0, 1, 0],
                     [0, 1, 0, 1],
                     [0, 0, 1, 0]])
print("dizi etiketleme = zincir graf, komsu sayisi:", A_zincir.sum(1))
# (b) CRF/faktor grafigi: unary enerji (her token-etiket) + pairwise enerji (komsu cift).
#     Hafta 7-9 EBM: dusuk enerji = uyumlu (token+etiket+komsuluk); cikarim = enerji min.
#     GCN graf yapisi = faktor grafiginin baglanti yapisi; Hafta 14 bunu EBM ile birlestirir.

14.13 Sonraki Ders İçin Hazırlık

UyarıSonraki Hafta — H14: Yapılandırılmış Tahmin ve Düzenlileştirme (LeCun SON ders + Canziani)

Graflardan yapılandırılmış tahmine geçiyoruz. Bu hafta convolution’u grafa genellemenin iki yolunu (template matching uzaysal + convolution teoremi spektral), Laplacian/Fourier/ChebNet’i, izotropik-anizotropik GCN’i ve “Transformer = tam-bağlı GCN” köprüsünü Bresson’la; “GCN = adjacency-verili attention”ı, Residual Gated GCN’i ve DGL ile graf/düğüm sınıflandırmayı Canziani’yle kapattık. Hafta 14’te LeCun son dersini verecek: yapılandırılmış tahmin, enerji-tabanlı faktör grafikleri, dizi etiketleme; Canziani overfitting ve düzenlileştirmeyi (son practicum) anlatacak. Egzersiz 1 (GCN=attention) ve Egzersiz 5 (graf → yapılandırılmış tahmin) tam bu derse hazırlar.

Hafta 14: Yapılandırılmış Tahmin (Structured Prediction) ve Düzenlileştirme — LeCun (Lecture, son dersi) + Canziani (Practicum)

Hafta 14’te LeCun son dersini verecek: yapılandırılmış tahmin, enerji-tabanlı faktör grafikleri, dizi etiketleme; Canziani overfitting ve düzenlileştirmeyi (son practicum) anlatacak.

Hafta 14 öncesi yapılacak:

  • Egzersiz 1 (GCN=attention) + Egzersiz 5 (graf → yapılandırılmış tahmin) çöz.
  • “GCN = adjacency-verili attention” ve “Transformer = tam-bağlı GCN” cümlelerini kendi sözcüklerinle yaz.
  • Hafta 7-9 EBM enerjisini hatırla — Hafta 14 faktör grafikleri o enerjiyi graf yapısıyla birleştirir.

14.14 Anahtar Kavramlar (Cheat Sheet)

Kavram Tanım Hoca / timestamp
ConvNet 3 varsayım locality + stationarity + compositionality Bresson 2:54
Template matching grafta sorun Düğüm sırası/konumu yok; değişken komşu Bresson 22:01
Graf Laplacian Δ \(I - D^{-1/2}AD^{-1/2}\); pürüzsüzlük ölçüsü Bresson 26:45
Graf Fourier Laplacian özvektörleri = Fourier fonksiyonları Bresson 30:03
ChebNet Laplacian polinomu; K-hop; lineer (seyrek) Bresson 53:04
Isotropic GCN Tüm komşu aynı ağırlık (Vanilla/GraphSAGE/GIN) Bresson 1:09
Anisotropic GCN Komşulara farklı ağırlık (GAT/GatedGCN) Bresson 1:17
Transformer = tam-bağlı GCN Komşuluk = tüm graf → küme/attention Bresson 1:19
GCN = attention \(h = X \cdot a\); \(a\) = adjacency (verili) Canziani 29:04
Gated GCN kapısı η \(\sigma(e)/\sum \sigma(e)\); izotropik → anizotropik Canziani 27:53
DGL mesaj/reduce edge UDF + node UDF + update_all Canziani 40:18
Graf vs düğüm sınıflandırma mean-pool→MLP vs logit/düğüm (semi-supervised) Canziani 58:30

14.15 ML Builder Bağlantıları

Geriye köprüler:

  1. ConvNet 3 varsayım → Hafta 3 (doğal sinyaller: locality/stationarity/compositionality).
  2. Laplacian / Fourier / eigendecomposition → Hafta 3 (spektral) + 18.06 lineer cebir.
  3. GCN = attention → Hafta 12 (self-attention; \(a\) verili vs hesaplanan).
  4. Gate η / residual / BatchNorm → Hafta 6 (LSTM gate) + Hafta 3/11.
  5. Semi-supervised düğüm sınıflandırma → Hafta 10 (az etiket, SSL).

İleriye köprüler:

  1. Anisotropic GCN + edge featuresGraph Transformers + Laplacian PE (post-2020, KURSTA YOK).
  2. GCN protein/molekülAlphaFold 2 (post-2020).
  3. Transformer = tam-bağlı GCN → Geometric Deep Learning birleştirici program.
  4. Mesaj-geçiş → DGL/PyG; tüm modern GNN kütüphaneleri.
ÖnemliBu dersten tek bir şey alıp gideceksen

Graph convolution, ConvNet’i (locality/stationarity/compositionality) düzensiz grafiklere taşımaktır — ya template matching (uzaysal) ya da Laplacian/Fourier (spektral); ve gerçek graflar seyrek olduğundan ChebNet (Laplacian polinomu) bunu lineer zamanda yapar. Ama asıl içgörü birleştiricidir: GCN ve attention aynı operasyondur. Canziani’ye göre GCN = self-attention, ama attention katsayıları hesaplanmaz, adjacency’den verilir; Bresson’a göre Transformer = tam-bağlı bir graf üzerinde GCN. İkisini ayıran tek şey seyrekliktir — yani grafın kendisi; seyreklik yapıdır, yapı kimin kiminle bağlı olduğunu söyler. Bu temelin post-2020 zirvesi (Graph Transformers, AlphaFold, Geometric DL) kursta yoktur ama bu haftanın tohumlarının doğrudan ürünüdür.