【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

强化学习在推荐算法的应用论文整理(一)

  • 2019-11-29
  • 本文字数:1934 字

    阅读完需:约 6 分钟

强化学习在推荐算法的应用论文整理(一)

一. 京东在强化学习的几篇文章


Deep Reinforcement Learning for List-wise Recommendations


本文将推荐的过程定义为一个序列决策的问题,通过 Actor-Critic 算法来进行 List-wise 的推荐。


模型结构:Actor-Critic



主要贡献:


  • 构建了一个线上环境仿真器,用于输出从未出现过的状态动作对的奖励,然后可线下对 Actor-Critic 网络参数进行训练。

  • 构建了基于强化学习的 List-wise 推荐系统。


  1. Recommendations with Negative Feedback via Pairwise Deep Reinforcement Learning


主要创新点:考虑负反馈以及商品的偏序关系,并将这种偏序关系建模到 DQN 的 loss 函数中。


若一个商品能够找到其偏序关系(两个商品必须是同一类别,用户反馈不同,推荐时间要相近)的物品,此时模型即希望预估的 Q 值和实际的 Q 值相近,同时又希望有偏序关系的两个商品的 Q 值差距越大越好。


框架:



  1. Reinforcement Learning to Optimize Long-term User Engagement in Recommender Systems


新颖处:状态中加入了用户的反馈、停留时长。


MDP 建模:


  • 状态:初始的状态 s1={u},即只有用户的信息。当进行了第一次推荐后,状态变为 s2={u,(i1,f1,d1)}。当推荐过 t-1 个物品后,状态 st = {u,(i1,f1,d1),(i2,f2,d2),…,(it-1,ft-1,dt-1)}。即 st = st-1 + {(it-1,ft-1,dt-1)}。这里 it-1 代表第 t-1 时刻推荐的物品,ft-1 表示用户对物品 it-1 作出的反馈,dt-1 表示用户对推荐的物品 it-1 的停留时间。

  • 动作:可推荐的物品的集合,时刻 t 的动作就是该轮推荐的物品 it。

  • 状态转移概率:p(st+1| st,it)

  • 奖赏:点击次数、滑动深度和用户下次访问 APP 的时间奖励这三者的加权平均。

  • 模型分为 Q 网络和 S 网络,其中 Q 网络来拟合状态动作对的价值函数,S 网络是一个仿真环境,用于输出奖赏值。



可以看到最终的 state 表示是(4 个 LSTM 模块提取的输出 + 用户的 embedding) +item 的 embedding 表示,模型的更新和传统的 DQN 没什么区别。这里为什么要用 4 个 LSTM 呢?因为只用一个 LSTM 的话,正向行为(点击或购买)的信息容易被大都数负向行为所冲刷掉。并且用户不同的行为都有自己的特征。比如点击行为通常表现出用户的当前兴趣偏好;购买行为表现出用户的兴趣转移过程等等。



输出共有四部分,分别是预测用户的反馈形式、预测用户的停留时间、预测用户再次进入 App 的时间间隔、预测用户是否会关闭 APP。通过训练,得到的模型就可以去预估奖赏值,从而构造完整的 transition 样本用于 Q 网络的训练。


  1. Toward Simulating Environments in Reinforcement Learning Based Recommendations


基于 gan,提出了一种 RL 的仿真环境,用于产生训练数据。有 gan 就会有 generate 和 discriminator,其中 generate 的结构为:



为 encoder-decoder 结构,其中 encoder 的输入为用户的浏览序列 e+f(商品+用户对商品的反馈),然后经过 embedding 层,然后再 concat 起来,最后通过 GRU 层得到最终的 hidden state,表示用户当前的偏好。Deocder 的目标是预测下一个要推荐给用户的商品,输入是用户当前的偏好,经过多层的 MLP 得到一个向量。为了得到一个具体推荐的商品,可以拿所有待推荐的商品 embedding 分别和 decoder 输出的向量计算相似度,选择相似度最高的一个商品推荐给用户。


Discriminator 结构:



上图左下角的输入和 generator 一样,但是参数不同。右下角把真实的推荐商品和 generator 生成的推荐商品作为输入,经过两层 MLP 得到输出 [公式],然后将两部分输出 concat 起来经过 MLP 和 softmax 层得到最终的输出,长度为 2*K,其中 K 代表用户反馈类型的种类。输出结果为:



输出前 k 维表示如果这个输入的是真实的商品(这里的真实商品即用户在当前状态下,下一个实际浏览的商品)的话,用户的每种反馈的概率,后 K 维表示,如果这个输入是 Generator 产生的话,用户的每种反馈的概率。


那么怎么训练 Discriminator 和 Generator 呢?对于 Discriminator 来说共有两个目标,判断输入是真实的商品还是 Generator 产生的,同时,要保证用户真实的反馈和 Discriminator 得到的用户反馈类型分布的差距要大。对于 Generator 来说,同样有两部分的损失,一是希望能尽可能骗过 Discriminator,使得 Discriminator 将 Generator 产生的推荐商品判别为假的概率越低越好,二是希望产生的推荐商品向量,与真实序列中下一个商品的向量距离越近越好。


总结来说,使用 GAN 还是为了解决 RL 应用在电商领域中的一些限制:比如商品和用户数量巨大,导致整个的状态空间和动作空间十分巨大,每个用户的训练样本较稀疏,这样直接训练会导致模型不鲁棒,上线实验也会造成用户体验的损害。使用 GAN 来产生一些离线训练样本会一定程度上解决该问题。


本文转载自 Alex-zhai 知乎账号。


原文链接:https://zhuanlan.zhihu.com/p/77332847


2019-11-29 11:401461

评论

发布
暂无评论
发现更多内容

后端服务太多,且涉及多种语言,如何进行高效管理?

我爱娃哈哈😍

架构 架构设计 架构场景实战

产品经理训练营 Week3 学习心得

Mai

模块二课后作业

Damon

关于 Spring 中 getBean 的全流程源码解析

小傅哥

Java spring 源码分析 小傅哥 getBean流程

陌陌一面,为什么SpringBoot的 jar 可以独立运行?

Java小咖秀

jar maven springboot 集成 pom

细说Python Lambda函数的用法,建议收藏!

华为云开发者联盟

Python 函数 匿名 Lambda函数 表达式

带你入门目标检测算法

华为云开发者联盟

网络 数据集 目标检测 yolo two-stage

【LeetCode】移除元素Java题解

Albert

算法 LeetCode 4月日更

一文搞懂分布式锁的原理与实现

架构精进之路

分布式锁 4月日更

app架构师,10天拿到字节跳动安卓岗位offer,好文推荐

欢喜学安卓

android 程序员 面试 移动开发

女朋友问我:MySQL 事务与 MVCC 原理是怎样的?

一个优秀的废人

Java 数据库 事务隔离级别 事务 MVCC

模块二:课后作业

iHai

架构实战营

一文带你更方便的控制 goroutine

万俊峰Kevin

线程 并发 Go 语言 goroutine

这三年被分布式坑惨了,曝光十大坑

悟空聊架构

用WASM连接Rust与Python | Rust 学习笔记(三)

李大狗

Python rust 狗哥 Wasm

MySQL权限管理实战!

Simon

MySQL 权限管理

技术干货 | 基于MindSpore更好的理解Focal Loss

华为云开发者联盟

损失函数 mindspore Focal Loss 图像物体检测 采样

产品经理训练营 Week4 学习心得

Mai

面向K8s设计误区

阿里巴巴中间件

云计算 Kubernetes 容器 分布式

女朋友问我:什么是 MySQL 的全局锁、表锁、行锁?

一个优秀的废人

MySQL 数据库 锁机制 备份

图算法系列之无向图的数据结构

Silently9527

Java 数据结构和算法 图算法 无向图

聪明人的训练(十九)

Changing Lin

4月日更

微信朋友圈高性能架构

chenmin

Spark任务等待与运行策略

小舰

4月日更

阿里P7手把手教你!系统学Android从零开始,内含福利

欢喜学安卓

android 程序员 面试 移动开发

深入剖析共识性算法 Raft

vivo互联网技术

复制 选举 分布式协调 Leader Follower

新一代容器,安全容器kata-container实践

ilinux

Kubernetes 容器

6种常见的地标识别算法整理和总结

华为云开发者联盟

KNN CNN 地标识别 GLDv2 地标识别算法

使用gradle插件发布项目到nexus中央仓库

程序那些事

Java maven Gradle 程序那些事

重读《重构2》- 封装记录

顿晓

重构 4月日更

[转] 程序员在工作中如何做好技术积累

小江

技术管理 架构师 自我思考 个人总结

强化学习在推荐算法的应用论文整理(一)_语言 & 开发_Alex-zhai_InfoQ精选文章