Flink + 强化学习搭建实时推荐系统 思维导图
Flink + 强化学习搭建实时推荐系统 思维导图
强化学习
决策 代表强化学习本身的特点。需要对瞬息万变的局势进行评估并快速作出相应的选择,同时需要考虑长期的目标而非仅仅是短期收益
强化学习的最终目标是学习出一个策略来最大化期望奖励。策略指的是智能体如何根据环境状态来决定下一步的动作,对应到推荐的场景中就是根据用户过往行为记录来决定下一步推荐的物品
不同于监督学习的需要预先人工收集数据并标注,强化学习的数据来源于不断地与环境进行互动,继而用收集来的数据更新模型
训练强化学习时也收集一堆固定的数据,然后不断重复利用,不再收集新的,仿照深度学习那样在固定数据集上大力出奇迹,而推荐系统就很适合这种模式,因为直接线上探索交互代价太大,影响用户体验,但收集用户行为日志却相对容易且数据量大
Flink
Flink 官网上的自我介绍是 数据流上的有状态计算 (Stateful Computations over Data Streams)
随着数据的不断流入,其可以保存和访问之前的数据和中间结果,当到达特定的条件后一并计算
强化学习模型需要累计一定的用户行为才能作为模型输入作推荐,所以需要在 Flink 中实时保存之前的行为数据,用到 Flink 强大的状态管理功能
传统离线训练使用的深度学习框架是 PyTorch,这个不像 Tensorflow 那样部署方便,所以采用近年来流行的 FastAPI 做成 api 服务,在 Flink 中获取满足条件的特征后直接调用服务进行推理,产生推荐后存到数据库中,服务器在下次用户请求时可直接从数据库中调用推荐结果
FlinkRL
FlinkRL 是一个基于 Flink 和强化学习的推荐系统,二者的结合使得推荐系统能够捕获用户兴趣的动态变化规律并提供富有洞察力的推荐结果
https://github.com/massquantity/flink-reinforcement-learning
FlinkRL 主要用于在线推理,而离线训练在另一个仓库 DBRL 中实现
为模拟在线环境,由一个数据集作为生产者发送数据到 Kafka,Flink 则从 Kafka 消费数据
DBRL
DBRL 是一个用于训练强化学习推荐模型的工具,和传统强化学习的训练不同,DBRL 中只使用静态数据来训练模型,而不与环境作任何进一步的交互
https://github.com/massquantity/DBRL
训练完成后的模型可用于在线服务,主要使用 Flink 和训练后的强化学习模型作在线推荐
golang技术交流群:316397059,vuejs技术交流群:458915921 囤币一族:621258209,有兴趣的可以加入
微信公众号: 心禅道(xinchandao)投资论道