DIN: 阿里点击率预估之深度兴趣网络

2023-05-16

广告推荐算法系列文章:

  • 莫比乌斯: 百度的下一代query-ad匹配算法
  • 百度凤巢分布式层次GPU参数服务器架构
  • DIN: 阿里点击率预估之深度兴趣网络
  • DIEN: 阿里点击率预估之深度兴趣进化网络

本文的知识点来源于参考文献[1],是阿里巴巴2018年在KDD上的论文。本文可以视为Attention机制在推荐系统上的应用。对Attention机制不了解的同学可以看下面的文章进行学习。

  • Transformer: Attention的集大成者
  • Bert系列

背景-推荐模型

正如我们在分布式层次GPU参数服务器架构所提到的,如今深度学习在推荐系统和广告点击率预估上应用广泛,普遍采用的模式是Embedding + MLP的形式。

在这种Embedding + MLP的模型下,有许许多多的特征工程上的技巧。在阿里这个场景下,可以分成这么几个大类,比如用户画像,用户的操作行为,上下文特征,广告特征等等。如下图所示。

在这里插入图片描述

而对应的模型结构则如下图

在这里插入图片描述

可以看到,不同种类的特征在形成向量后是拼接起来的。

用户兴趣多元化

上述模型结构和特征工程已经能达到一个较好的结果了,但是要想精益求精,还是需要对业务有更加深刻的了解。而在阿里的这个场景下,那就是用户购物需求的多元化。在上面的模型中,用户的行为被压缩到了一个特征向量中,就相当于是把所有的兴趣爱好的信息做了平均。但这样做是不精准的。

比如说,一个女性游泳爱好者,可能既会关注包包,又会关注游泳类产品。那么她在浏览包包的时候,对游泳类产品的兴趣其实是与CTR的估计相当无关的事情。

那么如何解决这个问题呢?解决的方法就是对于一个<用户,商品>对来说,不同的商品,要去触发用户不同的兴趣点才合理。这样的操作在NLP问题中其实是非常常见的,比如翻译问题,目标语言句子上的不同位置的词语,对应的是源语言句子上的词语也是不同的,这种对应关系被Attention所解决。

类似的,在这篇论文中,这个问题被兴趣网络解决。

深度兴趣网络

针对上述问题,提出了深度兴趣网络,Deep Interest Network,简称DIN。

DIN的核心idea很直观,模型结构如下图,在这个结构中,可以看到,候选广告需要去跟用户行为中的每一个商品去做权重的计算,然后用权重去做加权平均得到用户针对这个候选广告的兴趣向量。权重和加权,这就是Attention。

在这里插入图片描述

举一个例子,如果用户的行为历史中有两类,衣服和电子产品,其中衣服占90%,电子产品占10%,那么给两个产品T恤和iPhone,那么计算得到的用户对T恤的兴趣很可能大于用户对iPhone的兴趣。之所以说很可能而不是肯定,是因为商品还要本身的性质,比如衣服可以换的很频繁,但iPhone不是,衣服的盈利远远不如iPhone的利润大等等。所以在计算attention的时候,还会有很多特征需要挖掘来计算得到可靠的权重。

大家注意到,这里用户行为历史中的操作是并行计算权重的。其实可以通过循环神经网络来把时间因素考虑进来。论文中尝试过,但是没有提升,可能的原因是兴趣本身就是共存的,时间的前后顺序影响不大。

训练技巧

模型结构本身并不复杂,但相对于阿里巴巴的业务量而言,这个模型的训练是非常难的,因为模型中的用户和候选广告都是以亿计的,而特征又是极其稀疏的。

比如,当上面第一张图中的goods_ids的特征在6亿的时候,如果没有正则化,那么模型在训练一个epoch后在训练集上的loss会迅速下降,导致在测试集上过拟合。如下图中的红线所示:

在这里插入图片描述

而如果采用传统的L2或者L1正则化又是不可能的,因为传统方法需要在所有非0的参数上进行计算,而对于这个问题来说,每次训练都在数以亿计的参数上去做正则化是不可行的。

论文提出了一种近似的办法,即Mini-batch aware的正则化,这种正则化的方法只考虑了在一个mini-batch中出现了的特征所对应的参数。因为稀疏特征的众多,网络中大部分的参数都分布在embedding层,论文以embedding层为例来讲解了正则化的操作。如下所示:

在这里插入图片描述

上图公式中表明了在embedding层上只计算mini-batch上用到的特征所对应参数的L2正则化的方法,其中I(xj≠0)是指示器来表明xj特征是否存在,nj表示所有样本中xj不为0的样本数。wj代表特征j的embedding参数。

然后这个公式可以化简:

再近似

其中

表示的是特征j在mini-batch Bm中至少出现过一次。

这样,经过正则化的梯度就可以计算出来:

在激活函数上,论文提出了一种叫做Dice的激活函数,是PRELU的泛化版本。两种激活函数图示如下:

在这里插入图片描述

其中,论文上的PRelu的图画错了,其公式如下:

基于这个公式,大家可以自行画出正确的图。

而Dice的公式如下:

Dice是PRelu的泛化版本,当均值为0方差为1的时候,两者是等价的,之所以要改成这个形式,是为了要使激活函数适应数据分布。

实验

采用了三个数据集

  • Amazon dataset
  • MovieLens Dataset
  • Alibaba Dataset

前两者是公开数据集。

不同的方法在前两个数据集上的对比,可以看到带来的相对提升还是很高的,达到了2%和6.8%。

在这里插入图片描述

正则化方法的对比,

在这里插入图片描述

可以看到,即便在BaseModel上,正则化方法也有效。

在这里插入图片描述

在阿里巴巴的数据集上,带来了11.65%的提升,又是财富在发光。

在这里插入图片描述

有了attention之后,推荐结果也变得可解释了,下图是一个可视化效果图,反应了当前商品和用户历史行为中的商品的权重。

在这里插入图片描述

思考

勤思考,多提问是每个Engineer的良好品德。

  • 随着时间的流逝,用户操作行为越来越长,在超长序列上建模会遇到性能问题,如何解决?

答案稍后发布在公众号【雨石记】上,欢迎关注。

参考文献

  • [1]. Zhou, Guorui, Xiaoqiang Zhu, Chenru Song, Ying Fan, Han Zhu, Xiao Ma, Yanghui Yan, Junqi Jin, Han Li, and Kun Gai. “Deep interest network for click-through rate prediction.” In Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, pp. 1059-1068. 2018.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DIN: 阿里点击率预估之深度兴趣网络 的相关文章

  • 深奥的补码

    上学的时候汇编语言中有原码 反码 补码 考试的时候经常考 xff0c 比较好的办法就是记住他们的转换规则 xff0c 但是虽然记住转换规则 xff0c 考试也考不差 xff0c 心头却始终有朵乌云挥之不去 xff0c 令人异常纠结 xff0
  • 详解Android Intent

    一 Intent 作用 Intent被译作意图 xff0c 其实还是很能传神的 xff0c Intent期望做到的 xff0c 就是把实现者和调用者完全解耦 xff0c 调用者专心将以意图描述清晰 xff0c 发送出去 xff0c 就可以梦
  • 如何检索Android设备的唯一ID

    Android的开发者在一些特定情况下都需要知道手机中的唯一设备ID 关于本文档 Android 的开发者在一些特定情况下都需要知道手机中的唯一设备 ID 例如 xff0c 跟踪应用程序的安装 xff0c 生成用于复制保护的 DRM 时需要
  • centos6 yum源失效解决方法

    今天看到服务器提示有漏洞需要更新 xff0c 在执行更新命令的时候一直报错 xff0c 因为CentOS 6操作系统版本结束了生命周期 xff08 EOL xff09 xff0c Linux社区已不再维护该操作系统版本 导致不能正常更新 x
  • 安卓使用NavHostFragment时,如何取消按返回键Fragment层层返回效果,去除层层返回

    问题现象 xff1a 在安卓中使用NavHostFragment搭配Fragment做APP主页导航时 xff0c 如果在几个Fragment来回切换了很多次 xff0c 当按返回键想退出app时 xff0c 会造成首先要在Fragment
  • 产品化思维

    1 1 产品的本质 能够供给市场 xff0c 被人们使用和消费 xff0c 并能满足人们某种需求的任何东西 xff0c 包括有形的物品 无形的服务 组织 观念或它们的组合 定义 xff1a 市场是提供给买卖双方交易的平台 xff0c 而人在
  • C和C++的区别?

    C和C 43 43 的区别为 xff1a 结构不同 设计不同 库函数不同 一 结构不同 1 C语言 xff1a C语言结构只有成员变量 xff0c 而没有成员方法 2 C 43 43 xff1a C 43 43 结构中可以有自己的成员变量和
  • 自定义生成公众号二维码,用于小票打印机使用

    近期因项目需求 xff0c 需要将微信公众号二维码打印在小票上 xff0c 小票打印机不支持直接打印图片 xff0c 现在找到一个利用链接来生成自己的微信公众号二维码 xff0c 链接如下 xff1a https mp weixin qq
  • Settings Preference 的理解

    大纲 xff1a 1 一个简单的Preference例子 2 Preferenece数据的操作 3 xff0c Preferenece XML 4 xff0c Using Preference Fragments 5 xff0c Using
  • 需要看的技术书籍

    语言类 xff1a 深度探索C 43 43 对象模型 xff0c 对应的英文版是 Inside C 43 43 43 Object Model 程序编译 链接 加载类 xff1a 链接器和加载器 xff0c 对应的英文版是 Linker a
  • ASP.NET 自定义控件 自定义属性的使用

    最近在给公司一个老的ASP平台进行改版 xff0c 由于这个平台运行时间太长 xff0c 期间有很多程序员进行过修改 xff0c 导致数据库显得很乱 在实际改版时架构采用了多层架构 xff0c 引入工厂模式 xff0c 面向接口 对于资讯类
  • 启动IDEA找不到Tomcat报错Plugin ErrorProblems found loading plugins:

    解决方法 xff1a 找到IDEA的配置文件夹下的disabled plugins txt xff0c 删除然后重启IDEA即可 xff1b 我的文件在 xff1a C Users admin IntelliJIdea2018 1 conf
  • golang数据类型转换(int/float/string/interface/[]byte)

    文章目录 1 int和float转换1 1 int 61 61 gt float32 641 2 float64 32 61 61 gt int 2 字串和数字的转换 xff08 strconv xff09 2 1 string 61 61
  • yy欢聚时代软件测试笔试题

    1 xff0c 10111001对应的八进制 xff0c 十六进制和十进制 2 xff0c 常见的数据库有那些 xff1f 3 xff0c 常见的协议有哪些 xff1f 4 xff0c 代码运行结果 xff0c c 43 43 题目 xff
  • 黑苹果安装教程,配EFI引导文件+软件!

    买不起苹果电脑 xff0c 那最好的办法 xff0c 就是把我们的普通电脑装成苹果系统 不过安装macos系统 xff0c 没有安装windows那么简单 xff0c 步骤比较复杂 对于新手来说不知道如何下手 xff1f 这里我就来分享一下
  • 用单链表实现的内存管理

    http blog csdn net csynyk article details 2861979 在C语言论坛中看了dgarc发表的一个贴子后 xff0c 按要求写了一段代码 xff0c 可以实现内存分配的管理 xff0c 避免内存泄漏
  • tomcat端口冲突问题

    问题 xff1a 在本地启tomcat xff0c 报错 严重 StandardServer await create 8080 java net BindException Address already in use JVM Bind
  • 云计算的三大服务模式

    根据NIST的权威定义 xff0c 云计算有SPI xff0c 即SaaS PaaS和IaaS三大服务模式 这是目前被业界最广 泛认同的划分 PaaS和IaaS源于SaaS理念 PaaS和IaaS可以直接通过SOA Web Services

随机推荐

  • 使用DISM修复系统

    在win10系统中 xff0c 当系统出现文件受损或丢失后 xff0c 可以使用DISM工具进行联机修复 xff1a 1 使用管理员运行CMD xff1a DISM Online Cleanup image RestoreHealth 命令
  • 解决火狐浏览器提示连接不安全或证书错误的问题

    问题 xff1a 在地址栏输入 xff1a about config 接受风险并继续 xff0c 然后在方框中输入 xff1a security enterprise roots enabled 将false切换为true 测试
  • MacOS没有管理员账号的解决方法

    MacOS没有管理员账号的解决方法 参考文档 xff1a https www jianshu com p 7682230edfba 应用场景 xff1a 员工的Mac内只有一个普通用户 xff0c 没有管理员用户 解决方案 xff1a 1
  • ubuntu18设置不要进入休眠,省去输入密码的麻烦

    1合盖不休眠 Ctrl Alt T 组合键打开终端 xff1b 然后修改配置文件 etc systemd logind conf vim etc systemd logind conf 打开文件后修改下面这行 xff1a HandleLid
  • HP BIOS降级

    应用场景 xff1a 员工电脑型号为HP 280 Pro G2 MT xff0c 为员工加装固态硬盘 xff08 硬盘型号 xff1a Samsung V NAND 860 EVO xff09 时 xff0c bios版本过高会导致电脑在开
  • systemd服务

    Systemd 的简介和特点 Systemd 是 Linux 系统中的初始化系统 xff08 init xff09 xff0c 它主要的设计目标是克服sysvinit 固有的缺点 xff0c 提高系统的启动速度 systemd和ubuntu
  • 重定向

    重定向简介 计算机最基础的功能是可以提供输入输出操作 对于Linux系统来说 xff0c 通常以键盘为默认输入设备 xff0c 又称标准输入设备 xff1b 以显示器为默认的输出设备 xff0c 又称标准输出设备 所谓重定向 xff0c 就
  • Canon imageRUNNER 2525i打印机驱动通过IP地址进行安装

    环境 打印机IP xff1a 192 168 140 251 本机IP xff1a 192 168 141 210 操作 一 下载驱动 方法一 xff1a 佳能ir 2525i驱动下载地址 xff1a https pdisp01 c wss
  • 防火墙firewalld

    RHEL7中有几种防火墙共存 xff1a firewalld iptables ebtables等 基于iptables的防火墙默认不启动 xff0c 但仍然可以继续使用 RHEL7默认使用firewalld作为防火墙 xff0c 管理工具
  • redis报错Unrecoverable error: corrupted cluster config file.

    系统因为做物理硬件迁移硬重启了一次 在启动redis时出现了一下问题 xff1a 启动脚本 xff1a 运行启动脚本 xff1a 提示正在运行但是没有进程出现 在redis conf中将daemonize yes设置为daemonize n
  • vcenter开机报错activating swap-devices in /etc/fstab

    问题 xff1a 昨天IDC机房一台存储断电了 xff0c 恰巧vcenter在这台存储上 xff0c 重启存储后再重启vcenter报了以下错误 xff1a 参考文档 xff1a https www virtualizestuff com
  • IDEA Git 分支branch操作,新建和合并

    简单记录IDEA中Git分支操作 1 xff1a 创建分支 右下角new branch创建分支 创建完成查看右下角当前分支情况 创建一个该分支的MD文件信息 xff0c 进行提交 这样一个分支就创建完成 xff0c 然后merge分支 xf
  • KVM 介绍(1):简介及安装

    转载地址 xff1a http www cnblogs com sammyliu p 4543110 html KVM 介绍 xff08 1 xff09 xff1a 简介及安装 学习 KVM 的系列文章 xff1a xff08 1 xff0
  • 个人面试经验总结

    1 xff0c 海投 2 xff0c 一定要强调自己能留到该地 xff08 这个城市 这个公司 xff09 发展 3 xff0c 简历上出现的技能和项目面试前一天一定要复习 xff0c 因为面试官大部分问题会以简历为主 4 xff0c 要有
  • Java学习笔记4(设计模式、接口)

    设计模式 建造者模式 在类中 xff0c 定义一个静态内部类作为 外部类的 建造者在建造者类中 xff0c 提供多个 方法用来完成 外部类 对象的属性赋值在建造者类中 xff0c 提供一个 build 用来返回一个外部类的对象在类中 xff
  • R语言单因素/多因素 Logistic回归

    变量因子的转换 gt 单因素logistic回归 gt 多因素logistic回归 https mp weixin qq com s NowePGv6DF9 dF4blSyzVQ 两个模型的比较 构造测试集 xff0c 预测概率 xff0c
  • 那一年读过的技术经典书

    转载请注明 xff1a http blog csdn net xinzhangyanxiang article details 10199757 大学刚毕业 xff0c 总结起来读过的书并不算多 xff0c 而且主要集中在大四的时期读的 x
  • Bert: 双向预训练+微调

    最近要开始使用Transformer去做一些事情了 xff0c 特地把与此相关的知识点记录下来 xff0c 构建相关的 完整的知识结构体系 以下是要写的文章 xff0c 文章大部分都发布在公众号 雨石记 上 xff0c 欢迎关注公众号获取最
  • Federated Learning: 问题与优化算法

    工作原因 xff0c 听到和使用Federated Learning框架很多 xff0c 但是对框架内的算法和架构了解不够细致 xff0c 特读论文以记之 这个系列计划要写的文章包括 xff1a Federated Learning 问题与
  • DIN: 阿里点击率预估之深度兴趣网络

    广告推荐算法系列文章 xff1a 莫比乌斯 百度的下一代query ad匹配算法百度凤巢分布式层次GPU参数服务器架构DIN 阿里点击率预估之深度兴趣网络DIEN 阿里点击率预估之深度兴趣进化网络 本文的知识点来源于参考文献 1 xff0c