DIN核心内容总结

622 阅读2分钟

排版比较乱 有空更新

image.png

这个结构图已经很清晰的反应了网络结构和动机。 给用户推荐Item时,如果能够根据用户短期/长期浏览过的物品信息,就能更好地辅助模型做出判断。

本文的思想:将候选Item与用户的行为序列Item计算一个『相似度』,重点关注行为序列中与候选Item『相似度』高的Item。

Q:相似度如何计算?

A:Activation Unit

这里作者没有简单地使用Self-Attention机制,但设计了一个类似的Activation Unit。输入Q,K,以及Q与K的逐元素积(论文中写的外积,个人认为有误),送入一个激活层及一个线性层,最后输出一个权重。

Q:大量ID下高度过拟合的优化:Mini-batch Aware Regularization(MBAR)

传统L2正则表达式会大幅降低优化器的优化速度。见如下公式:

一个典型的梯度计算如下: image.png

字写的不太好,具体来说,当损失函数为交叉熵,激活函数为sigmoid的时候,某一层的梯度为

W=1yjhi\nabla W = (1-y_j)hi

其中yjy_j为该层输出的值,hih_i为该层输入值。显然当输入值hih_i为0时,梯度为0,该节点的参数就不需要更新。 只需要更新稀疏矩阵中不为0的部分的权重即可。

然而,添加L2正则项后

W=1yjhi+W\nabla W = (1-y_j)hi + W

无论HiH_i是否为0,梯度都需要进行更新。

论文中的公式有点不理解,作者以embedding层为例子,公式中写出,只有当输入x不为0才计算L2正则,但是正则不是只跟W有关吗???如果是作者写的这个公式,那就不是所有参数的梯度都需要更新??难道这是已经优化过一次的L2正则? 只计算所有样本中至少出现过一次的feat对应的embdding的L2正则。然后作者进一步只更新一个minibatch内出现的feat对应的L2正则。这里待填坑

image.png

PRelu更新为Dice

PRelu是在leakyRelu的基础上,将小于0的部分修改为可学习的权重。 公式为:

image.png

图像为:

image.png

既然PRelu将小于0的部分的设为可学习的权重,可不可以将0这个划分点也改的可以学习? 这就是Dice的动机。

image.png

通过在P(S)函数修改为上述值,dice的划分点和划分点附近的激活值可以随着batch中的E和Var变化。

image.png

均值调整了划分点,var调整了划分点附近的曲率。具体的Var越大,P(s)曲线越平滑,Dice在划分点附近的图像也越平滑。

image.png

GAUC

原来的AUC是所有用户的Item拉通计算AUC,但实际应用中,用户间的内容的排序没有任何影响。

image.png 参考