DIN模型与DIEN模型总结

DIN模型(Deep Interest Network)

DIN模型是阿里妈妈团队提出的CTR预估模型,虽然是几年前提出的,但是现在应用仍比较广泛。
原论文地址:Deep Interest Network for Click-Through Rate Prediction

对论文的核心总结:利用用户历史行为序列信息,使用类似Attetion的机制动态构建用户兴趣embeeding,使得模型能够捕获用户的兴趣。

该论文的主要贡献:

  • 提出DIN模型,利用用户兴趣信息进行建模。
  • 提出mini-batch aware regularization,MBA正则化,简化版L2正则,避免模型过拟合的同时,减少计算量,加快模型训练
  • data adaptive activation function,数据自适应激活函数Dice。该激活函数可以根据数据的实际分布来动态调整系数。

模型结构

在这里插入图片描述
上图中,左边部分是Base模型,用来与DIN模型进行对比。可以看出,DIN的主要区别就在于对用户历史行为序列的处理,其实就是动态加权sum pooling的操作。所以,该模型的核心也就在于Activation Weight这个模块。
在这里插入图片描述
Activation Weight这个模块类似于门控机制,用来输出当前用户历史行为中每个商品对应的权重。
类似于Attention机制,该层的输入为当前商品的embedding以及广告对应的embedding,然后这两个embedding进行外积,得到一个结合的embedding,再将结合的embedding与商品、广告embedding进行拼接,最终拼接好的embedding进行全连接变化,输出权重值。

值得注意的是,该模块与传统的Attetnion机制不同,这里未使用softamax对打分进行归一化,这样做是为了更好区别兴趣程度,使得权重间的值差距更大。

得到用户历史行为embedding后,再与广告侧、上下文侧和用户侧的特征embedding进行拼接,经过多层的Dense变化,输出最终的CTR预测概率。

MBA 正则化

传统的L2正则化会对所有参数进行计算,这对于广告这种具有大规模稀疏特征的应用场景来说,会增加很大的计算开销。故作者提出改进版的L2正则化,在避免模型过拟合的同时,也加快了模型的训练速度,减少了计算开销。
传统的L2正则化公式,可以在mini-batch的训练方式中,等价转化为下面的公式:
在这里插入图片描述
其中 n j n_j nj表示该特征j在总样本中出现的次数, I I I为指示函数,表明在当前batch的训练样本中,是否出现特征 j j j

为了减少计算量,作者进行了以下的化简:
在这里插入图片描述
α m j α_{mj} αmj表示当前batch中,该特征 j j j是否出现过。即,对于每一批batch样本进行训练时,只对该batch中,出现过的特征对应的参数进行正则化,且与该特征在总样本中出现的次数相关。如该特征在数据中出现很多次数,则减少对该特征参数的惩罚力度。

数据自适应激活函数

Data Adaptive Activation Function
PReLU激活函数如下图所示:
在这里插入图片描述

在这里插入图片描述
PReLU激活函数在0点处进行了强修正,rectified point固定为0,这在每一层的输入分布发生变化时是不适用的,所以文章对该激活函数机型了改进,平滑了rectified point附近曲线的同时,激活函数会根据每层输入数据的分布来自适应调整rectified point的位置。
在这里插入图片描述
在这里插入图片描述


DIEN模型(Deep Interest Evolution Network for Click-Through Rate Prediction)

原论文地址:Deep Interest Evolution Network for Click-Through Rate Prediction

DIEN模型是DIN模型的改进版本。已经有的DIN模型,它强调用户兴趣是多样的,并使用基于注意力模型来捕获目标项目的相对兴趣。但是用户的兴趣是不断进化的,而DIN抽取的用户兴趣之间是独立无关联的,没有捕获到兴趣的动态进化性。但是在电商推荐的场景下,用户的兴趣是不断变化的,故提出DIEN模型来捕获与目标商品相关商品的兴趣发展路径。DIEN最大的特点是不但要找到用户的interest,还要抓住用户interest的进化过程。

该文的主要贡献:

  • DIEN关注兴趣演化的过程,并提出了新的网络结构来建模兴趣进化的过程。
  • 设计了兴趣抽取层,并通过计算一个辅助loss,来提升兴趣表达的准确性。
  • 设计了兴趣进化层,来更加准确的表达用户兴趣的动态变化性。

模型结构

在这里插入图片描述
与DIN模型类似,DIEN的区别主要表现在对用户历史行为序列的embedding构建。
用户历史行为序列的embedding构建要经过三层:1.Dense embedding 2.兴趣抽取层 3.兴趣进化层
第一层其实就是一个Dense层,对商品进行embedding。

兴趣抽取层

与DIN相比,DIEN这一层引入了序列模型,因为上一时刻的行为,对下一刻的行为起重要决定作用,故引用序列模型会更好的表示用户的隐式兴趣。论文认为GRU比LSTM训练更快,故采用了GRU。
GRU输出h(t)如下所示:
在这里插入图片描述
这里可以认为 h t h_t ht是用户的初步兴趣表示,每一步的兴趣状态会直接引导下一步的行为,为了更好地表达用户的兴趣,作者引入了辅助loss。
在这里插入图片描述
利用真实的下一个行为作为正样本,随机从行为序列中负采样得到负样本。用户下一时刻真实的行为 e t + 1 e_{t+1} et+1作为正例,负采样得到的行为作为负例 e t + 1 ′ e_{t+1}' et+1,分别与抽取出的兴趣 h t h_t ht结合输入到设计的辅助网络中。

在这里插入图片描述
在这里插入图片描述
辅助Loss的好处:

  • 更好的表达用户兴趣
  • 类似引入多目标,增加辅助函数只增加了线下训练的成本,但并没增加线上serving时间。

兴趣进化层

随着外部环境和内部认知的变化,用户兴趣也不断变化。
兴趣在进化时,有两个特征:

  • 多样性:兴趣漂移
  • 独立性:虽然兴趣可能相互影响,但每种兴趣都有自己不断发展的过程

在兴趣抽取阶段,已经获取了用户的隐式兴趣表达,为了分析用户兴趣演化的特性,作者结合attention机制和GRU序列学习的能力去建模用户兴趣的演化。局部attention可以加强相关兴趣的影响,并减弱兴趣偏移的影响。

在attention阶段,使用的计算方式为:
在这里插入图片描述
文章介绍几种将注意力机制和GRU结合起来模拟兴趣进化过程的算法:

GRU with attentional input (AIGRU)

这种方式将attention直接作用于输入,无需修改GRU的结构:
在这里插入图片描述
在AIGRU中,注意力得分可以降低较少相关兴趣的规模。 理想情况下,较少相关兴趣的输入值可以减少到零。但是,AIGRU有一定局限性, 因为即使零输入也可以改变GRU的隐藏状态。

Attention based GRU(AGRU)

这种方式需要修改GRU的结构,此时hidden state的输出变为:
在这里插入图片描述
原来公式为:
在这里插入图片描述
AGRU使用Attention score来代替GRU的 u t u_t ut(更新门),AGRU利用Attention score直接控制隐藏状态的更新。 并且在兴趣变化期间削弱了相关兴趣减少的影响。但是它使用标量(注意力分数 a t a_t at )来替换矢量(更新门 u t u_t ut),这忽略了不同维度之间的重要性差异。

GRU with attentional update gate (AUGRU)

因为前面几种方式都有不同的缺陷,所以又提出了一种更好的:
在这里插入图片描述
DIEN使用AUGRU。得到兴趣进化embedding后,将其连接其它的信息(广告侧特征、上下文信息等等)并最后送入MLP进行最终CTR预测。

<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、付费专栏及课程。

余额充值