DIN的问题归纳

DIN模型通过注意力机制处理用户行为序列,对不同行为赋予不同权重,有效捕捉用户兴趣的多峰性。本文深入解析DIN如何计算注意力得分,及其在电商场景的优势,同时探讨其在短视频和信息流推荐的应用可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 为什么DIN中采用attention?

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

首先,我们会得到一个用户的行为序列listing,

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

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

2. DIN中的attention是如何处理的呢?与传统词向量方法有什么不同?

公式: V u = f ( V a ) = ∑ i = 1 N w i ⋅ V i = ∑ i = 1 N g ( V i , V a ) ⋅ V i V_u = f(V_a) = \sum_{i=1}^{N} w_i \cdot V_i = \sum_{i=1}^{N} g(V_i,V_a) \cdot V_i Vu=f(Va)=i=1NwiVi=i=1Ng(Vi,Va)Vi

其中 V u V_u Vu表示的是用户 u s e r user user e m b e d d i n g embedding embedding向量, V a V_a Va为候选广告商品的 e m b e d d i n g embedding embedding向量, V i V_i Vi为用户第 i i i次行为的 e m b e d d i n g embedding embedding向量

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

3. DIN中的attention中,每次行为的权重 w i w_i wi是如何得到的?

DIN在生成用户embedding vector的时候加入了一个activation unit层,这一层产生了每个用户行为 V i V_i Vi的权重,也就是 g ( V i , V a ) g(V_i,V_a) g(Vi,Va)

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

此外,每个ad会有 good_id, shop_id 两层属性,shop_id只跟用户历史中的shop_id序列发生作用,good_id只跟用户的good_id序列发生作用。

4. DIN为什么更适用于电商场景?是否适用于短视频或者信息流?

人们在电商会买各种物件(包括很多不那么感兴趣但生活必需品),所以会出现这个兴趣“多峰”的分布
视频推荐也确实发现兴趣多峰的现象,但关键问题是视频和信息流大家的兴趣都相对稳定,所以没有电商那么需要attention

5. 用户有上亿人,同时广告有上万个类别,假如按照预测的CTR排序,难道要把这个model跑上亿 * 上万次,才能给出ranking?

一般工程上都有召回层,会用各种召回策略把candidate限制在几百的量级, 最终ctr模型会对这几百个candidates逐个inference和排序

6. 为什么Activation Unit 里用了减法就信息损失少了?

减法表示两者差异,加法相当于pooling,乘法表示相似性。

一个内积一个差,差很容易理解成两向量之间差异,内积表示相似度。不过差和内积确实是依据人工经验来判定的,不然的话完全可以把Unit里面的NN做的非常复杂,但是代价是线上响应时间过长,所以需要一些专家经验。

7. DIN中的attention score不用softmax归一的原因是什么?

结合paper的解释,他这里想把这个数值信息也带进来。假设用户有9个衣服浏览记录,1个电子产品浏览记录,当候选ad是衣服的话,那么就会和衣服的weight比较大,比如是0.8,和电子产品weiht假设是0.1。假设衣服向量是v1,电子产品是v2,那么出来的用户兴趣接近 0.8 ∗ v 1 ∗ 9 0.8*v1*9 0.8v19,如果softmax归一化的话,用户兴趣接近v1。所以之间还是有一个数值的差异的,而这种差异能够体现出一种喜欢的强度,在这种场景下这种强度应该是有一定意义的。

8. 论文是把goods id,shop id和cate id先连接起来,再进入激活单元求注意力得分,这样是不是goods id,shop id和cate id共享同一个注意力得分?有什么好处吗?而且这样是不是需要一个goods id对应一个shop id和cate id?那如果一个goods id对应了多个shop id和cate id(如某人在不同商店浏览了同一个商品),要怎么连接呢?

不会共享attention score, concat仅仅是拼接。可以理解成训练xgb/lr,也不 这些传统模型也不会一列一列合并输入,但是每一列有自己的权重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值