推荐系统之DIN

该模型的应用场景是阿里巴巴的电商广告推荐业务,增加了用户的兴趣,而FM家族并未考虑该内容

一、推荐背景

1、会有大量的用户历史行为信息

2、用户【兴趣】多种多言,并且变化多端

3、用户的【兴趣】往往蕴涵在其【历史行为】中

4、对于用户是否点击当前的商品广告,很大程度上是依赖他的历史行为的

二、思路


1、输入特征当中,包含用户历史行为

(1)并不是所有的历史特征,都对当前预估任务有效,必须筛选出有效特征,并按照重要程度,分配相应权重

(2)举例:

目标商品∶键盘

①用户历史行为中的商品有【化妆品,包包,衣服,洗面奶】

②用户历史行为中的商品有【鼠标,电脑,iPad,手机】

③用户历史行为中的商品有【鼠标,化妆品,衣服,洗面奶】

显然用户①对键盘没啥兴趣(四项对键盘关联性不大);

用户②有很大兴趣;鼠标,电脑和键盘关联性很大,iPad也有一定的关联性,手机关联性最小(虽然有专门的手机所对应的键盘)

用户③只有第一项鼠标和键盘关联性较大,后三项关联性几乎为零,因此后三项“化妆品,衣服,洗面奶”应当筛选掉,他们属于噪声。综上和注意力机制不谋而合(注意力机制:将一些无效特征筛选的,然后给有效特征分配权重,来体现出那个特征对当前的比较重要)

2、考虑用户的历史行为商品与当前商品广告的一个关联性(局部兴趣),模拟出用户对目标商品的感兴趣程度(注意力得分)

三、具体方案:

在Embedding层与MLP之间加入注意力机制

1、不同的应用场景,特征的权重分配应不一样

例如上面的那个例子,分析用户对键盘感不感兴趣,拿第三个用户来讲,【鼠标】的权重就会高一些,【化妆品,衣服,洗面奶】,如果目标商品变成口红,【化妆品,衣服,洗面奶】权重就会上升,【鼠标】的权重就会下降。

2、筛选出有用的特征,并划分好比重(哪些特征是重要特征)

3、参考AFM

四、特征表示

      上图就是用户的一些特征,其中第二项(红框里的)用户的历史行为特征,这里的亮点就是框出来的那个特征,这个包含着丰富的用户兴趣信息。别的都是one-hot编码,而用户的历史行为特征却是multi-hot编码。对于特征编码,作者这里举了个例子:[weekday=Friday, gender=Female, visited_cate_ids={Bag,Book}, ad_cate_id=Book], 这种情况我们知道一般是通过one-hot的形式对其编码, 转成系数的二值特征的形式。但是这里我们会发现一个visted_cate_ids, 也就是用户的历史商品列表, 对于某个用户来讲,这个值是个多值型的特征, 而且还要知道这个特征的长度不一样长,也就是用户购买的历史商品个数不一样多,这个显然。这个特征的话,我们一般是用到multi-hot编码,也就是可能不止1个1了,有哪个商品,对应位置就是1, 所以经过编码后的数据长下面这个样子:

visted_cate_ids就是multi-hot编码

再打个比方

只说第一行good_ids:该用户在周一看了一个id=11的商品,在周四看了一个id=6的商品,在周六看了一个id=24的商品,在周日看了一个id=33的商品,编码的方式变为

[0,0,......,1,...,1,....,1,.... .,1,...](其他的均为0)

1,2,3,...,6,...,11,...,24,...,33,..

对应的第六项为1,第11项为1

五、base模型

在介绍DIN模型时,论文首先提到base模型,DIN就是再该模型上改进。


(一)、结构

1、Embedding layer

2、Pooling & Concat layer

3、MLP:这个就是普通的全连接,用了学习特征之间的各种交互

(二)、损失函数

L=-\frac{1}{N}\sum_{(x,y)\in S} (y\log p(x)+(1-y) \log (1-p(x)))

(三)、缺点

1、用户的历史行为特征和当前的候选广告特征在全都拼起来给神经网络之前,是一点交互的过程都没有

2、拼起来之后给神经网络,虽然是有了交互了,但是既丢失了部分信息,也引入了一定的噪声

可以联想上面举得那个键盘鼠标的例子,如果加上了各种洗面奶,衣服啥的反而会起到反作用。

【丢失信息】已经没法再看出到底用户历史行为中的哪个商品与当前商品比较相关,也就是丢失了历史行为中各个商品对当前预测的重要性程度。

【引入噪声】∶因为跟当前候选广告商品交互的是池化后的历史特征embedding,这个embedding是综合了所有的历史商品信息,这个通过我们前面的分析,对于预测当前广告点击率,并不是所有历史商品都有用,综合所有的商品信息反而会增加一些噪声性的信息

(四)、改进思路:

对于给定的候选广告,DIN通过考虑历史行为与其相关性,自适应地计算用户兴趣的表示向量,该表示向量随不同广告而变化

六、DIN网络结构

和base区别就是引入了注意力机制local activation unit(这里是一个前馈神经网络)

【输入】用户历史行为商品和当前的候选商品

【输出】它俩之间的相关性,这个相关性相当于每个历史商品的权重

【SUM Pooling】加权求和;把这个权重与原来的历史行为embedding相乘求和就得到了用户的兴趣表示

这里有一点需要特别注意,就是这里的权重加和不是1, 准确的说这里不是权重, 而是直接算的相关性的那种分数作为了权重,也就是平时的那种scores(softmax之前的那个值),这个是为了保留用户的兴趣强度。这里依然可以用上面的键盘例子来解释。

七、训练方式

7.1 Mini-batch Aware Regularization( 小批量感知正则化 )

7.2  Data Adaptive Activation Function( 数据自适应激活函数 )

这里如何训练具体可参考下面的链接

4.3两个训练技术

DIN模型 —— 阿里巴巴推荐领域开创性论文,引入注意力机制

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容