CTR(1):IJCAI2020-Deep Feedback Network for Recommendation

前言

  • 发表在IJCAI2020上的一篇推荐的论文
  • 来自于腾讯Wechat Group,是一篇实战价值重大的工业界论文
  • 源码地址https://github.com/qqxiaochongqq/DFN
  • 码字不易,好心人随手点个赞
  • 本篇笔记非完整论文翻译,包含个人思考,仅供参考,欢迎交流探讨
  • 本篇文章为本人原创内容,如需转载引用,请务必在文中附上原链接及相应说明,包括作者信息(阿瑟)

摘要

显性反馈和隐性反馈(Explicit and Implicit Feedback)都能反映用户对物品的看法,这对于学习用户的偏好至关重要。然而,大多数当前的推荐算法仅仅关注于隐式的正反馈(例如,点击)忽略了其他蕴含信息的用户行为

本文旨在联合考虑显性/隐性和正性/负性反馈(Positive/Negative),以针对推荐任务学习用户的无偏偏好(unbiased preferences/更加准确的偏好建模)。具体来说,提出了一种新的深度反馈网络(DFN)模型来建模点击,未点击和不喜欢等用户行为。

DFN 有一个内部反馈交互组件,用于捕获个体行为之间的细粒度交互; 还有一个外部反馈交互组件,使用精确但相对稀少的反馈(点击/不喜欢) ,从丰富但嘈杂的反馈中提取有用的信息(未点击)

在实验中,对一个现实的推荐系统——数百万用户使用的微信看一看——进行线下和线上评估,验证了 DFN 的有效性和鲁棒性。

引言

用户-项目交互这样的信息分为两种类型,即显性反馈和隐性反馈

  1. 显式反馈来自用户对物品的直接看法(例如,星级评分或喜欢/不喜欢)。它可以精确地显示用户的真实偏好,而收集这样的反馈是比较困难。
  2. 隐式反馈主要来自于用户暗示间接看法的行为(例如,点击或未点击)。比较容易收集。隐反馈存在固有的噪声和缺乏自然的负反馈,这会严重影响学习用户无偏偏好的准确性 这个无偏偏好,可以理解为不受其他采集到数据的影响,对用户喜好进行准确建模

近年来,推荐系统通常将个性化推荐作为一项点击率预测任务(CTR)。因此,很自然的,大多数推荐算法主要集中在隐式正反馈,如点击,这可以很容易地在实践中收集。这些模型是通过点击行为和面向 CTR 的目标直接优化的,这将不可避免地导致以下问题:

  1. 首先,面向 CTR的目标通常关注于用户喜欢的东西,忽略用户不喜欢的东西。仅仅依靠这些隐含的正反馈将使模型趋向于提供同质和浅显/相近(myopic)的结果,这最终将破坏用户体验 。因此,推荐时应考虑负反馈。
  2. 其次,除了被动地接收模型选择的信息外,用户还需要有效的反馈机制来主动地与推荐系统进行互动。而用户的隐式反馈和他们的真实偏好之间也存在差距(点击并不总是意味着喜欢)。这证实了在推荐中使用显式反馈的必要性。

两段话全面准确地表达了两个关键问题,指出了负反馈和显式反馈的价值,也是本文关注的两个点,好论文读起来就是舒服呀~

多个显性/隐性和正性/负性反馈可以相互补充,反映用户在推荐中的无偏偏好。目前的工作中负反馈往往被忽略,或者仅仅局限于显性反馈,这种反馈精确而又少见。
一些工作认为未点击或缺失行为是隐含的消极反馈,以扩增负反馈信息。然而,这样的假设带来了很多噪声,极大地限制了推荐效果。因为这些隐性的负面反馈可能是由除了不喜欢以外的各种原因造成的。(噪声比较多)

本文中重点研究利用不同类型的显性/隐性和正性/负性反馈提高推荐性能。针对传统推荐方法中存在的问题,提出了一种新的深度反馈网络(DFN) ,该网络在基于深度模型的推荐中联合考虑多个反馈及其相互作用。图1显示了 DFN 中使用的不同类型的反馈,包括隐式正反馈(例如,点击)、隐式负反馈(例如,不点击)和显式负反馈(例如,不喜欢)。

具体地说,我们首先在每个反馈序列中分别对目标项和行为构建Transformer,以捕获内部行为级别的交互

接下来,我们利用高质量但相对少见的点击和不喜欢行为(显式反馈)来减少丰富但嘈杂的无点击行为与外部反馈级别的交互。这些提取出来的反馈特征与其他特征相结合,然后输入到包含 Wide、 FM 和 Deep 组件的特征交互模块中。

DFN 的主要优点是它成功地结合了多种反馈信息,学习用户无偏的正向偏好(喜欢)和负向偏好(厌恶),解决了反馈信息存在的质量和数量两难问题。

模型

在一个真实世界的推荐系统上构建DFN 模型,并收集用户历史行为的三种反馈:

  • 隐式正反馈: 用户的点击序列
  • 显式负反馈: 用户点击dislike按钮相应的物品序列
  • 隐式负反馈: 呈现给用户但没有点击(impressed but unclick)的物品序列

基于这三种数据构建DFN模型:

深度反馈网络DFN主要由深度反馈交互模块和特征交互模块两部分组成。

  1. 首先,深度反馈交互模块采用多个反馈作为输入,借助内部和外部反馈交互作用,提取用户无偏正负偏好(反馈特征信息)。
  2. 其次,改进的反馈特征与其他信息特征相结合,如用户画像、物品特征和推荐上下文。

最后实现了用于特征聚合的 Wide、 FM 和 Deep 组件。将特征交互模块的输出反馈到全连接层和softmax层,基于正负样本间损失进行模型优化。

深度反馈交互模块

其层次上可以分为内部交互模块和外部交互模块:

1. 内部交互模块


主要利用Transformer,对物品序列进行特征提取;对于每一类反馈数据都采用相似的操作,这里并非完整的Transformer结构,只是用了位置编码和多头注意力机制

以点击序列为例:将待预测/目标物品的嵌入与点击序列的嵌入构成输入矩阵:

通过这种方式可以得到三种反馈数据的特征表示

2.外部交互模块

隐式负反馈是足够的,但是噪声很大。一般来说,未点击行为似乎暗示着负反馈,然而暴露给用户的物品是由某些策略精心挑选的,这些策略也可能包含粗粒度方面的用户兴趣。外部反馈交互组件旨在根据点击和不喜欢行为中强烈的反馈信息,区分用户真正喜欢和不喜欢的点击行为。具体来说,我们进行了两个原版注意力机制,其中考虑隐含的正向和显式负反馈嵌入 fc,fd 作指导,从未点击序列中提取正向和负向偏好:

这个评分函数设计的还是挺有意思的,f_d包含了用户明显的负偏好,这些负偏好是从与目标项目相关的显式负反馈中提取出来的,可以使得注意力机制从用户的未点击行为中提取出真正不喜欢的物品。此外还可以利用隐式正反馈从中提取喜欢的物品:

最后将5个反馈特征合并起来,构成最后的反馈特征

特征交互模块

在特征交互中,我们将提取的反馈特征与其他特征结合起来,包括用户画像、物品特征和推荐上下文特征。

我们将这些稀疏特征分为 m个 字段,包括连续字段(例如,age)和类别字段(例如,location)等。所有字段都表示为单热嵌入。查找表用于生成所有字段的稠密特征嵌入。然后利用Wide、FM和Depp组件进行特征组合。(通用架构

Wide
对特征进行线性组合:


FM
因子分解机:利用的是何向南提出的NFM的结构(Bi-Iteration),并对深度反馈模块得到的5个特征嵌入合并一块进行二阶组合,所以公式里是m+5

Deep
简单的MLP操作:


优化目标

最后CTR计算的点击概率:

最后的损失函数比较复杂一点,需要考虑三种数据,因此也包含了三个部分

一个训练集按照三个反馈类型分成3部分。

实验

数据情况如下:(应该是不会公开的数据集)

注意这里的比例设置,显式负反馈比重很大。

性能对比如下:

此外由于数据特性,还做了一个不喜欢预测任务

消融实验结果如下:

在生产系统上进行的A/B test结果如下,可以看到提升明显,CTR值提升了一个百分点,已经很了不起了;而不喜欢率也大幅下降

总结

这篇工作对数据反馈充分分析的基础上,借助自己的生产系统,收集并利用了显式负反馈和隐式正反馈这类信息,并利用这两类重要信息对具有噪声的隐式负反馈进行调整,基于注意力架构从隐式负反馈中分离出更有价值的特征。在实践系统上有很好的效果表现。其中的注意力设计感觉可以在相关比赛中进行尝试,是很值得借鉴的工作。

END

如果觉得有用,欢迎点赞关注赞赏,若对推荐感兴趣欢迎评论区/私信交流~~~

你可能感兴趣的:(CTR(1):IJCAI2020-Deep Feedback Network for Recommendation)