dqn推荐系统_[论文阅读] CRS - 基于强化学习的对话推荐系统

标题:Conversational Recommender System作者:Yueming Sun, Yi Zhang

单位:University of California, Santa Cruz

会议:SIGIR-2018

链接:arxiv

code:PyTorch版本代码

由于最近在做对话推荐系统的相关工作,今天我分享一篇SIGIR-2018的一篇paper 《Conversational Recommender System》

在这篇文章中,作者提出了一个统一的框架,融合了对话系统和推荐系统,做对话推荐这个任务。

我们从Task Definition

Motivation & Idea

Model

Experiments

这四个部分来详细介绍这篇文章

1. Task Definition推荐系统 (recommender system):指的是从用户过去的购买习惯中学习用户的兴趣,从而给用户推荐合适的商品,是一个单轮交互的过。

任务型对话系统 (task-oriented dialogue system):通过多轮对话,在会话过程中,捕捉用户的兴趣等,完成一个特定的任务,是一个多轮交互的过程。

对话推荐系统 (conversational recommender system, CRS):由于推荐系统更多的是去关注用户过去的偏好,但是用户当前的兴趣可能已经改变。而对话系统更多的是关注当前session的用户兴趣,而不太关注用户历史的兴趣,所以这样做出来的推荐可能会偏离用户长期的购买习惯。所以在用户决策的过程中,历史信息与当前的信息都很重要,结合这两点因素,就提出了对话推荐系统,在对话推荐系统中,系统与用户将发生多轮对话,系统结合用户的历史兴趣,以及当前对话中捕捉到的用户兴趣,对用户进行商品推荐。

2. Motivation & Idea作者观察到推荐系统以及对话系统各自的优势和弊端,想到是否可以把二者结合起来,达到更好的推荐效果。

在具体设计中,作者设计了一个基于强化学习的模型,进行对话推荐。若用户已经提供了足够信息的时候,就执行推荐;若用户尚未提供足够的信息,则对用户进行反问,收集更多的信息。

另外,对于用户的兴趣,作者使用Facet-Value Pairs的形式进行捕捉。其中Facet可以理解为商品的某一个属性,Value代表该属性的一个具体值。(比如Facet=颜色,Value=红色,代表用户选取的是颜色为红色的商品)

3. Model

我们首先回顾一下一个标准的对话系统,由哪些部分组成:Natural Language Understanding (NLU):NLU模块的作用是对用户的输入进行解析,通常包括意图识别,以及命名实体识别 (通常这些命名实体是和商品紧密相连的)

Data Management (DM):DM模块的作用是管理整个对话流程。通常是根据之前的对话以及用户当前的输入,决定当前时刻系统该做什么样的决策

Natural Language Generation (NLG):NLG模块的作用是根据DM模块的决策,输出一段流利的文字回复用户

接下来我们再介绍一下该系统的组成,对于整个系统有一个整体上的了解之后,我们再介绍系统的各个部分具体是怎么做的。图1:系统的整体处理流程

我们先看到图1,这个图是该系统的一个整体的pipeline。当用户有文本进来的时候,首先经过一个NLU模块,这里是使用一个Belief Tracker来实现的,理解用户的意图。进而进入到DM模块,这里使用了一个Policy Network,去识别当前的场景并作出决策。如果当前系统判断信息已经足够了,就跳转到Recommender模块,进行推荐,并把推荐的结果反馈给用户,对话结束;如果当前系统判断信息并不充足,此时需要就直接对用户进行反问。图2:模型结构

接下来我们具体介绍模型的结构。

Belief Tracker

当用户在电商网站购买商品的时候,经常会通过faceted search进行商品搜索。所以对于对话机器人来说,也可以通过对用户询问facet,来缩小商品的推荐范围,进而提高推荐的质量。图3:faceted search

在本文中,作者通过facet-value pairs来捕捉用户的兴趣。其中,用户对于每个属性的选择,表示为

的形式,

代表facet,

代表对应的取值。每一个facet-value pair就可以代表对商品的一个限制。比如说

就是对商品颜色的限制。

在对话中,我们把用户在时间步

的文本表示成

,并把其编码成n-gram的形式。

之后,再使用一个LSTM编码从初始到时刻

的表示。

再使用一个softmax函数得到每个facet上的value的概率分布

其中

代表第

个facet,最后,当前状态

就可以表示为

Recommender System

当已经获得了足够的信息时,就可以进行推荐了。这里作者使用了Factorization Machine (FM)作为推荐模型,因为FM可以捕捉不同的特征。

我们使用

代表所有的用户,

代表所有商品。假设一共有

个用户,

个商品。用户和商品就可以分别表示为

结合上面提到的状态

,输入特征

就可以表示为这几个信息的concatenation。

其中

是one-hot向量。

其中,m和n是用户和商品分别的index。

这里使用二阶Factorization Machine来做

所有的

都是参数。

是用户m对商品n的反馈。

Deep Policy Network在每一个时间步,强化学习模型基于对话状态 (dialogue state),选择一个action。

该强化学习模型有4个基本模块组成:state

,action

,reward

,policy

state: state是从agent角度下的当前环境描述。在该任务中,就是conversation context的description,也就是belief tracker的输出,

action:action是当前是当前时间下做的决策的描述。在这篇文章中,主要有两种类型的action,一种是对应

个槽位,

。另一种是对应推荐

reward:reward是指agent从环境交互中获得的benefit/penalty。在每一轮, 给定当前状态

,agent选择一个action

,根据policy。并且立刻得到一个reward

,表示当前的决策有多好,之后,状态就会转变成

policy:policy指的是模型的学习目标,用

表示。这个policy代表着当前处于状态

,执行action

的一个分数或概率。目标函数为:

其中

是policy parameter,

是一个折扣率,决定了未来reward的一个当前价值,也就是说比如在k步之后获得一个reward,换算成当前时间点,需要乘上其

gradient就变成了

其中

是reward的综合。注意,如果单纯使用这种policy,并且随机初始化参数

,整个学习可能会完全识别,所以这里,这篇论文采用了一种rule-based policy,来初始化参数。

模型预训练

因为训练一个模型需要大量的真实对话数据,如果无法获得大量的真实对话数据,可以先模拟用户对话,构造大量的模拟对话数据,来预训练模型。

预训练过程如下图:图4:模型预训练过程

其中,图中几种不同的reward定义为: :negative reward,当用户退出对话

:positive reward,当用户成功在推荐中找到目标

:small negative reward,防止对话过长

4. Experiments

Baseline:

这篇文章用的baseline是一个基于最大熵的规则模型。该方法计算每一个未知的facet的熵值,然后选择最大熵的facet,作为下一次要问的点。这是一种贪婪方法。

Evaluation Methodology: :Averaged Reward,

:Success Rate,

:Average # of turns,

,一问一答就叫一个turn

:Wrong Quit Rate,the rate of failures,target不在推荐的候选集中

:Low Rank Rate,出现在候选集中,但排位超过了threshold

offline: Reinforcement与Maximum Entropy的对比图5:强化学习与最大熵的对比

由上图我们可以发现,强化学习模型与最大熵算法相比,效果还是有一些些提升的

online user study:图6:线上实验结果

你可能感兴趣的:(dqn推荐系统)