DIEN DIN

本文介绍了阿里巴巴在CTR预测中的两种深度学习模型:DIN(深度兴趣网络)和DIEN(深度兴趣进化网络)。DIN通过注意力机制捕捉用户历史行为与候选广告的相关性,自适应地学习用户兴趣表示。而DIEN进一步引入兴趣抽取和兴趣进化层,利用GRU单元和注意力机制捕捉用户兴趣随时间的演化,以更准确地预测点击率。这两种模型在处理用户行为序列的变长特征和兴趣多样性上具有创新性。

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

目录

 

一 淘宝数据描述

二 DIN

2.1 base line (embeding + MLP)

2.2  DIN

 三 DIEN

3.1 兴趣抽取层Interest Extractor Layer

3.2 兴趣进化层Interest Evolution Layer

 


一 淘宝数据描述

https://tianchi.aliyun.com/dataset/dataDetail?dataId=56

Ali_Display_Ad_Click是阿里巴巴提供的一个淘宝展示广告点击率预估数据集。

1.1  auc 与gauc

推荐系统评价指标:AUC和GAUC

https://mp.weixin.qq.com/s/d764qYdnCSk62GQKfl_GCg

auc:

  • AUC的意义:随机抽取一对正负样本,AUC是把正样本预测为1的概率大于把负样本预测为1的概率的概率

gauc:

我们采用了阿里提出来的gauc定义:

补充:其中为权重,一般可以设为每个用户view的次数,或click的次数,而且一般计算时,会过滤掉单个用户全是正样本或负样本的情况

二 DIN

从DIN到DIEN看阿里CTR算法的进化脉络

https://zhuanlan.zhihu.com/p/78365283

深度兴趣网络DIN-DIEN-DSIN

https://www.zhihu.com/search?type=content&q=DIN%E6%BF%80%E6%B4%BB%E5%8D%95%E5%85%83

DIN原理与实践(写的很好)

https://mp.weixin.qq.com/s/WDRKYJWBYF0izO_5vpgc6Q

2.1 base line (embeding + MLP)

在介绍算法之前我们先来看一看阿里的展示广告系统中用到哪些特征。主要有4个特征组,如下图所示,1)用户画像特征,2)用户行为特征,即用户点击过的商品,3)待曝光的广告,广告其实也是商品,后文中我们统称为candidate,4)上下文特征。

preview

MLP只能接受固定长度的输入,但是每个用户在一段时间内的商品点击序列长度可能会不同,属于变长特征,那么该如何处理这样的变长特征?base模型采用pooling的方式,一般有两种方法,求和或者平均,求和就是对多个商品的embedding,在每个对应的维度上做求和。例如,点击序列有10个商品,那么就有10个商品的embedding,假设商品的embedding维度是16,那么分别在第1到16维上,对10个值求和。平均就是对多个embedding,在每个对应的维度上求平均。不管用户点击过多少个商品,经过pooling之后,得到的最终表示向量embedding和每个商品的embedding维度都是相同的。

回到阿里的展示广告系统,如图2所示,每个商品有3个特征域,包括商品自身,商品类别,商品所属的商铺。对于每个商品来说,3个特征embedding拼接之后才是商品的表示向量。对商品序列做pooling,上图中采用的是求和的方式,pooling之后得到用户行为序列的表示向量。然后再和其他的特征embedding做拼接,作为MLP的输入。

MLP输入端的整个embedding向量,除了candidate的embedding部分,其余的embedding部分可以视为用户的表示向量。base模型对于任何要预测的candidate,不管这个candidate是衣服,电子产品等,用户的表示向量都是确定的、不变的,对于任何candidate都无差别对待。

在电商这个场景中,通常用户的兴趣具有多样性,可能在一段时间内点击过衣服,电子产品,鞋子等。而对于不同的candidate来说,浏览过的相关商品对于预测帮助更大,不相关的商品对于ctr预估可能并不起作用,例如用户看过的衣服,鞋子对于iphone的预测并没有帮助。

这样做有什么问题?

1. 一个明显的问题是不同用户的行为序列长度是不同的,fixed-length信息表达不全面
2. 用户最终的行为只和历史行为中的部分有关,因此对历史序列中商品相关度应有区分

2.2  DIN

根据上述问题,有两个解决思路:

1.对不同用户尝试不同维度的向量,导致训练困难
2.如何在有限的维度表示用户的差异化兴趣?

DIN从第二个问题出发,引入局部激活单元,对特定的ad自适应学习用户兴趣表示向量。即同一用户在获选ad不同时,embedding向量不同。

key idea

使用attention机制捕获ad和用户行为序列商品之间的关系

看结果

  1. 和ad相似度搞得物品拥有更高的权重
  2. 不相关物品的相似度低

下面是两个小tricks,对结果提升有帮助:

  1. Mini-batch Aware Regularization
  2. Dice Activation Function

Attention机制简单的理解就是,针对不同的广告,用户历史行为与该广告的权重是不同的。假设用户有ABC三个历史行为,对于广告D,那么ABC的权重可能是0.8、0.1、0.1;对于广告E,那么ABC的权重可能是0.3、0.6、0.1。这里的权重,就是Attention机制即上图中的Activation Unit所需要学习的。

为什么要引入Attention?举例:假设用户的兴趣的Embedding是Vu,候选广告的Embedding是Va,用户兴趣和候选的广告的相关性可以写作F(U,A) = Va * Vu。如果没有Local activation机制,那么同一个用户对于不同的广告,Vu都是相同的。如果有两个广告A和B,用户兴趣和A,B的相似性都很高,那么在Va和Vb连线上的广告都会有很高的相似性。这样的限制使得模型非常难学习到有效的用户和广告的embedidng表示。

DIN的核心idea是,候选广告需要和用户行为中的每一个商品做权重的计算,然后用权重去做加权平均得到用户针对这个候选广告的兴趣向量。也就是说 DIN 是通过考虑用户的当前点击行为与历史行为的相关性来自适应地计算用户兴趣的表示向量,用户的历史行为的权重依赖于正在看的商品。 

DIN使用activation unit来捕获local activation的特征,使用weighted sum pooling来捕获diversity结构

 三 DIEN

如果候选商品是衣服,那希望最近购买的衣服更能影响的当下的决策,DIN是不能做的, 他是用户行为序列中都是衣服embeding可能权重差不多,但其实越近的越能影响当下决策

推荐系统遇上深度学习(二十四)--深度兴趣进化网络DIEN原理及实战!

https://mp.weixin.qq.com/s/PtJHJMWzbOrKWejvcnClVg

3.1 兴趣抽取层Interest Extractor Layer

兴趣抽取层Interest Extractor Layer的主要目标是从embedding数据中提取出interest。但一个用户在某一时间的interest不仅与当前的behavior有关,也与之前的behavior相关,所以作者们使用GRU单元来提取interest。GRU单元的表达式如下:

图片

 

这里我们可以认为ht是提取出的用户兴趣,但是这个地方兴趣是否表示的合理呢?文中别出心裁的增加了一个辅助loss,来提升兴趣表达的准确性:

图片

这里,作者设计了一个二分类模型来计算兴趣抽取的准确性,我们将用户下一时刻真实的行为e(t+1)作为正例,负采样得到的行为作为负例e(t+1)',分别与抽取出的兴趣h(t)结合输入到设计的辅助网络中,得到预测结果,并通过logloss计算一个辅助的损失:

图片

3.2 兴趣进化层Interest Evolution Layer

兴趣进化层Interest Evolution Layer的主要目标是刻画用户兴趣的进化过程。举个简单的例子:

以用户对衣服的interest为例,随着季节和时尚风潮的不断变化,用户的interest也会不断变化。这种变化会直接影响用户的点击决策。建模用户兴趣的进化过程有两方面的好处:
1)追踪用户的interest可以使我们学习final interest的表达时包含更多的历史信息。
2)可以根据interest的变化趋势更好地进行CTR预测。

而interest在变化过程中遵循如下规律:
1)interest drift:用户在某一段时间的interest会有一定的集中性。比如用户可能在一段时间内不断买书,在另一段时间内不断买衣服。
2)interest individual:一种interest有自己的发展趋势,不同种类的interest之间很少相互影响,例如买书和买衣服的interest基本互不相关。

为了利用这两个时序特征,我们需要再增加一层GRU的变种,并加上attention机制以找到与target AD相关的interest。

attention的计算方式如下:

图片

而Attention和GRU结合起来的机制有很多,文中介绍了一下三种:

GRU with attentional input (AIGRU)
这种方式将attention直接作用于输入,无需修改GRU的结构:

图片

Attention based GRU(AGRU)
这种方式需要修改GRU的结构,此时hidden state的输出变为:

图片

GRU with attentional update gate (AUGRU)
这种方式需要修改GRU的结构,此时hidden state的输出变为:

图片

 

<think>好的,我现在要解答用户关于深度兴趣网络(DIN)模型的工作原理及其主要特性的问题。首先,我需要回顾一下自己之前对DIN模型的了解,并结合提供的参考文献来确保回答的准确性。 用户提供的引用资料提到了DIN模型主要用于点击率预测(CTR),特别是在电商场景中处理用户兴趣的多样性和动态变化。核心是注意力机制,用来捕捉用户历史行为与当前候选商品的相关性。引用[2]和[4]都提到了基准模型是Embedding&MLP结构,DIN在此基础上加入了注意力网络,动态学习用户兴趣。引用[1]和[3]则补充了特征表示和线上应用的信息。 接下来,我需要整理DIN的工作原理。首先,用户的特征通常包括历史行为,比如点击过的商品。DIN模型需要将这些行为与当前候选商品关联起来,这里用到了注意力机制。注意力机制会计算每个历史行为与当前商品的相关性权重,加权求和后得到用户的兴趣表示。这个表示再与其他特征(如用户画像、上下文)结合,输入到MLP中进行预测。 关键特点方面,注意力机制是核心,能够动态捕捉兴趣,而不是静态的池化操作。此外,参考文献提到DIN针对用户兴趣的多样性,不同商品激活不同的历史行为,这也是其创新点。另外,引用[4]指出DIN在基准模型基础上添加注意力网络,这说明其结构上的改进。 还需要考虑DIN的具体实现细节。比如,如何计算注意力分数?可能使用候选商品和历史行为的嵌入向量之间的交互,比如点积或神经网络。引用[2]提到阿里巴巴的Python实现,可能需要代码示例来说明注意力机制的结构。 另外,用户可能对DIN的优势和应用场景感兴趣。根据引用[2],电商场景中的CTR预测,特别是处理用户动态兴趣,是DIN的主要应用。而传统模型可能无法有效处理这种动态变化,DIN通过注意力机制解决了这一问题。 需要注意的问题:确保对注意力机制的解释准确,区分DIN与其他模型(如DIN的变种DIEN)的不同之处。同时,正确引用文献中的内容,比如基准模型的结构和DIN的改进点。 总结回答结构: 1. DIN模型的应用背景和目标。 2. 工作原理分步骤说明:特征处理、注意力机制、兴趣表示、预测。 3. 关键特点:动态兴趣捕捉、注意力机制、针对多样性设计。 4. 可能的代码示例(如注意力层的实现)。 5. 引用文献支持各部分内容。 现在需要验证各部分是否符合参考文献的内容。例如,引用[4]提到基准模型是Embedding&MLP,DIN添加注意力网络,这与工作原理部分一致。引用[2]强调动态捕捉兴趣,符合关键特点中的描述。确保所有引用标注正确,例如在提到注意力机制时引用[2],在基准模型时引用[4]。 最后,生成相关问题,可能需要围绕DIN的优化、应用场景、与其他模型的对比等方面提问,确保问题与用户的问题相关,并基于提供的引用内容。</think>### 深度兴趣网络(DIN)模型工作原理及关键特点 #### 1. **工作原理** DIN模型的核心是通过**注意力机制**动态捕捉用户历史行为与当前候选商品的相关性,从而建模用户兴趣的多样性与动态变化。具体流程如下: 1. **特征表示** 用户特征(如历史行为序列、画像属性)和商品特征(如候选广告属性)均通过嵌入(Embedding)层转换为低维稠密向量[^1]。例如,用户的历史行为序列包含多个商品嵌入向量:$\\{e_1, e_2, ..., e_T\\}$,候选广告的嵌入向量为$e_a$。 2. **注意力机制计算** 对每个历史行为$e_i$与候选广告$e_a$计算相关性权重$\alpha_i$: $$ \alpha_i = \text{Softmax}(f(e_i, e_a)) $$ 其中,$f$是一个可学习的函数(如全连接网络或点积),用于衡量两者的相关性[^2]。 3. **动态兴趣表示** 加权求和历史行为嵌入,生成用户兴趣向量$v_u$: $$ v_u = \sum_{i=1}^T \alpha_i e_i $$ 这一步骤使模型能够**动态聚焦**与当前广告最相关的历史行为[^4]。 4. **预测层** 将用户兴趣向量$v_u$、候选广告向量$e_a$及其他特征(如上下文信息)拼接后输入多层感知机(MLP),输出点击率预测结果: $$ \hat{y} = \sigma(\text{MLP}([v_u; e_a; \text{其他特征}])) $$ #### 2. **关键特点** - **动态兴趣捕捉**:通过注意力机制,DIN能够针对不同候选广告自适应调整用户兴趣表示,避免传统静态池化(如平均池化)的信息损失。 - **处理兴趣多样性**:用户历史行为可能涉及多个兴趣领域,DIN通过注意力权重区分不同行为的重要性,增强模型表达能力[^3]。 - **小批量敏感正则化**:为缓解高维稀疏特征中的过拟合问题,DIN引入了**Dice激活函数**和**自适应正则化技术**,提升模型泛化能力。 #### 3. **代码示例(注意力机制简化实现)** ```python import torch import torch.nn as nn class AttentionLayer(nn.Module): def __init__(self, embed_dim): super().__init__() self.linear = nn.Linear(embed_dim * 2, 1) # 计算相关性得分 def forward(self, candidate_emb, history_embs): # candidate_emb: (batch_size, embed_dim) # history_embs: (batch_size, seq_len, embed_dim) batch_size, seq_len, _ = history_embs.shape candidate_expanded = candidate_emb.unsqueeze(1).expand(-1, seq_len, -1) # 扩展为(batch_size, seq_len, embed_dim) combined = torch.cat([candidate_expanded, history_embs], dim=-1) # (batch_size, seq_len, 2*embed_dim) scores = self.linear(combined).squeeze(-1) # (batch_size, seq_len) weights = torch.softmax(scores, dim=1) # 注意力权重 weighted_sum = torch.sum(weights.unsqueeze(-1) * history_embs, dim=1) # (batch_size, embed_dim) return weighted_sum ``` #### 4. **应用场景** DIN广泛应用于**电商推荐**与**广告点击率预测**场景,尤其适用于用户行为丰富、兴趣多样的场景,例如: - 根据用户浏览历史推荐相关商品。 - 动态调整广告展示策略以提升转化率。 --- §§ 相关问题 §§ 1. DIN模型中的注意力机制与传统池化方法相比有哪些优势? 2. 如何解决DIN模型训练中的过拟合问题? 3. DIN模型与后续的DIEN模型有何改进与区别? 4. 在特征工程中,DIN模型如何处理长序列用户行为数据? : 特征表示 : 阿里巴巴DIN模型原理与Python实现 [^3]: 阿里兴趣网络DIN网络中几个关键的点(三) : 深度推荐模型-DIN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值