基于 Flink 和 RL 的实时推荐系统

Posted 阿泽的学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于 Flink 和 RL 的实时推荐系统相关的知识,希望对你有一定的参考价值。

作者 massquantity。
原文链接: https://www.cnblogs.com/massquantity/p/13842139.html

如今的推荐系统,对于实时性的要求越来越高,实时推荐的流程大致可以概括为:推荐系统对于用户的请求产生推荐,用户对推荐结果作出反馈 (购买/点击/离开等等),推荐系统再根据用户反馈作出新的推荐。这个过程中有两个值得关注的地方:


  • 这可被视为是一个推荐系统和用户不断交互、互相影响的过程。
  • 推荐系统需要对用户反馈作出快速及时的响应。



这两点本篇分别通过强化学习和 Flink 来实现,而在此之前先了解一些背景概念。

强化学习




强化学习领域的知名教材 《Reinforcement Learning: An Introduction》开篇就写道


当我们思考学习的本质的时候,脑中首先联想到的可能就是在与环境不断交互中学习。当一个婴儿在玩耍、挥舞手臂或是旁顾四周时,并没有任何老师教它,但它确实能直接感知到周围环境的变化。



强化学习的主要过程是构建一个智能体,使之在与环境交互的过程中不断学习,以期获得最大的期望奖励。它是一种非常通用的学习范式,可以用于对各种各样问题的建模,比如游戏、机器人、自动驾驶、人机交互、推荐、健康护理等等。其与监督学习的主要不同点在于:强化学习根据延迟的反馈通过不断试错 (trial-and-error) 进行学习,而监督学习则是每一步都有明确的反馈信息进行学习。

下图反映了一个推荐智能体 (recommender agent) 与环境进行互动的过程。这里将用户 (user) 视为环境,用户的行为数据作为状态 (state) 输入到智能体中,智能体据此作出相应的动作 (action) ,即推荐相应的物品给用户,用户对此推荐的反应如点击/不点击、购买/不购买等可视为新一轮的奖励。从这里可以看出,推荐可被认为是一个动态序列决策过程,推荐物品对用户产生影响,进而用户的反馈反过来影响推荐系统的决策本身,这样的过程会不断延续下去形成一个序列。


“决策” 这个词实际上很能代表强化学习本身的特点。设想当一个人在做决策的时候,很多时候需要对瞬息万变的局势进行评估并快速作出相应的选择,而另一方面,作出的决定需要考虑长期的目标而非仅仅是短期收益。而这两点恰恰是几乎所有用强化学习做推荐系统的论文中都会提到的关于传统推荐方法的问题,即将推荐视为静态预测的过程以及只注重短期收益等等。当然论文里这么说主要是为了凸显自己的成果,但实际的情况应该远不是这么简单。

强化学习的最终目标是学习出一个策略

以上是关于基于 Flink 和 RL 的实时推荐系统的主要内容,如果未能解决你的问题,请参考以下文章

基于 Flink 实现的商品实时推荐系统(附源码)

基于 Apache Flink + Hologres 的实时推荐系统架构解析

Flink + 强化学习 搭建实时推荐系统

实时数仓入门训练营:基于 Apache Flink + Hologres 的实时推荐系统架构解析

腾讯看点基于 Flink 构建万亿数据量下的实时数仓及实时查询系统

腾讯看点基于 Flink 构建万亿数据量下的实时数仓及实时查询系统