{"notes":[{"id":"graph-learning/deeper-insights","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Deeper Insights","subtitle":"ならしすぎたグラフ","author":"Z. Yuan","paperDate":"2018-01-22","publishedOn":"2023-11-29","paperTitle":"Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning","paperUrl":"https://arxiv.org/abs/1801.07606","bibliography":{"title":"Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning","authors":["Qimai Li","Zhichao Han","Xiao-Ming Wu"],"url":"https://arxiv.org/abs/1801.07606","pdfUrl":"https://arxiv.org/pdf/1801.07606v1","codeUrl":null,"preprint":{"id":"1801.07606","submittedOn":"2018-01-22","url":"https://arxiv.org/abs/1801.07606"},"publication":{"venue":"AAAI","year":2018,"kind":"conference","url":"https://ojs.aaai.org/index.php/AAAI/article/view/11604"},"citation":"@misc{graphlearningdeeperinsights2018,\n  title = {{Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning}},\n  author = {Qimai Li and Zhichao Han and Xiao-Ming Wu},\n  year = {2018},\n  eprint = {1801.07606},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1801.07606}\n}\n","citationPath":"/content/papers/citations/graph-learning/deeper-insights.52354c86fac9.bib"},"thumbnail":{"src":"/content/papers/assets/2a13880b48fae6456e19c622cee1d7c7907f8c31d6890722d4980a381fddb06a.png","width":1396,"height":268},"locale":"ja","path":"/content/papers/ja/graph-learning/deeper-insights.dba605607ed9.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"解決方法","text":"解決方法","depth":2},{"id":"全結合ネットワークと比べる","text":"全結合ネットワークと比べる","depth":3},{"id":"ラプラシアン平滑化","text":"ラプラシアン平滑化","depth":3},{"id":"平滑化しすぎると","text":"平滑化しすぎると","depth":3},{"id":"浅すぎても困る","text":"浅すぎても困る","depth":3},{"id":"対策gcn-にもっとラベルを見せる","text":"対策：GCN にもっとラベルを見せる","depth":3},{"id":"議論","text":"議論","depth":2},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/appnp","relation":"referenced","topic":""},{"id":"graph-learning/sgc","relation":"referenced","topic":""}]},{"id":"graph-learning/appnp","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"APPNP","subtitle":"帰る場所を忘れない","author":"Z. Yuan","paperDate":"2018-10-14","publishedOn":"2024-01-17","world":"external/appnp","paperTitle":"Predict then Propagate: Graph Neural Networks meet Personalized PageRank","paperUrl":"https://arxiv.org/abs/1810.05997","bibliography":{"title":"Predict then Propagate: Graph Neural Networks meet Personalized PageRank","authors":["Johannes Gasteiger","Aleksandar Bojchevski","Stephan Günnemann"],"url":"https://arxiv.org/abs/1810.05997","pdfUrl":"https://arxiv.org/pdf/1810.05997v6","codeUrl":"https://www.kdd.in.tum.de/ppnp","preprint":{"id":"1810.05997","submittedOn":"2018-10-14","url":"https://arxiv.org/abs/1810.05997"},"publication":{"venue":"ICLR","year":2019,"kind":"conference","url":"https://arxiv.org/abs/1810.05997"},"citation":"@misc{graphlearningappnp2018,\n  title = {{Predict then Propagate: Graph Neural Networks meet Personalized PageRank}},\n  author = {Johannes Gasteiger and Aleksandar Bojchevski and Stephan Günnemann},\n  year = {2018},\n  eprint = {1810.05997},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1810.05997}\n}\n","citationPath":"/content/papers/citations/graph-learning/appnp.eae593f21b4d.bib"},"thumbnail":{"src":"/content/papers/assets/9ad06d29a0d48e1de136b4cd8560f14defc55b0aaf289f07b8319c40f033b844.png","width":908,"height":370},"locale":"ja","path":"/content/papers/ja/graph-learning/appnp.2aa21b4277dd.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"無限に重ねるとどうなるか","text":"無限に重ねるとどうなるか","depth":3},{"id":"解決方法","text":"解決方法","depth":2},{"id":"personalized-pagerank","text":"Personalized PageRank","depth":3},{"id":"ppnp予測してから伝播","text":"PPNP：予測してから伝播","depth":3},{"id":"appnpべき乗反復で近似","text":"APPNP：べき乗反復で近似","depth":3},{"id":"gcn-との違い","text":"GCN との違い","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":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/deeper-insights","relation":"referenced","topic":""}]},{"id":"graph-learning/sgc","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"SGC","subtitle":"線形だけで十分？","author":"Z. Yuan","paperDate":"2019-02-19","publishedOn":"2024-02-09","world":"external/sgc","paperTitle":"Simplifying Graph Convolutional Networks","paperUrl":"https://arxiv.org/abs/1902.07153","bibliography":{"title":"Simplifying Graph Convolutional Networks","authors":["Felix Wu","Tianyi Zhang","Amauri Holanda de Souza","Christopher Fifty","Tao Yu","Kilian Q. Weinberger"],"url":"https://arxiv.org/abs/1902.07153","pdfUrl":"https://arxiv.org/pdf/1902.07153v2","codeUrl":"https://github.com/Tiiiger/SGC","preprint":{"id":"1902.07153","submittedOn":"2019-02-19","url":"https://arxiv.org/abs/1902.07153"},"publication":{"venue":"ICML","year":2019,"kind":"conference","url":"https://proceedings.mlr.press/v97/wu19e.html"},"citation":"@misc{graphlearningsgc2019,\n  title = {{Simplifying Graph Convolutional Networks}},\n  author = {Felix Wu and Tianyi Zhang and Amauri Holanda de Souza and Christopher Fifty and Tao Yu and Kilian Q. Weinberger},\n  year = {2019},\n  eprint = {1902.07153},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1902.07153}\n}\n","citationPath":"/content/papers/citations/graph-learning/sgc.5b3815dbf17c.bib"},"thumbnail":{"src":"/content/papers/assets/42da0472259826c266fe1b1b617041ef7cb3aa49eda3558ac91dcd15aa5272e0.png","width":1366,"height":612},"locale":"ja","path":"/content/papers/ja/graph-learning/sgc.6a6528dac858.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"解決方法","text":"解決方法","depth":2},{"id":"非線形性を外す","text":"非線形性を外す","depth":3},{"id":"スペクトルで見る低域通過フィルター","text":"スペクトルで見る：低域通過フィルター","depth":3},{"id":"議論","text":"議論","depth":2},{"id":"引用ネットワークと-reddit","text":"引用ネットワークと Reddit","depth":3},{"id":"どれだけ速いか","text":"どれだけ速いか","depth":3},{"id":"下流タスク","text":"下流タスク","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/gin","relation":"referenced","topic":""}]}],"text":"2016 年末に登場した GCN は、三つの引用ネットワークの半教師あり分類で大きく先行しました。しかしなぜ効くかは、論文で十分に説明されていません。スペクトルグラフ畳み込みを近似し続け、短い一行の伝播規則にたどり着いています。\n\n香港理工大学の Qimai Li、Zhichao Han、Xiao-Ming Wu は、この一行を分解して考えました。何をして、どんな場合に失敗するのでしょう？\n\n答えはラプラシアン平滑化です。一回なら有効でも、繰り返しすぎると全ノードが同じになります。**over-smoothing** と呼ばれ、のちの APPNP や over-squashing が深くできない GNN を論じる際に引用した論文です。\n\n## 問題設定\n\n著者は二つの実用上の問題を挙げます。\n\n一つは、GCN が浅く、元の論文では二層だったことです。二ステップ以内しか見えないので、ラベルが少ないとほとんどのノードの近くにはラベル付きノードがなく、情報が全グラフに届きません。\n\nもう一つは検証セットへの依存です。各クラス 20 ラベル、Cora なら訓練 140 に対し、停止時点を決める検証に 500 ラベルを使います。訓練より大きな検証セットは半教師あり学習の狙いに反し、検証不要の方法との比較も公平さを欠きます。\n\nまず有効な理由を明らかにし、この二点を改善しようとします。\n\n## 解決方法\n\n### 全結合ネットワークと比べる\n\nGCN と全結合ネットワーク（FCN）の違いは、特徴行列の左に $\\hat A=\\tilde D^{-1/2}\\tilde A\\tilde D^{-1/2}$ を掛けることだけです。Cora の各クラス 20 ラベルで比べます。\n\n| 一層 FCN | 二層 FCN | 一層 GCN | 二層 GCN |\n| ---: | ---: | ---: | ---: |\n| 53.1% | 55.9% | 70.8% | 79.8% |\n\n一層だけで GCN は FCN を約 18 ポイント上回ります。差はあの $\\hat A$ にあります。\n\n### ラプラシアン平滑化\n\n一層を、グラフ畳み込み $Y=\\hat AX$ と全結合層に分けます。鍵は明らかに前者です。\n\nラプラシアン平滑化は、CG でメッシュを滑らかにする古い方法です。特徴チャネルごとに、自分と隣の値を混ぜます。\n\n$$\n\\hat y_i=(1-\\gamma)x_i+\\gamma\\sum_j\\frac{\\tilde a_{ij}}{d_i}x_j,\\qquad 0<\\gamma\\le1\n$$\n\n行列なら $\\hat Y=(I-\\gamma\\tilde D^{-1}\\tilde L)X$、$\\tilde L=\\tilde D-\\tilde A$ です。$\\gamma=1$ なら自分を含む隣の平均 $\\tilde D^{-1}\\tilde AX$ になります。$\\tilde D^{-1}\\tilde L$ を対称正規化した $\\tilde D^{-1/2}\\tilde L\\tilde D^{-1/2}$ に替えると、GCN の $\\tilde D^{-1/2}\\tilde A\\tilde D^{-1/2}X$ そのものです。\n\nGCN の畳み込みは**対称ラプラシアン平滑化**なのです。特徴量を自分と隣の加重平均にします。引用ネットワークではつながるノードが同クラスになりやすく、平均すると同類が似て、後段の分類が容易になります。著者はこれを有効性の鍵と見ます。\n\n### 平滑化しすぎると\n\nよい処理なら、もっと重ねるとどうなるでしょう？\n\nZachary の空手クラブで試します。34 人、78 エッジで、のちに二派に分かれたグラフです。GCN はランダム初期化して訓練せず、one-hot 特徴量、隠れ層 16 次元、出力 2 次元で、1〜5 層の出力を描きます。\n\n[![原論文 Figure 2：未訓練 GCN の 1〜5 層の二次元埋め込みを示す五散布図。黄点と黒点が二派。1 層では混ざり、2 層でおおむね分かれ、3〜5 層で再び混ざり、5 層では細い一本の線に詰まる。](/content/papers/assets/2a13880b48fae6456e19c622cee1d7c7907f8c31d6890722d4980a381fddb06a.png)](/content/papers/assets/2a13880b48fae6456e19c622cee1d7c7907f8c31d6890722d4980a381fddb06a.png)\n\n*原論文 Figure 2（Li ら）、[**PDF 4 ページ**](https://arxiv.org/pdf/1801.07606v1#page=4)より。主キャプションは省略。*\n\n一層では分離が弱く、二層で分かれ、さらに重ねると再び混ざります。小さなグラフで二派間の接続も多いので、混ざるのが特に早いと著者は説明します。\n\nランダム重みを外し、平滑化だけを見ましょう。one-hot を $k$ 回平滑化し、同じ派と異なる派のコサイン類似度を比べます。\n\n```python\nimport networkx as nx\nimport numpy as np\n\nG = nx.karate_club_graph()\nA = nx.to_numpy_array(G, weight=None) + np.eye(34)        # 34 人、78 エッジ、自己ループを追加\nd = A.sum(1)\nA_hat = A / np.sqrt(np.outer(d, d))\nclub = np.array([G.nodes[v][\"club\"] == \"Mr. Hi\" for v in G])   # クラブは後に二派へ分裂\nsame = club[:, None] == club[None, :]\n\nfor k in (1, 2, 4, 16, 64):\n    H = np.linalg.matrix_power(A_hat, k)                   # 特徴量は単位行列：H = Â^k I\n    Hn = H / np.linalg.norm(H, axis=1, keepdims=True)\n    S = Hn @ Hn.T                                          # ペアごとのコサイン類似度\n    print(f\"k={k:>2}  同じ派 {S[same].mean():.3f}   異なる派 {S[~same].mean():.3f}\")\n```\n\n```text\nk= 1  同じ派 0.273   異なる派 0.054\nk= 2  同じ派 0.542   異なる派 0.179\nk= 4  同じ派 0.818   異なる派 0.424\nk=16  同じ派 0.990   異なる派 0.942\nk=64  同じ派 1.000   異なる派 1.000\n```\n\n数回なら同じ派がより似るので、役に立ちます。しかし異なる派の類似度も上がり続け、64 回では両方 1.000。全員の特徴量が同方向を向き、区別できません。\n\n著者は定理で示します。二部の連結成分がなければ、繰り返す平滑化により各連結成分の特徴量は同値に収束します。対称版は次数の平方根に比例する値です。自己ループを足したグラフは二部にならず、十分重ねれば必ずここに至ります。\n\n### 浅すぎても困る\n\n深くできないなら浅くするしかありませんが、浅さにも問題があります。\n\n[![原論文 Figure 1：横軸は Cora の訓練比率 0.01〜0.05、縦軸はテスト精度。ラベル伝播の青は 0.62〜0.70 に緩やかに上がる。検証あり GCN の橙は約 0.62〜0.79、検証なしの緑は 0.01 で約 0.54。著者法の赤が常に最高で、約 0.70〜0.82。](/content/papers/assets/86813b55f0a68265d57576c54dda7b6262bacae68112a45c8924d330103ed687.png)](/content/papers/assets/86813b55f0a68265d57576c54dda7b6262bacae68112a45c8924d330103ed687.png)\n\n*原論文 Figure 1（Li ら）、[**PDF 2 ページ**](https://arxiv.org/pdf/1801.07606v1#page=2)より。原キャプションは省略。*\n\nラベルを減らすと、GCN は構造だけのラベル伝播より速く落ちます。二層では二ステップ以内にしかラベル情報を送れず、全体構造が見えないためと説明します。ラベル伝播は全グラフへ広がります。検証なしでは GCN はさらに悪化します。\n\n### 対策：GCN にもっとラベルを見せる\n\n著者はモデルでなく訓練データを変え、ラベル集合を広げます。\n\n- **Co-training**：全グラフを見る partially absorbing random walks で、既知ラベルに近いノードをクラスごとに選び、訓練に加えます。\n- **Self-training**：GCN を一度訓練し、確信の強い予測を訓練に加えて続けます。孤立した小成分が多く、ウォークが届かないときに特に有効です。\n- **Union** と **Intersection**：両手法のラベルの和集合か共通部分です。和は多様さを増し、共通部分は両方が確信するため正確です。\n\n四方法とも拡張ラベルで直接訓練し、追加の検証セットを要しません。\n\n## 議論\n\nCora、CiteSeer、PubMed で、元の GCN より大幅にラベルを減らしました。Cora の例です。\n\n| ラベル比率 | 0.5% | 1% | 2% | 3% | 4% | 5% |\n| --- | ---: | ---: | ---: | ---: | ---: | ---: |\n| ラベル伝播 | 56.4 | 62.3 | 65.4 | 67.5 | 69.0 | 70.2 |\n| ChebNet | 38.0 | 52.0 | 62.4 | 70.8 | 74.1 | 77.6 |\n| GCN、検証なし | 42.6 | 56.9 | 67.8 | 74.9 | 77.6 | 79.3 |\n| GCN、検証あり | 50.9 | 62.3 | 72.2 | 76.5 | 78.4 | 79.7 |\n| Union | **58.5** | **69.9** | **75.9** | **78.5** | **80.4** | **81.7** |\n\n精度（%）です。0.5% では検証なし GCN は 42.6%、ラベル伝播の 56.4% にも届かず、Union は 58.5% です。著者によるとラベル 1% の Cora、CiteSeer では検証なし GCN より 23%、28% 高く、PubMed の 0.05% では 37% 高くなります。\n\nラベルが十分なら差は消え、与えたラベルでよい GCN を学べます。ChebNet は多くの設定で悪く、著者は過学習を疑っています。\n\nもう一つ、Cora の Union は 2%、54 ラベルだけで、元の論文の表で 140 ラベルを使った全ベースラインを上回りました。\n\n## 結論\n\nGCN のグラフ畳み込みを対称ラプラシアン平滑化と解釈しました。同類を似せるので効きますが、繰り返しすぎると次数だけで決まる同じ形に収束する over-smoothing になります。同じ演算の二つの面です。\n\nそのため浅くせざるを得ず、浅い GCN は少数ラベルを遠くに送れません。ランダムウォークと自己訓練でラベルを広げ、極少ラベルで明確な差を出しました。\n\n二年あまり後、Alon と Yahav は over-squashing を論じ、GNN を深くできない定説が over-smoothing だと書きます。本論文と同じ 2018 年後半の APPNP は伝播がぼやけないようにし、翌年の SGC は平滑化だけを残します。\n\n\n> [!TIP]\n> \n> この二つの後続研究は、こちらのノートをどうぞ。\n> \n> - **[[18.10] APPNP：帰る場所を忘れない](/blog/papers/graph-learning/appnp)**\n> - **[[19.02] SGC：線形だけで十分？](/blog/papers/graph-learning/sgc)**\n\n\nGCN を重ねるほど悪くなっても、すぐに最適化器を疑う前に、中間特徴量のペアごとの類似度を計算してみてください。もう、ならされているかもしれません。\n","imageSizes":{"/content/papers/assets/2a13880b48fae6456e19c622cee1d7c7907f8c31d6890722d4980a381fddb06a.png":{"width":1396,"height":268},"/content/papers/assets/86813b55f0a68265d57576c54dda7b6262bacae68112a45c8924d330103ed687.png":{"width":628,"height":302}}}
