【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。如下内容仅为我的看法,欢迎批评指正,不喜勿喷![握手][握手]html
【再啰嗦一下】若是你对智能推荐感兴趣,欢迎先浏览个人另外一篇随笔:智能推荐算法演变及学习笔记python
【最后再说一下】本文只对智能推荐算法中的CTR预估模型演变进行具体介绍!面试
即逻辑回归。LR模型先求得各特征的加权和,再添加sigmoid函数。算法
LR模型的优势在于:数据库
LR模型的缺点在于:网络
POLY2对全部特征进行“暴力”组合(即两两交叉),并对全部的特征组合赋予了权重。架构
必定程度上解决了LR缺少特征组合的问题,可是“暴力行为”带来了一些问题:机器学习
相比于POLY2,FM为每一个特征学习了一个隐权重向量 w。在特征交叉时,使用两个特征隐向量w的内积做为交叉特征的权重。ide
将原先n^2级别的权重数量下降到n*k(k为隐向量w的维度,n>>k),极大下降了训练开销。函数
在FM模型基础上,FFM模型引入了Field-aware。在特征交叉时,使用特征在对方特征域上的隐向量内积做为交叉特征的权重。
FFM模型的权重数量共n*k*f个,计算复杂度上升到k*n^2,远远大于FM模型的k*n。
直接使用机器学习算法中的集成学习方法。
利用GBDT自动进行特征筛选和组合,进而生成新的离散特征向量,再把该特征向量看成LR模型的输入。
在LR的基础上采用分而治之的思路,先对样本进行分片,再在样本分片中应用LR进行CTR预估。
以上1-7部分能够总结为传统的CTR预估模型演变,这里分享一下大佬的关系图谱:
经过加入embedding层将稀疏特征转化为低维稠密特征,用stacking层链接分段的特征向量,再经过多层神经网络完成特征组合/转换。
跟经典DNN有所不一样的是,Deep crossing采用的multilayer perceptron是由残差网络组成的。
相比于Deep Crossing,FNN使用FM的隐层向量做为user和item的Embedding,从而避免了彻底从随机状态训练Embedding。
把单输入层的Wide部分和通过多层感知机的Deep部分链接起来,一块儿输入最终的输出层。
DeepFM对Wide & Deep的改进之处在于,用FM替换掉了原来的Wide部分,增强了浅层网络部分特征组合的能力。
使用Cross网络替代了原来的Wide部分。Cross网络使用多层cross layer对输入向量进行特征交叉,增长特征之间的交互。
相对于DeepFM和DCN对于Wide&Deep Wide部分的改进,NFM能够看做是对Deep部分的改进。
NFM用一个带Bi-interaction Pooling层的DNN替换了FM的特征交叉部分。
在模型的embedding layer和concatenate layer之间加入了attention unit,使模型可以根据候选商品的不一样,调整不一样特征的权重。
以上1-7部分能够总结为引入深度学习的CTR预估模型演变,这里分享一下大佬的关系图谱:
对于深度学习推荐模型的离线训练天然不是问题,通常能够采用比较成熟的离线并行训练环境。
对于深度学习推荐模型的上线问题,其线上时效性相当重要。
这里分享一下大佬画的智能推荐系统主流技术架构图,博主认知有限,就不展开介绍了。
与“特征实时性”相比,推荐系统模型的实时性每每是从更全局的角度考虑问题,博主认知有限,就不展开介绍了。
不少公司采用“复杂网络离线训练,生成embedding存入内存数据库,线上实现LR或浅层NN等轻量级模型拟合优化目标”的上线方式。
以百度的双塔模型举例说明:
(1)分别用复杂网络对“用户特征”和“广告特征”进行embedding,这就造成了两个独立的“塔”,所以称为双塔模型。
(2)在完成双塔模型的训练后,能够把最终的用户embedding和广告embedding存入内存数据库。
(3)线上推理时,只须要实现最后一层的逻辑,从内存数据库中取出用户/广告的embedding,经过简单计算便可获得预估结果。
最后感叹一句,深度学习CTR模型的发展实在是太迅速了,不少新模型就不继续介绍了,要保持学习啊!
【更新】介绍比较新的一些深度学习推荐模型改进方向:
本文参考了大佬的知乎专栏:https://zhuanlan.zhihu.com/p/51117616
若是你对智能推荐感兴趣,欢迎先浏览个人另外一篇随笔:智能推荐算法演变及学习笔记
若是您对数据挖掘感兴趣,欢迎浏览个人另外一篇博客:数据挖掘比赛/项目全流程介绍
若是您对人工智能算法感兴趣,欢迎浏览个人另外一篇博客:人工智能新手入门学习路线和学习资源合集(含AI综述/python/机器学习/深度学习/tensorflow)
若是你是计算机专业的应届毕业生,欢迎浏览个人另一篇博客:若是你是一个计算机领域的应届生,你如何准备求职面试?
若是你是计算机专业的本科生,欢迎浏览个人另一篇博客:若是你是一个计算机领域的本科生,你能够选择学习什么?
若是你是计算机专业的研究生,欢迎浏览个人另一篇博客:若是你是一个计算机领域的研究生,你能够选择学习什么?
若是你对金融科技感兴趣,欢迎浏览个人另外一篇博客:若是你想了解金融科技,不妨先了解金融科技有哪些可能?
以后博主将持续分享各大算法的学习思路和学习笔记:hello world: 个人博客写做思路