2023 年 12 月 20 日,计算机领域的世界知名学者-俞士纶教授(Prof. Philip S. Yu)来到智谱大讲堂。此番 Philip 教授从学术界的视角,为我们展现了“推荐系统+大语言模型”的新世界,为我们在大模型领域的探索带来不少新的启示。
智谱大讲堂,是智谱AI为打造学习型组织,营造理性思考、启迪互动的学习氛围,面向全体员工开展的学习活动。本期是大讲堂第 75 期,也是著名学者专场之一。本文为本期大讲堂内容实录转写成文。
俞士纶教授(Prof. Philip S. Yu)
俞教授是美国伊利诺伊大学芝加哥分校计算机科学系的杰出教授和 Wexler 信息技术讲席教授,ACM 和 IEEE 的会士;俞教授已在各类会议和期刊上发表过超过 1600 篇被引用的论文,总引用次数超过 183600 次,H 指数为 192。
所获奖项:
- ACM SIGKDD 2016 创新奖。该奖项是为了表彰他在大数据挖掘、融合和匿名化等方面的具有影响力的研究和科学贡献。
- IEEE Computer Society 2013 年度技术成就奖。该奖项是为了表彰他在可扩展索引、查询、搜索、挖掘和大数据匿名化方面的"开创性和根本性的创新贡献"。
- ICDM 2003 年研究贡献奖。表彰他对数据挖掘领域的开创性贡献。
以下为本文目录,不妨结合要点进行针对性阅读。
👇
一、LLM Native的推荐系统
1、推荐系统有哪些不为人知的应用场景?
2、传统的推荐系统是怎样构建出来的?
3、传统的推荐系统的问题
4、广度学习+推荐系统
5、怎样用大型语言模型 (LLM) 做好推荐系统的广度学习呢?
6、多模态数据怎样融合在一起为推荐系统打分?
二、图模型(Graph Model)
1、结构 (关系) 信息
2、跨领域信息
3、物品信息
三、语言模型(Language Model)
1、产品文字信息
四、序列模型(Sequence Model)
1、基于时间序列预测的购物推荐
2、时间序列推荐系统的挑战和解决方法
3、时间序列推荐的加强版
1)捕捉多个用户 Sequence 之间的潜在联系
2)利用大语言模型进行推荐
五、新商品推荐
#1.
Philip:大家可能都知道,电子商务、社交网络广泛应用于我们的日常消费场景中,推荐系统的作用尤为重要。然而,推荐系统的应用不仅限于此,它还广泛应用于企业招聘、精准医疗等领域。
例如,在医疗领域中,精准医学本质上也是一种推荐系统,即推荐最佳的治疗方法。在我们的 Q&A 系统帮助下,可以在众多回答中挑选最合适的答案。
拿药物推荐举例,通常医生会倾向于推荐反响较好的药物,但这不一定是最适合患者的,这时候,个性化推荐系统的价值就是帮医生“对症下药”。
一是个性化推荐(以人为主),包括协同过滤(Collaboration Filter),主要是找到与你相似的人,然后根据他们的选择进行推荐;
二是基于物品的推荐(以物品为主),即根据你购买的物品推荐相似物品。
Philip:推荐系统面临的一个主要问题是所谓的“冷启动”问题。由于大多数人购买的物品有限,因此很多物品缺乏足够的评分,难以被推荐。因此,我们需要一种方法来表示人或物品,以便进行更有效的推荐。
向量表示法(Vector Representation)是其中比较理想的方法。其优点在于:我们可以轻松地通过数学方法比如向量距离(Vector Distance)或余弦相似度(Cosine Similarity)来判断两个项目是否相似。
当然,向量表示法也有其局限性,在电影推荐中,我们可以将每部电影视为一个特征,人们对电影的评分就是这些特征的坐标值。
然而,这种表示法并不高效,因为电影总量可能有几十万部,但一个人可能只评分过少数几十部电影,导致大部分特征值为零,浪费大量内存空间。因此,我们需要寻找低维度的表示方法。
Philip:“大数据”和推荐系统的关系密不可分。推荐系统内的大数据并非单一类型的数据,而是包含了各种形式的数据,如文本、图像等。因此,我们需要能够融合不同类型数据的方法:多模态模型。
大家可能对深度学习比较熟悉,但在多模态模型方面,深度学习和广度学习都取得了重要进展。
广度学习是一种将不同类型的数据综合起来的方法,这对推荐系统而言非常有用。例如,将用户的评分数据、产品评论、知识图谱和社交网络等信息综合起来,可以提供更全面的推荐。
5、怎样用大型语言模型(LLM)做好推荐系统的广度学习呢?
-
首先,我们需要决定使用哪些数据,并且确定哪些数据源是相关的。
-
然后,我们需要确定在每个数据源中挖掘什么样的资料。
-
最后,对于每个数据源,我们可以运用深度学习来帮助我们找到所需的资料。

那么如何利用这些 LLM 来做推荐呢?这正是当前众多研究者热衷探讨的问题。
方法一:LLM 做辅助工作,帮助我们提取有效的中间信息。例如,我们可以从多个文本资料中提取信息,如产品标题、描述或评论等。这些都是文本资料的实例。
通过使用 LLM,我们可以分析这些文本,总结出重要信息,甚至获得深层次的嵌入信息(embedding)。
方法二:LLM 直接构建推荐引擎,生成推荐。在这种情况下,我们需要决定如何将与特定人或物品相关的数据输入到模型中,让模型根据这些数据给出推荐。语言模型的回答即是推荐结果。
我们主要关注以下数据维度:
人为打分(User Rating)
知识图谱表示的产品信息(Product Info)
用户画像(User Profile)
用户社交关系(User social relationship)
背景信息(Context Info)
交叉领域信息(Cross Domain/Site Info)
时间信息(Temporal Info)

上述数据维度分别可以用图模型(Graph Model)、语言模型(Language Model)、序列模型(Sequence Model)来解决。
#2.
例如,我们可以把协同过滤(Collaboration Filter)表示成一个二分图,其中包括用户和物品。如果用户购买或喜欢某个物品,我们就在图中建立连接(edge)。
例如,如果 Tom 和 Bob 都买了同一本书(例如图中的 Deep Learning 教科书),我们就可以认为他们有相似的兴趣,并据此进行推荐。
问题:这种图(只包含“人”和“物”的联系)通常是稀疏的,因为它只包含用户和物品之间的路径(Path)。
改进方案:利用人-人,物-物的关系,人为构造出图中新的路径。
例如,我们可以通过用户之间的共同兴趣找到路径,或者通过共同喜欢的物品建立路径,再或者通过相同作者建立起物品之间的路径。图中的路径越多,我们就越能够为用户推荐更多种类的物品,从而提供更丰富的推荐选项。

最后,我们利用这种图模型的思路,可以创建出不同的模式来表示不同的用户和物品之间的联系。
例如,我们可以定义出不同的路径,比如两个用户喜欢同一个导演的电影,或者喜欢同一个类型的电影。这样,我们就可以创建出更加复杂和丰富的推荐系统。
最终,我们在传统 Graph Model 的基础上实现了显著的效果提升。

另外的一个方案是 Embedding,例如用二维图的连线表示关系,再通过 Embedding,在三维空间用距离远近表示关系远近。

以电影为例,可以通过多种路径联系 User,即按喜欢同一个导演、喜欢同一个类型,乃至喜欢同一部电影的方式,把不同的 Meta-paths 通过 Embedding 合并,构建用户之间的 Graph。
回到这张图,我们通过定义 User 之间不同的 Meta-path,随后做 Embedding,再根据结果做推荐。这样得到的精度会更好。

当然很多情况下我们并没有知识图谱的资讯,这时候的目标就是用生成的方式增加节点和边,包括用户之间的边、item 之间的边。

因此,如果只有用户或物品之间的关系,可以首先用 DNN 得到 Embedding,然后将 Embedding 相近的连在一起,这样就得到一个更完整的 graph。


当然,边加得越多,图就越复杂,训练时间也相应加长。因此边加多了之后,也可采用“Divide-and-conquer”的方式,即把完整图分为纯用户图、纯 item 图和用户-item 交互图,用异质网络的方法来处理,可以提高效率。



例如亚马逊上电子产品和服装是不同的领域,但有共同的用户。因此我们可以从一个领域训练出模型,fine-tuning 后应用于下一个领域中。

这里选取亚马逊的"Grocery and Gourmet Food" (杂货食品类)和 "Prime Pantry" (会员储藏类)数据集做训练,发现跨领域模型比单领域模型有了较大进步。


3、物品信息
例如我们在超市购物时,选择将牛奶放入购物车后,预测接下来还会放入面包、鸡蛋、面粉等物品。所以我们要用物品之间的关系来帮助预测。

在确定用户的“购物车”内容时,我们首先要预测用户的意图。如下图右侧,通过面包、麦片、酸奶,猜测用户意图是早餐,这样用于清洁的肥皂等物品就不符,而下方的水果类与早餐类则是符合的。通过这种方式,我们也取得了比直接预测物品更好的结果。
#3.
例如点评软件中两个用户打了同样的分,但给出了不同的评语,其背后的原因可能是完全不同的。
过往这种文字信息很难分析,但现在有了大模型后,我们就可以很方便地分别从用户角度和商家角度做定向推荐,如过往评价中对服务更关心的用户,可以推荐更多服务评级更高的商家。
在过往,一个商品的冷启动往往由于缺少已有路径而难以推荐。但分析好文字信息后,我们便可以从商品描述提取关键属性。
提取属性后,我们可将商品-属性、商品-商品,和 review 分别建模并结合,得到更精确的描述,可以看到精度有较大的提升。
#4.
还是在购物场景中,还会有一些序列类的数据信息。例如首先搜索键盘,然后确定细分键盘类型,再确定键盘品牌,最后又转向作为互补品的鼠标。
这一整个序列背后实际上蕴藏了许多逻辑和信息,因此我们可以基于序列模型,预测用户下一步想搜索的商品,这是推荐系统中很重要的一部分。

Philip:在协同过滤时,我们通常将一个用户与他过去购买的所有商品连接起来,但是这样并不能区分哪些商品是最近购买的,哪些是很久以前购买的。
如果我们认为订单顺序很重要,那我们就可以使用一种基于时间序列的模型来预测下一次购买的商品,而不是使用图模型。
序列模型的设计理念:把用户的各种购买行为转化成时间序列的 action,然后让 LLM 理解和预测 action,从而预测用户下一个购物兴趣点。
假设某个用户在第 1 个时间点购买了泳装,在第 30 个时间点购买了一双鞋,在第 50 时间点上购买了一个带 logo 标志的商品,在第 80 个时间点上购买了一个开屏装置。
我们的目标是预测他接下来会购买什么。购买历史序列的时间点会影响预测结果,例如,最后购买的开屏装置可能会影响接下来购买什么,而很久以前购买的泳装则可能与接下来购买的商品关系并不大。

挑战:无论是图模型还是序列模型,都很难解决数据稀疏问题:在图模型中,有些用户只与少数商品有连接;在序列模型中,许多用户的购买序列很短。

Philip:我们的解决方法是对 Sequence 数据进行优化。主要体现在消除噪音和调整了 Transformer 模型的使用方式两个方面。

消除噪音:购买序列可能会包括一些噪声。例如,我们有时可能会代替朋友或者家人购买一些商品,这些购买行为可能并不反映我们自己的购买偏好。
所以,当我们使用大型语言模型处理购买序列时,我们需要创建一种能对这些不确定性进行建模的 embedding(如通过使用概率性的 embedding 模型)。

调整 Transformer 模型的使用方式:用 Transformer 模型根据用户的购买序列预测用户曾经购买过的商品,而不是预测他们接下来会购买什么。例如,我们使用"123"来预测用户在"-2"和"-1"时间点购买了什么,然后通过将这个长序列送回 Transformer,进一步预测用户在"t+1"的时间点可能购买什么。通过这种方式来扩充原有的序列,并提升预测准确性。
3、 时间序列推荐的加强版 1)捕捉多个用户 Sequence 之间的潜在联系

我们只是看到一个人他过去的序列是什么,没有去思考他是否也有跟他购买习惯类似的其他人可能会购买什么。如果能从其他序列中获得一些灵感,比如两个序列之间的相关性,或者其他序列中两个项目之间的关系,那么就能改进 Transformer,使其能够抓取这些信息,大大提高推荐成功率。
4、 时间序列推荐的加强版 2)利用大语言模型进行推荐

我们还在探索直接使用大语言模型推荐的可能性。通过设计 prompt 提示词,将用户过去的购买序列作为提示,然后问大模型他接下来应该买什么。
#5.
Philip:因为新商品尚没有相关的购买记录,协同过滤可能无法很好地推荐新商品。但我们可以根据商品描述来进行推荐:如果一个新商品的描述与用户喜欢的商品的描述相匹配,那么我们的系统就会推荐这个新商品给用户。这种基于内容的推荐对于冷启动问题具有自然的优势。
#6.
如何使用不同的方法(图模型、语言模型和序列模型)来整合信息,并利用大型语言模型进行推荐。
-
在于如何设计有效的提示要点,来最大程度地利用大型语言模型的能力;
-
如何将推荐系统与用户进行更多的对话交流,而不仅仅是根据其过去的购买行为进行推荐。

作者 | 俞士纶教授
整理 | 王谦傲、梅煜东、邓欣昀
排版|郑寒
审核|李文珏、邓瑞恒
* 本文不代表智谱认同以上任何观点。
