曾经火热的Graph Embedding和GNN在推荐系统上还有前途吗?
这里是「王喆的机器学习笔记」的第四十四篇文章,前段时间回答了一个问题 为什么最近几年,没人在推荐系统里去玩 GNN 模型,GNN 是凉透了吗? 感觉大家还挺感兴趣,这次专门开一篇文章,再详细聊一聊Graph Embedding和GNN在推荐系统中的应用前景。
GNN的收益来源是什么?
我们做推荐系统的优化,一定要清楚每次优化的效果收益来源是什么。一般来说,收益总是来源于样本、特征和模型三个方向的一个或多个。但归根到底,可以再精炼成两个方面,收益要么来源于信息的增加(样本、特征),要么来源于信息利用能力的增强(模型)。
比如说,一个电影推荐系统,从来没有利用过电影中的演员信息,这时候把演员的信息加入到推荐系统中,很大概率能够带来效果的提升,因为这部分信息是新鲜的,系统从未学习过的知识,这就是增量信息带来的收益。
再比如说,我们的推荐模型本来是一个简单的MLP模型,把所有特征通过MLP进行交叉。但用户的行为是一个时间序列,是有前后关联性的,那么改成sequence model就能够更好的表达用户的行为及背后兴趣的变化,这部分的收益就是信息利用能力增强带来的。
说回到主题GNN。GNN能给推荐系统带来收益,主要是哪个方面呢?
我们拿一个电影阿甘正传的knowledge graph来说,它的相关导演,演员,风格的信息肯定是重要的。但对于一个成熟推荐系统来说,肯定是已经通过其他形式学习过这些信息了,比如直接把这些side information进行Embedding化之后喂给模型。我们没有必要一定使用GNN来学习这些知识,所以GNN的收益不来自于增量信息。
那么GNN如果有收益的话,就一定来自于信息利用能力的增强。我们拿一个比较经典的GNN方案RippleNet来说,它一层层的从中心节点扩展学习到周围节点,有二跳、三跳关联关系的学习能力。本质上来说,它利用了knowledge graph点与点之间的拓扑结构,并把拓扑结构中蕴含的关系信息编码到Embedding中去,可以说GNN增强了对知识图谱中关系结构的利用能力,这才是GNN的主要收益来源。
如果说RippleNet的结构还比较复杂的话,早期基于Random Walk的Graph Embedding生成方案更加纯粹的利用了节点间的拓扑结构。比如Node2vec分别基于BFS和DFS随机游走生成序列后,再进行Embedding编码。所以本质上,Node2vec没有引入任何新的知识信息,而是增强了对关系结构的利用能力。
GNN对拓扑结构的利用,对于推荐系统的收益够不够大?
知道了GNN的收益来源,我们就要回答下一个问题,就是这部分收益对于推荐系统来说重不重要。这里也要分两种应用场景进行讨论。
对于行为信息比较丰富的推荐系统来说,比如说抖音、小红书,其大量的用户行为之间的协同关系就可以充分表征内容的相似性了,它不再那么需要知识本体和属性间的连接来补充这种相似性。更何况,现在主流的推荐系统也已经通过直接添加特征的方式学习过知识图谱包含的知识了,由GNN提供的增量就更加微不足道了。
另一方面,对于一些纯知识性的推荐系统,比如说豆瓣、IMDB、知网等,这些网站中知识的链接是非常重要的,知识间二度、三度的关联也是有价值的。而且它缺乏足够多的用户互动信息来覆盖表达物品之间的相似性,那么GNN就是有价值的。
有的朋友可能会说,我们把用户和物品之间的行为也加入图中,不久可以把知识、行为和图结构一起编码了吗?看起来会让生成的Graph Embedding包含更充分的信息,推荐效果肯定会有提高。这个分析是有道理的,早期Pinterest也通过这一方式获得了收益,但这种超大规模的图训练也存在一些致命的问题。
GNN在实际应用中的一些致命问题
首先,实事求是的讲,主流的深度学习训练框架对于图数据的训练并不友好。我们是可以通过一些工程手段讲图数据转换成序列数据进行处理,但这需要比较重度的投入。而且由于要维护整个知识图谱的拓扑结构并在其上采样,GNN的训练成本往往很高,进一步增加了工程投入。
其次,GNN训练得到的Graph Embedding的实时性比较差,它的训练也无法做到目前主流深度学习模型的实时更新。因此GNN不可能作为推荐主模型来使用,只能把生成的Graph Embedding用于召回和特征输入。这让GNN的重要性大打折扣。
在深度学习推荐系统早期,大家的实时性都比较差,训练成本没有打下来的时候,GNN还有一定的优势,但如今主流的推荐模型都是实时更新的情况下,GNN的成本和实时性的问题进一步加大了产生绝对正收益的难度,让本来收益来源基础就比较薄弱的方案更加难以打平。
GNN的未来在哪里?
大模型的出现可以说是对GNN的降维打击。如果说曾经GNN对于知识图谱的学习还可谓是有独特优势,在大模型出现之后,GNN在该方向上的优势也荡然无存。大模型对于开放世界知识的全量学习,几乎可以吊打GNN对个别领域的知识学习。特别是多模态大模型几乎可以对文本、图片、音频、视频等任意信息进行同一空间内的Embedding化,更是让GNN的未来更加暗淡。
关于技术更迭的思考
GNN曾经在学术界是非常火热的研究方向,但实话实说,在工业界却鲜有成功应用。这是业界和学界对于“价值”判断的不同导致的。站在工程师的角度,我们要有火眼金睛,敏锐的分清哪些是看上去很美的方案,哪些是一针见血的方案,它们之间是有本质不同的。最重要的判断依据还是对于收益来源的精准分析。这里面有理性的成分,也有技术直觉的成分。玄学一点来说,这种直觉才是算法工程师应该建立的护城河。
就像“击败雅虎的不会是另一个门户网站,击败google的也不会是另一个搜索引擎”一样,淘汰一个技术的也不会是它的下一版,而是另一个维度的新方案。大模型毫无疑问在知识的广度和利用能力上,大大超出基于知识图谱的GNN,也就当之无愧的成为推荐系统新的更强大的信息输入源。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。