{"notes":[{"id":"graph-learning/gcn","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"GCN","subtitle":"一つのパラメーターで足りる？","author":"Z. Yuan","paperDate":"2016-09-09","publishedOn":"2023-10-01","world":"external/gcn","paperTitle":"Semi-Supervised Classification with Graph Convolutional Networks","paperUrl":"https://arxiv.org/abs/1609.02907","bibliography":{"title":"Semi-Supervised Classification with Graph Convolutional Networks","authors":["Thomas N. Kipf","Max Welling"],"url":"https://arxiv.org/abs/1609.02907","pdfUrl":"https://arxiv.org/pdf/1609.02907v4","codeUrl":"https://github.com/tkipf/gcn","preprint":{"id":"1609.02907","submittedOn":"2016-09-09","url":"https://arxiv.org/abs/1609.02907"},"publication":{"venue":"ICLR","year":2017,"kind":"conference","url":"https://arxiv.org/abs/1609.02907"},"citation":"@misc{graphlearninggcn2016,\n  title = {{Semi-Supervised Classification with Graph Convolutional Networks}},\n  author = {Thomas N. Kipf and Max Welling},\n  year = {2016},\n  eprint = {1609.02907},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1609.02907}\n}\n","citationPath":"/content/papers/citations/graph-learning/gcn.43058ec3e77e.bib"},"thumbnail":{"src":"/content/papers/assets/ded600c9ca8f4eda09d39ffb16b3c9b0ec730780063e55948b29924d00f14794.png","width":1122,"height":400},"locale":"ja","path":"/content/papers/ja/graph-learning/gcn.f7c10b90f2d7.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"グラフを正則化項にする","text":"グラフを正則化項にする","depth":3},{"id":"解決方法","text":"解決方法","depth":2},{"id":"スペクトル領域から削っていく","text":"スペクトル領域から削っていく","depth":3},{"id":"gcn-の一層","text":"GCN の一層","depth":3},{"id":"二層で十分","text":"二層で十分","depth":3},{"id":"議論","text":"議論","depth":2},{"id":"実験設定","text":"実験設定","depth":3},{"id":"主な結果","text":"主な結果","depth":3},{"id":"どの伝播がよいか","text":"どの伝播がよいか","depth":3},{"id":"もっと深くすると","text":"もっと深くすると","depth":3},{"id":"wl-アルゴリズムとの関係","text":"WL アルゴリズムとの関係","depth":3},{"id":"四日後の評論","text":"四日後の評論","depth":3},{"id":"論文が挙げる制約","text":"論文が挙げる制約","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/spectral-networks","relation":"referenced","topic":""},{"id":"graph-learning/chebnet","relation":"referenced","topic":""}]},{"id":"graph-learning/spectral-networks","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Spectral Networks","subtitle":"スペクトル領域へ迂回","author":"Z. Yuan","paperDate":"2013-12-21","publishedOn":"2023-09-06","paperTitle":"Spectral Networks and Locally Connected Networks on Graphs","paperUrl":"https://arxiv.org/abs/1312.6203","bibliography":{"title":"Spectral Networks and Locally Connected Networks on Graphs","authors":["Joan Bruna","Wojciech Zaremba","Arthur Szlam","Yann LeCun"],"url":"https://arxiv.org/abs/1312.6203","pdfUrl":"https://arxiv.org/pdf/1312.6203v3","codeUrl":null,"preprint":{"id":"1312.6203","submittedOn":"2013-12-21","url":"https://arxiv.org/abs/1312.6203"},"publication":{"venue":"ICLR","year":2014,"kind":"conference","url":"https://iclr.cc/archive/2014/conference-proceedings/"},"citation":"@misc{graphlearningspectralnetworks2013,\n  title = {{Spectral Networks and Locally Connected Networks on Graphs}},\n  author = {Joan Bruna and Wojciech Zaremba and Arthur Szlam and Yann LeCun},\n  year = {2013},\n  eprint = {1312.6203},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1312.6203}\n}\n","citationPath":"/content/papers/citations/graph-learning/spectral-networks.ea286632c50d.bib"},"thumbnail":{"src":"/content/papers/assets/81c18ce1b25b0675fa18b9922bab2a4316a1582ec2824475056e04b90cda9baa.png","width":1210,"height":448},"locale":"ja","path":"/content/papers/ja/graph-learning/spectral-networks.0b6c9dce8e05.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"解決方法","text":"解決方法","depth":2},{"id":"空間での構成局所接続とクラスタリング","text":"空間での構成：局所接続とクラスタリング","depth":3},{"id":"スペクトルでの構成ラプラシアンの固有ベクトル","text":"スペクトルでの構成：ラプラシアンの固有ベクトル","depth":3},{"id":"cnn-を再発見する","text":"CNN を再発見する","depth":3},{"id":"滑らかな係数局所的なフィルター","text":"滑らかな係数、局所的なフィルター","depth":3},{"id":"議論","text":"議論","depth":2},{"id":"サブサンプリングした-mnist","text":"サブサンプリングした MNIST","depth":3},{"id":"球面上の-mnist","text":"球面上の MNIST","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/chebnet","relation":"referenced","topic":""},{"id":"graph-learning/gcn","relation":"referenced","topic":""}]},{"id":"graph-learning/chebnet","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"ChebNet","subtitle":"多項式で十分","author":"Z. Yuan","paperDate":"2016-06-30","publishedOn":"2023-09-16","world":"external/chebnet","paperTitle":"Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering","paperUrl":"https://arxiv.org/abs/1606.09375","bibliography":{"title":"Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering","authors":["Michaël Defferrard","Xavier Bresson","Pierre Vandergheynst"],"url":"https://arxiv.org/abs/1606.09375","pdfUrl":"https://arxiv.org/pdf/1606.09375v3","codeUrl":"https://github.com/mdeff/cnn_graph","preprint":{"id":"1606.09375","submittedOn":"2016-06-30","url":"https://arxiv.org/abs/1606.09375"},"publication":{"venue":"NeurIPS","year":2016,"kind":"conference","url":"https://papers.nips.cc/paper_files/paper/2016/hash/04df4d434d481c5bb723be1b6df1ee65-Abstract.html"},"citation":"@misc{graphlearningchebnet2016,\n  title = {{Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering}},\n  author = {Michaël Defferrard and Xavier Bresson and Pierre Vandergheynst},\n  year = {2016},\n  eprint = {1606.09375},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1606.09375}\n}\n","citationPath":"/content/papers/citations/graph-learning/chebnet.52e0fac25946.bib"},"thumbnail":{"src":"/content/papers/assets/f924fc7fdf6829dd352c02c0062d56fef579382aee9d8de9a76c29aa312325ef.png","width":1144,"height":484},"locale":"ja","path":"/content/papers/ja/graph-learning/chebnet.45a88fa611f4.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"空間では平行移動を定義できない","text":"空間では平行移動を定義できない","depth":3},{"id":"スペクトルでは計算が重い","text":"スペクトルでは計算が重い","depth":3},{"id":"解決方法","text":"解決方法","depth":2},{"id":"多項式で局所性を得る","text":"多項式で局所性を得る","depth":3},{"id":"chebyshev-の再帰で速くする","text":"Chebyshev の再帰で速くする","depth":3},{"id":"グラフ上のプーリング","text":"グラフ上のプーリング","depth":3},{"id":"議論","text":"議論","depth":2},{"id":"まず格子で確かめる","text":"まず格子で確かめる","depth":3},{"id":"三つのフィルターを比べる","text":"三つのフィルターを比べる","depth":3},{"id":"よいグラフを作れているか","text":"よいグラフを作れているか","depth":3},{"id":"その後","text":"その後","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/spectral-networks","relation":"referenced","topic":""},{"id":"graph-learning/gcn","relation":"referenced","topic":""}]}],"text":"手元には 2,708 篇の論文があり、それぞれに bag-of-words 特徴量、論文間には 5,429 件の引用関係があります。主題が付いているのは、七主題それぞれ 20 篇、計 140 篇だけ。残りはモデルに予測させます。\n\nCora データセットの半教師ありノード分類です。互いを引用する論文は同じ主題だろう、という直感を、どうモデルに入れるかが問題です。\n\nアムステルダム大学の Thomas Kipf と Max Welling の答えは短いものでした。各層で自分と隣接ノードの特徴量を固定比率で加重平均し、重み行列を掛ける。二層重ねて終わりです。Cora では 81.5% を出し、従来の最高 75.7% を上回りました。\n\nGCN と名付けられたこのモデルは、のちにほとんどグラフニューラルネットワークの代名詞になりました。\n\n## 問題設定\n\n### グラフを正則化項にする\n\nGCN 以前には、グラフを損失関数に入れる方法が一般的でした。\n\n$$\n\\mathcal{L}=\\mathcal{L}_0+\\lambda\\,\\mathcal{L}_{\\text{reg}},\\qquad\n\\mathcal{L}_{\\text{reg}}=\\sum_{i,j}A_{ij}\\left\\|f(X_i)-f(X_j)\\right\\|^2\n$$\n\n$\\mathcal{L}_0$ はラベル付きノードの教師あり損失で、$\\mathcal{L}_{\\text{reg}}$ は接続ノードの出力が離れすぎると罰則を与えます。label propagation や manifold regularization がこの種類です。\n\n著者は、「エッジがあれば似ている」と仮定している点を指摘します。引用には確かにそうした場合が多いものの、エッジはほかの情報も持ち得ます。類似度に固定すると、学べる内容を制約してしまいます。\n\nDeepWalk のようなグラフ埋め込みもあります。ランダムウォークでノードのベクトルを学び、それから分類器を訓練します。別々に最適化するため、途中の調整が悪ければ最後の分類器では取り返せません。\n\n目指すのは、グラフを直接入力する $f(X, A)$ です。$X$ はノード特徴量、$A$ は隣接行列。損失はラベル付きノードだけで計算し、勾配が $A$ を介してラベルなしノードにも流れ、その表現も一緒に学びます。\n\n## 解決方法\n\n### スペクトル領域から削っていく\n\n導出はスペクトルグラフ畳み込みから始まります。正規化ラプラシアン $L=I_N-D^{-1/2}AD^{-1/2}$ は $U\\Lambda U^\\top$ と分解でき、$U$ の各列がグラフ上の一つの「周波数」です。ノード信号 $x$ の畳み込みは、スペクトル領域に移し、フィルターを掛け、元に戻します。\n\n$$\ng_\\theta\\star x=U g_\\theta U^\\top x\n$$\n\nこれは高コストです。$U$ を一度掛けるだけで $O(N^2)$、大規模グラフでは固有値分解だけでも重すぎます。先行する ChebNet はフィルターを $K$ 次の Chebyshev 多項式で近似し、固有値分解を省き、$K$ ステップ以内だけを見る形にしました。\n\n\n> [!TIP]\n> \n> スペクトルグラフ畳み込みの出発点と ChebNet の多項式フィルターは、こちらのノートをどうぞ。\n> \n> - **[[13.12] Spectral Networks：スペクトル領域へ迂回](/blog/papers/graph-learning/spectral-networks)**\n> - **[[16.06] ChebNet：多項式で十分](/blog/papers/graph-learning/chebnet)**\n\n\nKipf と Welling は、ここからさらに三回削ります。\n\nまず、多項式を一次、$K=1$ までにします。一層は一歩だけを見て、遠くは層を重ねて見ます。SNS や引用ネットワークは次数分布が広く、柔軟なフィルターほど局所構造に過学習しやすい、という理由です。\n\n次に、最大固有値 $\\lambda_{\\max}$ を 2 と見積もり、スケールの違いはネットワークのパラメーターに適応させます。フィルターはこうなります。\n\n$$\ng_{\\theta'}\\star x\\approx\\theta'_0x-\\theta'_1D^{-\\frac12}AD^{-\\frac12}x\n$$\n\n最後に、二つのパラメーターを $\\theta=\\theta'_0=-\\theta'_1$ として一つに結びます。\n\n$$\ng_\\theta\\star x\\approx\\theta\\left(I_N+D^{-\\frac12}AD^{-\\frac12}\\right)x\n$$\n\n括弧内の行列の固有値は $[0,2]$ に入ります。層を重ねると最大の 2 により値が増幅し、数値不安定や勾配爆発・消失が起こり得ます。そこで **renormalization trick** を使い、自己ループ $\\tilde A=A+I_N$ を足し、新しい次数 $\\tilde D_{ii}=\\sum_j\\tilde A_{ij}$ で正規化します。\n\n$$\nI_N+D^{-\\frac12}AD^{-\\frac12}\\;\\rightarrow\\;\\tilde D^{-\\frac12}\\tilde A\\tilde D^{-\\frac12}\n$$\n\n五ノードの小さなグラフで、二つの行列の固有値を比べましょう。\n\n```python\nimport numpy as np\nnp.set_printoptions(precision=2, suppress=True)\n\n# 五論文の引用を無向化：0-1、0-2、1-2、2-3、3-4\nA = np.zeros((5, 5))\nfor i, j in [(0, 1), (0, 2), (1, 2), (2, 3), (3, 4)]:\n    A[i, j] = A[j, i] = 1\n\nd = A.sum(1)\nS = np.eye(5) + A / np.sqrt(np.outer(d, d))     # 式 7：I + D^-1/2 A D^-1/2\nA_t = A + np.eye(5)                             # 自己ループを追加\nd_t = A_t.sum(1)\nA_hat = A_t / np.sqrt(np.outer(d_t, d_t))       # 再正規化：D̃^-1/2 Ã D̃^-1/2\n\nprint(\"式 7 の固有値:\", np.linalg.eigvalsh(S))\nprint(\"Â の固有値:   \", np.linalg.eigvalsh(A_hat))\n```\n\n```text\n式 7 の固有値: [0.14 0.5  0.7  1.65 2.  ]\nÂ の固有値:    [-0.21  0.    0.17  0.79  1.  ]\n```\n\n式 7 の最大固有値は 2 で、十回作用させると対応する成分を千倍以上にします。$\\hat A$ の固有値はすべて 1 以下で、安定して重ねられます。\n\n### GCN の一層\n\n単一信号を、各ノード $C$ 次元の特徴量 $X\\in\\mathbb{R}^{N\\times C}$ に広げ、$F$ 個のフィルターを使うと、こうなります。\n\n$$\nZ=\\hat AX\\Theta,\\qquad \\hat A=\\tilde D^{-\\frac12}\\tilde A\\tilde D^{-\\frac12}\n$$\n\n$\\Theta\\in\\mathbb{R}^{C\\times F}$ が学習可能な重みです。非線形性を加えて層を重ねると、論文の式 2 になります。\n\n$$\nH^{(l+1)}=\\sigma\\left(\\hat AH^{(l)}W^{(l)}\\right)\n$$\n\nノードごとに見れば、$\\hat A_{ij}=1/\\sqrt{\\tilde d_i\\tilde d_j}$ です。$i$ が隣の $j$ から受け取る取り分は両者の次数だけで決まり、全隣接ノードが同じ $W$ を使います。$\\hat AX$ は疎行列と密行列の積で計算でき、一層は $O(|E|FC)$、エッジ数に線形です。\n\n### 二層で十分\n\n半教師あり分類では、論文は二層だけを重ねます。\n\n$$\nZ=f(X,A)=\\mathrm{softmax}\\left(\\hat A\\,\\mathrm{ReLU}\\left(\\hat AXW^{(0)}\\right)W^{(1)}\\right)\n$$\n\n$\\hat A$ は最初に一度計算します。損失は交差エントロピーで、ラベル付きノードだけに適用します。\n\n[![原論文 Figure 1：左は多層 GCN。入力層は C チャネルで、X1〜X4 はグラフのエッジでつながり、隠れ層を通り F 特徴マップを出す。一部のノードにラベル Y がある。右は Cora 上の二層 GCN の隠れ層出力の t-SNE で、主題ごとの色がそれぞれまとまっている。](/content/papers/assets/ded600c9ca8f4eda09d39ffb16b3c9b0ec730780063e55948b29924d00f14794.png)](/content/papers/assets/ded600c9ca8f4eda09d39ffb16b3c9b0ec730780063e55948b29924d00f14794.png)\n\n*原論文 Figure 1（Kipf、Welling）、[**PDF 4 ページ**](https://arxiv.org/pdf/1609.02907v4#page=4)より。原キャプションは省略。*\n\n左の要点は、同じグラフを全層で使い、特徴量だけが変わることです。右は Cora のラベル 5% で訓練した隠れ層の t-SNE で、七色がすでに集団になっています。\n\n先ほどの小さなグラフで、二層 GCN の順伝播を一回計算します。入力は各ノード 4 次元、隠れ層は 3 次元、2 クラスで、ラベルがあるのは 0 番と 4 番だけです。\n\n```python\nrng = np.random.default_rng(0)\nX = rng.random((5, 4))            # 五ノード、各 4 次元特徴量（C = 4）\nW0 = rng.normal(size=(4, 3))      # 入力 → 隠れ層（H = 3）\nW1 = rng.normal(size=(3, 2))      # 隠れ層 → 2 クラス（F = 2）\n\nH1 = np.maximum(A_hat @ X @ W0, 0)                     # ReLU(ÂXW0)\nlogits = A_hat @ H1 @ W1                               # Â H W1\nZ = np.exp(logits) / np.exp(logits).sum(1, keepdims=True)\nprint(\"H1:\", H1.shape, \" Z:\", Z.shape)\nprint(Z)\n\nlabeled, y = [0, 4], np.array([0, 1])                  # 0 番と 4 番だけにラベル\nprint(\"loss:\", -np.log(Z[labeled, y]).mean().round(3))\n```\n\n```text\nH1: (5, 3)  Z: (5, 2)\n[[0.47 0.53]\n [0.47 0.53]\n [0.47 0.53]\n [0.47 0.53]\n [0.48 0.52]]\nloss: 0.7\n```\n\n重みは未訓練なので、各ノードの二クラスの確率は 0.5 付近、損失はほぼ $\\ln 2$ です。訓練では 0 番と 4 番の損失だけを逆伝播しますが、$\\hat A$ が隣と結び付けるため、1、2、3 番の表現も更新されます。\n\n論文は全グラフでのフルバッチ勾配降下法を使い、各ステップで $\\hat A$ と $X$ の全体をメモリに置きます。ランダム性は dropout だけです。\n\n## 議論\n\n### 実験設定\n\nPlanetoid 論文の設定に従います。引用ネットワーク Citeseer、Cora、Pubmed は 3,327、2,708、19,717 ノードで、クラスごとに 20 ラベルだけ。NELL 知識グラフは 65,755 ノードで、各クラスわずか 1 ラベルです。検証用 500 ノードはハイパーパラメーター調整だけに使い、テストは 1,000 ノードです。\n\n二層 GCN、隠れ層 16 次元、dropout 0.5、一層目の L2 正則化 $5\\times10^{-4}$、Adam の学習率 0.01、最大 200 epoch です。検証損失が 10 epoch 続けて減らなければ止めます。Cora だけで調整し、Citeseer と Pubmed にはそのまま使います。\n\n### 主な結果\n\n| 方法 | Citeseer | Cora | Pubmed | NELL |\n| --- | ---: | ---: | ---: | ---: |\n| ManiReg | 60.1 | 59.5 | 70.7 | 21.8 |\n| LP | 45.3 | 68.0 | 63.0 | 26.5 |\n| DeepWalk | 43.2 | 67.2 | 65.3 | 58.1 |\n| ICA | 69.1 | 75.1 | 73.9 | 23.1 |\n| Planetoid* | 64.7 | 75.7 | 77.2 | 61.9 |\n| **GCN** | **70.3** | **81.5** | **79.0** | **66.0** |\n| GCN（ランダム分割） | 67.9 ± 0.5 | 80.1 ± 0.5 | 78.9 ± 0.7 | 58.4 ± 1.7 |\n\n数値は分類精度（%）で、GCN の行は 100 回のランダム初期化の平均です。同一マシンでの収束時間は Citeseer、Cora、NELL で Planetoid より短く（7、4、48 秒に対し 26、13、185 秒）、Pubmed は 38 秒対 25 秒でした。\n\n最後の行は同じ大きさのランダム分割 10 組に替えています。精度はやや下がり、もっとも大きい NELL は 66.0% から 58.4% に下がりました。\n\n### どの伝播がよいか\n\nほかの設定を変えず、二層の伝播を導出途中の各版に替えます。\n\n| 伝播方法 | Citeseer | Cora | Pubmed |\n| --- | ---: | ---: | ---: |\n| Chebyshev、$K=3$ | 69.8 | 79.5 | 74.4 |\n| Chebyshev、$K=2$ | 69.6 | 81.2 | 73.8 |\n| 一次、二パラメーター（式 6） | 68.3 | 80.0 | 77.5 |\n| 一次、一パラメーター（式 7） | 69.3 | 79.2 | 77.4 |\n| **再正規化（式 8）** | **70.3** | **81.5** | **79.0** |\n| 一次項のみ | 68.7 | 80.5 | 77.8 |\n| MLP（グラフなし） | 46.5 | 55.1 | 71.4 |\n\n簡略化を進めても結果は悪くなりません。再正規化版はパラメーターも演算も最少で、三データセットとも最良です。高次の Chebyshev は Pubmed でむしろ約 74% に落ちます。グラフなしの MLP は Cora で 55.1% しかなく、構造の寄与がはっきり見えます。\n\n### もっと深くすると\n\n付録 B は層数を 1〜10 に増やし、全ラベルを使う 5 分割交差検証で、残差接続の有無も比べています。\n\n[![原論文 Figure 5：Citeseer、Cora、Pubmed の三図。横軸は 1〜10 層、縦軸は精度。訓練とテストの曲線は 2〜3 層付近が最高。残差なしの破線は 7 層後に急落し、残差ありの実線はおおむね横ばい。](/content/papers/assets/8678c3fe0abb2cce0863dc23cf622ad78187872d1ddebf951b3a6a7385d15405.png)](/content/papers/assets/8678c3fe0abb2cce0863dc23cf622ad78187872d1ddebf951b3a6a7385d15405.png)\n\n*原論文 Figure 5（Kipf、Welling）、[**PDF 14 ページ**](https://arxiv.org/pdf/1609.02907v4#page=14)より。原キャプションは省略。*\n\n三つとも 2〜3 層が最良でした。7 層を超えると残差なしでは訓練精度さえ落ち、著者は訓練が難しくなると述べています。残差を加えるとほぼ横ばいですが、改善もしません。\n\n### WL アルゴリズムとの関係\n\n付録 A は別の角度から GCN を読み解きます。Weisfeiler-Lehman（WL）は、各ラウンドでノードの色を「自分と隣の色の組み合わせのハッシュ」に更新するグラフ同型検査です。ハッシュを学習可能なネットワーク層にし、正規化定数を $\\sqrt{d_id_j}$ にすれば GCN の伝播になります。著者は loosely speaking と断ったうえで、微分可能でパラメーターを持つ WL の一般化と呼んでいます。\n\nこの類推から、Zachary の空手クラブ 34 人で実験します。三層 GCN を完全にランダムな重み、訓練なし、単位行列のノード特徴量で動かすだけで、二次元埋め込みがコミュニティ構造に似てきます。追加訓練を要する DeepWalk に匹敵すると著者は述べます。各コミュニティ一ラベルで 300 ステップ訓練すると、四つのコミュニティを線形分離できます。\n\n### 四日後の評論\n\narXiv 投稿の四日後、Ferenc Huszár はブログに〈How powerful are Graph Convolutions?〉を書きました。8 近傍の画像格子に載せると、全層、全チャネルが同じ形の固定 3×3 カーネルを使い、違いはスカラー倍だけです。これではエッジ検出器や Gabor フィルターを学べず、簡略化で汎用性が大きく失われ、ChebNet の高次多項式のほうが有望だと論じました。[inFERENCe、2016-09-13](https://www.inference.vc/how-powerful-are-graph-convolutions-review-of-kipf-welling-2016-2/)\n\n最終版の $\\hat A$ で確かめると、格子内部の中央画素は自分を含む周囲 9 マスから各 1/9 を取り、平均フィルターになります。\n\nKipf は月末のブログで応じます。規則格子で単純な演算に退化するのは任意グラフを扱うモデルの共通の弱点で、評価では規則格子以外のデータを見ること、トレードオフを認めることが必要だとしています。[Kipf、2016-09-30](https://tkipf.github.io/graph-convolutional-networks/)\n\nどちらも正しいのです。画像では位置ごとの重みを持つ CNN の能力を失います。一方、方向がなく次数が大きくばらつく引用ネットワークでは、先の伝播比較が示すとおり、簡略化が有利でした。\n\n### 論文が挙げる制約\n\n- **メモリ**：フルバッチのメモリはデータ量に線形です。ミニバッチにすると、$K$ 層のモデルは各ノードの $K$ ステップ以内の全隣接ノードを読み込む必要があります。\n- **エッジの種類**：無向グラフのみで、エッジ特徴量も扱えません。NELL は有向・ラベル付きエッジを二部グラフに書き換えて入力します。\n- **自己ループの取り分**：自分と隣が同等に重要だと暗黙に仮定します。著者は $\\tilde A=A+\\lambda I_N$ とし、$\\lambda$ も学ぶ案を挙げています。\n\n一つ目はのちの GraphSAGE などのサンプリングで扱われます。三つ目にも GraphSAGE は別の答えを示し、自分と隣に別々の重みを掛けます。\n\n## 結論\n\nGCN はスペクトルグラフ畳み込みを一次、一パラメーターまで削り、再正規化で安定させ、一行の伝播規則にしました。二層モデルで三つの引用ネットワークの従来法を大きく上回り、訓練も速いモデルです。\n\n代償も明確です。隣の取り分は次数だけで決まり、画像格子では平均カーネルだけになります。二〜三層を超えると性能が落ち始めます。のちの GraphSAGE、GAT、GIN の多くは、この二点から始まりました。\n\n試すなら、PyTorch Geometric の `GCNConv` がこの伝播規則です。論文どおり二層、隠れ層 16 次元、dropout 0.5 から始められます。Cora の収束は論文でわずか 4 秒でした。\n\nまずは二層から。重ねればよいとは限りません。\n","imageSizes":{"/content/papers/assets/ded600c9ca8f4eda09d39ffb16b3c9b0ec730780063e55948b29924d00f14794.png":{"width":1122,"height":400},"/content/papers/assets/8678c3fe0abb2cce0863dc23cf622ad78187872d1ddebf951b3a6a7385d15405.png":{"width":1132,"height":454}}}
