DIN - 序列模型之深度兴趣网络(阿里)

news2024/10/7 10:19:56

🔥 DIN来自于 阿里 盖坤团队 在 KDD-2018 发的论文《Deep Interest Network for Click-Through Rate Prediction》。该模型在当时已经应用于阿里的电商广告推荐业务,效果不错。

文章目录

  • 1、介绍:
  • 2、单值特征 & 多值特征:
  • 3、动机:
  • 4、创新点:
  • 5、DIN模型结构:
    • 5.1、CTR数据集形式
    • 5.2、embedding+mlp范式
    • 5.3、DIN:
  • 6、改进L2正则 & Dice激活函数:
    • 6.1、自适应的正则技术 - Mini-batch Aware Regularization:
    • 6.2、激活函数Dice - Data Adaptive Activation Function:
  • 7、新的评估方式 - GAUC:

1、介绍:

在这里插入图片描述

  • 电商广告推荐:召回+排序。商品广告推荐很注重用户的历史行为数据,因为这个直接与用户的兴趣相关,而用户兴趣又反过来和商品挂钩。
  • DIN主要做的就是:引入注意力机制来对用户的兴趣(即历史行为信息:历史购买商品/商品类别序列、历史点击商品/商品类别序列等)建模,来预测对于某个商品广告,用户是否会点击,即解决CTR任务。

2、单值特征 & 多值特征:

  • 单值特征 (one-hot):对于离散特征,那就编号过embedding咯。对于连续特征,可以直接拼接到后面的特征,也可离散化后过embedding。
  • 多值特征 (multi-hot):如历史购买商品的行为序列,对所有商品的embedding做聚合,如sum, mean-pooling等。【序列的最大长度一般由batch内序列的最大长度决定,不够的用0(不在id集合内的任意数字都可以)补全】

3、动机:

  • 以往模型大部分是这样一个范式:embedding+mlp。这类模型其实无法很好地表达用户的广泛兴趣。因为过embedding之后一般就是拼接,各种交叉,过mlp,并没有考虑用户历史行为中哪个历史行为过的商品对这次的预测有积极作用。
  • 如现在要推一个逗猫棒,如果用户的历史购买行为是:[猫粮,牛奶,衣服,裤子,猫抓板]。那无疑,历史行为中跟猫相关的商品会给本次的预测起到积极加分作用。
  • 但如果,只是对这种多值特征做简单的聚合,那相当于对这些商品同等对待了,但并不是用户所有的历史行为特征都会对某个商品广告点击预测起到作用。
  • 那动机不就来了吗,加个注意力机制,让模型自适应地捕捉用户的兴趣变化,考虑用户的历史行为商品与当前商品广告的一个关联性即注意力。

所以,DIN提出了个activation unit结构,它能够利用广告商品和历史行为商品之间的相关性计算出权重(即注意力权重),以此来区分不同的历史行为商品对本次广告商品的点击起到的作用。

4、创新点:

面试时,如果要求介绍DIN,那可以直接按如下回答,包稳。

  • 引入来注意力机制,建模用户的历史行为兴趣:activation unit模块。
  • 提出了针对推荐领域里特征稀疏问题的正则化技术:mini-batch aware regularization。
  • 在PReLU激活函数的基础上做了改进,提出了随着数据分布而动态调整的自适应激活函数Dice,是泛化PReLU。
  • 提出了细化到每个用户维度的AUC指标:GAUC

5、DIN模型结构:

5.1、CTR数据集形式

工业界CTR数据集一般长这样:
在这里插入图片描述

  • 用户画像特征
  • 用户行为特征(即序列特征):包含商品id,商铺id,类目id
  • 广告商品特征:同样包含,商品id,商铺id,类目id
  • 上下文特征

5.2、embedding+mlp范式

先来说说embedding+mlp范式的模型,我们称其为base模型,DIN则是在base基础上引入来注意力做改进。
base模型结构如下,分为三大模块:embedding,pooling&concat,mlp。
在这里插入图片描述

5.3、DIN:

DIN结构如下图所示:

  • 主要的部分如我用红框框住所示:
    在这里插入图片描述

关键就是activation unit模块:

  • 设历史购买商品特征为k、广告商品特征q,那这个模块会将:[q,k,q-k,q*k] (当然可以各种骚组合法都可试试) 做拼接然后过mlp最后映射出一个值,即注意力权重。
  • 这样每个k都会和q计算出一个注意力权重,把这个权重与原来的历史商品embedding相乘求和(即sum pooling)就得到了用户兴趣特征。
  • 注意:为了保留用户的兴趣强度,这些注意力权重之和并不是1,准确的说这里不是权重,而是直接算的相关性的那种分数作为了权重,也就是平时的那种scores(softmax之前的那个值)。

🔥 最后将:用户画像特征+用户兴趣特征+广告商品特征+上下文特征 做拼接然后过mlp,完成CTR预估任务。

6、改进L2正则 & Dice激活函数:

实践中,训练具有大规模稀疏输入特征的工业深度网络是一个很大的挑战。下面DIN提出的两种trick,它们在实践中被证明是有帮助的。

6.1、自适应的正则技术 - Mini-batch Aware Regularization:

我简称其为MAR,它是在L2正则的基础上做了改进。L2在推荐场景中存在的问题:

  • L2正则是对所有参数都起作用的,但batch内样本的某些特征是非常稀疏的,这种情况没必要考虑所有的参数进去,这个复杂度会非常大, 而仅仅约束那些在当前mini-batch样本中出现的特征(不为0的那些特征)embedding就可以了。作者就是出于该动机做了改进。

模型训练过程中,造成复杂度的主要原因是每个特征对应的embedding字典矩阵的更新。如果能把这个的计算量降下去,模型训练就不成问题了,所以这里的正则是对embedding矩阵的正则。
设Ki为某特征的取值数,D为嵌入维度,embedding矩阵大小为Ki*D。

  • 也就是对样本的某个特征取值不为0,其对应的embedding参数才加正则约束
    具体地:

  • 原始L2正则到MAR的变化,针对所有样本的正则公式:
    在这里插入图片描述

  • 针对所有batch的所有样本的公式:
    在这里插入图片描述

  • 最终公式:
    作者为了简单,把示性函数这个换成了一个固定值,因为各个样本在每个不同的特征下取值为1的个数会不同, 算起来会有些麻烦,所以作者在这里取了个近似,让αmj=max 也就是在各个样本中出现最多的那个特征出现的次数(感觉不太好描述,想象每一行算一个样本,每一列算一个特征, 竖着看,每一列1最多的那个特征就是对应的xj,而1出现的个数就是这里的amj,这样计算就统一起来了,所以公式约等于了下面这个:
    在这里插入图片描述

6.2、激活函数Dice - Data Adaptive Activation Function:

  • DIN提出了提出了一个随着数据分布而动态调整的自适应激活函数Dice,它是基于prelu做改进。

  • prelu如下所示,在负值域,prelu 的斜率较小,这也可以避免 dead relu 问题,PReLU 在负值域是线性运算。尽管斜率很小,但不会趋于 0。
    在这里插入图片描述
    在这里插入图片描述

  • Dice改进如下,即融入了当前batch里的统计信息(均值和方差)来随着数据分布而动态调整。
    在这里插入图片描述
    这里的E(s)和Var(s)是每个mini-batch里面样本的均值和方差,当然这是训练集部分,测试集的时候采用的是在数据上平滑的均值和方差(In the testing phrase, E[s] and Var[s] is calculated by moving averages E[s] and Var[s] over data.)。 由于把均值和方差考虑进去了, 那么这个函数的调整就可以根据数据的分布进行自适应,这样会更加的灵活且合理。

看起来意思很明显,p(s)变成了sigmoid,同时对输入按当前batch来做归一化后输入sigmoid。

7、新的评估方式 - GAUC:

细化到每个用户维度的AUC指标,通过平均用户的AUC来衡量用户内部顺序的好坏,并被证明与线上广告系统的在线性能更相关。






Reference
[1] Zhou G, Zhu X, Song C, et al. Deep interest network for click-through rate prediction[C]//Proceedings of the 24th ACM SIGKDD international conference on knowledge discovery & data mining. 2018: 1059-1068.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/767689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

共筑信创生态!亚信科技AntDB数据库与用友、东方通、星辰天合达成兼容互认

近日,亚信科技AntDB数据库与用友U8 cloud、东方通应用服务器TongWeb V7.0、星辰天合全产品体系完成兼容适配。经测试,AntDB数据库与U8 cloud产品,TongWeb V7.0服务器,星辰天合天合翔宇分布式存储系统、统一数据平台XEDP、超融合平…

分析分布式架构-技术

分布式系统的主要目的 提高系统的性能 提高吞吐量,服务更多的客户。提高并发和流量。 通过以下的技术提高处理高并发场景的能力 缓存系统,更快的响应客户端的请求。降低对数据库的压力(提高响应速度) 前端浏览器,网络,后端服务&a…

深入理解Linux网络——TCP连接的开销

文章目录 一、相关实际问题二、Linux内核如何管理内存1)node划分2)zone划分3)基于伙伴系统管理空闲页面4、slab分配器5)小结 三、TCP连接相关内核对象1)socket函数直接创建1. sock_inode_cache对象申请2. tcp对象申请3…

自建sqlserver迁移到aliyun的rds for sqlserver实战

大家好,在实际中有些客户有上云的需求,需要把线下自建的sqlserver迁移至aliyun的rds for sqlserver。大家第一时间想到的是用dts工具,根据工作经验,DTS迁移mysql类的数据库比较成熟,但是迁移sqlserver之类会有问题。首…

二本逆互联网大厂! 高薪就业

【二本屌丝也能逆袭!毕业四年从小公司到大厂之路,这就是我的逆袭🚀✨】 大家对如何逆袭互联网大厂而感到惊讶?作为计算机专业的大学生,想必你对于进入互联网行业有很多的期望和追求。但是面对激烈的竞争和复杂的招聘要…

wasserstein distance简单记录

W a s s e r s t e i n Wasserstein Wasserstein d i s t a n c e distance distance一般被称为推土距离,假设有两个分布 P ( x ) P(x) P(x)和 Q ( y ) Q(y) Q(y) ,两个分布间的推土距离为: W ( P , Q ) inf ⁡ γ ∈ Π ( P , Q ) E ( x ,…

深度学习trick

本次Tricks主要面向于深度学习中计算机视觉方向的研究,分为数据增广方法、训练技巧,参数调节这三个方面进行深入的分析。内容有一部分是基于openmmlab的mmdet和mmseg两个框架上的成熟应用案例进行详细阐述。 首先是数据增广的tricks: 0、Fli…

【Java基础教程】(十八)包及访问权限篇 · 下:Java编程中的权限控制修饰符、单例设计模式 (Singleton)和多例设计模式的综合探析~

Java基础教程之包及访问权限 下 本节学习目标1️⃣ 访问控制权限2️⃣ 命名规范3️⃣ 单例设计模式 (Singleton)4️⃣ 多例设计模式 本节学习目标 掌握Java 中的4种访问权限;掌握Java 语言的命名规范;掌握单例设计模式与多例设计模式的定义结构&#x…

【HISI IC萌新虚拟项目】cpu_if的接口cpu_agent utils搭建

关于整个虚拟项目,请参考: 【HISI IC萌新虚拟项目】Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 spt_agent utils已经完成了(虽然之后可能还会有微调),接下来完成配置通路cpu interface对应的utils。这个通路比较特殊,一是带反馈的接口,二是时…

Android 通过插桩来代理线程池

前言 在日常开发App的过程中,难免需要依赖第三方Sdk,这样就无形中增加了我们自己App的线程数,从而会导致App出现内存溢出、Cpu消耗增加等等负面影响。如果依赖的Sdk提供了线程池代理的接口还好,那样直接设置我们自定义的线程池。但…

密码学学习笔记(十五):ECDSA - 椭圆曲线数字签名算法

椭圆曲线数字签名算法是DSA的一种椭圆曲线变体,它发明的初衷只是避免使用Schnorr签名的专利。椭圆曲线数字签名算法依赖于验证器中的私钥和主机用于验证验证器的公钥。它的缺点和DSA一样,它也没有提供安全性证明。 椭圆曲线算法 DSS(数字签…

工作空间内各文件夹解析

src文件夹用来存放源代码 launch文件夹用来存放一个或多个ros节点启动文件 msg文件夹包含用户定制化消息的定义 srv文件夹包含各种服务的定义 action文件夹包含动作文件 package.xml是软件包清单文件 Cmakelists.txt文件包含编译软件包的各类指令

面试官: 说一下你做过哪些性能优化?

前言 如果你已经有 2 - 3 年以上开发经验还不懂的怎么去优化自己的项目,那就有点说不过去了,下面是我自己总结的一套通用级别的 Android 性能优化。 如果你正在找工作, 那么你需要一份 Android 高级开发面试宝典 1、 你对 APP 的启动有过研究吗? 有做过…

Spring解决数据乱码问题-spring21

乱码数据实际情况: 都出现了?????? 怎么解决: 第一步,找到web.xml配置文件。 改成name控制台就不出来了 如何解决地址方法与Controller业务参数名称不一致的情况&#xf…

Linux 之 基本工具(一)

一、粘滞位 1.背景 在现实生活中,有很多人会在同一台云服务器上共同工作,会出现这些人的某些文件需要保存但又不想保存在各自的家目录下且这些文件需要共给其他一同工作的同事共享(可查阅)的情况,则需要将这些文件保…

Mysql表锁与行锁

Mysql锁实战 前言:什么是锁一:全局锁1.1 概念1.2 作用1.3 使用1.4 特点 二:表级锁2.1 概念2.2 分类2.2.1 表锁2.2.2 元数据锁 MDL2.2.3 意向锁 三:行级锁3.1 行锁(Record Lock)3.2 间隙锁(Gap Lock)3.3 临键锁(Next-Key Lock): 四…

redis乐观锁概念

乐观锁(又名乐观并发控制,Optimistic Concurrency Control,缩写“OCC”),是一种并发控制的方法。它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。…

Ubuntu下安装、配置及重装CUDA教程

安装CUDA 前往Nvidia CUDA Tools官网选择对应的架构和版本下载CUDA 以如下架构和版本为例: 查看显卡驱动 nvidia-smi如果显卡驱动已经装了,那么在CUDA安装过程中不用再勾选安装driver 下载并安装CUDA wget https://developer.download.nvidia.co…

如何设计一个完美的复杂业务系统架构?

1 什么是复杂系统 我们经常提到复杂系统,那么到底什么是复杂系统。我们看下维基的定义:复杂系统(英语:complex system),又称复合系统,是指由许多可能相互作用的组成成分所组成的系统。强调了两…

字幕切分视频

Whisper 仓库地址: https://github.com/openai/whisper 可用模型信息: 测试视频:18段,总共447S视频(11段前:有11段开头有停顿的视频) Tiny: 跑完:142S ,11段前&#xf…