QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

  • 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:401748

评论

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

推倒重来的觉悟

FunTester

单元测试 Mockito powermock spock FunTester

面试官:说说react的渲染过程

全栈潇晨

React

使用 scipy.fft 进行Fourier Transform:Python 信号处理

华为云开发者联盟

Python 音频 信号处理 傅立叶变换 Fourier transform

存储空间降为原来的1/7,TDengine在中移物联网轨迹数据存储中的应用

TDengine

数据库 tdengine 时序数据库

设计模式【6.2】-- 再聊聊适配器模式

秦怀杂货店

Java 设计模式 适配器模式

云原生时代,领域驱动设计思想(DDD)如何落地?

华为云开发者联盟

软件架构 架构设计 建模 领域驱动设计思想 领域模型

大数据开发之数仓工具Hive(一)

@零度

大数据 hive 数仓工具

龙蜥社区一周动态 | 12.06-12.10

OpenAnolis小助手

龙蜥社区

大数据开发技术NN和2NN工作机制

编程江湖

大数据

OPPO云VPC网络实践

安第斯智能云

云计算 SDN架构 智能网卡vpc

react源码解析10.commit阶段

buchila11

React

初识腾讯移动通讯 TPNS~

阿策小和尚

28天写作 Android 小菜鸟 12月日更

0 基础学习 Flutter~(mini 进阶版)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter 内容合集 签约计划第二季

Java反射机制获取运行时类的完整结构

编程江湖

JAVA开发

JavaMoney规范(JSR 354)与对应实现解读

vivo互联网技术

Java、 API 虚拟化 虚拟货币

dart系列之:安全看我,dart中的安全特性null safety

程序那些事

flutter dart 程序那些事 12月日更 flutter 调试工具

前端开发之cypress的自动化实践

@零度

前端 Cypress

基于JSX的全新BDD工具 - Crius

RingCentral铃盛

设计模式【6.1】-- 初探适配器模式

秦怀杂货店

Java 设计模式

Linux学习方法《Linux一学就会》:网络管理技术

侠盗安全

Linux linux运维 运维工程师 云计算架构师

技术分享| Linux高并发踩过的坑及性能优化

anyRTC开发者

Linux 音视频 高并发 服务器 高并发优化

使用 JavaScript 给微信用户发送消息

汪子熙

微信 sdk 28天写作 Web JS SDK 12月日更

今年双12,《代码随想录》冲榜TOP1

博文视点Broadview

在中国如何打造一个有生命力的开源项目?

Jianmu

DevOps 持续集成 CI/CD 开源社区 持续部署

Android C++系列:Linux Socket编程(二)网络套接字函数

轻口味

28天写作 Android; 12月日更

React进阶(四):路由介绍

No Silver Bullet

React 路由 12月日更

react源码解析9.diff算法

buchila11

React

❤️使用 HTML、CSS 和 JS 创建在线音乐播放器(免费送完整源码)❤️

海拥(haiyong.site)

响应式 大前端 28天写作 签约计划第二季 12月日更

Vue之全局事件总线和消息订阅与发布

编程江湖

前端开发

阿里巴巴、埃森哲、德勤三方圆桌对话——《与数字化先锋共绘创新蓝图》

大咖说

阿里巴巴 大咖说 数字经济 数智化

【LeetCode】保持城市天际线Java题解

Albert

算法 LeetCode 12月日更

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