推荐系统论文阅读(三十)-微信:深度反馈网络-DFN

论文:

论文题目:《Deep Feedback Network for Recommendation》

论文地址:https://www.ijcai.org/Proceedings/2020/0349.pdf

之前介绍了两篇在cikm上的文章,今天我们来看看微信发表在ijcai上面利用显示反馈和隐式反馈来进行推荐的文章吧。

一 、背景

在介绍这篇论文之前我们先来解释两个概念:

显式反馈:用户的正向评价/正向打分/点赞等行为是显式反馈中的正反馈;打低分/点踩这些行为是负反馈

隐式反馈:用户的点击是正反馈,曝光未点击视作负反馈,更甚的是未点击的item都当成负反馈

在很多场景中我们直接使用的都是隐式反馈来建模的,工业界在排序算法中绝大部分使用的都是点击作为正版本,曝光未点击当作负样本。

在微信中的显式反馈和隐式反馈如下图所示:

虽然直接使用隐式反馈直接建模可以达到一个不错的效果,但是如果在此基础上把显示反馈也加上,效果肯定会提高的。因为用户的显示反馈更能体现出用户的偏好,我们可以很容易的判断一个用户喜欢某个电影,假如这个用户对这部电影的评分是满分,同理也可以确定用户如果给电影打分是0分的话,肯定就是显式负反馈来。

ctr预估任务中采用的基本都是隐式反馈,如果一直使用隐式反馈是有问题的。首先,面向点击率的目标通常集中在用户喜欢的内容上,而忽略用户不喜欢的内容。仅仅依靠这些隐式的正反馈将使模型倾向于提供同质和近似的结果,最终将损害用户体验。此外,在隐式反馈中使用的负反馈并不一定是用户不喜欢的物品,他们未被点击原因可能是由于除了用户不喜欢外的其他原因造成的,比如说用户没见到这个物品就退出页面来,或者说是刚好有事就没有接着浏览来。

隐式反馈的样本容易从埋点以及日志文件中收集到,显式反馈可能需要搭建一个良好的评分系统来构建,隐式反馈中体现出了用户主动性质的信息,这对于用户偏好的建模是十分有效的。

二、模型


一些预定义:

• Implicit positive feedbacks:用户的历史点击序列,{, · · · , },后面我们称为click sequence

• Explicit negative feedbacks:  用户主动点击了不喜欢按钮的那些显式负反馈序列:{},后面我们称为dislike sequence

• Implicit negative feedbacks: 曝光为点击的数据,,曝光未点击的数据可能有噪音,后面我们称为unclick sequence

2.1 Deep Feedback Interaction Module


首先我们可以从图中看到模型的输入有四部分内容,除了target item以外,还有三部分是我们之前在预定义里面说的click sequence,unclick sequence和dislike sequence。

2.1.1 Internal Feedback Interaction Component

模型部分,可以看到是由三个transformer结构组成,这三个部分对输入的处理是完全一样的,所以我们只介绍click sequence的处理情况。

我们把target item连同click sequence构建成:

经过trm结构后,进行avg pooling操作:

其他两个trm分别得到fd和fu。内部反馈交互组件很好地捕获了每种反馈序列类型中目标item与行为之间的行为级交互。 它可以为用户提供与目标item相关的正面和负面偏好。

2.1.2 External Feedback Interaction Component

我们在预定义的时候就说了曝光未点击的序列是有噪音的,因为这些物品并非都是用户不喜欢的物品。为了更好的从unclick sequence只判断出那些item是用户真正喜欢的,那些物品是用户不喜欢的,我们采用了External Feedback Interaction Component结构。其实很容易理解,我们从那个图中也可以看到,我们是通过click sequence数据跟dislike sequence经过trm结构得到的结果来判断出这些ambiguous的item是属于哪个阵营的。

文中采用了vanilla attention的方式:

fd是dislike sequence经过trm后的输出,uj是unclick sequences,也就是{},

attention score的计算方式f为:

同样的,我们计算出另一个:

最后这里总共得到五个输出:


2.2 Feature Interaction Module

这部分就比较简单了,可以参考deepfm的结构。

Wide Component:

wide部分的输入是稀疏特征,这里还是要注意下,输出是一个向量,这里公式仅计算了第i个特征的输出

FM Component:

这里跟传统的fm是一样的,只是传统的fm公式里多了个xi*xj,当然,如果把x的值都当成1的话x就可以省略了,这里的f是多个之前在Deep Feedback Interaction Module输出的五个向量,所以+5了 :

Deep Component


最后我们得到三部分输出的组合:


2.3 Optimization Objective


这个损失函数跟我们见到的一般的logloss是不一样的,可以看到损失函数由三部分组成,第一是正反馈,第二个是隐式负反馈,第三个是显式负反馈,还有三个超参数用于控制三个的权重。

关于这个loss,我还是有点没饶过弯来,这里为什么没有真实的label y呢,虽然它由三部分组成,但是这里为什么直接对这三部分都直接取了label为1呢?

看了下原文:

我感觉我破案了,论文的意思是这样,我们训练的时候对于click的数据,我们的label为1,对于另外两个,我们的label也为1,为什么呢,因为我们相当于预测这个target是不是unclick和dislike,当然这个时候的label也为1了,只是预测的值变成了1-p(x)。


三、实验结果



这篇论文的亮点部分有两个:

1.将曝光未点击的sequence数据用attention区分

2.损失函数进一步的使用了显式负反馈和隐式负反馈的loss

你可能感兴趣的:(推荐系统论文阅读(三十)-微信:深度反馈网络-DFN)