最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

解构阿里深度兴趣网络(DIN):如何将注意力机制引入推荐系统?

  • 2019-01-21
  • 本文字数:2265 字

    阅读完需:约 7 分钟

解构阿里深度兴趣网络(DIN):如何将注意力机制引入推荐系统?

本文授权转载自王喆的机器学习笔记(https://zhuanlan.zhihu.com/wangzhenotes ),每隔一到两周作者会站在算法工程师的角度讲解一些计算广告、推荐系统相关的文章。本文以阿里的深度兴趣网络(DIN)为例讲解了推荐系统中的注意力机制。


选择文章的标准有三个:


  • 一是工程导向的;

  • 二是阿里、facebook、google 等一线互联网公司出品的;

  • 三是前沿或者经典的。


我们从阿里的深度兴趣网络(Deep Interest Network)开始。很多同学已经非常熟悉这篇文章了,但我觉得一篇优秀的文章多强调几遍也不为过。说这篇文章好,主要有三个原因:


  1. 一是因为这篇文章的工程性很强。工程性很强的文章首先是便于实现的,其次你可以从字里行间看到很多实践出真知的影子,比如 DIN 这篇文章中 GAUC 这样的 metric 的改进,以及 Dice 这样的激活函数的创新,都是对经典知识在实践中改进的例子。

  2. 第二个原因是因为这篇文章对用户行为的观察非常精准。有句话说做推荐其实就是“揣摩人心”,你把用户的行为和习惯揣摩好了,才能够以此出发,从技术上映射用户的习惯。DIN 这篇文章有效的利用了用户兴趣多样性以及当前候选商品仅与用户一部分兴趣有关这一特点,引入注意力机制,这是非常精准的动机。

  3. 第三个原因是模型的微创新,从低维到高维是创新,从离散到连续是创新,从单一到融合也是创新,这篇文章把 NLP 大行其道的注意力机制引入推荐领域,当然是典型并且有效的创新手段,也是所有算法工程师应该学习的地方。


好了,废话讲完了,我们看看这篇文章到底做了什么。


用户场景很简单,就是在一个电商网站或 APP 中给用户推荐广告,当然对于阿里妈妈来说,广告也是商品,所以这篇文章的广告场景其实也是一个经典的推荐场景。


好,既然要推荐,我们当然需要利用用户的历史数据了,对于一个电商来说,历史数据当然就是点击,添加购物车,下单这些行为了。论文中给了一位用户的行为序列。



用户的行为序列


显然是一个女生的行为历史啦,从最左边的手套,鞋子到右边的杯子,睡衣。要被推荐的候选商品是一件女式大衣。我们应该如何计算这件大衣的 CTR 呢?


如果按照之前的做法,我们会一碗水端平的考虑所有行为记录的影响,对应到模型中就是我们会用一个 average pooling 层把用户交互过的所有商品的 embedding vector 平均一下形成这个用户的 user vector,机灵一点的工程师最多加一个 time decay,让最近的行为产生的影响大一些,那就是在做 average pooling 的时候按时间调整一下权重。


但是我们仔细想一想我们自己的购买过程,其实每个用户的兴趣都是多样的,女生喜欢买衣服包包,也喜欢化妆品,甚至还为自己男朋友挑选过球衣球鞋,那么你在买大衣的时候,真的要把给男朋友买球鞋的偏好考虑进来么?具体到本文的例子中,在预测大衣的 CTR 这件事情上,用户浏览过杯子,跟用户浏览过另一件大衣这两个行为的重要程度是一样的吗?


这事不用问算法工程师,你就回家问问你老妈估计答案都是一定的,肯定是浏览过另一件大衣这件事的参考价值高啊。好了,就是这件你老妈都知道的事情,让阿里妈妈的算法工程师们加上了 attention 机制。


注意力机制顾名思义,就是模型在预测的时候,对用户不同行为的注意力是不一样的,“相关”的行为历史看重一些,“不相关”的历史甚至可以忽略。那么这样的思想反应到模型中也是直观的。



上式中, V_u 是用户的 embedding 向量, V_a 是候选广告商品的 embedding 向量, V_i 是用户 u 的第 i 次行为的 embedding 向量,因为这里用户的行为就是浏览商品或店铺,所以行为的 embedding 的向量就是那次浏览的商品或店铺的 embedding 向量。


因为加入了注意力机制, V_u 从过去 V_i 的加和变成了 V_i 的加权和, V_i 的权重 w_i 就由 V_i 与 V_a 的关系决定,也就是上式中的 g(V_i,V_a) ,不负责任的说,这个 g(V_i,V_a) 的加入就是本文 70% 的价值所在。


那么 g(V_i,V_a) 这个函数到底采用什么比较好呢?看完下面的架构图自然就清楚了。



相比原来这个标准的深度推荐网络(Base model),DIN 在生成用户 embedding vector 的时候加入了一个 activation unit 层,这一层产生了每个用户行为 V_i 的权重,下面我们仔细看一下这个权重是怎么生成的,也就是 g(V_i,V_a) 是如何定义的。


传统的 Attention 机制中,给定两个 item embedding,比如 u 和 v,通常是直接做点积 uv 或者 uWv,其中 W 是一个|u|x|v|的权重矩阵,但这篇 paper 中阿里显然做了更进一步的改进,着重看上图右上角的 activation unit,首先是把 u 和 v 以及 u v 的 element wise 差值向量合并起来作为输入,然后喂给全连接层,最后得出权重,这样的方法显然损失的信息更少。但如果你自己想方便的引入 attention 机制的话,不妨先从点积的方法做起尝试一下,因为这样连训练都不用训练。


再稍微留意一下这个架构图中的红线,你会发现每个 ad 会有 good_id, shop_id 两层属性,shop_id 只跟用户历史中的 shop_id 序列发生作用,good_id 只跟用户的 good_id 序列发生作用,这样做的原因也是显而易见的。


好了,到这里为止我们基本讲完了这篇文章的重点部分,如果说上面的部分是文 70% 的价值所在,那么余下 30% 应该还有这么几点:


  • 用 GAUC 这个离线 metric 替代 AUC

  • 用 Dice 方法替代经典的 PReLU 激活函数

  • 介绍一种 Adaptive 的正则化方法

  • 介绍阿里的 X-Deep Learning 深度学习平台


上面几项介绍起来略显繁琐,大家有兴趣的可以参考原文。对于广大算法工程师来说,知道如何引入 attention 机制应该是最实用的收获。


参考文献:


https://arxiv.org/abs/1706.06978https://github.com/wzhe06/Ad-papers


原文链接:


https://zhuanlan.zhihu.com/p/51623339


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-01-21 10:167274

评论

发布
暂无评论
发现更多内容

大模型+医疗,优质数据助力新生态建立

澳鹏Appen

数据标注 大模型 医疗大模型

数据要素×工业制造:500强大型制造集团携手奇点云,以数据为经营管理提效

奇点云

数字化 奇点云 数据要素 工业制造

如何利用ChatGPT进行翻译--精准翻译篇

三七互娱后端技术团队

AI翻译

代码覆盖率提升策略:利用静态分析工具优化测试覆盖率

测吧(北京)科技有限公司

测试

TikTok直播专线:解决出海网络问题痛点,提升商业效率

Ogcloud

海外直播专线 海外直播 tiktok直播 tiktok直播专线 tiktok直播网络

数据可视化与分析:利用Kibana展现数据的视觉化洞见

测吧(北京)科技有限公司

测试

数字化工厂MES/MOM一体化解决方案PPT

工赋开发者社区

一口气搞懂分库分表 12 种分片算法,大厂都在用

EquatorCoco

算法 分库分表

聊聊低代码产品的应用场景

互联网工科生

如何提升买家对独立站的信任感?提升转化率的技巧

技术冰糖葫芦

API 接口 API 文档

【FAQ】HarmonyOS SDK 闭源开放能力 —Scan Kit

HMS Core

HarmonyOS

大模型落地实战指南:从选择到训练,深度解析显卡选型、模型训练技、模型选择巧及AI未来展望—打造AI应用新篇章

快乐非自愿限量之名

人工智能 AI大模型 大模型

利用Shell二次封装Elasticsearch客户端:简化数据检索与操作

测吧(北京)科技有限公司

测试

利用Elasticsearch进行文本数据的深度分析

测吧(北京)科技有限公司

测试

【FAQ】HarmonyOS SDK 闭源开放能力 —IAP Kit

HMS Core

HarmonyOS

如何利用ChatGPT进行翻译--通用翻译篇

三七互娱后端技术团队

AI翻译

自定义Elasticsearch索引模式:优化数据存储结构以提高检索效率

测吧(北京)科技有限公司

测试

一个基于.NET Core构建的简单、跨平台、模块化的商城系统

不在线第一只蜗牛

小程序 .net core

左手医生:医疗 AI 企业的云原生提效降本之路

阿里巴巴云原生

阿里云 容器 云原生

码上时刻|通过逻辑视图 Logic View 快速实现批流一体

Kyligence

JavaScript混淆工具选择与使用指南

互联网公司裁员现象调查:探寻背后原因与应对策略

小魏写代码

RocketMQ 流数据库解析:如何实现一体化流处理?

阿里巴巴云原生

阿里云 RocketMQ 云原生

聊聊多模态大模型处理的思考

EquatorCoco

多模态 大模型

深入了解一下http和https的区别

秃头小帅oi

JVM字节码分析与修改:探索代码覆盖率底层实现框架

测吧(北京)科技有限公司

测试

搭建Elasticsearch、Kibana和Logstash环境:构建强大的数据分析平台

测吧(北京)科技有限公司

测试

AI足球教练上岗利物浦,射门机会提高13%!来自DeepMind,网友:这不公平

Openlab_cosmoplat

AI

实战代码静态分析工具:利用语法树数据工具提升代码质量

测吧(北京)科技有限公司

测试

AlphaGPT在法律大模型圈子火了,案件仅需3分钟搞定

科技汇

Alpha律所管理系统,助力律师团队管理提效再升级

科技汇

解构阿里深度兴趣网络(DIN):如何将注意力机制引入推荐系统?_AI&大模型_王喆_InfoQ精选文章