社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

推荐系统遇上深度学习(八十八)-[微信]充分利用显式&隐式反馈的深度反馈网络

小小挖掘机 • 3 年前 • 461 次点击  

本文分享的论文是微信在IJCAI-20发表的《Deep Feedback Network for Recommendation》
论文下载地址:https://www.ijcai.org/Proceedings/2020/0349.pdf

1、背景

在推荐系统中,我们用到的数据通常可以分为两类,即显式反馈数据和隐式反馈数据。显式反馈数据又包括显式正反馈(用户对某一物品的五星好评,或者收藏/喜爱)和显式负反馈(如用户显式点击不喜欢,或者差评等);隐式反馈也包含隐式正反馈(如曝光点击)和隐式负反馈(如曝光未点击)。

在之前介绍的大部分应用于推荐系统中的深度学习模型中,应用最多的往往是隐式正反馈,即用户的点击行为,这种类型的行为方便进行收集和获取。但隐式反馈往往并不能代表用户的真正兴趣,比如点击并不代表用户一定喜欢,而曝光没有点击也并不代表用户不喜欢。因此在模型中充分利用显式/隐式以及正/负反馈,建模用户无偏的兴趣偏好,对于提升推荐的效果是很有必要的。

在微信看一看场景中,可以获取到用户显式负反馈/隐式正反馈/隐式负反馈三种反馈类型的信息,如下图所示:


那么如何充分利用上面的三种类型的反馈信息呢?微信团队提出了Deep Feedback Network,下面来介绍一下。

2、DFN介绍

2.1 整体介绍

模型的整体框架如下:


可以看到,模型整体包含了两个模块,分别是反馈交互模块(Deep Feedback Interaction Module)和特征交互模块(Feature Interaction Module),接下来具体介绍这两个模块。

2.2 反馈交互模块(Deep Feedback Interaction Module)

在反馈交互模块,对用户的三种反馈序列进行处理,分别是隐式正反馈序列,显式负反馈序列和隐式负反馈序列,该模块的结构如下图所示:


该模块主要包含两个部分,第一个部分是单反馈类别内部交互部分,这里对三种反馈序列,分别使用Transformer去建模序列内部的item的交互信息。最后通过Avg-pooling的方式,分别得到三个序列的输出,分别计作fc(隐式正反馈),fu(隐式负反馈)和fd(显式负反馈)。

第二部分是反馈类别间的交互部分,这一块的主要考虑曝光未点击并不代表用户真正对其不感兴趣,同时这些曝光过的物品也是通过某一特定的策略进行选择展示的,因此也有可能包含用户的某种兴趣偏好。因此该部分主要从隐式负反馈中抽取用户可能感兴趣和不感兴趣的信息,通过两个vanilla attentions进行建模。用户未点击-显式负反馈向量表示计算方式如下,即首先计算用户隐式负反馈序列中每个item和经transformer输出的显式负反馈向量的attention score,再进行加权求和:


其中attention score计算方式如下:


同样,用户未点击-隐式正反馈向量计算如下:


最终,反馈交互模块得到了五部分的输出:


2.3 特征交互模块(Feature Interaction Module)

在特征交互模块,除了反馈交互模块得到的五部分向量外,还会进一步加入m个field的离散或者连续特征。分别输入到wide,FM,Deep部分。这一块就是将Wide & Deep和DeepFM做了一次融合,具体细节不再赘述。

2.4 优化目标

假设模型的输出为p(x),代表用户点击target item的概率,那么不同于一般的二分类损失函数logloss,由于我们用到了三种不同的反馈信息,那么我们的样本不仅仅简单的区分为正样本和负样本,而是对负样本进行进一步的区分,分为显式负反馈的负样本,隐式负反馈的负样本,因此损失函数如下:


而每一种反馈行为,都有不同的权重,代表不同的重要性,实验中可灵活调节。

3、实验结果

最后简单看一下实验结果。

3.1 点击率预估实验


可以看到,DFN相较于FM,WD,DeepFM等模型,有一个比较明显的AUC的提升。

3.2 不喜欢预估实验

这一部分将1-p(x)看作用户不喜欢target item的概率,如果按照1-p(x)进行排序,将用户有过显式负反馈的item排在前面,那么该实验的AUC会越高,可以看到,DFN在不喜欢预估实验,同样有一个较大的AUC的提升:


3.3 线上实验

线上A/B实验主要观察CTR、list-wise CTR(LCTR)、平均使用时间AUT、用户显式负反馈的比例DTR等指标,可以看到,DFN在这几项指标中均有较大的提升,取得了不错的线上效果:


好了,文章介绍就到这里了,在本文中,作者初步研究了推荐系统中的多种显式/隐式和正/负反馈之间的协同合作机制,并基于多种反馈信息去建模用户无偏的正负向兴趣,在离线/线上实验均有效果提升。

在真实的推荐场景中,对于负反馈信息的利用,往往是能够带来效果提升的,大伙不妨一试。

推荐系统遇上深度学习(八十七)-[阿里]基于搜索的用户终身行为序列建模

2020-07-19

推荐系统遇上深度学习(八十六)-[腾讯&微博]GateNet:使用门机制提升点击率预估效果

2020-07-11

推荐系统遇上深度学习(八十五)-[阿里]长用户行为序列建模探索:MIMN

2020-06-14

推荐系统遇上深度学习(八十四)-[阿里]抽取用户多维度兴趣的DHAN网络介绍

2020-06-06




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/72069
 
461 次点击