【推荐系统】推荐系统(RS)与大模型(LLM)的结合
文章目录
- 【推荐系统】推荐系统(RS)与大模型(LLM)的结合
- 1. 主流的推荐方法
- 2. 大模型(LLM)可能作用的地方
1. 主流的推荐方法
目前使用推荐最多的方法:协同过滤、内容过滤 和 上下文过滤。
- 协同过滤算法:根据许多用户的偏好信息(这是协作部分)推荐物品(这是过滤部分)。
- 此方法使用用户偏好行为的相似性,并鉴于用户与物品之间的之前交互,推荐算法便可以学会预测未来交互。
- 协同过滤推荐(Collaborative Filtering Recommendation)技术是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。
- 优点:
- 能够有效的使用其他相似用户的反馈信息,较少用户的反馈量,加快个性化学习的速度
- 能够过滤难以进行机器自动内容分析的信息,如艺术品,音乐等
- 有推荐新信息的能力
- 缺点:
- 数据稀疏性问题
- 可扩展性问题、冷启动
——————
- 内容过滤算法 则使用物品的属性或特征(这是内容部分)来推荐类似于用户偏好的其他物品。
- 此方法基于物品和用户特征的相似性,并鉴于用户及其与之交互过的物品的信息(例如,用户的年龄、餐厅的菜系、电影的平均评价),来模拟新互动的可能性。
- 基于内容的推荐系统中,是通过相关内容的特征属性来定义,系统基于用户评价对象的特征,学习用户的兴趣,考察用户资料与待预测项目的相匹配程度。而用户的资料模型取决于所用学习方法,常用的有决策树、神经网络和基于向量的表示方法等。基于内容的用户资料是需要有用户的历史数据,用户资料模型可能随着用户的偏好改变而发生变化。
- 优点:
- 没有冷启动、新项目和数据稀疏问题
- 能为具有特殊兴趣爱好的用户进行推荐
- 缺点:
- 所推荐的内容必须能抽象出有意义的特征,并且具有良好的结构性
——————
- 上下文过滤算法 包括推荐过程中用户的背景信息。
- 此方法使用一系列上下文用户操作和当前上下文来预测下一个操作的概率。
- 上述两种方法可以将最符合用户兴趣 的物品推荐给用户,但这些算法都忽略了一点,就是用户所处的上下文(context)。这些上下文 包括用户访问推荐系统的时间、地点、心情等,对于提高推荐系统的推荐系统是非常重要的。
- 比如,一个卖衣服的推荐系统在冬天和夏天应该给用户推荐不同种类的服装。推荐系统不能因为用户在夏天喜欢过某件T恤,就在冬天也给该用户推荐类似的T恤。
- 因此,准确了解用户的上下 文信息,并将该信息应用于推荐算法是设计好的推荐系统的关键步骤。
——————————————————————
当然还有其他一些其他的方法:
-
基于关联规则的推荐 以关联规则为基础,如把已购商品作为规则头,规则体为推荐对象。
- 关联规则挖掘可以发现不同商品在销售过程中的相关性(最典型的:啤酒和尿布),在零售业中已经得到了成功的应用。管理规则就是在一个交易数据库中统计购买了商品集X的交易中有多大比例的交易同时购买了商品集Y,其直观的意义就是用户在购买某些商品的时候有多大倾向去购买另外一些商品。
-
基于效用的推荐 是建立在对用户使用项目的效用情况上计算的,其核心问题是怎么样为每一个用户去创建一个效用函数,因此,用户资料模型很大程度上是由系统所采用的效用函数决定的。
- 基于效用推荐的好处是它能把非产品的属性,如提供商的可靠性(VendorReliability)和产品的可得性(Product Availability)等考虑到效用计算中。
-
基于知识的推荐 在某种程度是可以看成是一种推理(Inference)技术,它不是建立在用户需要和偏好基础上推荐的。
- 基于知识的方法因它们所用的功能知识不同而有明显区别。效用知识(FunctionalKnowledge)是一种关于一个项目如何满足某一特定用户的知识,因此能解释需要和推荐的关系,所以用户资料可以是任何能支持推理的知识结构,它可以是用户已经规范化的查询,也可以是一个更详细的用户需要的表示。
2. 大模型(LLM)可能作用的地方
现有大模型可以进行 训练 或者 微调 方法来服务于特定的领域,比如 RS。由于大模型的性质,现有的方法大致都作用在偏文本的信息上,也就是作用在基于内容、上下文的推荐,可以分为两类:
- 1)利用大模型的架构(不一定是模型,几层encoder可能就行)去对用户、物品侧信息或者上下文信息(文本)进行处理得到 表示,进而用来训练。
- 首先使用 word2vec 或者 skip 等方法处理文本信息得到向量。(传统的方法怎么做的:就是提取有用的特征(性别、年龄等),然后扔到双塔或者单塔的模型中,然而这样的模型无法去识别这些特征的含义。),引入语言模型就可以轻松解决这个问题。
- 然后将获取向量,扔到语言模型中去训练呗,得到表示,再扔到双塔或者单塔,进行用户物品交互建模。
- 2)微调大模型以适应RS
-
一种我看到的方法:构建一个提示任务,利用 lora 微调技术,构建损失,优化 lora 模块
- 提示:给出用户的喜欢物品和不喜欢的物品,使大模型来预测以下用户是否喜欢下列物品。
- 输入:用户喜欢的:。。。。用户不喜欢的:。。。。用户是否会喜欢 X?
- 输出:yes/no
这种方法,可行性有待商榷,如果在线上任务中,到时候每一个候选物品都问一遍?感觉有些大材小用。
-
当然还有一些其他的类似的方法。
-
上述两种方法,都没有作用在协同过滤上,是因为传统的协同过滤是不需要文本信息的。因为你要使用大模型处理你的任务,你就必须要你的任务以文本的方式输送给大模型,并构建损失,优化目标。
- 显然,传统的协同过滤,一般不具有自然的很有意义的文本。