我们先看base模型
在DIN出现之前,推荐系统或者广告系统的做法通常是将高维的稀疏输入通过一个embedding层转化为低维稠密的特征表示,之后将同类的embedding特征通过pooling的方式(sum pooling或者avg pooling)转化为固定长度的特征(embedding+pooling这两步在笔者看来其实等价于一个单层神经网络的作用,embedding特征对应权重矩阵),最后将不同类特征拼接起来输入到深度神经网络中进行训练。(如下图所示)
这是base模型,我们可以发现这里的用户习惯都被考虑到了模型中
但我们举一个例子:
我们这里的目标广告是一双球鞋,然后用户的习惯里面既有足球也有化妆品,那么显然化妆品对球鞋的广告来说就没有多大的参考意义,而足球则非常具有意义。
那么我们怎么来判断到底什么样的商品对我们的目标广告才是有意义的呢。我们自然而然的就容易联想到注意力机制。
下面就是阿里巴巴提出的din模型,它将注意力机制运用到了推荐模型领域。
我们可以发现在进入SUMPooling前之前会先经过一个attention运算来计算目标广告与用户习惯的关联度。但这里和普通注意力机制的区别就是这里这里得出来的注意的得分不用通过softmax进行归一化,论文原文中表示的是这样做是为了保留用户对某个物品的感兴趣程度。
下面是论文中给的数据的结构:
另外我们这里提一下din模型中的提出的一个自适应函数Dice
收集自适应激活函数需要根据数据的分布来自行移动激活函数
我们来看下这个激活函数
这个f(s)是它的表达式,我们发现通过控制s就能控制激活函数的位置,α可以控制左边函数的倾斜程度
dice激活函数的公式如下