Deep Session Interest Network for Click-Through Rate Prediction

本文介绍了DeepSessionInterestNetwork (DSIN) 模型,它针对广告和推荐系统中的CTR预估问题,利用用户行为序列的多session特性,通过self-attention和双向LSTM捕捉用户兴趣变化及交互。实验结果表明DSIN在广告和推荐数据集上优于现有SOTA方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决的问题

CTR预估在广告和推荐系统中都扮演者重要角色。在CTR预估中,如何从用户的行为序列中抽取出动态变化的用户兴趣是一大课题。然而现有的方法都忽视了用户行为序列的一大特性:用户行为序列是由多个session组成的,而每个session由行为的时间进行划分。我们发现用户在同一session内的行为是高度同质化的,而不同session间的行为是异质的。基于上述观察我们提出了Deep Session Interest Network (DSIN) 模型来利用用户行为序列的多个session。我们首先从每个session内用self-attention机制加bias encoding来抽取用户兴趣,然后利用双向LSTM来建模session间用户兴趣的演化和交互,最后我们利用局部激活单元来自适应地学习多个session兴趣对target item的影响。我们在广告和推荐的数据集上都做了实验,结果显示DSIN能够取得比SOTA方法更好的效果。

模型结构

Base Model

在介绍DSIN前,我们首先介绍Base model的特征,embedding,MLP和loss函数。

特征表示

我们在base model中利用三组特征:用户画像,物品画像和用户行为。每组由一些稀疏特征组成:用户画像包括年龄、性别等;物品画像包括卖家id,品牌id等;用户行为包含用户最近点击的item id

embedding

利用embedding技术,稀疏特征可以表示为E∈RM∗dmodelE \in R^{M * d_{model}}ERMdmodel,其中MMM是稀疏特征的数量,而dmodeld_{model}dmodel是embedding大小。我们的用户画像就可以表示为XU∈RNu∗dmodelX^U \in R^{N_u * d_{model}}XURNudmodel,物品向量表示为XI∈RNi∗dmodelX^I \in R^{N_i * d_{model}}XIRNidmodel,用户行为可以表示为 S=[b1;...;bi;...;bN]∈RN∗dmodelS = [b_1; ...; b_i; ...; b_N] \in R^{N * d_{model}}S=[b1;...;bi;...;bN]RNdmodel,其中NNN是用户行为的条数,bib_ibi是第iii个行为的embedding

MLP

用户画像、物品画像和用户行为中的稀疏特征embedding会被拼接在一起喂给MLP,最后用一个softmax函数来计算用户对target item的点记录

loss函数

CTR预估常用的loss函数是负对数似然函数:
L=−1N∑(x,y)∈D(ylogp(x)+(1−y)log(1−p(x)))L = -\frac{1}{N} \sum_{(x, y) \in D} (ylog p(x) + (1-y)log(1-p(x)))L=N1(x,y)D(ylogp(x)+(1y)log(1p(x)))
其中DDD是训练数据集,xxx是网络的输入,表示成[XU,XI,S][X^U, X^I, S][XU,XI,S]y∈{0,1}y \in \{0, 1\}y{0,1}表示用户是否点击了target item,p(⋅)p(\cdot)p()网络的最终输出,表示用户点击item的概率。

DSIN

如前所述,DSIN要解决的问题是抽取每个session中的用户兴趣,并且得到session兴趣间的时序关系。

DSIN在MLP之前有两个部分,一个部分是将用户画像和物品画像转换成embedding vector,另一部分是在建模用户行为,自下而上共有四层:1)session划分层将用户行为序列划分为多个session 2) session兴趣抽取层抽取用户的session兴趣 3)session兴趣交互层获取session间兴趣的序列关系 4)session兴趣激活层将局部激活单元应用到用户session兴趣和target item上。最后session兴趣激活层的输出和用户画像和物品画像的embedding拼接起来喂给MLP进行最终的预测。

session划分层

为了更加精准抓住用户的session兴趣,我们把用户行为序列SSS划分为session序列 QQQ,其中第kkk个session Qk=[b1;...bi;...;bT]∈RT∗dmodelQ_k = [b_1; ...b_i;...; b_T] \in R^{T * d_{model}}Qk=[b1;...bi;...;bT]RTdmodel,划分方法是相邻行为间的时间间隔大于30分钟。

session兴趣抽取层

我们假设同一个session里的行为是高度相关的。为了抓住这些行为中的内在联系,我们对每个session使用多头self-attention,同时我们还对self-attention做了一些调整。

  • Bias Encoding:为了利用序列的时序性,我们引入了bias encoding BE∈RK∗T∗dmodelBE \in R^{K * T * d_{model}}BERKTdmodel,具体计算方法如下:BEk,t,c=wkK+wtT+wcCBE_{k, t, c} = w_k^K + w_t^T + w_c^CBEk,t,c=wkK+wtT+wcC其中wK∈RKw^K \in R^KwKRK是session的bias vector,wT∈RTw^T \in R^TwTRT是session内的index,wC∈Rdmodelw^C \in R^{d_{model}}wCRdmodel是行为embedding的unit position,在计算出bias encoding后,用户行为session QQQ就变成Q=Q+BEQ=Q+BEQ=Q+BE

确定Q后,我们对Q进行多头self-attention,attention的结果拼接起来,然后喂给一个前馈网络IkQ=FFN(Concat(head1,...,headH)WO)I_k^Q = FFN(Concat(head_1, ..., head_H)W^O)IkQ=FFN(Concat(head1,...,headH)WO)
在前馈网络中我们同样引入残差和layer normalization

session兴趣交互层

在session兴趣交互层,我们用双向LSTM处理session兴趣,兴趣交互层的输出为Ht=hft+hbtH_t = h_{ft} + h_{bt}Ht=hft+hbt

session兴趣激活层

用户session兴趣激活层对兴趣交互层的输出序列与target item进行attention

tbc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值