基于DNN的推荐算法引入背景
推荐系统的一大挑战是同时具备”记忆能力“和”泛化能力“。
”记忆能力“:学习那些经常同时出现的特征,发觉历史数据中存在的共现特性。
”泛化能力“:基于迁移相关性,探索之前几乎没出现过的新特征组合。
基于嵌入的模型(FM)对之前没出现过的特征具备二阶泛化能力,即为每个query和item特征学习一个低维稠密的嵌入向量。但FM很难有效学习低维表示,当query-item矩阵稀疏且高秩时,稠密嵌入会给所有item-query带来非零预测,可能过度泛化/给出完全不相关的推荐。
Wide&Deep
联合训练一个线性模型组件和一个深度神经网络组件得到Wide&Deep模型,该模型的Wide部分具备记忆能力,Deep部分具备泛化能力。
Wide部分:基础特征和交叉特征构成的线性模型
其中,基础特征,叉乘特征
Deep部分:将一些sparse特征(e.g. ID类特征)转换成低维稠密向量,然后和一些原始dense特征一起作为网络的输入;激活函数是Relu的前馈神经网络
其中,第l层输入,第l层偏置,第l层权重,激活函数
Wide&Deep联合预测输出:联合训练的Wide部分只需要作一小部分的特征叉乘来弥补Deep部分的不足,不需要一个full-size 的wide 模型。在论文中,作者通过梯度的反向传播,使用 mini-batch stochastic optimization 训练参数,并对wide部分使用带L1正则的Follow- the-regularized-leader (FTRL) 算法,对deep部分使用 AdaGrad算法。
其中,是NN最后一层激活值。
DeepFM
DeepFM采取Wide & Deep的框架,差异在于将Wide部分的LR替换为了FM,从而自动构造二阶特征叉乘,而非手工设计叉乘。FM算法负责提取一阶和二阶组合特征;DNN算法负责对输入一阶特征全连接提取高阶特征。FM和DNN共享相同输入和embedding向量,训练更高效。
左边就是刚才将的FM模型的神经网络表示,而右边的则为deep部分,为全连接的网络,用于挖掘高阶的交叉特征。整个模型共享embedding层,最后的结果就是把FM部分和DNN的部分做sigmoid: