去年在NeurIPS审稿时,我注意到一个有趣的现象:超过40%的图神经网络论文都在尝试用各种方法解决图结构的离散性难题。直到看到这篇《Flatten Graphs as Sequences》,才意识到我们可能一直在错误的方向上努力——与其纠结于图结构的特殊性,不如将其转化为Transformer最擅长的序列处理问题。
这个工作的核心创新点在于提出了一种名为Graph Sequence Encoding(GSE)的编码方案,能够将任意图结构无损转换为token序列。想象一下把社交网络中的用户关系图变成一串文字描述,就像把朋友圈的互动写成故事,这正是GSE的精妙之处。
传统图嵌入方法通常将节点和边特征分开处理,而GSE采用了一种类似自然语言处理中动态词典的机制。其实验显示,在QM9分子数据集上,这种编码方式能将图结构压缩率提升37%,同时保持100%的可逆性。
具体实现时,编码器会执行以下操作:
python复制def graph_to_sequence(adj_matrix):
walker = RandomWalker(adj_matrix)
sequence = []
dictionary = DynamicDictionary()
for step in walker:
node_token = dictionary.encode(step.current_node)
edge_token = dictionary.encode(step.edge_type)
sequence.extend([node_token, edge_token])
if step.is_junction:
sequence.append(SUBGRAPH_DELIMITER)
return sequence
传统Transformer的位置编码在图数据中面临挑战:同一节点在不同游走路径中可能出现在不同位置。论文提出的Graph-aware Positional Encoding(GPE)通过以下方式解决:
关键发现:在分子生成任务中,采用GPE的模型在有效性(validity)指标上比标准Transformer提升62%,证明图结构信息得到了有效保留。
模型采用类似GPT的自回归生成方式,但创新性地引入了图结构感知的生成策略:
这种分层策略在蛋白质结构生成任务中表现出色,生成蛋白质的RMSD指标比基线方法平均降低0.15Å。
为处理大规模图数据,论文提出了两种关键优化:
实测在包含10万节点的引文网络生成任务中,内存占用仅为传统GNN的1/8,而生成速度提升5倍。
在ZINC250k数据集上的对比实验显示:
| 方法 | Validity (%) | Uniqueness (%) | Novelty (%) |
|---|---|---|---|
| GCPN | 68.2 | 51.4 | 32.7 |
| GraphAF | 73.5 | 60.1 | 41.2 |
| Ours | 92.8 | 85.3 | 77.6 |
将方法应用于Twitter子网络生成时,这些技巧尤为重要:
在复现该论文时,这些细节需要特别注意:
一个容易忽视的细节是温度调度(temperature scheduling)——在生成初期应该使用较高温度(τ=1.5)鼓励探索,后期逐渐降低到τ=0.7以提高生成质量。