GBDT+LR
- 1. AutoRec-2015
- 2. Deep Crossing-2016
- 3. NeuralCF-2016
- 4. PNN-2016
- 5. Wide&Deep-2016
- 6. Deep&Cross-2017
- 7.FM+深度学习
- 7.1 FNN-2016
- 7.2 DeepFM-2017
- 7.3 NFM-2017
《深度学习/推荐系统》读书笔记
2016年开始,推荐系统和计算广告全面进入深度学习时代。
(太多的模型,一搞就混了,没意思。)
围绕:特征如何更好的交叉,发现新的特征
以下方案基本囊括了特征工程的所有思路,(仅从特征工程的角度出发)模型进一步提升的空间非常小了,这也是这类模型的局限性所在。
1. AutoRec-2015
(澳大利亚国立大学)
核心思想:利用自编码器重构用户对物品的评分向量,再利用对物品评分的预估进行推荐排序。
自编码器:使输出向量与输入向量尽可能接近,可以用来做数据压缩和降维。
数据压缩和降维说的是,自编码器的参数数量要远小于输入向量的维度
AutoRec-用一个三成神经网络构建自编码器,输出层与输入层具有相同维度。
若输入向量为rir^iri,重建函数为h(ri,θ)h(r^i,\theta)h(ri,θ),AutoRec目标函数为
minθ∑i=1n∣∣ri−h(ri,θ)∣∣2+λ2∣∣θ∣∣2\min_\theta\sum_{i=1}^n||r^i-h(r^i,\theta)||^2+\frac{\lambda}{2}||\theta||^2θmini=1∑n∣∣ri−h(ri,θ)∣∣2+2λ∣∣θ∣∣2
Item Based AutoRec–物品评分向量–共现矩阵的列向量
User Based AutoRec–用户评分向量–共现矩阵的行向量
优点:三层自编码器简单
缺点:表达能力不足
2. Deep Crossing-2016
(微软)
Deep Crossing 模型的应用场景-Bing中搜索广告推荐场景。用户在搜索引擎中输入搜索词后,引擎出了会返回相关的结果,还会返回相关的广告。这是大多数搜索引擎的盈利模式。准确地预测关稿的点击率,并以此作为关稿排序指标之一,是非常重要的工作。
某条广告预测点击率可能用到的特征:搜索词,广告关键词,标题,落地页(不懂),匹配类型,历史点击率,另一个CTR模型预估的点击率,广告投放计划,曝光/点击样例(不懂)
Deep Crossing 主要包括4层,用来解决-原始特征稀疏、特征自动交叉、输出层特征优化三个问题。
- Embedding-全连接聚合稀疏特征(第四章详细讨论Embedding技术)类别特征-onehot 编码,数值型特征都不需要Embedding.
- Stack层-直接拼接不同类型Embedding特征
- Multiple Residual Units层 – 残差网络实现特征各个维度的充分交叉
- Scoring层 – 逻辑回归预测CTR
3. NeuralCF-2016
(新加坡国立大学)
NeuralCF - 广义矩阵分解模型-将矩阵分解后的用户向量和物品向量 通过 互操作层相互作用后 得出用户对物品的评分。
- 互操作1–原始矩阵分解,使用内积,太简单,模型拟合能力不足。
- 互操作2–用户向量和物品向量拼接后输入全连接网络
- 互操作3–用户向量和物品向量(维度对齐)逐元素积
优点:灵活组合不同的 互操作层 特征,按需增加或者减少模型复杂度
局限性:基于协同过滤的思想构造,没有更多的引入其他类型的特征。所提供的互操作就两种,更多的方式需要后来者进行更深入的研究。
4. PNN-2016
上海交通大学–加强特征交叉能力–多组特征的之间的交叉(NeuralCF只有用户向量和物品向量)
PNN创新点–使用了乘积层代替了Deepcross中的stack 层,就是说不同特征的Embedding向量不再是简单的拼接,而是用Product操作进行两两交互。
Product层包括线形操作部分和乘积操作部分。
- 线操作部分–对embedding向量进行线形拼接
- 乘积操作部分包括:内积操作和外积操作(不同的embedding两两组合)
a). 内积操作–没啥特殊
b). 外积操作–将所有特征两两外积矩阵叠加,形成叠加外积互操作矩阵:p=fΣfΣTp=f_{\Sigma}f^T_{\Sigma}p=fΣfΣT。
叠加外积互操作矩阵的缺陷–等价于让所有的emdedding过一个平均池化,再作内积。不在同一个向量空间的特征向量(年龄,地域)相加,会造成信息模糊。
5. Wide&Deep-2016
google–google play推荐团队–单层Wide和多层Deep组合形成混合模型,综合利用记忆能力和泛化能力。
记忆能力:模型直接学习并利用历史数据中物品或者特征的“共现频率”的能力。
强组合特征:如果点击过A,就推荐B。协同过滤和逻辑回归很容易发现这种联系。例如通过加大A的特征权重,这样就实现了对这个特征的直接记忆。
泛化能力:模型发掘稀疏甚至稀有特征与最终标签相关性的能力。
矩阵分解比协同过滤泛化能力强,就是因为矩阵分解引入了隐向量,使得数据稀少的用户或者物品也能生成隐向量,从而获得有数据支撑的推荐得分。(非常典型的将全局数据传递到稀疏物品上,提高了泛化能力)
Wide&Deep 模型结构: 单层Wide和多层Deep的输出拼接后直接输入到输出层。
(在具体特征工程和输入层设计中,展现了Google PLay推荐团队对业务场景的深刻理解)
- 单层Wide特征:已安装应用(用户历史行为)、曝光应用(当前的待推荐应用)
- 多层Deep特征:全量特征–用户年龄、安装应用数量、参与会话数量、用户人口属性特征、设备类型、已安装应用、曝光应用
Wide特征交叉操作–交叉积变化(解释完反而懵了)–多个特征向量的同一维度都为1,输出向量该维度才为1?
Deep&Wide模型的最主要共现–模型融合的魅力。
6. Deep&Cross-2017
斯坦福+google联合-在Wide&Deep的基础上,优化Wide部分,变为Cross网络。
Cross网络的目的–增加特征之间的交互力度,多层交叉层。(每一层均保留了输入向量)
xl+1=x0xlTWl+bl+xlx_{l+1}=x_0x_l^TW_l+b_l+x_lxl+1=x0xlTWl+bl+xl
7.FM+深度学习
7.1 FNN-2016
伦敦大学
改进点:DeepCross模型中embedding层的权重用FM模型训练出的权重向量进行初始化
问题缘起:embedding层采用随机初始化,收敛非常慢。主要原因有二
- 参数占整个网络的比重非常大
- 输入向量过于稀疏,只有与非零特征相连的Embedding层权重会被更新
7.2 DeepFM-2017
哈工大+华为公司
改进点:用FM代替Deep&wide中的wide,提高特征交叉能力
FM部分和Deep 部分共享稠密的embedding层。
7.3 NFM-2017
新加坡国立大学
改进点:在Deep&wide模型中的deep 部分增加了特征交叉池化层
特征交叉池化层:所有稠密embedding 两两数量积之后求和,输入到后续的深层网络中。
改进点的另一种看法:FM中的二阶交叉部分采用神经网络来拟合。