综述
深度兴趣网络是阿里巴巴提出的一个深度推荐模型,旨在利用用户画像与用户历史行为去预测待测物品的匹配率。
模型结构
输入层-嵌入层
模型的输入有四个部分,分别是用户基本特征,用户历史行为特征,物品基本特征,其他特征。对于离散特征,一般做法是使用one-hot向量表示,one-hot向量根据一定顺序排列得到整体特征,one-hot向量在整体特征中占据的位置称为这个特征的field,可以保证在每个field都是一个one-hot向量。大量的one-hot向量会导致整体特征向量非常稀疏,在嵌入层需要大量参数才能将整体特征向量压缩到固定维度。一个可行的技巧是对每个field单独设置一个嵌入矩阵,每个field单独得到嵌入向量,然后再将嵌入向量进行拼接或池化。这么做的一个原因是field的数量通常是不高的,从而可以大大压缩参数数量。
嵌入层-attention层
通过嵌入层,现在可以得到四部分特征向量,分别是用户画像向量,用户历史行为向量序列,物品特征向量,其他特征向量。大多数深度网络是将用户历史行为向量序列通过简单的池化组合成一个用户历史行为特征向量,而深度兴趣网络的核心就是运用用户历史行为向量序列与物品特征向量计算attention,对不同的历史行为赋予不同的权重,加权求和合成用户历史行为特征向量。
DNN层
通过上述两层,得到四个特征向量,对这四个特征向量进行拼接得到一个向量,输入到多层的深度全连接网络,最终经过softmax层得到输出。
创新点
attention层
通过计算attention,使得用户历史行为特征向量不是固定不变的,而是根据具体物品生成具体特征向量,这种动态生成特征向量,符合历史行为对不同场景有不同表现的现实情况。
自适应正则化
深度兴趣网络由于使用one-hot向量作为输入,所以嵌入层参数很多,容易造成过拟合,需要对嵌入层参数进行正则化。在计算每个批次时,不对嵌入层所有参数进行正则化,只对这一批次使用到的嵌入层参数进行正则化。在现实的推荐场景中,容易出现长尾效应,即小部分嵌入层参数出现很多次,大部分嵌入层参数出现很少次,在正则化时如果没有考虑这点,会导致出现次数多的嵌入层参数被正则化的程度高。为了平衡这一点,在正则化项添加一个系数,这个系数与参数出现频次成反比,从而平衡所有参数的正则化程度。
评估标准
对每个用户单独计算AUC值代替所有用户一起计算整体AUC值。
激活函数
使用PRelu代替Relu,假设PRelu的零点位置不是在0处,零点位置由激活函数的输入分布决定:
可以将$p(s)$近似看作是一个开关函数,大于均值$E(s)$时,$p(s)\approx 1$,此时激活函数使用PRelu的右部分;小于均值$E(s)$时,$p(s)\approx 0$,此时激活函数使用PRelu的左部分。