Language is All a Graph Needs
本文最后更新于 2024年7月1日 下午
Language is All a Graph Needs
摘要
将图问题纳入生成语言建模框架的现有工作仍然非常有限。考虑到 LLM 的日益突出, 探索 LLM 是否也可以取代 GNN 作为图的基础模型变得至关重要。
本文提出了基于自然语言指令的高度可扩展提示的InstructGLM(Instruction-finetuned Graph Language Model, 指令微调图语言模型)。使用自然语言描述图的多尺度几何结构,然后指令微调LLM来执行图任务,从而实现生成图学习。
结论
-
这是首次尝试通过自然语言描述来表示图结构,展示了LLM作为图ML新基础模型的巨大潜力
-
在ogbn-arxiv,Cora和PubMed数据集上的标签优于所有单模型CNN和Graph Transformer
-
相对于GNN,InstructGLM具有三个优势
- 灵活性
- 可扩展性
- 兼容性
-
由于高可扩展性,未来可以很容易扩展到四个有价值的方向
- 利用LLM为InstructGLM生成改进的特征
- 使用知识提炼和迭代训练框架增强InstructGLM
- 在更多图形任务上部署InstructGLM
- 在“everything is tokenized“的情况下将InstructGLM扩展到自然语言之外的其他语言,甚至是领域特定语言或标记(如化学语言)
InstructGLM为图机器学习提供了一个强大的NLP接口,以生成式LLM和自然语言为驱动力,进一步促进了跨多个AI领域统一基础模型架构和管道的趋势,以实现AGI(Artificial General Intelligence, 通用人工智能)
限制
InstructGLM的主要限制是LLM的输入令牌限制,这可能导致在处理大规模图时构造的指令提示无法涵盖单个自然语言句子中包含所有高阶邻居。
可以为每个节点构建多个图描述句子以枚举相应跳跃级别上所有可能的邻居来解决令牌限制问题,但这会导致训练数据量快速增加。
论文作者使用反复从中心节点的多跳邻居列表中进行随机抽样,直到句子长度达到输入token限制以缓解上面的问题
InstructGLM
设计指令提示
-
-
是提示的中心节点 -
ex: 包含最多两跳邻居信息的图形描述提示(第一个是简单形式,第二个是包含节点特征、边缘特征、相应中间路径的详细形式):
-
-
-
表示节点 的 跳邻居节点列表, 是 的节点特征, 是 的边特征( 和 可以是文本、图片等各种模态信息)
-
针对节点分类的生成指令调整
-
给定图
和指令提示 。 和 分别表示LLM的输入和目标句子 -
-
是以节点 为中心的图结构描述 -
表示LLM的损失,这里用语言建模中普遍存在的负对数释然(NLL) -
和 是特定于任务的指令前缀和查询 -
’Classify the central node into one of the following categories: [<>]. Pay attention to the multi-hop link relationships between the nodes.‘ -
'Which category should be classified as?'
-
-
-
- 使用图形提示以可扩展的小批量方式描述每个节点的多跳连接和元特征,通过纯自然语言简洁直观地传达图形结构以供学习。随后,我们指示 LLM 在统一的语言建模管道中为各种图形任务生成响应。我们还通过为每个节点创建一个新的唯一标记来扩展 LLM 的词汇表。更具体地说,我们将图的固有节点特征向量(例如 BoW、OGB)设置为这些新标记的嵌入(在图中表示为红色向量),并使用 LLM 的预训练嵌入(在图中表示为蓝色向量)作为自然语言标记。
-
InstructGLM可以适应图任务的归纳偏差,无需对LLM的架构和管道进行任何更改。
辅助自监督链接预测
-
为了消除指令提示 在单任务半监督学习中 只能将标记的训练节点视为中心节点 的限制,引入了自监督链接预测作为InstructGLM的基础辅助任务
-
给定任意跳跃级别
和中心节点 ,随机选择跳跃级别 的邻居或非邻居作为候选 -
判别提示:判别中心节点
和候选节点 在跳跃级别 上是否存在连接 - 生成提示:直接生成正确的邻居
-
判别提示:判别中心节点
-
-
链接预测的流程与上一步节点分类完全一致,唯一区别在于新设计的任务特定前缀
和两个不同的查询模板 和 -
'Perform link prediction for the central node. Pay attention to the multi-hop link relationships between the nodes.' -
'Which other node will be connected to within hop?' -
'Will be connected to within hop?'
-