推荐系统遇上深度学习(一二三)-[阿里]去噪用户感知记忆网络DUMN

首先祝大家中秋快乐,咱们的系列文章今天终于更新啦!今天给大家带来阿里在RecSys2021上中稿的一篇论文,同样关注的是对用户行为序列的建模。论文两个主要的创新点分别是对隐式反馈的去燥处理以及保存用户层面长期偏好的记忆网络,一起来看一下。

1、背景

CTR预估的一大关键点是通过用户的历史反馈建模用户的兴趣。用户反馈主要分为显式反馈和隐式反馈。显式反馈能够直接反应用户的偏好信息,具有较少的噪声,如用户的评分、收藏、不喜欢等行为,这类行为往往是比较稀少的;隐式反馈如点击/未点击行为,尽管较为丰富,但是存在一定的噪声。如点击行为中存在一定的误点击,而未点击中也有可能包含用户比较感兴趣的物品。过去的研究如DIN、DIEN大都只使用用户的点击行为序列,没有使用更为丰富的用户反馈信息,同时也忽略了对点击这类隐式反馈的去噪处理。

除未考虑噪声外,DIN、DIEN这类方法也难以有效建模用户的长期偏好。这里用户的长期偏好是指用户在很长一段时间内的行为偏好,通常是比较稳定的。目前的方法如DIN、DIEN往往通过增加用户点击序列长度来建模长期偏好,然而却存在以下几方面的问题:
1)首先,出于耗时等性能因素的考虑,DIN、DIEN大都只使用固定长度的用户行为序列。同时,这类方法都认为用户的长期偏好是item层面的,即item反映了用户的长期偏好。相反,论文则认为用户的长期偏好应该是用户层面的,即用户的长期偏好应主要反映在用户画像上。例如,拥有宠物的用户可能会定期购买宠物用品,但这些偏好不一定会反映在短期的用户行为当中。
2)其次,固定长度的历史行为难以刻画用户的长期偏好,那么可以通过记忆网络等方法如MIMN,使用更长的用户历史行为进行刻画。但是这类方法仍然只考虑了用户的点击行为序列,而用户的显式反馈以及未点击行为序列同样可以帮助建模用户的长期偏好。
因此,综合以上两点,用户的长期行为偏好应该结合用户画像以及用户的历史行为进行综合刻画,而行为应同时考虑显式反馈和隐式反馈。

针对以上几点挑战,论文提出了去噪用户感知记忆网络DUMN(denoising user-aware memory network),来对隐式反馈的进行去噪处理以及对用户长期兴趣进行建模。接下来,对DUMN进行详细介绍。

2、DUMN介绍

DUMN的整体结构如下图所示,可以看到,主要包含四个模块:embedding layer、FP layer(Feature Purification Layer)、UMN layer(User Memory Network Layer)和PAIR layer(Preference-aware Interactive Representation Component
)。首先,embedding layer将user特征、ad特征、click序列、unclick序列、like序列和dislike序列作为输入,并转换为对应的embedding;其次,FP layer通过注意力机制对用户多种行为序列进行建模,同时使用正交映射对隐式反馈进行去噪处理;随后,UMN layer通过记忆网络来建模用户的长期兴趣;最后,PAIR layer将用户的短期兴趣和长期兴趣表示进行结合,并通过全连接网络得到CTR预估值。接下来,对DUMN的各模块进行介绍。

2.1 embedding layer

embedding layer将user特征、ad特征、click序列、unclick序列、like序列和dislike序列作为输入,并转换为对应的embedding。其中,user特征和ad特征的输出分别用eusereitem表示,四个序列的输出分别用ec,eu,el,ed表示。

2.2 FP layer

FP layer主要包含两部分。首先,通过Multi-head Interaction-attention Component来得到每种行为序列的聚合向量。如下图所示:

可以看到,Multi-head Interaction-attention Component包含了两层的attention,第一层是multi-head self-attention建模序列中item之间的相互关系,第二层则是建模序列中序列中每一个item与target item的相关性权重,并对序列中的每个item进行加权聚合。以点击序列为例,计算过程如下:

其中,Oc代表点击序列在self-attention模块的输出,而fc则代表Multi-head Interaction-attention Component最终的输出结果。

得到每种行为序列的聚合向量后,接下来通过Feature Orthogonal Mapping Component来对隐式反馈进行去噪处理。由于用户的显式反馈能够直接反应用户的喜欢/不喜欢信息,因此可以使用显式反馈对隐式反馈进行去噪。具体地,将用户的四种行为序列拆分为两组,即,用向量表示分别为<fc,fd>和<fu,fl>。以<fc,fd>为例,如下图所示:

使用fcfd进行投影,投影的向量fcp代表用户点击行为中不喜欢的部分,那么fc-fcp即可以看作是去除点击行为中噪声后得到的向量。计算过程如下表示:

同样,我们可以得到用户未点击序列的去噪向量,用fuo表示。

FP layer的输出可以看作是用户短期偏好的表示。

2.3 UMN layer

前面也提到,用户的长期行为偏好应该结合用户画像以及用户的历史行为进行综合刻画,而行为应同时考虑显式反馈和隐式反馈。因此,在基本的memory network的基础上,论文设计的UMN layer做了如下改进:
1)首先,设计了4个记忆网络分别来存储用户的点击、未点击、喜欢、不喜欢偏好,分别计作McMuMlMd,每一个记忆网络都包含m个长度为Z的记忆向量。
2)其次,记忆网络的controller的输入包含用户特征的embedding以及FP层的得到的输出。

Mc为例,记忆读取和写入的过程如下(有关记忆网络的细节,本文不再进行具体介绍):

memory read

首先,controller生成read key:

其次,与记忆网络中每一个记忆向量计算相关性:

最后,对记忆向量进行加权求和,得到记忆网络的输出:

memory write

除了对记忆进行读取外,每次新的记录到来,需要对记忆网络中的记忆向量进行更新。在更新时,权重向量wcr的生成同记忆读取过程,同时,还会生成add key和erase k,并通过如下的公式对记忆进行更新:

最终,UMN layer的输出计作rc,ru,rl,rd。可以看作是用户长期偏好的向量表示。

2.4 PAIR layer

在PAIR layer,论文通过门控机制,将FP layer得到的短期兴趣向量表示和UMN layer得到的长期向量表示进行融合。如下图所示:

以点击行为为例,计算公式如下:

在得到4部分的融合兴趣向量表示后,对其进行拼接,并与用户特征embedding、item特征embedding一同输入到全连接神经网络中,得到最终的CTR预估值:

模型训练

DUMN训练过程中,主要包含两方面的目标:
1)预估CTR与实际label相接近,这主要通过最小化logloss来实现:

2)保证写入记忆网络的向量能够反映用户的偏好。针对这一点,论文提出了基于triplet loss的辅助loss,如下图所示:

首先,从用户的点击、未点击、喜欢和不喜欢序列中,随机各抽取一个item,得到对应的embedding表示,计作sc,su,sl,sd。接下来,可以组成四组正负样本对分别用于四个记忆网络的辅助loss计算:<sc,su>,<su,sc>,<sl,sd>,<sd,sl>。仍然以Mc为例,辅助loss计算如下:

即用户点击行为序列中的某个行为与记忆网络中记忆向量的距离和未点击序列中的行为与记忆网络中记忆向量的距离至少要相差margin,否则会产生损失。

每个记忆网络对应一个损失,因此辅助损失计作:

两部分损失结合在一起,则是DUMN的最终损失。

3、实验结果及分析

最后简单看一下实验结果,可以看到,DUMN在两份数据集上,都取得了比baseline更好的AUC表现:

好了,论文就介绍到这里,感兴趣的同学可以阅读原文~

你可能感兴趣的:(推荐系统遇上深度学习(一二三)-[阿里]去噪用户感知记忆网络DUMN)