DIN模型

DIN模型提出得主要动机:通过考虑候选物品与用户历史行为得相关性从而自适应的计算用户兴趣得表征向量,提高了模型对用户兴趣得表征能力。

DIN主要有三个新颖得点:第一个是local activation unit,另外两个是面向工业界实践提出了两个重要得技术:分别是mini-batch aware regularization和Data Adaptive Activation Function(dice).

目录

1.local activation unit

2.mini-batch aware regularization

3.Data Adaptive Activation Function

1.local activation unit

先来说第一个新颖点local activation unit:

 就是计算了用户历史行为商品和候选商品得相关性,这个相关性相当于每个历史行为商品得权重,然后把这个权重与历史行为商品得embedding向量相乘,所有得历史行为商品得向量表征再求和作为用户得兴趣表征。

其中{e1,e2,...,eH}是用户历史行为商品得embedding,uA是候选商品得embedding,a(uA, ej)就是每个历史行为商品得权重即得到wj,这个a(.)就是上面的这个activation unit网络。其中不仅除了用户历史行为商品embedding,候选商品embedding,还计算了两者的外积(原文中说这个是有利于相关性建模的显性知识),另外还可以加入两者的差。

这里还有个需要注意的是,这里最终输出的得分没有归一化成权重总和为1的形式。解释如下:

传统方法使用softmax获得attention产出的权重被遗弃,因为传统方法使得attention的权重求和为1,这样求得的权重并不是用户兴趣的分布估计,采用神经网络最终使用sigmoid或其他激活函数得到序列attention权重分布,从而获得对用户兴趣的权重估计更适用于用户兴趣的表示。比如一个用户历史行为序列中90%都是衣服,10%是电子产品。如果目标商品是t恤和手机的话,传统attention方法会使得t恤的 vU 高于手机,因为用户的行为序列中大部分都是衣服,但是用户购买手机与否与他购买衣服与否是没有直接关联的,因而不能用传统的方法直接求softmax,softmax使得行为序列中的各个item都有了关联从而得出了商品权重。

2.mini-batch aware regularization

为了防止模型过拟合,我们一般会加入正则化, 而L2正则化加入的时候,是对于所有的参数都会起作用, 而像这种真实数据集中,每个mini-batch的样本特征是非常稀疏的,我们看之前那个样本编码的例子就能看到,这种情况下根本就没有必要考虑所有的参数进去,这个复杂度会非常大, 而仅仅约束那些在当前mini-batch样本中出现的特征(不为0的那些特征)embedding就可以啦。
基于这个思路,作者最终用的正则化如下所示:

其中K表示特征数量,B表示batch的个数。

 

这个的意思指的是,我们只需要关注非0特征即可,因为对于不同的特征,其为非0值对应的样本不一样,所以这里取非0值最多的特征对应的样本集合,对这些样本的w进行约束。

3.Data Adaptive Activation Function

这里提出了一个随着数据分布而动态调整的自适应激活函数,是泛化的PRelu。Prelu激活函数的公式如下:

 

这里的p(s)的函数图像如下图左所示:

 

作者之处这个的不足是prelu采用了一个值为0的硬矫正点,当每个层的输入遵循不同的分布时,这可能不适合。所以作者这里设计了一个新的自适应激活函数叫做dice,它的p(s)时上图右边所示,具体公式如下:

 

这里的E(s)和Var(s)时每个mini-batch里面样本的均值和方差,当然这是训练部分,测试集的时候采用的时数据上平滑的均值和方差。由于把均值和方差考虑进去了,那么这个函数的调整就可以根据数据的分布进行自适应,这样会更加的灵活且合理。

另外看到了sigmoid的身影。。

 

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

余额充值