专栏首页小小挖掘机推荐系统遇上深度学习(五十)-使用强化学习优化用户的长期体验

推荐系统遇上深度学习(五十)-使用强化学习优化用户的长期体验

在现有的推荐模型中,往往优化的目标是点击率,而忽略了用户的长期体验。特别是在信息流推荐中,给用户推荐一个标题很吸引人但内容比较无聊的消息,往往点击率很高,但用户会觉得体验很差。因此,用户的长期体验也需要重视。本文介绍京东与清华大学合作发表的论文,该论文使用强化学习来优化信息流推荐中用户的长期体验。咱们一起来学习一下。

论文题目:《Reinforcement Learning to Optimize Long-term User Engagement in Recommender Systems》

论文下载地址:http://export.arxiv.org/abs/1902.05570

1、问题定义

本文是京东和清华合作发表的论文,所以我们可以把它视作京东的推荐场景,用户会不断的与推荐系统推荐出的物品进行交互。当页面出现一个物品时,用户可以点击并查看消息详情、进行下单、忽略该物品、继续下滑查看更多物品或者关闭app。推荐系统要做的就是在这个过程中优化用户的体验。这种体验包括两方面,即时体验如用户点击率 和 长期体验如用户的黏度。用户的黏度又可以体现在许多方面,如用户在APP中的停留时间、打开APP的频率等等。

信息流推荐中,可以看作是第1次推荐-用户反馈-第2次推荐-用户反馈----第n次推荐-用户反馈这样的一个过程,或者说,我们可以将其定义为一个马尔可夫决策过程。因而可以通过强化学习方法来进行学习。对于一个马尔可夫决策过程,通常用<S、A、P、R、γ>来表示。在本文的推荐场景中,这几部分的定义分别如下:

状态(State)S : 在这里,我们假定每次推荐一个物品i。初始的状态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的停留时间。

动作(Action)A:这里的动作空间是可推荐的物品的集合,与当前的状态s相关,计作A(s)。初始阶段,所有的物品都可以进行推荐,随着时间步的推进,每推荐一个物品,就将其从可推荐物品集合中剔除。而时刻t的动作就是该轮推荐的物品it

状态转移概率P:状态转移概率可以用如下的式子表示:p(st+1 | st,it)。

奖励(Reward)R: 由于我们不仅要优化用户的即时体验,还要优化用户的长期体验,因此这的即时奖励r比较复杂,这里将其定义为:

可以理解为总的即时奖励r,是一堆分解奖励的加权平均,那具体包含哪些因素呢?这里主要包含以下三个方面:

点击次数:用户对该次推荐的物品的点击次数。 滑动深度:表示用户在经过该次推荐之后,又往下滑动了多少屏。也就是说,该次推荐之后,又经过了多少轮推荐。上面解释的可能比较晦涩,举个简单的例子。假设在一次信息流推荐的过程中,共进行了10轮,当前是第4轮,后面还有6轮,那么其滑动深度的奖励就是6 。 回归时间:用户下次访问APP的时间,如果这个时间间隔越小,奖励就越大,所以通常表示为此次访问和下次访问APP中间的时间间隔的倒数:

介绍完了MDP中的各个部分,接下来我们就看一下如何使用强化学习进行推荐吧。

2、模型介绍

这里模型分为两部分,一个是Q网络,一个是S网络,Q网络来拟合状态价值函数Q(st,it),S网络是一个仿真环境,用于输出上文介绍的各个部分的奖励值。接下来,我们分别介绍以下两个部分。

2.1 Q网络

这里的模型学习的是状态价值函数Q(st,it),其网络结构如下:

前面介绍了,状态是st = {u,(i1,f1,d1),(i2,f2,d2),...,(it-1,ft-1,dt-1)},这里第t轮时之前推荐过的所有物品组成的集合{ij}={i1,i2,...,it-1}。物品首先转换为对应的embedding,计作{ij}(这里是粗体)。

随后,每一种用户的反馈形式都会对应一个投影矩阵,假设物品的embedding长度为H,那么投影矩阵的形状是H * H的。这样,将物品的embedding经过投影矩阵的变换后,得到新的物品embedding:

随后,新的物品embedding,会和停留时间进行拼接,输入到4个不同的LSTM部分中。这四个LSTM含义分别如下:

1)将状态s中包含的物品集合{ij},按顺序输入到LSTM中,得到最终的输出。

2)将状态s包含的物品集合{ij}中,用户反馈形式是skip的物品按顺序输入到LSTM中,得到最终的输出。

3)将状态s包含的物品集合{ij}中,用户反馈形式是click的物品按顺序输入到LSTM中,得到最终的输出。

4)将状态s包含的物品集合{ij}中,用户反馈形式是order的物品按顺序输入到LSTM中,得到最终的输出。

你可能会觉得,只要有第一个LSTM就足够了,为什么还要加入后面的部分呢?文中解释了两点原因。首先是,用户的不同行为是非常不均衡的,比如10个物品中,可能8个是忽略,只有1个是点击或购买,那么点击或购买的信息很容易被忽略掉。其次是,用户的每种不同的行为,有其独有的特点。如点击行为通常表现出用户的当前兴趣偏好;购买行为表现出用户的兴趣转移过程等等。

在得到4部分的输出之后,将这四部分以及用户的embedding共五部分进行拼接,得到最终的state的向量表示:

最后,将state的向量表示,以及待推荐物品的embedding(即action的向量表示),输入到多层全连接神经网络中,得到最终输出状态价值Q的预估值:

而模型的损失函数为:

这里好像是没有用到双网络结构的。因为文中给出的损失函数计算公式中,下一个状态-动作对的价值仍然使用网络θq来计算得到。

2.2 S网络

为了离线训练Q网络,这里文中通过一个S网络来对真实环境进行模拟,用来计算即时奖励r。该网络的结构如下:

S网络得到state的向量表示以及action的向量表示的过程,同Q网络。尽管结构与Q网络一样,但是参数与Q网络并不相同。这里模型的输出共有四部分,分别是预测用户的反馈形式、预测用户的停留时间、预测用户再次进入App的时间间隔、预测用户是否会关闭APP:

S网络的损失函数如下:

可以看到,这里对损失函数是进行了一定加权处理的,这里主要的原因是S网络只能通过实际线上日志来训练,而在S网络训练好之后,Q网络是可以利用S网络来生成训练数据并进行训练的。这样,Q网络的策略π和日志中的策略πb是有一定的偏差的。但我们希望S网络的策略πb与Q网络的策略π更相近。这里的策略可以理解为在某个状态s下推荐某个物品的概率。

文中通过加权的方式对损失函数进行处理,处理过程如下:

2.3 整体架构

总结一下整个模型的训练过程:

首先我们会通过日志记录预训练一个S网络,这里应该不会对比Q网络的策略对损失进行加权。

随后,我们依次训练Q网络和S网络。这里Q网络的训练数据就可以配合S网络来生成。而S网络需要不断训练的原因是Q网络的策略π是不断变化的,那么损失函数中权重是不断变化的,因此需要反复训练来尽可能消除策略πb与Q网络的策略π的差异。

写在最后吧,文中有提到强化学习中的Deadly Triad问题。这里自己现在还没有理解。如果大家对这个感兴趣,可以参考下面的论文:https://arxiv.org/abs/1812.02648。

本文分享自微信公众号 - 小小挖掘机(wAIsjwj),作者:石晓文

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • RS Meet DL(51)-谈谈推荐系统中的冷启动

    先说说为何改了标题吧,之前使用中文的话,前缀实在太长了,分享到群聊的时候,真正的标题根本不知道是什么。因此从本文开始,我们使用RS Meet DL来替换原来的标...

    石晓文
  • RS Meet DL(56)-[阿里]融合表示学习的点击率预估模型DeepMCP

    本文介绍的论文名称是:《Representation Learning-Assisted Click-Through Rate Prediction》 论文下载...

    石晓文
  • 推荐系统遇上深度学习(三十九)-推荐系统中召回策略演进!

    推荐系统中的核心是从海量的商品库挑选合适商品最终展示给用户。由于商品库数量巨大,因此常见的推荐系统一般分为两个阶段,即召回阶段和排序阶段。召回阶段主要是从全量的...

    石晓文
  • SAP CRM, C4C和Salesforce UI备注中的长文本图片支持功能

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • 推荐系统基础知识储备

    1.1.1 推荐系统概述 首先,需要申明一点的就是推荐系统!=推荐算法。推荐系统是一套完善的推荐机制,包括前期数据的准备、具体推荐的过程(这个过程可能是一套复...

    流川枫
  • 协同过滤在新闻推荐CTR预估中的应用

    作者简介:minlonglin,AI平台部Y项目组员工。2012年毕业于中国科学技术大学计算机科学与技术学院,读博期间主攻集成学习、类别不平衡分类等方向,期间曾...

    腾讯技术工程官方号
  • [先行者周日课程-0305] web前端组件 之 拖动窗口

    学习笔记如下: 今天的内容,是拖动窗口。 js的引用数据类型,基本数据类型。 js它有5种基本数据类型: undefined , null, Boolean,...

    web前端教室
  • [OSGI Felix ] Intellij Idea 15 中开发 Maven osgi 项目(Apache felix环境)

    [OSGI] Felix基本环境搭建及操作 : https://blog.csdn.net/hechaomax/article/details/42641643

    一个会写诗的程序员
  • 聊聊flink的NetworkBufferPool

    flink-release-1.7.2/flink-runtime/src/main/java/org/apache/flink/runtime/io/netw...

    codecraft
  • 计算机网络体系结构

    相互通信的两个计算机系统必须高度协调工作才行,而这种“协调”是相当复杂的。为了设计这样复杂的计算机网络,最初提出了分层的方法。“分层”可将庞大而复杂的问题,转化...

    ColinLiu

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动