DIEN——biji

在这里插入图片描述

是 DIN 的升级版,共分为三层,用户行为层,用户兴趣抽取层,用户兴趣演化层.

用户行为层

用户兴趣抽取层

为了将用户兴趣学习的更加充分,加入了额外 loss,h(t)和e(t+1),e(t+1)`,构建正负样本,类似于多目标的学习。

用户兴趣演化层

为了学习用户和候选item的关系,加入了 attention 机制,Attention + GRU的实现这里给了三种方法:

GRU with attentional input(AIGRU):


将抽取层的 h_t 与 weight 相乘直接作为 演化层 GRU 的输入

Attention based GRU(AGRU):

用 attention weight 替代 GRU的更新门,直接修改 hidden 层为
在这里插入图片描述
AGRU 弱化不相关的兴趣

GRU with attentional input(AIGRU):

虽然 AGRU 将 attention score 用于控制 hidden 层的更新,但是用一个数值替换一个向量,会忽略很多信息,这里将attention score 作用到控制 hidden 层更新的 GRU 更新门上。
在这里插入图片描述

一 Launcher默认界面配置(default workspace) 2 1 界面默认配置文件 2 2 LauncherProvider java的loadFavorites分析 3 二 Icon修改 界面布局调整 壁纸设置 5 1 图标大小和标题大小 5 2 Launcher 图标加入默认背景 6 3 更换Launcher默认壁纸 7 4 壁纸设置过程: 8 三 Launcher启动和初始化 9 1 Launcher进程启动过程 9 2 Launcher初始化――LauncherApplication 10 3 Launcher java初始化 12 1 Callbacks接口 15 2 数据加载流程 16 4 LoaderTask的run 方法 17 5 workspace加载数据 18 6 workspace绑定数据 20 7 ALL APP数据加载绑定 22 五 HotSeat分析 24 1 Hotseat配置文件 24 2 Hotseat构造函数 26 3 Hotseat加载数据 27 4 Hotseat绑定数据 27 5 Hotseat类 28 6 总结 30 六 页面滑动 PagedView 30 七 AllApp全部应用列表 AppsCustomizeTabHost 38 1 AllApp列表配置文件 38 2 AppsCustomizeTabHost分析 40 3 Tab变化时执行onTabChanged 41 八 AllApp界面拖拽元素 42 1 触摸拦截 43 2 handleTouchEvent方法 43 4 拖曳按钮 44 九 Launcher启动APP流程 45 1 WorkSpace触摸 45 2 CellLayout的onInterceptTouchEvent 方法 46 3 WorkSpace的onTouch 事件 47 4 BubbleTextView 48 5 onClick 方法 49 6 总结 50 1 常用类介绍 50 2 Launcher的数据库 51">一 Launcher默认界面配置(default workspace) 2 1 界面默认配置文件 2 2 LauncherProvider java的loadFavorites分析 3 二 Icon修改 界面布局调整 壁纸设置 5 1 图标大小和标题大小 5 2 Launcher 图标加入默认背景 6 3 更换Launcher默认壁纸 7 [更多]
### 深度兴趣演化网络(DIEN)模型概述 深度兴趣演化网络(Deep Interest Evolution Network, DIEN)是一种专门用于提升点击率(CTR)预测性能的深度学习模型。该模型的核心在于捕捉用户的动态兴趣变化并对其进行建模,从而更精准地预测用户的行为倾向。 #### 1. **DIEN 的背景与动机** 在推荐系统领域,传统的 CTR 预测方法通常基于静态特征表示,无法有效应对用户兴趣随时间演化的复杂性。DIEN 提出了两个关键模块——**兴趣提取层(Interest Extractor Layer)** 和 **兴趣演化层(Interest Evolving Layer)** 来解决这一问题[^2]。这些模块能够更好地捕获用户的历史行为序列中的短期和长期兴趣,并通过 GRU 结构进一步增强对目标项目的关注。 --- #### 2. **DIEN 架构详解** ##### (1)输入层 DIEN 的输入主要由两部分组成: - 用户历史行为序列 $ \{h_1, h_2, ..., h_n\} $ 表示用户过去的交互记录。 - 当前候选物品 $ x_t $ 是待评估的目标商品或广告。 ##### (2)兴趣提取层 兴趣提取层利用带有时序关系的兴趣抽取器来生成用户兴趣向量集合。具体来说,此阶段采用了一个改进版的 GRU 单元,称为 **AUGRU(Attention-based Update Gate Recurrent Unit)**,它可以自适应调整隐藏状态更新的程度,使得模型更加专注于那些与当前目标高度相关的兴趣点[^4]。 ##### (3)兴趣演化层 为了模拟用户兴趣的变化轨迹,DIEN 设计了兴趣演化层。在此过程中引入了一种特殊的注意机制,即 **辅助损失函数驱动的注意力计算方式**,这不仅提高了模型对于重要事件的关注能力,还减少了无关噪声带来的干扰影响[^5]。 最终输出经过全连接神经网络映射至概率空间完成二分类任务。 --- ### Python 实现代码片段 以下是基于 TensorFlow/Keras 的简化版本实现: ```python import tensorflow as tf from tensorflow.keras.layers import Input, Dense, Embedding, Concatenate, Dropout from tensorflow.keras.models import Model from tensorflow.keras.regularizers import l2 def AUGRU(units): """定义 Attention-based Update Gate Recurrent Unit""" def __call__(self, inputs, states, attention_score=None): xt = inputs ht_minus_1 = states[0] zt = tf.sigmoid(tf.matmul(xt, self.Wz) + tf.matmul(ht_minus_1, self.Uz)) rt = tf.sigmoid(tf.matmul(xt, self.Wr) + tf.matmul(ht_minus_1, self.Ur)) candidate_ht = tf.tanh( tf.matmul(xt, self.Wh) + tf.multiply(rt, tf.matmul(ht_minus_1, self.Uh)) * attention_score[:, None] ) ht = (1 - zt) * ht_minus_1 + zt * candidate_ht return ht, [ht] class DIEN(Model): def __init__(self, num_users, num_items, embedding_dim=64, hidden_units=128): super(DIEN, self).__init__() self.user_embedding = Embedding(num_users, embedding_dim) self.item_embedding = Embedding(num_items, embedding_dim) self.gru_layer = tf.keras.layers.GRU(hidden_units, return_sequences=True) self.augru_layer = AUGRU(hidden_units) self.dense_output = Dense(1, activation='sigmoid') def call(self, inputs): user_ids, item_seq, target_item = inputs # 嵌入操作 seq_embeddings = self.item_embedding(item_seq) target_emb = self.item_embedding(target_item) # 兴趣提取层 gru_out = self.gru_layer(seq_embeddings) # 计算注意力分数 att_scores = tf.nn.softmax(tf.reduce_sum(gru_out * target_emb[:,None,:], axis=-1), axis=1) # 利用 AUGRU 更新状态 augru_outputs = [] state = tf.zeros_like(gru_out[:,0]) for t in range(gru_out.shape[1]): output, state = self.augru_layer(gru_out[:,t:t+1], initial_state=[state], attention_score=att_scores[:,t]) augru_outputs.append(output) final_interests = tf.concat(augru_outputs, axis=1) # 输出层 concat_input = Concatenate()([final_interests[:,-1], target_emb]) logits = self.dense_output(concat_input) return logits ``` 上述代码展示了如何构建一个基础框架下的 DIEN 模型结构,其中包含了 AUGRU 层的设计思路以及整体流程逻辑[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值