深度学习推荐系统实战
王喆
Roku 推荐系统架构负责人,前 hulu 高级研究员,《深度学习推荐系统》作者
33298 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
深度学习推荐系统实战
15
15
1.0x
00:00/00:00
登录|注册

21|注意力机制、兴趣演化:推荐系统如何抓住用户的心?

兴趣进化层
兴趣抽取层
行为序列层
使推荐系统更接近用户真实思考过程
模拟人类注意力行为特点
通过激活单元计算注意力权重
应用在用户的历史行为序列处理上
以阿里的DIN模型为例
利用特征交叉的知识
更简单、更实用的方式生成注意力权重
DIN的激活单元计算注意力权重的复杂性
让用户的兴趣随时间进行演化
模拟人类注意力行为特点
对推荐系统的改进
注意力机制和序列模型的加入
应用场景广泛
DIEN模型的架构
DIEN模型对DIN模型的改进
应用于用户历史行为的序列
激活单元计算注意力权重
应用注意力机制在用户的历史行为序列处理上
基础模型是Embedding MLP的结构
应用场景是电商广告推荐
对推荐系统的启发
在推荐系统中的应用
注意力机制来源于人类的选择性注意习惯
课后思考
总结
兴趣进化序列模型
深度兴趣网络DIN
注意力机制
推荐系统如何抓住用户的心?

该思维导图由 AI 生成,仅供参考

你好,我是王喆。
近几年来,注意力机制、兴趣演化序列模型和强化学习,都在推荐系统领域得到了广泛的应用。它们是深度学习推荐模型的发展趋势,也是我们必须要储备的前沿知识。
作为一名算法工程师,足够的知识储备是非常重要的,因为在掌握了当下主流的深度学习模型架构(Embedding MLP 架构、Wide&Deep 和 DeepFM 等等)之后,要想再进一步提高推荐系统的效果,就需要清楚地知道业界有哪些新的思路可以借鉴,学术界有哪些新的思想可以尝试,这些都是我们取得持续成功的关键。
所以,我会用两节课的时间,带你一起学习这几种新的模型改进思路。今天我们先重点关注注意力机制和兴趣演化序列模型,下节课我们再学习强化学习。

什么是“注意力机制”?

“注意力机制”来源于人类天生的“选择性注意”的习惯。最典型的例子是用户在浏览网页时,会有选择性地注意页面的特定区域,而忽视其他区域。
比如,图 1 是 Google 对大量用户进行眼球追踪实验后,得出的页面注意力热度图。我们可以看到,用户对页面不同区域的注意力区别非常大,他们的大部分注意力就集中在左上角的几条搜索结果上。
那么,“注意力机制”对我们构建推荐模型到底有什么价值呢?
图1 Google搜索结果的注意力热度图
价值是非常大的。比如说,我们要做一个新闻推荐的模型,让这个模型根据用户已经看过的新闻做推荐。那我们在分析用户已浏览新闻的时候,是把标题、首段、全文的重要性设置成完全一样比较好,还是应该根据用户的注意力不同给予不同的权重呢?当然,肯定是后者比较合理,因为用户很可能都没有注意到正文最后的几段,如果你分析内容的时候把最后几段跟标题、首段一视同仁,那肯定就把最重要的信息给淹没了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

推荐系统的关键技术:注意力机制和兴趣演化序列模型。注意力机制模拟用户的选择性注意习惯,提高推荐效果。深度兴趣网络DIN模型成功应用于电商广告推荐,通过引入注意力机制模拟用户的注意力分布。DIEN模型进一步改进DIN模型,模拟用户兴趣的迁移过程。DIEN模型利用序列模型预测用户的兴趣向量,应用于电商、视频网站和音乐App等场景。注意力机制和序列模型的引入改进了深度学习模型对待用户历史行为的弊端,让推荐系统更好地抓住用户的兴趣。 DIN模型使用复杂的激活单元计算注意力权重,是否有更简单、更实用的方式生成注意力权重?是否能利用特征交叉的知识来计算历史行为物品和广告物品的相关性?这些问题值得深入思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深度学习推荐系统实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(30)

  • 最新
  • 精选
  • 浣熊当家
    图3中DIN的激活单元里我们用到了“外积”, 之前的课程里感觉我们多数是用“内积”。请问老师,如何选择使用“内积”和“外积”, 有什么规则吗?

    作者回复: 本质上都是做特征交叉,计算相似性的方式,一般来说,外积因为输出是一个向量,所以表达能力更强一些。

    2020-11-29
    37
  • 李元
    根据NLP的发展,我觉得GRU这种提取序列信息的方式肯定会被Transformer取代。不知道有没有人已经发paper了。

    作者回复: 已经不少了,最近提的比较多的是bert for rec

    2021-01-09
    3
    22
  • Sebastian
    老师想问下,DIN模型在工业界的排序阶段使用的多吗?因为我在想在业界每个用户都有比较长的用户行为序列的场景可能还是少数,很多公司的场景可能是,用户进入app端后点击了2-3次后可能就没有后续行为了,那么这种场景下,DIN应该就不适用了吧?

    作者回复: DIN比DIEN的使用场景要求低很多,我知道很多团队在用,或者说很多团队在用DIN的思路来构建自己的模型。 就我自己的实践经验,attention机制是非常有价值的,推荐在自己的场景下尝试。

    2020-11-28
    17
  • Leo Zhao
    思考题:广告和历史行为 相关性 其实就是 广告物品与历史物品的相关性,可以用一个dot层 或者通过物品embedding 算出similarity 当作feature 直接输入。

    作者回复: 非常好

    2020-11-28
    3
    14
  • fsc2016
    1,老师,看了最近几章介绍的推荐模型,发现神经网络的隐层数量都比较少(相对cv),这个是防止模型太复杂,导致线上推断太慢吗 2,请教下老师,业界常用的MLP隐层数量和神经元数量,有没有一个大致的取值范围?

    作者回复: 这个问题其实挺好的。相比CV动辄上百的隐层数量,推荐模型真的是比较“浅”的了。 隐层数量大致在1到5之间吧,确实在推荐问题上再提高隐层数量效果上意义不大,inference延迟还大,得不偿失。 至于为什么相比cv,推荐模型不需要那么多隐层,你能分享下你的思考吗?

    2020-12-09
    6
    11
  • 老师您好,我有一个问题请教您: transformer中有position encoding,而在推荐的领域中,点击的序列中同样有时间间隔的因素,例如取用户最近若干次点击,可能每次间隔时间不等。这个间隔时间应该是有信息可以揭示用户兴趣的变迁速率等信息的吧?但是如何将其引入到推荐序列中呢? 是类似于transformer中 position learned encoding这样么?

    作者回复: 这是一个很好的idea。但说实话我还没有见到非常成功的案例说能够很好的利用event interval然后取得很大的收益。也许是这个信号本身不够强,带来的收益有限。 如果今后发现相关paper,可以分享到这里。

    2021-01-06
    10
  • 小红亮
    老师,请教一下DIEN中用到了GRU,它是串行处理的,那么推理的过程会比较慢,这就不太适合延长要求很高的场景,比如计算广告,那对于电商场景来说它DIEN的推理延迟能满足业务要求吗,或者有什么优化手段可以解决延迟问题吗

    作者回复: 这是个非常好的问题,一般上线前要做模型的割裂,把复杂部分生成的Embedding做预生成,线上直接使用。

    2021-04-10
    9
  • 浣熊当家
    想请教老师一个题外问题, 您作为面试官的话,对于MLE的候选人会更注重考察哪方面的能力(比如算法coding, 系统架构设计,机器学习的领域知识)?,然后对于机器学习的各种模型会期待候选人有多深的了解(比如说了解DIEN的各个层级的结构就够了,还是要知道GRU是具体如何实现的)。 随着老师课程,我对深度学习燃起了更大的热情,觉得想真正提高的话,最好的方法还是能从事做深度学习的工作,想知道从面试角度来讲,怎么学习才是性价比最高的选择, (比如注重项目经验,刷题,还是算法的理论公式推到)。

    作者回复: 我在知乎有一篇专栏文章专门讲面试,可以参考 https://zhuanlan.zhihu.com/p/76827460 我在课程最后也会有一些总结。

    2020-11-29
    8
  • Geek_3c29c3
    老师,我对DIN里面的注意力机制有一点疑问:就是DIN的目标广告的id和usr behavior的id是同一领域的id,那能不能推广到比如我们的广告id和商城内的物品不是同属于一个id系列的。就是广告的内容和商城的内容(包含用户行为)是不一样的,这时候还可以用DIN的注意力机制了吗?如果不能,还有什么方法呢?

    作者回复: 这是个好问题,我觉得是可以的,因为广告内容和商城内容从经验上来说也会有一定的相关性。 就拿deepfm的思路来说,其实可以做任意两个特征之间的交叉。对于注意力机制,当然也可以学任意两个特征间的注意力。但到底作用有多大,能不能提高效果,就看自己的实践了。

    2020-12-16
    7
  • Geek1254
    老师您好。 1.我看到在Sparrow里面的代码。没有严格意义上使用外积吧?使用的是element-wise sub & multipy。然后用这两个向量去拼接,组成的activation_all。请问这是老师实践之后得到的方法吗? 2. 我看到参考代码中使用的是PRelu(),请问这种激活函数适合哪些场景呢?

    作者回复: 1. 确实没有使用外积。我的实践经验来看外积的作用不是很大,而且大幅增加参数量,所以我个人不是很喜欢外积操作。 2. PRelu几乎是深度学习默认的激活函数,速度比较快,梯度消散问题比较小。如果有特殊需要可以测试其他激活函数,看实践。

    2021-03-03
    2
    6
收起评论
显示
设置
留言
30
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部