0

DFN介绍

 2 years ago
source link: http://d0evi1.com/dfn/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

DFN介绍

December 15, 2020

Reading time ~2 minutes

微信在《Deep Feedback Network for Recommendation》提出了DFN。

显式与隐式反馈可以影响用户关于items的opinions,这对于学习用户偏好来说是必要的。然而,大多数当前的推荐算法主要关注于隐式正反馈(implicit positive feedbacks: 例如:click),忽略了其它有信息的用户行为。在本paper中,我们的目标是:联合考虑explicit/implicit以及positive/negative feedbacks来学习用户的无偏偏好。特别的,我们提出了一种新的Deep feedback network(DFN)来建模click、unclick和dislike行为。DFN具有一个内部feedback interaction组件,它可以捕获用户行为间的细粒度交叉(fine-grained interactions),一个额外的feedback interaction组件可以使用精准但相对少的feedbacks(click/dislike)来从丰富但带噪声的feedbacks(unclick)中抽取有用信息。在实验中,我们在wechat top stories的推荐系统上,对数百万用户做了实验。DFN带来了极大的提升。源代码为:https://github.com/qqxiaochongqq/DFN

个性化推荐系统的目标是,为用户根据它们的偏好提供定制的items。它们在视频和电商业被广泛使用。

推荐系统中大量使用user-item interactions来进行个性化。这些重要的信息主要有两大类:显式反馈(explicit feedback)和隐式反馈(implicit feedback)。显式反馈(explicit feedback)来自于用户对items的直接意见(比如:评分、like/dislike等)。它可以很精准地表示用户的真实偏好,而收集这样的feedback相当不容易。相反,implicit feedback主要来自于具有暗示非直接意见的用户行为(例如:click或unclick)。在真实推荐系统中,很容易从大量用户行为中收集这样的隐式反馈。然而,隐式反馈(implicit feedbacks)会混杂着许多其它内在的noises,以及少量的真实负反馈,这会损害学习用户的无偏偏好.

最近,推荐系统通常会将个性化推荐看成是一个CTR预测任务。因此很自然地,大多数推荐算法主要关注于隐式正反馈(点击),这在实际中很容易获取。这些模型会直接使用点击行为和CTR目标进行最优化,它会产生以下的问题。首先,CTR目标的objectives通常关注于:用户喜欢什么,忽略掉用户不喜欢什么。简单依赖于这些隐式正反馈(implicit positive feedbacks)会使得模型趋向于提供均匀的(homogeneous)、短视(myopic)的结果,这会伤害用户体验。因此,negative feedbacks应在推荐中被考虑。第二,除了被动地接受由模型选中的信息外,用户也需要有效和高效的反馈机制来激活与推荐系统的交互。再者,由于用户的implicit feedbacks与它的真实偏好(点击并不总是意味着喜欢)间存在gap。它也证实了explicit feedbacks的必要性。

多个explicit/implicit和positive/negative feedbacks可以互补,并影响用户的无偏偏好。有一些工作:使用隐式反馈和显式反馈的CF(Liu 2010)、多任务学习(Hadash 2018)。然而,这些工作中,negative feedbacks通常会被忽略,或者只存在显式反馈(这很精准、但量很少)。一些工具会考虑unclick或missing行为作为隐式负反馈来乘上负信号(negative signals)。不幸的是,在这些隐式负反馈(implicit negative feedbacks)中的noises会严格限制效果表现,因此,这些隐式负反馈会由许多除了dislike之外的原因造成。

图片名称

2.相关工作

我们的目标是,将多个explicit/implicit和positive/negative feedbacks进行联合考虑来学习用户无偏偏好。特别的,我们提出了DFN模型,它会收集用户历史行为中的三种类型的feedbacks:

  • 隐式正反馈(implicit positive feedbacks):implicit positive feedbacks是在大规模推荐中被广泛使用的feedbacks,它在量级和质量上均比较满意。根据大多数conventional模型,我们考虑点击行为序列 {c1,⋯,cn1}{c1,⋯,cn1}作为在DFN中使用的implicit positive feedback。
  • 显式负反馈(explicit negative feedbacks):Explicit feedbacks是高质量的,但在真实推荐中很少。我们会使用与每个item相关的dislike按钮来收集explicit negative feedback序列 {d1,⋯,dn2}{d1,⋯,dn2}
  • 隐式负反馈(implicit negative feedbacks):我们会将曝光未点击(impressed but unclick)的行为序列{u1,⋯,un3}{u1,⋯,un3}作为implicit negative feedbacks。这种未点击行为在所有feedbacks类型中占绝大多数,而它会与噪声和false-negative信号相混杂。

CFN尝试使用高质量的click和dislike behaviors作为instructors来从未点击行为中抽取有用信息。在DFN中很容易添加其它类型的feedbacks

3.1 整体架构

Deep feedback network主要包含两个模块,称为:deep feedback interaction模块与feature interaction模块。首先,deep feedback interaction模块会采用多个feedbacks作为inputs,使用内部和外部的feedback interactions来抽取用户无偏的positive和negative偏好。第二,refined feedback features会与其它有信息特征(比如:user profiles、item features以及contexts)进行组合。我们会实现Wide、FM和Deep组件来进行特征聚合(feature aggregation)。最终,feature interaction模块的outputs会feed给full connected和softmax layers来进行positive和negative losses的模型最优化。图2(a)展示了DFN的整体架构。

图片名称

3.2 DFN module

图2(b)中的deep feedback interaction模块会采用对于target item的implicit positive(click),explicit negative(dislike)以及implicit negative(unclick) feedbacks作为inputs。我们会使用两个components来从inside和between不同类型的feedbacks的交叉中进行学习。

Internal Feedback Interaction Component

对于一个特定类型的feedback,该component会关注target item和individual behaviors间的交叉。我们会根据Vaswani[2017]的行为使用一个multi-head self-attention。所有的行为特征包含了它们的item embeddings和position embeddings,会被投影到一个联合语义空间(joint semantic space)中来形成behavior embeddings。以点击行为为例,我们会将target item t与点击序行的behavior embeddings进来组合来形成输入矩阵 Bc={t,c1,⋯,cn1}Bc={t,c1,⋯,cn1}。query, key, value矩阵可以通过如下进行计算:

Q=WQBc,K=WKBc,V=WVBcQ=WQBc,K=WKBc,V=WVBc

其中,WQ,WK,WVWQ,WK,WV是投影矩阵。我们接着通过下面方式计算self-attention:

Attention(Q,K,V)=softmax(QTKnh−−√)VAttention(Q,K,V)=softmax(QTKnh)V

其中,nhnh是query、key、value的维度。总共h个multi-heads的第i个head可以通过如下进行计算:

headi=Attention(WQiQ,WKiK,WViV)headi=Attention(WiQQ,WiKK,WiVV)

WQi,WKi,WVi∈Rnk×nk/hWiQ,WiK,WiV∈Rnk×nk/h是第i个head的weighting矩阵。self-attention的最终输出矩阵是:

Fc=concat(head1,⋯,headh)⋅WOFc=concat(head1,⋯,headh)⋅WO

WO∈Rnh×nhWO∈Rnh×nh是投影矩阵。最终,我们通过在FcFc中所有n+1的output embeddings上进行一个average pooling来生成implicit positive feedback embedding fcfc:

fc=Averagepooling(Fc),fc∈Rnhfc=Averagepooling(Fc),fc∈Rnh

我们也会使用相同的带type-specific hyper-params的transformer来生成explicit negative feedback embedding fdfd以及从dislike和unclick behaviors中的implicit negative feedback embedding fufu。internal feedback interaction component可以很好地捕获在每种类型的feedback序列中target item和behaviors的behavior-level interactions。它可以提供与target item相关的user positive和negative偏好。

External Feedback Interaction Component

隐式负反馈(implicit negative feedbacks)是够多的,但有非常noisy。总之,unclick behaviors看起来暗示着negative signals,而曝露给用户的items则需通过特定策略进行选择,它也会包含来自粗粒度的用户兴趣。external feedback interaction组件的目标是,根据在click和dislike行为上的强反馈,来区别用户在未点击行为(unclick behaviors)上的真实喜欢(like)和不喜欢(dislike)。特别的,我们通过两个vanilla attentions,它会考虑隐式正反馈和隐式负反馈的embeddings fcfc和fdfd作为instructors来指导来自unclick序列u1,⋯,un3u1,⋯,un3。我们将unclick-dislike interaction embedding fudfud使用dislike和unclick行为公式化:

fud=∑i=1n3αiui,αi=f(fd,ui)∑n3j=1f(fd,uj)fud=∑i=1n3αiui,αi=f(fd,ui)∑j=1n3f(fd,uj)

其中,weighting score function f(a,b)f(a,b)定义如下:

f(a,b)=MLP(concat(a,b,a−b,a⊙b))f(a,b)=MLP(concat(a,b,a−b,a⊙b))

我们将⊙⊙看成是element-wise product,并使用一个2-layer Multi-layer perceptron (MLP)。fdfd包含了user的强的negative偏好,它从与target item相关的显式负反馈(explicit negative feedbacks)进行重定义得到。它会帮助vanilla attention来抽取用户真实dislike和unclick行为的items。我们也会使用隐式正反馈(implicit positive feedback)的embedding fcfc来放大在unclick行为中positive的声音。

fuc=∑i=1n3βiui,β=f(fc,ui)∑n3j=1f(fc,uj)fuc=∑i=1n3βiui,β=f(fc,ui)∑j=1n3f(fc,uj)

最后,我们将所有5种feedback features组合来构建最终的refined feedback feature fFeedfFeed:

fFeed={fc,fd,fu,fuc,fud}fFeed={fc,fd,fu,fuc,fud}

隐式正反馈与显式负反馈fcfc和fdfd被看成是强的positive和negative信号,而其余unclick-related feedbacks则被看成是弱信号(weak signals)。

3.3 Feature Interaction Module

在feature interaction中,我们将refined feedback feature与其它features(包括:user profiles、item features、以及context)进行refined。根据Guo[2017],我们将这些sparse features进行group到m个fields中 {x1,⋯,xm}{x1,⋯,xm}包括:continuous fields(例如:age)和categorical fields(例如:location)。所有的fields被表示成one-hot embeddings。一个lookup table被用于生成所有fields的dense feature:{f1,⋯,fm}{f1,⋯,fm}。我们为feature interaction实现了Wide, FM以及Deep components。

Wide Component

Wide component是一个泛化的linear model,它在推荐中被广泛使用。Wide component yWideyWide的output是一个m-dimensional的vector,其中,第i个element被计算成:

yWidei=wTixi+bi,wi,xi∈RnfiyiWide=wiTxi+bi,wi,xi∈Rnfi

…(10)

wiwi是第i个one-hot fields embedding xixi的weighting vector,bibi是bias,nfinfi是xixi的维度。

FM Component

FM component会捕获所有features间的二阶交叉。FM的input embeddings是所有dense features的组合,最终的refined feedback feature为:F′={f1,⋯,fm,fFeed}F′={f1,⋯,fm,fFeed}。我们根据Bi-interaction layer,并根据下面方式生成output embedding yFMyFM:

y^{FM} = \sum\limits_{i=1}^{m+5} \sum\limits_{j=i+1}^{m+5} f_i^' \odot f_j^', f_i^', f_j^' \in F'y^{FM} = \sum\limits_{i=1}^{m+5} \sum\limits_{j=i+1}^{m+5} f_i^' \odot f_j^', f_i^', f_j^' \in F'

…(11)

Deep component

在Deep component中,我们实现了一个2-layer MLP来学习高阶feature interactions。input是dense features和feedback features的concatenation,可以表示成:f(0)=concat(f1,⋯,fm,fFeed)f(0)=concat(f1,⋯,fm,fFeed)。我们有:

yDeep=f(2),f(i+1)=ReLU(W(i)f(i)+b(i))yDeep=f(2),f(i+1)=ReLU(W(i)f(i)+b(i))

…(12)

其中,f(i)f(i)是第i个layer的output embedding。W(i)W(i)是weighting matrix,b(i)b(i)是第i个layer的bias。

最终,我们从三个components中将所有outputs进行concat起来来生成aggregated feature embedding y:

y=concat(yWide,yFM,yDeep)y=concat(yWide,yFM,yDeep)

…(13)

3.4 Optimization Objective

我们使用click、unclick以及dislike行为来进行监督训练。预测的点击概率与aggregated feature embedding y通过下式计算:

p(x)=σ(wTpy)p(x)=σ(wpTy)

…(14)

wpwp是weighting vector,σ(⋅)σ(⋅)是sigmoid function。DFN的loss function包含了三个部分:click、unclick、dislike行为:

L=−1N(λc∑Sclogp(x)+λu∑Sulog(1−p(x))+λd∑Sdlog(1−p(x)))L=−1N(λc∑Sclogp(x)+λu∑Sulog(1−p(x))+λd∑Sdlog(1−p(x)))

…(15)

该训练集具有N个实例,分组成:click set ScSc,dislike set SdSd以及unclick set SuSu。λc,λd,λuλc,λd,λu是不同losses的weights来measure不同feedbacks的重要性。

Updated on December 11, 2020 d0evi1


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK