首页
Ilya 推荐书单系列
i21 消息传递神经网络
面向量子化学的消息传递神经网络(MPNN)
Justin Gilmer 等(Google) · arXiv 2017 · 图神经网络的统一语言:很多模型其实都是「传纸条」
Ilya 为什么选它
书单前几篇处理的输入是「一串词」或「一袋数」,可分子不是串也不是袋,是一张网:原子是点,化学键是边。要预测分子的性质,比如溶解度、能量,模型得先学会读这张网。这篇 Google 的论文把当时五花八门的图模型放到同一把尺子下,发现它们其实是同一件事的不同做法——消息传递。
它的价值一半在化学应用,一半在「统一框架」。把散落的模型收拢成一种语言之后,新想法只需要说清楚三件事——纸条怎么写、纸条怎么收、状态怎么更新——就能立刻对上整个家族。这种统一工作在书单里格外珍贵:先让你看清森林,再回头去看每棵树。
从生活说起
班里要给每个人画一张「小圈子画像」,办法很朴素:每人一开始只知道自己的事。第一轮,每人给直接认识的邻居传一张小纸条;第二轮,把纸条上听到的事再转述给自己的邻居……传了几轮之后,每个人手里都攒下了朋友的朋友的情况——谁和谁走得近、哪个角落热闹,每人都能说上一段。没有班主任发通知,全靠同学之间一张张纸条,全班的画面就自己浮现出来。
社区里的口口相传也是同理:一条消息从当事人出发,沿着熟人链条传几轮,整个社区就对这件事形成了集体印象——即使没亲眼见过的邻居,也通过二手、三手消息知道了个大概。消息传递网络让每个原子干的就是这件事:一轮一轮传纸条,直到每个原子都摸清自己在整个分子里的处境。
核心思想拆解
先把分子翻译成图(Graph):原子是节点(Node),化学键是边(Edge),键连着谁,消息就通向谁。MPNN(Message Passing Neural Network,消息传递神经网络)的流程是三步循环。第一步,传消息:每一轮,每个原子向自己的邻居「传纸条」,纸条上写什么由模型学出来。第二步,汇总(Aggregate):每个原子把收到的纸条合并到一起——邻居多也不怕,收齐了合起来看。第三步,更新:用合并后的信息刷新自己的状态。传、收、更新,一轮算一圈。
轮数的意义在于视野。一轮过后,每个原子只知道直接相连的邻居;两轮过后,邻居的邻居的事也传到了自己手里;轮数越多,每个原子的「视野」沿化学键铺开的范围越大。跑足若干轮之后,再做一次整体汇总,把所有原子的状态合并起来,就能预测整个分子的性质,比如溶解度、能量——输入是「原子加化学键」这张网,输出是分子的宏观性质。
论文更大的贡献在框架本身:它把当时的多种图模型统一成同一框架的特例。各家模型的差别,无非是纸条的写法、汇总的方式、更新的配方不同,骨架全是「传纸条」。统一之后,比较模型有了共同语言,设计新模型也只需换几个「配方位」——后来的图网络研究大量受益于这种看问题的方式。
动手算一算
用一个最小的「分子」感受轮数与视野:3 个原子排成一条线,A—B—C(A 与 B 有一条键,B 与 C 有一条键)。第一轮传纸条:B 收到来自 A 和 C 的两张纸条,知道了两边邻居;A 只收到 B 的一张纸条,只知道 B。第二轮:A 把「我这轮听到的事」写成纸条给 B,B 转给 C——于是 C 虽然从没和 A 直接相连,也知道了 A 的存在。两轮之后,线上每个原子都「认识」了全部成员。
把这件事数一数:1 轮,视野到达「直接邻居」,A、B、C 各自认识 1 到 2 个对象;2 轮,视野多扩一格,B 认识 2 个,A 和 C 也各认识 2 个。规律很直白:轮数每加 1,视野沿边多走 1 步;一个长链条如果想知道两头的情况,就得传上与距离差不多的轮数。这就是「跑若干轮后,每个原子知道自己在大分子里的处境」的算术版——加法和数数就够了。
它改变了什么
MPNN 把图神经网络(Graph Neural Network,GNN)从一堆各自命名的技巧,整理成一门统一的语言;量子化学成了它最有说服力的应用场景之一——用「原子加键」的读法直接预测分子性质。对书单读者,它补上了「数据不一定是序列,还可以是网」这块拼图,并与 i19、i22 一起构成「结构化输入」的完整光谱:集合、关系、图。
系列内相关阅读:继续讨论「对象之间有关系」的输入,见 i22 关系推理模块 ;处理没有顺序的集合输入,见 i19 Order Matters ;纸条「按相关度取用信息」的味道,在 i16 Attention Is All You Need 里有放大版。