DIN

DIN(Deep Interest Network)

推荐系统小白----无所为而为
Deep Interest Network模型是2018年由阿里巴巴的阿里妈妈团队提出来的模型。
具体的应用场景是阿里巴巴的电商广告推荐业务,广告推荐中会产生大量的用户历史行为信息
DIN的创新点:在保证模型参数以及计算复杂度可控的情况下,引入注意力机制来更精准的捕获用户的兴趣点提出mini-batch aware正则方法和自适应激活函数来辅助模型进行训练。这个模型的使用场景非常重视用户的历史行为特征(历史购买过的商品或者类别特征)
之前的模型的缺点:对历史行为的特征表达的不够,但是事实上用户行为和历史行为的关系的非常大的。
王喆老师的例子:\

假设广告中的商品是键盘, 如果用户历史点击的商品中有化妆品, 包包,衣服, 洗面奶等商品, 那么大概率上该用户可能是对键盘不感兴趣的, 而如果用户历史行为中的商品有鼠标, 电脑,iPad,手机等, 那么大概率该用户对键盘是感兴趣的, 而如果用户历史商品中有鼠标, 化妆品, T-shirt和洗面奶, 鼠标这个商品embedding对预测“键盘”广告的点击率的重要程度应该大于后面的那三个。

DIN的动机:从业务的角度出发,我们应该自适应的去捕捉用户的兴趣变化,这样才能较为准确的实施广告推荐;而放到模型的角度,我们应该考虑到用户的历史行为商品与当前商品广告的一个关联性,因此引入Attention机制,设计了"local activation unit"结构,利用候选商品的历史问题之间的相关性计算出权重,这个权重表示对于当前商品广告的预测,用户历史行为的各个商品的重要程度大小。

DIN模型结构和原理

2.1 特征表示
DIN的数据集和特征表示 (工业界和学术界不一样的地方)
工业界使用的CTR数据集一般是multi-group categorial form的形式,就是类别型特征最常见???

这里的亮点就是框出来的那个特征,这个包含着丰富的用户兴趣信息
特征表示的区别:除了原本的one-hot编码还有一类,visted_cate_ids即用户的历史商品列表,这个列表长短不一(用户购买/浏览数量不同),此时one-hot编码不再适用,应当适用multi-hot编码,下图0.2就是例子

这里只是单纯的对特征进行表示编码,还没有进行特征交互。

2.2 基线模型(Embedding&MLP)
Embedding&MLP模型顾名思义显然分为两个部分Embedding层和MLP层。
而embedding层得到的embedding向量不能直接的输入到MLP中,需要做一个池化操作,所以在这里面增加一个池化层。
因此该模型分为三个部分:Embedding layer;Pooling&Concat layer;MLP。
结构如下:

  1. Embedding Layer:高维稀疏的输入转成低维稠密向量;\
  2. Pooling Layer and Concat Layer
    pooling就是将embedding层输出的用户历史行为的embed向量变成一个定长的向量。
    concat layer就是将pooling层输出的pooling后的定长向量拼接起来,作为MLP的输入。\
  3. MLP:正常的多层感知机,学习特征的交叉。\
  4. Loss:这里是点击率预测任务,本质是一个二分类问题,适用的loss function适用负的log对数似然函数:
    L = − 1 N ∑ ( x , y ) ∈ S ( y log ⁡ p ( x ) + ( 1 − y ) log ⁡ ( 1 − p ( x ) ) ) L=-\frac{1}{N} \sum_{(\boldsymbol{x}, y) \in \mathcal{S}}(y \log p(\boldsymbol{x})+(1-y) \log (1-p(\boldsymbol{x}))) L=N1(x,y)S(ylogp(x)+(1y)log(1p(x)))

这个模型在输入神经网络之前没有任何形式的特征交叉,但是在embeding和pooling等操作中都会丢失一部分信息。
本模型的解决思路是:在当前候选广告和用户的历史行为之间引入attention机制,加入attention赋权,使模型更加关注相关性更高的历史行为

DIN代码注意事项

  1. 使用公开数据集MoiveLens
  2. 由于使用的是用户历史行为的序列型数据,DIN的输入特征变成了三类:Dense(连续型)、Sparse(离散型)、VarlenSparse(变长离散型)
    前两个特征不多说,VarlenSoarse型特征:用户历史行为特征,变长数据,首先进行padding操作成等长,然后建立input层接收输入,然后通过embedding层得到各自对应的embedding向量,然后拿着用户历史行为的embedding向量和上面的候选商品embedding向量进入AttentionPoolingLayer层去对这些历史行为特征加权合并,最后得到输出。

思考题:DIN模型在工业上的应用还是比较广泛的, 大家可以自由去通过查资料看一下具体实践当中这个模型是怎么用的? 有什么问题?比如行为序列的制作是否合理, 如果时间间隔比较长的话应不应该分一下段? 再比如注意力机制那里能不能改成别的计算注意力的方式会好点?(我们也知道注意力机制的方式可不仅DNN这一种), 再比如注意力权重那里该不该加softmax? 这些其实都是可以值的思考探索的一些问题,根据实际的业务场景,大家也可以总结一些更加有意思的工业上应用该模型的技巧和tricks,欢迎一块讨论和分享。
DIN的应用场景主要是在时间数据模型方面使用attention机制比较好用,除开他本身的广告推荐领域,在新闻推荐等领域使用的也比较多。
使用attention机制对用户行为数据进行加权这个方法很值得学习,如题目中所说,如果在一个时间更长的时间间隔内,分段的效果肯定会好,比如在过去10年的数据中划分为5个部分,两年为一段,让模型自适应的调整各时间段的权重。
剩下的问题,由于个人没有相关模型的工作经验,很难提出有价值的问题,所以还需要进一步的学习才行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值