背景
推荐系统在当代社会中被广泛采用,以缓解信息过载的问题。传统上,研究人员主要关注优化用户的即时响应(例如点击)以最大化即时收益。而对于捕捉用户的长期兴趣,现有方法主要采用强化学习 (RL),通过最大化长期推荐的累积奖励来学习规划能力。
痛点
研究人员主要关注优化用户的即时响应,这种贪婪的推荐策略往往过度迎合用户的即时利益,忽视了长期参与度。
传统推荐系统缺乏有效的规划能力,难以在即时响应和长期参与度之间取得平衡。
现有强化学习方法在稀疏数据环境下容易出现过拟合,难以有效捕捉用户的长期兴趣。
解决方案
利用大语言模型在稀疏数据上的卓越规划能力,实现长期推荐。
- 轨迹(Trajectory):表示为[s₁, t₁, a₁, r₁,…a_N, r_N],其中s表示状态,t表示思想,a表示动作,r表示奖励。轨迹记录了推荐系统与用户交互的完整过程。
- 反思器(Reflector):接收轨迹作为输入,生成反思(Reflections ℓ),这些反思是对过去交互经验的总结,用于更新规划器的记忆。
- 规划器(Planner):利用记忆中的高阶经验和当前状态来生成思想(Thought t_n),这些思想指导演员执行具体动作。
- 演员(Actor):根据规划器生成的思想和当前状态,结合记忆和工具库,生成具体的推荐动作(Action a_n)。
- 评论者(Critic):评估演员生成的动作的长期优势(Advantage),帮助演员更新策略,提高推荐的个性化和有效性。
- 模拟环境(Simulated Environment):模拟用户行为,接受推荐动作并提供奖励(Reward r_n)和下一个状态(State s_{n+1})。
- 记忆更新(Memory Update):表示数据被用于更新后续模块的记忆,以改善未来的规划和推荐。
- 工具调用(Call Tools):演员可以调用工具库中的工具来获取有价值的统计信息,辅助生成推荐动作。
- 大型语言模型冻结(LLM Freeze):表示在某些模块中,大型语言模型的参数是固定的,不进行更新。
具体流程:
1.
初始化
- 规划器(Planner):初始化规划器的记忆模块(Mem),加载预训练的LLM模型,并设置记忆检索的相似性阈值。
- 演员(Actor):初始化演员的记忆模块(Mem)和工具库(Tool),加载预训练的LLM模型,并设置记忆检索的相似性阈值和温度系数。
- 评论者(Critic):初始化评论者记忆模块(Mem),加载预训练的LLM模型。
2.
宏观学习(Macro-Learning)
- 轨迹输入(Trajectory):轨迹[s₁, t₁, a₁, r₁,…]作为输入,其中s表示状态,t表示思想,a表示动作,r表示奖励。
s1:初始状态 s1 是用户与推荐系统开始交互时的起始状态,通常包含用户的初始信息,如用户的基本特征、历史行为数据等。
t1:思想 t1 是规划器(Planner)根据当前状态 s1 和记忆中的经验生成的高层次指导计划。
a1:动作 a1 是演员(Actor)根据规划器生成的思想 t1、当前状态 s1 和工具库中的信息生成的具体推荐项目。
r1:奖励 r1 是模拟环境(Simulated Environment)根据动作 a1 提供的反馈,表示用户对推荐动作的满意度。
- 反思器(Reflector):
-
- 接收轨迹作为输入,生成反思(Reflections ℓ)。
- 实施反思器作为LLM实例,基于预定义的指令提示和少量示例,生成反思。
- 将生成的反思用于更新规划器的记忆模块。
- 规划器(Planner):
-
- 利用记忆中的高阶经验和当前状态s₁来生成思想(Thought t₁)。
- 从记忆库中检索最相关的反思,结合当前状态和历史轨迹,生成思想。
- 将生成的思想传递给演员模块。
3.
微观学习(Micro-Learning)
- 演员(Actor):
-
- 根据规划器生成的思想t₁、当前状态s₁以及工具库中的信息,生成具体的推荐动作a₁。
- 从记忆中检索有价值的微经验,调用工具库获取当前状态的统计信息。
- 结合检索结果和工具分析,提示LLM生成推荐动作。
- 将生成的动作传递给模拟环境。
- 模拟环境(Simulated Environment):
-
- 接收推荐动作a₁,模拟用户行为,提供奖励r₁和下一个状态s₂。
- 评论者(Critic):
-
- 评估演员生成的动作a₁的长期优势(Advantage)。
- 基于当前状态s₁和动作a₁,预测状态值函数V(s₁)。
- 计算动作优势值A₁,用于更新演员的策略。
4.
记忆更新(Memory Update)
- 规划器记忆更新:
-
- 将反思器生成的反思ℓ₁注入规划器的记忆模块,更新记忆。
- 演员记忆更新:
-
- 将当前状态s₁、动作a₁和对应的价值V(s₁)作为新经验注入演员的记忆模块。
- 评论者记忆更新:
-
- 将状态s₁和更新后的状态值函数V(s₁)注入评论者的记忆模块。
5.
重复上述过程,直到用户结束交互或达到最大交互轮次。用户结束交互后,系统总结经验,进一步优化规划器和演员的记忆模块以及策略。