task5 DIN

2023-10-06 03:30
文章标签 task5 din

本文主要是介绍task5 DIN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前的模型局限

在个性化广告点击预测任务中存在的问题就是无法表达用户广泛的兴趣,因为这些模型在得到各个特征的embedding之后,就蛮力拼接了,然后就各种交叉等。这时候根本没有考虑之前用户历史行为商品具体是什么,究竟用户历史行为中的哪个会对当前的点击预测带来积极的作用。

DIN模型结构及原理

DIN模型的创新点或者解决的问题是使用了注意力机制来对用户的兴趣动态模拟, 模拟过程存在的前提是用户之前有大量的历史行为。

  • 特征表示
    经过编码后的特征数据,没有任何交互组合,没有做特征交叉。
    在这里插入图片描述
  • 基线模型
    Embedding layer,Pooling & Concat layer和MLP
    在这里插入图片描述

Embedding layer:
假设某个用户的weekday特征就是周五,化成one-hot编码的时候,就是[0,0,0,0,1,0,0]表示,这里如果再假设隐向量维度是D, 那么这个特征对应的embedding词典是一个 D × 7 D\times7 D×7的一个矩阵(每一列代表一个embedding,7列正好7个embedding向量,对应周一到周日),那么该用户这个one-hot向量经过embedding层之后会得到一个 D × 1 D\times1 D×1的向量,也就是周五对应的那个embedding,怎么算的,其实就是 e m b e d d i n g 矩 阵 ∗ [ 0 , 0 , 0 , 0 , 1 , 0 , 0 ] T embedding矩阵* [0,0,0,0,1,0,0]^T embedding[0,0,0,0,1,0,0]T 。其实也就是直接把embedding矩阵中one-hot向量为1的那个位置的embedding向量拿出来。 这样就得到了稀疏特征的稠密向量了。

pooling layer and Concat layer:
pooling layer先把用户历史行为embedding变成固定长度(统一长度),所以有了这个公式: e i = p o o l i n g ( e i 1 , e i 2 , . . . e i k ) e_i=pooling(e_{i1}, e_{i2}, ...e_{ik}) ei=pooling(ei1,ei2,...eik) 这里的 e i j e_{ij} eij是用户历史行为的那些embedding。 i i i表示第 i i i个历史特征组(是历史行为,比如历史的商品id,历史的商品类别id等), 这里的 k k k表示对应历史特种组里面用户购买过的商品数量,也就是历史embedding的数量,看上面图里面的user behaviors系列,就是那个过程了。
Concat layer层的作用就是拼接了,就是把这所有的特征embedding向量,如果再有连续特征的话也算上,从特征维度拼接整合,作为MLP的输入。

  • MLP
    普通的全连接,学习特征之间的各种交互。

  • Loss:
    由于这里是点击率预测任务, 二分类的问题,所以这里的损失函数用的负的log对数似然: L = − 1 N ∑ ( x , y ) ∈ S ( y log ⁡ p ( x ) + ( 1 − y ) log ⁡ ( 1 − p ( x ) ) ) L=-\frac{1}{N} \sum_{(\boldsymbol{x}, y) \in \mathcal{S}}(y \log p(\boldsymbol{x})+(1-y) \log (1-p(\boldsymbol{x}))) L=N1(x,y)S(ylogp(x)+(1y)log(1p(x)))

DIN模型架构

引入了一个新的local activation unit
在这里插入图片描述
输入是用户历史行为商品和当前的候选商品, 输出是它俩之间的相关性, 这个相关性相当于每个历史商品的权重,把这个权重与原来的历史行为embedding相乘求和就得到了用户的兴趣表示 v U ( A ) \boldsymbol{v}{U}(A) vU(A), 这个东西的计算公式如下: v U ( A ) = f ( v A , e 1 , e 2 , … , e H ) = ∑ j = 1 H a ( e j , v A ) e j = ∑ j = 1 H w j e j \boldsymbol{v}{U}(A)=f\left(\boldsymbol{v}{A}, \boldsymbol{e}{1}, \boldsymbol{e}{2}, \ldots, \boldsymbol{e}{H}\right)=\sum_{j=1}^{H} a\left(\boldsymbol{e}{j}, \boldsymbol{v}{A}\right) \boldsymbol{e}{j}=\sum{j=1}^{H} \boldsymbol{w}{j} \boldsymbol{e}{j} vU(A)=f(vA,e1,e2,,eH)=j=1Ha(ej,vA)ej=j=1Hwjej 这里的 v A , e 1 , e 2 , … , e H {\boldsymbol{v}{A}, \boldsymbol{e}{1}, \boldsymbol{e}{2}, \ldots, \boldsymbol{e}{H}} vA,e1,e2,,eH是用户 U U U的历史行为特征embedding, v A v_{A} vA表示的是候选广告 A A A的embedding向量, a ( e j , v A ) = w j a(e_j, v_A)=w_j a(ej,vA)=wj表示的权重或者历史行为商品与当前广告 A A A的相关性程度。 a ( ⋅ ) a(\cdot) a()表示的上面那个前馈神经网络,也就是那个所谓的注意力机制。
外积操作,是有利于模型相关性建模的显性知识。

DIN实现

VarlenSparse型特征(变长离散型):这个一般指的用户的历史行为特征,变长数据, 首先会进行padding操作成等长, 然后建立Input层接收输入,然后通过embedding层得到各自历史行为的embedding向量, 拿着这些向量与上面的候选商品embedding向量进入AttentionPoolingLayer去对这些历史行为特征加权合并,最后得到输出。

思考

att_hidden_units: 注意力层的隐藏单元个数.可以是一个列表或者元组,毕竟注意力层也是一个全连接的网络

mask = tf.cast(tf.not_equal(seq_inputs[:, :, 0], 0), dtype=tf.float32)
#(None, maxlen) 类型转换函数, 把seq_input中不等于0的值转成float32 #这个函数的作用就是每一行样本中, 不为0的值返回1, 为0的值返回0, 这样就把填充的那部分值都给标记了出来

在这里插入图片描述
在这里插入图片描述

这篇关于task5 DIN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/152730

相关文章

零基础入门数据挖掘之心电图分类 Task5 建模融合

此次学习是整个学习的最后一节。收获颇丰!感谢datawhale提供的平台! 模型融合 在前面的特征工程中,特征融合也是一个重要的环节,而对于模型的融合也是一个相当重要的环节。俗话说:三个臭皮匠顶个诸葛亮 常见的模型融合有以下三大类型的方法 简单的加权融合:这部分比较好理解,光看名字就可以理解例如 回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometr

Dragostea Din Tei

来自罗马尼亚强势Boy-Band "O-Zone"主打歌"Dragostea Din Tei"先声夺人雄据欧陆各国音乐销售榜NO。1

DIN特征加权、POSO特征增强、SENET特征选择

本文转自:DIN、POSO、SENet 聊聊推荐模型中常用的Attention-腾讯云开发者社区-腾讯云 一、前言 聊起模型结构的时候,经常听做推荐的同学说: "这里加了个self-attention" "类似于一个SENet" "一个魔改的POSO" "DIN就是一个attention" ...... 这些常见的模块、模型,听完之后很多时候还是一知半解,看了几篇模型的知乎,感觉长得

NL2SQL进阶系列(5):论文解读业界前沿方案(DIN-SQL、C3-SQL、DAIL-SQL、SQL-PaLM)、新一代数据集BIRD-SQL解读

NL2SQL进阶系列(5):论文解读业界前沿方案(DIN-SQL、C3-SQL、DAIL-SQL)、新一代数据集BIRD-SQL解读 NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法技术回顾七年发展脉络梳

NL2SQL进阶系列(4):ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL]

NL2SQL进阶系列(4):ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL] NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法技术回顾七年发展脉络梳理 NL2SQL进阶系列(

【RL】(task5)PPO算法和代码实现

note 文章目录 note一、RLHF对齐1. 训练奖励模型和RL2. RLHF3. 常见的公开偏好数据集 二、PPO近端策略优化1. PPO介绍2. PPO效果 二、PPO代码实践PPOmemoryPPO modelPPO update 时间安排Reference 一、RLHF对齐 1. 训练奖励模型和RL 用奖励模型训练sft模型,生成模型使用奖励或惩罚来更新策略,以便

CTR之行为序列建模用户兴趣:DIN

在前面的文章中,已经介绍了很多关于推荐系统中CTR预估的相关技术,今天这篇文章也是延续这个主题。但不同的,重点是关于用户行为序列建模,阿里出品。 概要 论文:Deep Interest Network for Click-Through Rate Prediction 链接:https://arxiv.org/pdf/1706.06978.pdf 这篇论文是阿里2017年发表在KDD上

推荐模型复现(二):精排模型DeepFM、DIN

1.DeepFM模型 1.1 DeepFM模型产生背景 DNN的参数过大:当特征One Hot特征转换为Dense Vector时,网络参数过大。FNN和PNN的交叉特性少:使用预训练好的FM模块,连接到DNN上形成FNN模型,后又在Embedding layer和hidden layer1之间增加一个product层,使用product layer替换FM预训练层,形成PNN模型FNN:

[阿里DIN] 从论文源码学习 之 embedding_lookup

[阿里DIN]从论文源码学习 之 embedding_lookup 文章目录 [阿里DIN]从论文源码学习 之 embedding_lookup0x00 摘要0x01 DIN代码1.1 Embedding概念1.2 在DIN中的使用1.3 问题 0x02 相关概念2.1 one-hot编码2.2 转换2.3 Embedding层2.3.1 意义2.3.2 常规作用2.3.3 如何生成 2.

【天池——街景字符识别】 Task5 模型集成

文章目录 集成学习方法深度学习中的集成学习DropoutTTASnapshot 结果后处理小节 集成学习方法 在机器学习中的集成学习可以在一定程度上提高预测精度,常见的集成学习方法有Stacking、Bagging和Boosting,同时这些集成学习方法与具体验证集划分联系紧密。 由于深度学习模型一般需要较长的训练周期,如果硬件设备不允许建议选取留出法,如果需要追求精度可以使用交