AUC 值被定义为 ROC 曲线先下方的面积,取之范围在(0,1)之间,ROC 曲线越靠近左上方 AUC 的值越大,预估模型的结果越好。

该模型框架是将两种模型进行联合训练,综合利用浅 层模型的记忆能力和深层模型的泛化能力,既能学习到线性特征又能学习到非线性特 征,实现单模型可以兼顾准确性和拓展性。 (1)Wide 模型 Wide 模型是广义线性模型,计算公式如式(3-1)所示:

(3-1)

其中,y是线性模型的预测值,是输入模型的特征集合, 是 模型权重参数的矩阵,b为偏倚常量。输入特征不仅包含原始特征还包含交叉特征, 定义如式(3-2)所示:

(3-2)

是一个布尔值,交叉特征可以理解为原始特征通过逻辑与运算完成特征组合, 例如性别和语言的组合特征,性别:{男,女},语言:{法语,中文},组合特征:{男且法 语,男且中文,女且法语,女且中文},某样本性别=女,语言=法语,则组合特征女 且法语=1,其他为 0。 线性模型的输入特征是不需要向量化处理,直接将特征以及组合特征作为模型的 输入,输入特征可以是连续特征也可以是离散特征,通常在进行广告点击率预测是为 离散特征及其组合特征。 (2)Deep 模型 Deep 模型是一个深度神经网络,输入特征为连续特征、字符型特征,特征要经 过向量化处理再进行模型训练。Deep 模型是通过反向传播调整更新得到最合适的模 型的权重以及偏置向量。其中隐藏层计算如式(3-3)所示: (3-3) 其中,�代表第�隐含层,�代表神经网络中的激活函数,�> 是第�层经过激活函数 的输出值、�> 是�层偏倚值、�> 是第�层的权重矩阵。

3.2.1 模型原理分析

Din 广告点击率预估模型是在传统深度神经网络模型基础上引入了局部激活机 制。传统的深度神经网络模型在针对不同候选商品时,用户历史行为经过池化层后向 量是相同的,不能体现用户不同的历史行为与候选商品的关系。因为用户的历史行为 对于候选商品的影响是不一样的,例如:一个美妆达人在淘宝网的历史购买记录为狗 粮、化妆刷、眼影、连衣裙、玉米等,当猜你喜欢界面出现红薯时,判断该用户是否 会点击起到关键性作用的是玉米而非其他商品。所以,Din 模型在池化层之前引入局 部激活机制,根据用户的历史行为和候选商品计算出权重,该权重表达了历史行为信 息对候选商品的影响程度。 局部激活机制的实质就是注意力机制,注意力机制是模拟人的视觉注意力,当人 在看一幅画是,画上总是有一些细节会特别吸引你的注意力,而不是整幅画中各个细 节在脑海里的注意力是均衡的,这与广告点击率预估是相类似的,用户的历史行为信息对于候选广告的影响是不一样的,所以在深度神经网络中引入注意力机制,也就是 局部激活机制。 局部激活公式如式(3-5)所示:

(3-5)

其中代表用户的兴趣,是用户行为信息内的商品,为针对候选商品用户行 为信息内各个商品的权值。

3.2.2 模型结构

Din 模型如图 15 所示,采用自适应的方法来计算用户兴趣的表示向量,过程如 下:大量的特征先被输入到向量化层得到特征向量,接着输入局部激活层,与指定的 召回商品具有更高相关性的特征向量可以获得更高的权重。

(1)输入层:将高维稀疏的用户行为序列、上下文信息、用户特征、目标广告 特征输入向量化层。

(2)向量化层:将输入层的输入数据向量化,将用户历史行为向量与目标广告 向量输入到局部激活机制,根据目标广告计算出用户历史行为内不同商品的权值。

(3)隐含层:对输入向量进行前向传播,产生误差再反向更新模型参数指导收 敛。

(4)输出层:输出 Din 模型的预测值。

3.2.3 实验结果分析

实验环境:操作系统为 macOS Mojave,内存为 4 GB 1600 MHz DDR3,处理器 为 1.3 GHz Intel Core i5,深度学习框架为 Tensorflow,实验参数如表 4 所示:

3.3.1 Dien 模型

在推荐系统中,用户的兴趣是不断变化的,可能一段时间在购买书,另外一段时 间对衣服感兴趣。每一个兴趣都有它自身的发展趋势,不同的兴趣之间相互影响比较 小,比如书和衣服之间的关联就比较小。DNN、Wide and Deep、Din 几种模型只是将 用户的历史行为作为输入特征进行模型训练,考虑到了用户兴趣的多样性但是没有考 虑到用户兴趣的依赖性,没有捕捉到用户兴趣动态变化的过程,同时通过用户的显示 行为来表达用户的隐含行为,是无法保证预测的准确性。深度兴趣演化网络 Dien 对 用户的历史行为进行建模,按照浏览时间形成用户行为时序,并引入 GRU 模块来实 现点击行为之间的依赖性,因为用户的下一次点击会受到上一次点击行为的影响,并 用兴趣抽取层和进化成表达用户兴趣变化的动态过程。

(1)兴趣抽取层 兴趣抽取层(Interest Extractor Layer)的主要目标是在向量化的数据中ᨀ取用户 的兴趣点,用户某一时刻的兴趣不仅与上一时刻有关也与前几时刻相关联,所以引入 GRU 单元来从用户的行为中ᨀ取用户兴趣。GRU 单元结构如图 16 所示:

图中,为输入,为输出,为本单元隐含状态,为上一单元的隐含状态,是激活函数,式(3-6)为更新门,式(3-7)为重置门,在式(3-8)中当趋于 1 时,上一单元的隐含状态会被保留与本单元输入共同加权求和,当趋于 0 时, 上一单元的隐含状态将不会被保留,式(3-8)为当前单元的输入加权求和;在公式 (3-9)中,当趋与 1 时,GRU 结构输出为式(3-8)的结果,当趋与 0 时,GRU 结构输出为上一个单元的隐含状态。所以重置门有助于捕捉用户行为时序列中短 期的依赖关系,更新门有助于捕捉用户行为时序中的长期依赖关系。

(2)兴趣进化层 兴趣进化层主要任务是将抽取的兴趣序列找到其中兴趣变化的过程,例如,以鞋 为例,用户会因为一年四季的变化以及每年的流行趋势不同发生兴趣的变化。用户兴 趣的变化会对用户的点击决策产生很大的影响。兴趣进化层就是对用户兴趣变化过程进行建模,用户的兴趣变化过程一般会遵循两点规律:一是用户在某一时间段内兴趣 点非常集中,二是用户兴趣点与兴趣点间是互不相关的。 为了利用这两个时序特征,将 GRU 结构和局部激活机制结合成 AUGRU(GRU with attentional update gate)以找到与目标广告相关的兴趣点,将 GRU 的结构的隐含 状态输出变为式(3-11):

(3-10) (3-11)

其中,attention 的计算方式如式(3-12)下:

(3-12)

(3)模型结构 图 17 Dien 模型结构图 Fig.17 Dien Model Structure Diagram

Dien 的模型结构图如图 17 所示。

(1)输入层:首先将用户的行为以两个星期为一个窗口形成用户行为序列,再 将用户行为序列、上下文信息、用户特征、目标广告输入向量化层。

(2)向量化层:将输入层的输入数据向量化,将用户行为序列输入到兴趣抽取 层,其他向量输入到隐含层。

(3)兴趣抽取层:将用户行为序列输入到 GRU 结构,找寻用户历史行为之间的 依赖性,提取用户兴趣点,输出向量输入到兴趣进化层。

(4)兴趣进化层:兴趣抽取层的输出向量再通过 AUGRU 结构,刻画用户的兴 趣过程,找到用户兴趣的变化过程,最后将输出向量输入至隐藏层。

(5)隐藏层:通过深度神经网络对输入向量进行前向传播,产生误差再反向更 新模型参数指导收敛。

(6)输出层:输出 Dien 模型的预测值。

2021-09-03Dien相关推荐

  1. 橘子CPS联盟操作手册2021.09

    橘子CPS联盟操作手册2021.09 目录 橘子CPS联盟操作手册2021.09 橘子CPS联盟是干嘛的 橘子CPS基本操作流程 PC端操作 1.注册 2.登陆 3.渠道管理 4.分享网站 5.分享网 ...

  2. 2021.09.27 MySQL笔记

    2021.09.27 MySQL笔记 文章目录 2021.09.27 MySQL笔记 一.展示当前存在的所有数据库 二.使用(选中)一个数据库 三.创建一个数据表 四.查询并展示该数据库内的所有数据表 ...

  3. 实习日志 (2021.09.13)

    2021.09.13星期一 今天把之前的算法题终于给弄明白了,并能够按照自己的思路去把他给完成,总结这个题目并不是很难,最重要的是要把链表给弄懂,一开始由于我对链表不是很熟悉,导致我在写该题目的时候花 ...

  4. 2021.09青少年软件编程(Python)等级考试试卷(三级)

    2021.09青少年软件编程(Python)等级考试试卷(三级) 一.单选题(共25题,每题2分,共50分) 1.使用map函数可以实现列表数据元素类型的转换,而无需通过循环.则将列表L=['1',' ...

  5. 2021.09.24—皮皮与帅帅的第二篇情话

    2021.09.24我们小情书的第二天 每天晚上,小兔子都会一个人来到溪水边,坐在地上数着星星.而且他个人也非常喜欢一闪一闪的东西.对于小兔子来说,每颗星星都是特别的,于是她就给每颗星星都起了一个可爱 ...

  6. 《惢客创业日记》2021.09.15(周三)套路的最高境界

    今天,凉粉儿给我发了一段她想的关于惢客的宣传词:"你被套路过吗?想不再被套路吗?上惢客."总结一句话是"不被套路上惢客".我觉得能把惢客跟套路联系在一起,很贴切 ...

  7. Go 1.18将原生支持fuzz test | Gopher Daily (2021.09.21) ʕ◔ϖ◔ʔ

    每日一谚:Clear is better than clever. Go技术生态 Go 1.18合并了对Fuzz测试原生支持的代码 - https://github.com/golang/go/com ...

  8. 2021.09.27-10.3 AI行业周刊(第65期):坚持的力量

    本周话题:坚持的力量 国庆节花费了13个小时,从无锡开车回老家. 原本只需要4个小时,结果生生的开了一天,虽然很累,但是回家乡的执念一直在坚持. 开车回家的一路上,一直在回想这些年坚持做的很多事情: ...

  9. 详解即将于Go 1.18加入的Go泛型特性 | Gopher Daily (2021.09.27) ʕ◔ϖ◔ʔ

    每日一谚:use errors.Is(err, pkg.ErrFoo) rather than err == pkg.ErrFoo. Go技术生态 详解即将于Go 1.18加入的Go泛型特性 - ht ...

  10. Go程序内存泄露问题快速定位 | Gopher Daily (2021.09.01) ʕ◔ϖ◔ʔ

    每日一谚:Less is more. Go技术生态 github针对go仓库提供免费的持续benchmark服务 - https://github.com/marketplace/gobencher ...

最新文章

  1. JIT Code Generation代码生成
  2. R语言使用timeROC包计算存在竞争情况下的生存资料多个标记物在相同时间下的cox及协变量分析AUC值、并可视化多个标记物在相同时间下的ROC值、多指标的ROC曲线(Time-dependent R
  3. 石川es6课程---11、json
  4. Windows Phone 的控件倾斜效果
  5. 解锁并设置远程登录尝试次数
  6. Wdows server 2003 ipv6下IP和 IIS的 WEB/ FTP设置
  7. (1.1)HarmonyOS鸿蒙中Ability概念及意义
  8. 7-3 逆序的三位数 (10 分)
  9. Jzzhu and Sequences(CF-450B)
  10. 训练AI太辛苦?OpenAI新方法:不如让AI之间互教吧
  11. mysql 主从库_MySQL数据库之mysql 主库有数据通过锁库做主从
  12. 当你一个人走过你们曾经走过的大街小巷,你会有何感受?
  13. 03、订单商品信息表.sql
  14. vue 移动端校验(是否移动设备,安卓/IOS,是否微信浏览器)
  15. Gowild狗尾草推出HE琥珀,标贝科技为其提供更“温柔”的声音
  16. 怎样才能实现表格背景图片拉伸
  17. Windows企业版2019安装,和显示无法打开所需文件d:\sources\install.wim.”解决办法
  18. 3-2 判断点在圆内或圆外
  19. Opencv学习笔记——opencv配置安装与IDE环境安装
  20. 德州计算机信息技术学校电话,山东省信息技术学校

热门文章

  1. 利用wsdl.exe生成webservice代理类
  2. 必看干货!五个步骤帮您成功实施IT SLA
  3. 微服务下flask和celery的通信
  4. 请认真使用没有后悔药的parted分区工具
  5. Opera 首个 “重生” 版本亮相:启用全新用户界面
  6. 【夯实基础】Spring在ssh中的作用
  7. 总结命令----tar
  8. linux查看db2表空间大小,db2怎么列出当前数据库下全部表占用空间的大小
  9. 文件异步加载读取 php,js文件的异步加载的方法总结(附代码)
  10. python 累加_对Python实现累加函数的方法详解