写点什么

京东:DRL for List-wise Recommendations

  • 2019-12-02
  • 本文字数:2135 字

    阅读完需:约 7 分钟

京东:DRL for List-wise Recommendations

背景与介绍

目前,大多数的推荐系统都将推荐一系列步骤当做一个静态的过程,并且通过一个固定的策略来实施推荐(比如离线训练一个 CTR 模型,然后上线做预测)。这样的做法有两个明显问题:无法建模用户兴趣的动态变化;只是最大化立即收益(比如点击率),忽略了长期奖赏。因此,本文提出了一种强化学习模型来建模推荐系统与用户的不断交互过程。具体:介绍了一种在线的用户和推荐系统的交互模拟器,可以在模型上线前对其进行预训练;并且验证了用户与推荐系统交互过程中实施 list-wise 推荐的重要性,因为这样能提供给用户多样性的选择。现有的强化学习大多先计算每一个 item 的 Q-value,然后通过排序得到最终的推荐结果,这样忽略了推荐列表中商品本身的关联。而 list-wise 的推荐,计算的是一整个推荐列表的 Q-value,可充分考虑列表中物品的相关性,从而提升推荐的性能。

模型选择


  • a 模型需要输入一个 state,输出所有动作的 Q-value,当 action 太多时,该结构不适合应用。

  • b 模型输入是 state 和一个具体的 action,然后模型输出是一个具体的 Q-value,该模型的时间复杂度非常高。

  • c 模型是 Actor-Critic 结构。Actor 输入一个具体的 state,输出一个 action,然后 Critic 输入这个 state 和 Actor 输出的 action,得到一个 Q-value,Actor 根据 Critic 的反馈来更新自身的策略。

Online 环境模拟器

不像一些游戏场景,可以随机采取动作并实时得到相应的反馈。在推荐场景里面,实时奖赏很难在模型上线之前得到。因此在模型上线之前,需要基于用户的历史行为数据进行线下的预训练和评估。但是,我们只有 ground-truth 的数据和相应的反馈。因此,对于整个动作空间来说(也就是所有物品的可能组合),这是非常稀疏的。这会造成两个问题,首先只能拿到部分的 state-action 对进行训练,无法对所有的情况进行建模(可能造成过拟合),其次会造成线上线下环境的不一致性。因此,需要一个模拟器来仿真没有出现过的 state-action 的 reward 值,用于训练和评估线下模型。模拟器的构建主要基于用户的历史数据,其基本思想是给定一个相似的 state 和 action,不同的用户也会作出相似的 feedback。

系统框架

MDP 五元组


  • 状态:用户的历史浏览行为,即在推荐之前,用户点击或购买过的最新的 N 个物品。

  • 动作:推荐给用户的商品列表。

  • reward:根据用户对推荐列表的反馈(忽略、点击或购买)来得到当前 state-action 的即时奖励 reward。

  • 如果用户忽略推荐的这些商品,那么下一个时刻的 state 和当前的 state 是一样的,如果用户点击了其中的两个物品,那么下一个时刻的 state 是在当前 state 的基础上,从前面剔除两个商品同时将点击的这两个物品放在最后得到的。


实际中,如果使用离散的 indexes 去表示 items 不能建模不同 item 的之间的关系。一个常见的做法是增加一些信息来表示 item,比如 brand,价格,每月销量。本文则是使用用户和推荐系统交互信息,比如用户的购买历史。具体:将每个 item 当做一个 word,一个 session 下点击的 items 序列当做一个 sentence,通过 word-embedding 技术可以得到每个 item 的低维度向量表示。


User-Agent 交互仿真环境


仿真器主要基于历史数据,因此我们首先需要对历史真实数据的((state,action)-reward)对进行一个存储:



有了历史记忆 M 之后,仿真器可以输出从未见过的(s, a)状态动作对的奖励,该(s,a)定义为 [公式] 。首先需要计算[公式]和历史中状态-动作对 [公式] 的相似性:



那么 [公式] 获得 [公式] 对应的奖励 [公式] 的可能性定义如下:



然后这种做法计算复杂度太高,需要计算[公式]和历史记忆 M 中每条记录的相似性,为了处理这个问题,本文的做法是按照奖励序列对历史记忆进行分组,来建模[公式]获得某个奖励序列的可能性。


奖励序列表示:假设我们按一定的顺序推荐了两个商品,用户对每个商品的反馈可能有忽略/点击/下单,对应的奖励分别是 0/1/5,那么我们推荐给用户这两个物品的反馈一共有九种可能的情况(0,0),(0,1),(0,5),(1,0),(1,1),(1,5),(5,0),(5,1),(5,5)。这九种情况就是我们刚才所说的奖励序列,定义为: [公式] 。


将历史记忆按照奖励序列进行分组后, [公式] 所能获得某个奖励序列的概率是:



基于上述公式,得到了[公式]所获得的各个奖励序列的概率,然后进行采样得到具体的奖励序列。得到奖励序列后按照如下的公式将奖励序列转化为一个具体的奖励值:


模型结构


Actor 部分


输入是一个具体的 state,输出一个 K 维的向量 w,K 对应推荐列表的长度:



需要注意的是,state 只考虑用户的正向行为(点击购买),比如用户最近 10 次的点击。然后,用 w 和每个 item 对应的 embedding 进行线性相乘,计算每个 item 的得分,根据得分选择 k 个最高的物品作为推荐结果:



Critic 部分


Critic 部分建模的是 state-action 对应的 Q 值,需要有 Q-eval 和 Q-target 来指导模型的训练,Q-eval 通过 Critic 得到,损失函数为:



其中:



整个算法流程为:


总结

除了使用 item 的位置顺序信息外,也可以使用 items 的时间顺序信息。


该方法还没有在有 agent-user 交互的很多场景中都验证其有效果。


参考文献:


https://arxiv.org/pdf/1801.00209.pdf


https://www.jianshu.com/p/b9113332e


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


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


2019-12-02 13:32868

评论

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

极狐GitLab 15.3 | issues 中建任务、许可证合规分析,超 30 项更新全面来袭!

极狐GitLab

DevOps gitlab 运维 API gitops

CVE-2021-3129 分析

科技怪咖

企业经营管理系统哪家好?功能十分全面的阿米巴经营管理系统

优秀

项目管理工具 企业经营管理

树莓派3b+ python3.5+opencv3.4.1下载安装及配置详解

Five

树莓派 OpenCV Python. 8月月更

流日志轻松应对“10亿级别IP对”复杂场景,实现超大规模混合云网络流量可视化

Baidu AICLOUD

流日志 网络问题诊断 专线网络

性能提升1倍,成本直降50%!基于龙蜥指令加速的下一代云原生网关

OpenAnolis小助手

操作系统 网关 龙蜥技术 cpu加速

出海有道,融云携手生态伙伴打造「出海百宝箱」

融云 RongCloud

即时通讯 产品升级

移动办公平台迎来定制潮,WorkPlus如何在钉钉和企微光环下 “出圈”?

BeeWorks

network_factory.go源码分析

长安链

安卓应用及鸿蒙应用安全检测指南

科技怪咖

图解一致性模型

Databend

分布式 协议

CWE 4.7中的新视图 -- 工业控制系统的安全漏洞类别

科技怪咖

数字藏品是什么?NFT系统开发。

开源直播系统源码

数字藏品 数字藏品开发 数字藏品系统 数字藏品软件

基于 Serverless+OSS 分分钟实现图片秒变素描

阿里巴巴云原生

阿里云 Serverless 云原生 OSS

CVE-2022-22965 漏洞分析

科技怪咖

OpenSergo & CloudWeGo 共同保障微服务运行时流量稳定性

阿里巴巴云原生

阿里云 开源 微服务 云原生

面向大规模数据的云端管理,百度沧海存储产品解析

Baidu AICLOUD

云存储 混合云

数据湖架构及概念简介

阿里云大数据AI技术

大数据 阿里云 技术交流

TDesign 品牌价值观|视觉新基础

TDesign

腾讯 设计 开源项目

华为云VSS漏洞扫描服务为你排除Apache log4j2隐患

科技怪咖

长安链 p2p-Liquid 架构设计学习笔记

长安链

开源一夏 | 一文读懂Shiro登录认证全流程

六月的雨在InfoQ

开源 shiro realm 8月月更 Subject

A tour of gRPC:09 - gRPC Interceptor 拦截器

BUG侦探

gRPC RPC protocolBuffer

FIXP vs SSL/TLS,谁更安全?

LAXCUS分布式操作系统

网络安全 分布式系统

软件测试 | 测试开发 | 如何利用 xUnit 框架对测试用例进行维护?

测吧(北京)科技有限公司

软件测试

Windows下python组件hyperscan的编译与安装

科技怪咖

CVE-2022-22947 分析

科技怪咖

React useReducer 终极使用教程

蒋川

JavaScript react.js 低代码 Hooks useReducer

如何用VSS一键自动化扫描软件包/固件,快速排查安全风险

科技怪咖

二进制SCA指纹提取黑科技: go语言逆向技术

科技怪咖

LeaRun.Java工作流引擎 快速开发业务流程

力软低代码开发平台

京东:DRL for List-wise Recommendations_语言 & 开发_Alex-zhai_InfoQ精选文章