CF(user_cf、item_cf)
DIN + DIEN + DISN
(协同过滤)
最早期的推荐算法是协同过滤CF。传统CF分为基于用户的协同过滤user_CF,和基于物品的协同过滤item_CF。基本原理是 通过用户-物品的共现矩阵M,通过行向量或列向量的相似度,找出top K个相似用户/物品,然后去做推荐列表。
由于CF存在头部效应,热门的商品容易与其他商品产生相似性,所以引入了矩阵分解 MF。MF通过对共现矩阵M的行列维度进行解藕,把M分解为用户隐向量U和物品隐向量V。 在公式上,M = U^T * V,M 是 m*n 维度的 ,U 是 d * m的 , V 是 d * n的。
由于MF由于噪声存在,有时不存在完美的低秩分解,所以引入概率矩阵分解 PMF和 Constrained_PMF,PMF对参数进行先验,Constrained_PMF对用户隐向量做了加法的解藕。
(内容过滤)
由于上述的协同过滤的方法只利用了交互信息,没有融合多种显式特征,所以有了内容过滤的方法 LR 。对 对数几率进行 线性建模。
但是LR没有特征交叉,生成特征的能力,表达能力弱,容易产生辛普森悖论。所以引入了二阶特征交叉的方法 FM和FFM。
对于高阶的特征交叉,提出了GBDT+LR模型,分为独立训练的两部分。对训练样本经过GBDT落在的叶结点设为1,其他叶结点设为0,得到离散特征向量,再经过线性分类器LR得到二分类的结果。
还有 MLR,基本思想是 聚类+LR,对全量样本先进行聚类,再分片进行LR。这样在预测女性点击女装广告时,就不会把男性考虑进来。
(深度)
对于传统模型在深度网络中的实现,有 DeepCrossing、NeuralCF、Wide&Deep、DeepFM、DIN(DC+目标商品与历史商品序列的相关性)、DIEN 、DISN等。对于多目标的场景有MMOE等。
DeepCrossing 模型架构上,分为 输入层、嵌入层、堆叠层、多层残差神经网络层、输出层。嵌入层实现了稀疏向量稠密化,嵌入层以 FC 为主,后续引入了Word2Vec、Graph -Embedding进行编码。多层残差神经网络中对各个维度的向量进行特征组合,增加表达能力。输出层在二分类的情况下用LR,在多分类的情况下是Softmax。
NeuralCF Neural CF 把矩阵分解的内积 用 MLP+Dense的方式 深度化。
Wide&Deep 单层的 Wide 和多层的 Deep 组成的模型。Wide 作用是让模型具有 记忆能力,Deep作用是让模型具有 泛化能力。
Deep部分,嵌入层 + 堆叠层 + 3*FC }+ 输出层Sig/Softmax分类。
Wide部分,交叉积变换 }
Wide 特征是人工选取的与结果直接相关的一些特征。
DeepFM 用FM代替Wide部分。
DIN(DC+目标商品与历史商品序列的相关性)、DIEN 、DISN
DIN 是 在用户特征、物品特征的基础上,引入 用户历史行为特征。学目标商品与历史商品序列的相关性。得到 context_vector(Seq2Seq模型引入Attention机制的方式是一样的)。作为特征输入到concat层。
DIEN 希望学到时序变化,学到前后的依赖关系,在deep部分分为3层:行为序列层(Emebdding层)、 兴趣提取层(GRU层 序列模型输出当前时刻的兴趣)、兴趣演化层(然后过一个基于注意力的GRU—AUGRU层,其中attention权重打分和DIN一样)。
DISN 是在DIEN的基础上,对用户行为序列做了session的划分。既能保留session内的同质信息,又能学到不同session之间的异质兴趣演化。
MMOE
最开始的多目标模型是 底层权重共享 + tower 的结构,但如果不同目标之间相关度不高,而不同塔的输入还是共享的,效果就会大打折扣。
MMOE 模型能通过对每个目标学一个 gate 网络,来控制 各个专家网络 的输出。这样对于不同的目标,会对 专家网络 进行加权融合,再通过该目标上层的tower中的多层全连接层+激活,得到该目标的结果和loss。我认为gate网络和视觉中传统的压缩激励网络SE-Net有类似之处,都是对不同通道的信息进行注意力计算,而且两个注意力分数都是通过网络学习到的。
然后多个目标可以分别进行训练,在训练时,每个目标的gate网络是不同的。对不同的目标,多个专家网络是共享的。对于各个专家网络,他们的参数是不同的。
专家网络的个数细节:某些公司的实验证明,专家网络的个数n=4时,效果最好。