前端未来的主流技术方向有哪些?腾讯、京东、同城旅行等大厂都是怎么布局的?戳此了解 了解详情
写点什么

京东:利用 DRL 算法进行带负反馈的商品推荐

2019 年 11 月 29 日

京东:利用DRL算法进行带负反馈的商品推荐

背景与介绍

大都数传统的推荐系统(协同过滤、基于内容的推荐、learning-to-rank)只是将推荐过程当做一个静态的过程,并且在一段时间内是根据固定的模型来进行推荐。当用户的兴趣发生动态变化时,这些传统方法推荐的内容就不能捕捉到用户兴趣的实时变化。因此本文提出了一种 DRL 算法,可通过推荐系统和用户不断交互来持续提升推荐质量。


在电商领域,用户有正反馈和负反馈(比如用户点击了商品为正反馈,用户对商品没有任何操作称为负反馈),并且负反馈的数量远远大于正反馈。因此正反馈给模型带来的影响经常被负反馈给“冲刷”掉。本文提出的 deep recommender system(DEERS)的算法框架可将正、负反馈同时融入到模型中。


文中将了将 RL 引入到推荐系统中的两个优势:1. 通过用户与推荐系统的不断交互,可持续更新 try-and-error 策略,直到模型收敛到最优;2. 在当前状态动作对下,通过带延迟奖赏构造的 value 值可不断训练推荐模型。对于一个用户来讲,其最优的策略就是最大化该用户的期望累计奖赏。因此推荐系统通过很小的即时奖赏就可筛选出商品。


问题建模

环境:用户 agent:推荐系统


MDP 中各元素的定义为:


状态空间 S:用户之前的浏览历史,包括点击/购买过的和略过的,二者分开进行处理。同时,物品是按照先后顺序进行排序的。


动作空间 A:一次只给用户推荐一个物品,那么推荐的物品即动作。


即时奖励 R:在给用户推荐一个物品后,用户可以选择忽略、点击甚至购买该物品,根据用户的行为将给出不同的奖励。


状态转移概率 P:状态的转移主要根据推荐的物品和用户的反馈来决定的。


折扣因子 r:对未来收益进行一定的折扣



模型框架

基本的 DQN 模型,只考虑正向的反馈


状态 s: [公式],用户之前点击或购买过的 N 个物品同时按照时间先后进行排序


s 转移到 s’:假设当前的推荐物品 a,用户若点击或购买,则 [公式] ,若用户略过,则 s’=s 。


需要注意的是,仅仅使用离散的 indexes 去表示 items 是表达力不够的,比如相似的商品仅从 index 上也是无法推断的。一个常见的做法是,在表示 item 的时候加入额外的信息,比如 brand,price 和月销量等等。本文则是采用了另外一种方法,将用户的浏览历史当做一个 session 下的序列,然后通过 word embedding 技术去训练得到每个 item 的 embedding 表示(有点像 Airbnb 的做法)。



训练得到 item 的 embedding 之后,将状态和动作的 embedding 表示 concat 起来作为模型的输入,输出为该状态动作对的 Q 值。更新方法和传统的 DQN 是一样的。这里就不详细介绍了


  1. DEERS 模型,同时考虑正向和负向反馈


对于基本的 DQN 模型来说,一个明显的缺点是,当推荐的物品被用户忽略时,状态是不会发生变化的。因此 DEERS 模型在状态中也考虑被用户忽略过的商品。


当前状态 s: 当前状态 s 包含两部分 s=(s+,s-),其中 s+={i1,i2,…,iN},表示用户之前点击或购买过的 N 个物品,s-={j1,j2,…,jN},表示用户之前略过的 N 个物品。同时物品按照时间先后进行排序。


s 转移到 s’:假设当前的推荐物品 a,用户若点击或购买,则 s’+={i2,i3,…,iN,a},若用户略过,则 s’-={j2,j3,…,jN,a} 。那么,s’ = (s’+,s’-)。



如上图,DEERS 模型使用 GRU 来抽取 s+,s-两个序列的表征。


另外,DEERS 模型还考虑了商品之间的偏序关系。对于一个商品 a,偏序对中的另一个商品称为 [公式] ,但只有满足三个条件,才可以称为[公式]。首先,[公式]必须与 a 是同一类别的商品;其次,用户对于[公式]和 a 的反馈是不同的;最后,[公式]与 a 的推荐时间要相近。


若商品 a 能够找到有偏序关系的物品[公式] ,此时不仅需要预估的 Q 值和实际的 Q 值相近,同时也需要有偏序关系的两个物品的 Q 值差距越大越好,因此模型的损失函数变为:



其中,目标 Q 值 y 的计算为:



整个算法的流程为:



参考文献:


https://arxiv.org/pdf/1802.06501.pdf


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


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


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


2019 年 11 月 29 日 11:40662

评论

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

算法攻关 - 从上到下打印二叉树2 (O(n))_offer32

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关 从上到下打印二叉树

复盘读书笔记

lenka

3月日更

(28DW-S8-Day22) 《流程型组织》学习笔记:金字塔

mtfelix

28天写作

Zookeeper.02 - API

insight

zookeeper 3月日更

区块链+版权:NFT出圈,善用技术能否“破心中贼”?

CECBC区块链专委会

数字技术

《精通比特币》学习笔记(第九章)

棉花糖

区块链 学习笔记 3月日更

软件工程任务排期方法

steve_lee

翻译:《实用的Python编程》05_02_Classes_encapsulation

codists

Python

如何使用标准稳压器输出几百毫伏极低直流电压?

不脱发的程序猿

电路设计 28天挑战 3月日更 电源电路 标准稳压器

GO GC知识点整理

非晓为骁

go 垃圾回收 GC算法

滚雪球学 Python 之作用域下的 global 和 nonlocal 关键字

梦想橡皮擦

28天写作 3月日更

四款面向高并发、海量级分布式存储的分布式架构对比

读字节

kafka RocketMQ redis主从 redis cluster oceanbase

基于 SparkMLlib 智能课堂教学评价系统-系统设计(三)

大数据技术指南

大数据 spark 智能时代 28天写作 3月日更

第一天(VBA, Python最最最基础入门)

橙橙橙橙汁丶

自学 办公自动化 python excel IT蜗壳教学 vba

大作业(一)

Binary

数据采集之Flume采集及点击流模型详解

五分钟学大数据

大数据 28天写作 3月日更 flume 点击流模型

雄岸科技区块链布局价值待考

CECBC区块链专委会

区块链 科技

Mac Os下搭建Hadoop运行环境

白程序员的自习室

大数据 数仓 hadoo

Wireshark数据包分析学习笔记Day11

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

《精通比特币》学习笔记(第十章)

棉花糖

区块链 学习笔记 3月日更

大作业(二)

Binary

ARTS - week 2

steve_lee

区块链+金融落地应用详解

CECBC区块链专委会

金融

第27届中国国际广告节新闻发布会在厦门顺利召开 ;可口可乐和蒙牛竟然开了一家「可牛了」公司

󠀛Ferry

七日更 3月日更

爱赢才会拼——目标梯度效应

Justin

心理学 28天写作 游戏设计

打造技术人创作利器:Typora+PicGo+Github+Jsdelivr 组合拳

Viktor

创作 GitHub Pages 工具软件

通过使用终端(iTerm2&Oh my ZSH)来提高您的生产率 John 易筋 ARTS 打卡 Week 41

John(易筋)

ARTS 打卡计划 iterm2 myzsh

对产品经理的一些思考

ES_her0

28天写作 3月日更

HR14问

我是程序员小贱

面试 3月日更

我的Java转Go之路

roseduan

Java go 转行 Go web

多应用集中落地,四川区块链产业爆发增长

CECBC区块链专委会

区块链

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

京东:利用DRL算法进行带负反馈的商品推荐-InfoQ