{"notes":[{"id":"graph-learning/mpnn","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"MPNN","subtitle":"みんなメッセージを送っていた","author":"Z. Yuan","paperDate":"2017-04-04","publishedOn":"2023-10-11","world":"external/mpnn","paperTitle":"Neural Message Passing for Quantum Chemistry","paperUrl":"https://arxiv.org/abs/1704.01212","bibliography":{"title":"Neural Message Passing for Quantum Chemistry","authors":["Justin Gilmer","Samuel S. Schoenholz","Patrick F. Riley","Oriol Vinyals","George E. Dahl"],"url":"https://arxiv.org/abs/1704.01212","pdfUrl":"https://arxiv.org/pdf/1704.01212v2","codeUrl":null,"preprint":{"id":"1704.01212","submittedOn":"2017-04-04","url":"https://arxiv.org/abs/1704.01212"},"publication":{"venue":"ICML","year":2017,"kind":"conference","url":"https://proceedings.mlr.press/v70/gilmer17a.html"},"citation":"@misc{graphlearningmpnn2017,\n  title = {{Neural Message Passing for Quantum Chemistry}},\n  author = {Justin Gilmer and Samuel S. Schoenholz and Patrick F. Riley and Oriol Vinyals and George E. Dahl},\n  year = {2017},\n  eprint = {1704.01212},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1704.01212}\n}\n","citationPath":"/content/papers/citations/graph-learning/mpnn.5c9aab7ce227.bib"},"thumbnail":{"src":"/content/papers/assets/44a847b2362597f5662f2709ea7ecf27df3d1f6c76cd135fde21b0ad814ca891.png","width":628,"height":388},"locale":"ja","path":"/content/papers/ja/graph-learning/mpnn.e538b5df47a1.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"解決方法","text":"解決方法","depth":2},{"id":"メッセージパッシングの枠組み","text":"メッセージパッシングの枠組み","depth":3},{"id":"どんな変形を試したか","text":"どんな変形を試したか","depth":3},{"id":"議論","text":"議論","depth":2},{"id":"qm9-の主な結果","text":"QM9 の主な結果","depth":3},{"id":"空間情報がない場合","text":"空間情報がない場合","depth":3},{"id":"仮想エッジとマスターノード","text":"仮想エッジとマスターノード","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/over-squashing","relation":"referenced","topic":""},{"id":"graph-learning/graphgps","relation":"referenced","topic":""}]},{"id":"graph-learning/over-squashing","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Over-squashing","subtitle":"もう入りきらない","author":"Z. Yuan","paperDate":"2020-06-09","publishedOn":"2024-03-03","paperTitle":"On the Bottleneck of Graph Neural Networks and its Practical Implications","paperUrl":"https://arxiv.org/abs/2006.05205","bibliography":{"title":"On the Bottleneck of Graph Neural Networks and its Practical Implications","authors":["Uri Alon","Eran Yahav"],"url":"https://arxiv.org/abs/2006.05205","pdfUrl":"https://arxiv.org/pdf/2006.05205v4","codeUrl":"https://github.com/tech-srl/bottleneck","preprint":{"id":"2006.05205","submittedOn":"2020-06-09","url":"https://arxiv.org/abs/2006.05205"},"publication":{"venue":"ICLR","year":2021,"kind":"conference","url":"https://arxiv.org/abs/2006.05205"},"citation":"@misc{graphlearningoversquashing2020,\n  title = {{On the Bottleneck of Graph Neural Networks and its Practical Implications}},\n  author = {Uri Alon and Eran Yahav},\n  year = {2020},\n  eprint = {2006.05205},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2006.05205}\n}\n","citationPath":"/content/papers/citations/graph-learning/over-squashing.af346c012204.bib"},"thumbnail":{"src":"/content/papers/assets/c3454ca38b6e53b6467ff66db7867788efed8d8a71eec3c6e7f754e586a99d4d.png","width":1078,"height":356},"locale":"ja","path":"/content/papers/ja/graph-learning/over-squashing.40644f2f5f00.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"問題の半径","text":"問題の半径","depth":3},{"id":"rnn-のボトルネックとの比較","text":"RNN のボトルネックとの比較","depth":3},{"id":"伝播比率だけを見る","text":"伝播比率だけを見る","depth":3},{"id":"意図的に作ったタスク","text":"意図的に作ったタスク","depth":3},{"id":"解決方法","text":"解決方法","depth":2},{"id":"最後の一層を全結合に","text":"最後の一層を全結合に","depth":3},{"id":"どれだけ大きなベクトルが要るか","text":"どれだけ大きなベクトルが要るか","depth":3},{"id":"議論","text":"議論","depth":2},{"id":"tree-neighborsmatch","text":"Tree-NeighborsMatch","depth":3},{"id":"qm9","text":"QM9","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/graphgps","relation":"referenced","topic":""}]},{"id":"graph-learning/graphgps","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"GraphGPS","subtitle":"グラフ上の GPS","author":"Z. Yuan","paperDate":"2022-05-25","publishedOn":"2025-09-09","world":"external/graphgps","paperTitle":"Recipe for a General, Powerful, Scalable Graph Transformer","paperUrl":"https://arxiv.org/abs/2205.12454","bibliography":{"title":"Recipe for a General, Powerful, Scalable Graph Transformer","authors":["Ladislav Rampášek","Mikhail Galkin","Vijay Prakash Dwivedi","Anh Tuan Luu","Guy Wolf","Dominique Beaini"],"url":"https://arxiv.org/abs/2205.12454","pdfUrl":"https://arxiv.org/pdf/2205.12454v4","codeUrl":"https://github.com/rampasek/GraphGPS","preprint":{"id":"2205.12454","submittedOn":"2022-05-25","url":"https://arxiv.org/abs/2205.12454"},"publication":{"venue":"NeurIPS","year":2022,"kind":"conference","url":"https://proceedings.neurips.cc/paper_files/paper/2022/hash/5d4834a159f1547b267a05a4e2b7cf5e-Abstract-Conference.html"},"citation":"@misc{graphlearninggraphgps2022,\n  title = {{Recipe for a General, Powerful, Scalable Graph Transformer}},\n  author = {Ladislav Rampášek and Mikhail Galkin and Vijay Prakash Dwivedi and Anh Tuan Luu and Guy Wolf and Dominique Beaini},\n  year = {2022},\n  eprint = {2205.12454},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2205.12454}\n}\n","citationPath":"/content/papers/citations/graph-learning/graphgps.053e58fd5309.bib"},"thumbnail":{"src":"/content/papers/assets/e4177a894582643d7811bced6f6c6cf8bb51ff7738da4af5d98115883e1a4bb8.png","width":1116,"height":798},"locale":"ja","path":"/content/papers/ja/graph-learning/graphgps.0d5dc280bee1.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"位置と構造","text":"位置と構造","depth":3},{"id":"なぜ伝播にも必要か","text":"なぜ伝播にも必要か","depth":3},{"id":"伝播のあとで注意しても遅い","text":"伝播のあとで注意しても遅い","depth":3},{"id":"解決方法","text":"解決方法","depth":2},{"id":"三つの材料","text":"三つの材料","depth":3},{"id":"gps-の一層","text":"GPS の一層","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":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/graph-transformer","relation":"referenced","topic":""},{"id":"graph-learning/san","relation":"referenced","topic":""},{"id":"graph-learning/graphormer","relation":"referenced","topic":""}]}],"text":"分子の双極子モーメント、エネルギーギャップ、零点振動エネルギーを知るには、普通は密度汎関数理論（DFT）を計算します。小分子一つで約千秒です。\n\n薬や材料の探索で百万単位の候補を見るなら、この速度はボトルネックになります。\n\nGoogle Brain、Google、DeepMind の Justin Gilmer、Samuel Schoenholz、Patrick Riley、Oriol Vinyals、George Dahl は、分子グラフからニューラルネットワークで直接予測し、一分子約百分の一秒にしたいと考えました。\n\n当時も分子グラフを扱うネットワークは多く、それぞれ違う名前がありました。この論文はまず、それらを同じ枠組みに置きます。\n\n[![原論文 Figure 1：有機分子から性質予測への二つの経路。上は約 10 の 3 乗秒かかる DFT。下は原子同士で順にメッセージを交換するネットワークで、約 10 の負 2 乗秒。どちらもエネルギーや振動周波数などを出力する。](/content/papers/assets/44a847b2362597f5662f2709ea7ecf27df3d1f6c76cd135fde21b0ad814ca891.png)](/content/papers/assets/44a847b2362597f5662f2709ea7ecf27df3d1f6c76cd135fde21b0ad814ca891.png)\n\n*原論文 Figure 1（Gilmer ら）、[**PDF 1 ページ**](https://arxiv.org/pdf/1704.01212v2#page=1)より。原キャプションは省略。*\n\n## 問題設定\n\n著者は、化学の機械学習の多くが特徴量設計にとどまると指摘します。Coulomb 行列、Bag of Bonds、分子フィンガープリントなどを手で設計し、既存の回帰モデルにつなぎます。\n\nニューラルネットワークの試みもありましたが、普及していませんでした。著者は CNN 普及前の画像モデルになぞらえ、適切な帰納バイアスを持つネットワークがこの分野でも有効だという証拠が足りないと考えます。\n\n分子には自然な対称性があります。原子の番号を替えても同じ分子なので、グラフの同型性に不変なモデルが適します。狙いは、既存 GNN の共通形式を整理し、実際のベンチマークで限界まで引き出すことです。\n\nベンチマークは QM9。約 13 万の小分子に、DFT で計算した 13 の性質があります。評価は化学界の「化学精度」という直感的な基準で、誤差がこれを下回れば化学者が受け入れられる精度に達します。\n\n## 解決方法\n\n### メッセージパッシングの枠組み\n\nMPNN（Message Passing Neural Networks）は順伝播を二段階に分けます。\n\n**メッセージパッシング段階**は $T$ ステップです。各ステップでノード $v$ は隣の $w$ からメッセージを受け取り、足し合わせて状態を更新します。\n\n$$\nm_v^{t+1}=\\sum_{w\\in N(v)}M_t\\left(h_v^t,h_w^t,e_{vw}\\right)\n$$\n\n$$\nh_v^{t+1}=U_t\\left(h_v^t,m_v^{t+1}\\right)\n$$\n\n$M_t$ は送受信両側の状態とエッジ特徴量 $e_{vw}$ を見るメッセージ関数、$U_t$ は更新関数です。\n\n**読み出し段階**では、全ノードの最終状態をグラフ全体の表現にまとめます。\n\n$$\n\\hat y=R\\left(\\left\\{h_v^T\\mid v\\in G\\right\\}\\right)\n$$\n\n$R$ はノード順序に不変でなければなりません。三関数はすべて学習可能です。\n\n著者は、Duvenaud らの分子フィンガープリント畳み込み、ゲート付きグラフネットワーク（GG-NN）、Interaction Networks、分子グラフ畳み込み、深層テンソルネットワーク、ラプラシアンに基づく三つのスペクトル法（Bruna ら、ChebNet、GCN）など、少なくとも八つをこの形式で記述できると説明します。\n\nGCN のメッセージは「隣の状態に重みを掛け、両端の次数でスケーリングする」、更新は ReLU です。五ノードの小さなグラフで、メッセージ・更新の形と GCN の行列の形を比べます。\n\n```python\nimport numpy as np\nrng = np.random.default_rng(0)\n\nn = 5\nedges = [(0, 1), (0, 2), (1, 2), (2, 3), (3, 4)]\nnbrs = {v: [v] for v in range(n)}            # まず自分を加える：自己ループもエッジ\nfor i, j in edges:\n    nbrs[i].append(j)\n    nbrs[j].append(i)\ndeg = {v: len(nbrs[v]) for v in range(n)}    # 自己ループ後の次数\nh = rng.normal(size=(n, 3))\nW = rng.normal(size=(3, 3))\n\ndef message(h_v, h_w, v, w):                 # M_t(h_v, h_w, e_vw)\n    return h_w @ W / np.sqrt(deg[v] * deg[w])\n\ndef update(h_v, m_v):                        # U_t(h_v, m_v)\n    return np.maximum(m_v, 0)\n\ndef mpnn_step(h):\n    return np.array([update(h[v], sum(message(h[v], h[w], v, w) for w in nbrs[v]))\n                     for v in range(n)])\n\n# GCN の行列形 ReLU(Â H W) と比較\nA = np.eye(n)\nfor i, j in edges:\n    A[i, j] = A[j, i] = 1\nd = A.sum(1)\nA_hat = A / np.sqrt(np.outer(d, d))\nprint(\"GCN の行列形と一致:\", np.allclose(mpnn_step(h), np.maximum(A_hat @ h @ W, 0)))\n```\n\n```text\nGCN の行列形と一致: True\n```\n\n計算内容は同じで、単一ノードから記述するか、全グラフを行列にするかの違いです。`message` や `update` を替えるだけで別モデルになるのが、この枠組みの利点です。\n\n### どんな変形を試したか\n\n共通形式ができたところで、各要素の選択肢を試します。\n\n- **メッセージ関数**：GG-NN はエッジ種類ごとの行列を隣の状態に掛けます。著者の **edge network** は連続エッジ特徴量をネットワークで $d\\times d$ 行列にし、原子間距離なども使えます。送受信両側の状態を見る **pair message** も試しますが、訓練が不安定で深くは追っていません。\n- **仮想的なグラフ要素**：未接続のノード間に特別な「仮想エッジ」を加える方法と、全ノードにつながる**マスターノード**を足し、各ステップで全員が読み書きする大域的な作業領域にする方法です。どちらも遠くへ情報を届けます。\n- **読み出し関数**：GG-NN の総和型に加え、集合向けの set2set も試します。より高い表現力が期待できます。\n- **複数タワー（towers）**：$d$ 次元の状態を $k$ 分割し、別々に伝播してから共有ネットワークで混ぜます。同じ計算量で、より大きい隠れ状態を使えます。\n\n入力では、水素を明示的なノードにし、結合種類と原子間距離を含む完全なエッジ特徴量を使うことが、多くの予測対象で重要でした。\n\n## 議論\n\n### QM9 の主な結果\n\n指標は**誤差比**です。平均絶対誤差を化学精度で割り、1 未満なら達成です。手設計の五種類の分子表現に既存回帰器をつなぎ、既存 MPNN 二種と、edge network、set2set、明示的な水素を組み合わせた最良版を比べます。\n\n| 方法 | 13 対象の平均誤差比 |\n| --- | ---: |\n| 分子フィンガープリント ECFP4 | 53.97 |\n| Coulomb 行列 | 3.37 |\n| Bag of Bonds（BoB） | 2.08 |\n| HDAD | 1.35 |\n| 分子グラフ畳み込み GC | 2.59 |\n| GG-NN | 1.36 |\n| **enn-s2s（本論文）** | **0.68** |\n| enn-s2s、5 モデルのアンサンブル | 0.52 |\n\n単一モデルで 13 対象すべて当時最良、うち 11 で化学精度を達成しました。13 対象を同時に学ぶより、対象ごとに別のモデルを訓練するほうがよく、差は最大 40% に達しました。\n\n### 空間情報がない場合\n\nQM9 は 3D 配座を持ちますが、実際には分子の接続しか分からないことも多くあります。トポロジーだけの設定も試すと、遠いノード同士の情報交換を助ける変更は、どれも有効でした。\n\n| モデル | 平均誤差比 |\n| --- | ---: |\n| GG-NN | 3.47 |\n| GG-NN + 仮想エッジ | 2.90 |\n| GG-NN + マスターノード | 2.62 |\n| GG-NN + set2set 読み出し | 2.57 |\n\n三変更とも 13 対象すべてで改善し、set2set は 5 対象で化学精度に達します。この実験群は、実用時には得られない DFT 出力の部分電荷もノード特徴量に使っています。先の主結果の表では使っていません。\n\n複数タワーには意外な利点もありました。訓練高速化のために導入したのに、二つの訓練設定とも 13 対象中 12 でベースラインを上回り、汎化もよくなりました。\n\n### 仮想エッジとマスターノード\n\n論文では短い記述ですが、振り返ると面白い二つです。三年あまり後、Alon と Yahav は遠方の情報が伝わらない原因を over-squashing と呼び、最終層を全結合にして直しました。さらに後の Graph Transformer は、各層に全ノードが互いを見渡す道を加えます。\n\n\n> [!TIP]\n> \n> over-squashing と各層に大域的注意を入れる方法は、こちらのノートをどうぞ。\n> \n> - **[[20.06] Over-squashing：もう入りきらない](/blog/papers/graph-learning/over-squashing)**\n> - **[[22.05] GraphGPS：グラフ上の GPS](/blog/papers/graph-learning/graphgps)**\n\n\n## 結論\n\nこの論文は、個別の名前で呼ばれていた GNN を「メッセージ、更新、読み出し」の三関数に整理しました。その呼び名は広く残り、多くの論文がこの種類全体を message passing と呼んでいます。\n\nQM9 では、edge network、set2set、明示的水素により、13 対象すべてで当時最良、うち 11 で化学精度を達成しました。\n\n著者は、新しい変形を次々提案する前に、重要な応用でこの家族を限界まで引き出し、どの実装上の細部が効くかを確かめようと呼びかけます。読み終えて役立つのも、水素をノードにするか、対象ごとに訓練するか、読み出しを何にするかといった細部です。\n","imageSizes":{"/content/papers/assets/44a847b2362597f5662f2709ea7ecf27df3d1f6c76cd135fde21b0ad814ca891.png":{"width":628,"height":388}}}
