阿里妈妈2018的DIN DIEN

2024-01-11 09:58
文章标签 阿里 2018 din 妈妈 dien

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

DIN来龙去脉:

背景知识:用户画像+用户行为+Item特征+上下文特征,这4者(也可是3者)作为输入信息,将原有的高维稀疏0/1特征做成embedding向量,每组特征由1个或多个向量pooling得到1个向量,最后所有组特征concatenate起来,作为神经网络的input;

一. DIN:(用户行为item和候选item的向量相似度做权重(attention),把所有行为item加和起来,得到行为序列向量)

A. Attention:

引入attention机制,对user侧的特征进行了“选择性pooling",把和当前这个广告相关的信息加强了出来;(这里用的attention不是简单的内积,而是一个小网络)

以前user的一组行为,是平等对待的(同等权重地pooling; 也可以把时间权重加上,越新的权重越大);现在把user每个行为和广告特征计算相关性(其实就是2个向量的内积),作为该行为的权重,该user所有行为加权加和得到最终行为特征向量;

体现了“局部激活”:用户点击了这个广告,和他之前的某些点击行为有关,而不是所有;

体现了“多样性”:用户对广告A感兴趣,和之前的某些行为有关;用户对广告B感兴趣,和之前的另一些行为有关;

每个ad会有good_id, shop_id, category_id三层属性,shop_id只跟用户历史中的shop_id序列发生作用,good_id只跟用户的good_id序列发生作用,...; 其实就是把3个embedding进行concatenate,得到一个item向量;注意:用户行为序列里,是最近点击过的商品(不是广告!),候选广告是用他对应商品的id做特征的;

对以下3点微创新讲的很清楚的文章。

B. 自适应正则:输入embedding层是高维稀疏的,如果不进行正则,第1个epoch后效果就大幅下降;传统L2正则用在高维稀疏embedding输入上,会带来巨大的计算量(每个mini-batch只有几百个embedding有效,而L2正则会一股脑更新所有这几百万个embedding); 解决:本mini-batch里出现过的embedding,进行L2正则更新,没出现就不更新;

C. Dice函数:PRelu在LeakyRelu基础上,让x负半轴的参数\alpha变成了可学习的;观察到每一层网络的输入值分布都是不同的,Dice在PRelu的基础上,把0作为分割点改成了把均值点作为分割点, 并进行了平滑;(类比google的Swish函数?)

D. GAUC:  AUC衡量的是样本间的排序能力。CRT预估是二分类问题,输出是该样本被点击的概率。不同用户之前的排序顺序可能不重要,而全局AUC会考虑这个,所以有时候会不准。GAUC对每个用户求一个AUC,然后加权平均起来,权重可以是该用户的总点击数。   (传统AUC是Area-Uner-Curve, 是ROC曲线形成的包络面积,横轴是FPR, 纵轴是TPR;TPR=TP/(TP+FN), FPR=FP/(FP+TN))

 

二. DIEN: (用RNN编码用户行为序列;附加损失函数,用上一时刻的隐状态预测下一时刻的行为;用Attention得到的"权重"去控制当前时刻的输入有多大程度更新(update-gate)到后面的RNN里面去)

DIEN论文中文翻译

DIEN的论文解读:

两大思想:

1. latent interest: 用户行为序列是observation, 用户的兴趣是隐变量;

2. interest evolving: 用户的兴趣是在不断变化的;

Base model: 输入是<用户行为,用户画像,ad特征,上下文特征>四大类特征,每大类有多组特征,每组特征由multi-hot编码;embedding+pooling; MLP; softmax层2个类别输出;log-likelihood损失函数;(log-likelihood是极大似然函数的负对数形式;和交叉熵损失函数一模一样,也可以理解成交叉熵损失函数)

Base model的缺点:

1. 直接采用行为们的pooling作为兴趣的做法,忽略了行为时间序列内部的依赖关系;Insight:(1)在电商平台中,用户行为是兴趣的载体,且是以时间而产生的序列数据,其间存在的依赖、次序隐藏着用户喜好。(2)当前时刻的兴趣直接导致了下一行为的产生

2. 忽略了兴趣的变化。Insight: (1)用户的兴趣呈现序列变迁的趋势,即随外在环境和内在认知的变化而变化。(2)DIN的启示:淘宝平台中,用户的兴趣是丰富多样的,但能够影响用户行为的仅仅是与目标商品相关的兴趣(attention)。(3)AGRU的启示:用带attention机制的GRU对序列行为建模。

DIEN网络做出的改进:

1. 其他3大类特征不变,仅对用户行为这类特征进行序列建模;

2. 第一层使用GRU单元解决时间序列的梯度消散问题;(且比LSTM速度快)

3. 第一层t时刻的输出h[t](兴趣)和下一时刻的输入e[t+1](行为), 设计附加损失函数,用negative-sampling,负例的选择:或是从用户未交互过的商品中随机抽取,或是从已展示给用户但用户没有点击的商品中随机抽取。h和e度量相似度,监督信息是0或1,使用负对数似然损失函数(别名是交叉熵损失函数)

4. 第二层使用attention,将上一层得到的兴趣h和ad特征进行相似度度量,然后经过softmax得到本次行为序列里每个兴趣和该ad的相似概率(每个兴趣计算hWe,这些数值经过softmax得到概率们);AUGRU单元:把attention作为update-gate的一个因素,从而影响“当前兴趣”和“记忆兴趣”之间的取舍程度;

效果提升:在阿里在线商品广告推荐大数据集上,AUC做指标:Base model和Deep&wide基本一样;DIN提升了0.65个百分点;只用2层GRU单元提升了1个百分点;DIEN去掉附加loss函数提升了1.3个百分点;DIEN提升了1.9个百分点;

DIEN对效果提升的总结:

1.引入RNN对用户行为序列建模;

2.对序列里的中间兴趣和下一时刻的输入行为,进行了相关度建模(附加损失函数);

3.用每时刻的兴趣和该ad特征进行了相关性概率计算,作为下一层GRU单元的一个输入,影响“当前兴趣”和“记忆兴趣”之间的取舍程度;

 

感想:

人家阿里的人,意识到用户的兴趣只和一部分用户行为有关,和当前商品相关度大的那些行为会构成用户的兴趣,于是就把attention加入了进来,于是有了DIN;

人家阿里的人,意识到用户的行为是一个时间序列,时间序列建模当然用RNN最好,再用上DIN的attention,于是就有了DIEN;

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



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

相关文章

springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法

《springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法》:本文主要介绍springboot整合阿里云百炼DeepSeek实现sse流式打印,本文给大家介绍的非常详细,对大... 目录1.开通阿里云百炼,获取到key2.新建SpringBoot项目3.工具类4.启动类5.测试类6.测

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

阿里云服务器ces

允许公网通过 HTTP、HTTPS 等服务访问实例 https://help.aliyun.com/document_detail/25475.html?spm=5176.2020520101.0.0.3ca96b0b3KGTPq#allowHttp

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。

2018秋招C/C++面试题总结

博主从8月中旬开始大大小小面试了十几家公司,至今也许是告一段落吧,希望后面会有好结果,因此总结记录一些C/C++方向常见的问题。和大家一起学习! 参考了互联网的各种资源,自己尝试归类整理,谢谢~ 一、C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。 C中函数不能进行重载,C++函数可以重载 C++在C的基础上增添类,C是一个结构

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

node.js实现阿里云短信发送

效果图 实现 一、准备工作 1、官网直达网址: 阿里云 - 短信服务 2、按照首页提示依次完成相应资质认证和短信模板审核; 3、获取你的accessKeySecret和accessKeyId; 方法如下: 获取AccessKey-阿里云帮助中心 4、获取SignName(签名名称)和 TemplateCode(模板code); 二、代码实现 1、项目结构 【/c

vulhub GhostScript 沙箱绕过(CVE-2018-16509)

1.执行以下命令启动靶场环境并在浏览器访问 cd vulhub/ghostscript/CVE-2018-16509 #进入漏洞环境所在目录   docker-compose up -d #启动靶场   docker ps #查看容器信息 2.访问网页 3.下载包含payload的png文件 vulhub/ghostscript/CVE-2018-16509/poc.png at