今天我想介绍阿里的同一推荐团队一脉相承的两篇文章,Deep Interest Network for Click-Through Rate Prediction和,Deep Interest Evolution Network for Click-Through Rate Prediction。这是第一部分,主要介绍前一篇文章。算法
Deep Interest Network提出于2017年。它的思路很是值得借鉴。在电子商务系统或者说全部的推荐系统中,CTR预测都是一个值得注意的问题。而在今年了,深度学习方法被普遍地应用于CTR预测中。 这篇文章认为,大部分目前使用的深度学习模型均可以认为是Embedding&MLP结构,即大规模的、稀疏的输入数据首先被压缩成低维的embedding,变成固定长度的输入向量,被输入到全链接网络中去。这些模型大大减小了特征工程的工做量,所以广为流行。网络
但这些方法仍然有缺点,最大的缺点就是固定维数的向量不能充分地表达用户兴趣的diversity。咱们固然能够扩大向量的维数,但这会致使模型overfitting的可能性大大增长。在推荐系统中,兴趣通常由过去的行为来表示。从另外一个角度上说,咱们也不必定非要用维数很高的向量。用户的兴趣也许很广,可是在预测某些项目的时候咱们并不须要知道用户所有的interest。好比说,预测一个用户是否是要买一双鞋子时,咱们关心她在买衣服鞋子时的兴趣,而不关心她在买厨房用品时的兴趣。文章把这类兴趣称为locally activated,这个文章都是试图利用attention机制在diversity和locally activated之间寻找较优的平衡。函数
在淘宝系统中,广告便是商品,也就是通常推荐系统中的item。推荐系统的逻辑以下:把通常的retriever阶段称为Matching,系统逻辑由matching和ranking组成。淘宝使用collaborative filtering来完成matching过程,选择一些candidate,再用CTR prediction方法进行排序。 学习
输入排序算法的feature大部分状况下是multi-group categorical form,它们被one-hot或者multi-hot形式表示出来,一个典型的输入以下: 翻译
淘宝原本使用的是一个Embedding&MLP模型,咱们在这里称这个model为Base Model。这个model由以下几部分构成:rest
Embedding Layer负责将一些上面提到的高维的binary vector转变为稠密的低维向量。例如咱们能够把约维的goods id向量转化为几十维的embedding向量。Embedding layer使用字典查找的方法,并遵循以下规则:orm
但就像以前说的,不一样的用户有不一样的行为,咱们须要把不一样数量的embedding向量组合成固定维数的输入向量输入到MLP中去,因此咱们须要一个池化层来结合它们。sum-pooling和average pooling都很经常使用。通过pooling的不一样种类的向量会在concat layer组合起来。cdn
MLPlayer负责预测,Loss function是Log Loss。整个Model的结构如图所示。 blog
池化层虽然能达到目的,但却会损失很大一部分信息。DIN的关键就是利用attention机制学习locally activated information,从而尽量减小信息损失。DIN引入了一个激活结构,并使用了以下系统结构: 排序
文章还提出了一些训练技巧。
咱们使用正则化方法来防止过拟合。可是L2正则化意味着在每个mini-batch的训练中国,都须要计算所有参数的更新,这会致使沉重的计算负担,在大规模数据集中尤为不可接受。因此文章提出了Mini-batch Aware Regularization方法,这个方法能利用数据集的稀疏性减小计算量。这不是咱们的重点,具体细节能够去看原文。
PReLu是一种经常使用的激活函数。它的表达式以下:
咱们通常使用AUC进行结果评估,阿里使用了weighted AUC,还提出了另外一种名叫RelaImpr的指标。
在A/B Test的结果以下: