前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >推荐系统遇上深度学习(五十)-使用强化学习优化用户的长期体验

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

作者头像
石晓文
发布2019-06-17 17:03:12
1.5K0
发布2019-06-17 17:03:12
举报
文章被收录于专栏:小小挖掘机小小挖掘机

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

论文题目:《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。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小小挖掘机 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、问题定义
  • 2、模型介绍
    • 2.1 Q网络
      • 2.2 S网络
        • 2.3 整体架构
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档