传统模型
协同过滤
1、User-CF的缺点
- 一般用户数量远大于物品数,用户相似度矩阵较大,不便于存储。同时用户数增长会造成在线存储系统难以承载扩张速度
- 用户历史数据向量往往比较稀疏,User-CF不适用于正反馈获取比较困难的场景,例如大件商品购买等低频应用
2、User-CF和Item-CF的使用场景
- User-CF适用于新闻推荐场景,具有较强的社交性、更容易发现热点
- Item-CF适用于兴趣变化比较稳定的应用,比如电商和视频推荐场景
协同过滤存在天然缺陷,头部效应明显,处理稀疏向量的能力较弱。并且协同过滤仅仅利用了用户年龄、性别、商品描述、商品分类等信息,会造成有效信息遗漏。
矩阵分解
矩阵分解,针对协同过滤算法头部效应明显,泛化能力弱,加入了隐向量。
矩阵分解的三种方法:
- 奇异值分解SVD
- 特征值分解
- 梯度下降法
特征值分解只适合方阵,不适用于分解用户-物品矩阵。
奇异值分解要求共现矩阵稠密,且时间复杂度过高。所以一般采用梯度下降来进行矩阵分解。
矩阵分解优点:
- 泛化能力强
- 空间复杂度低,只需要存储用户和物品隐向量
- 更好的扩张性和灵活性,可以和其他特征拼接
缺点:
和协同过滤一样,无法利用用户年龄性别等信息
逻辑回归
将推荐问题转换成CTR问题
优点:
- 数学上的支撑
- 可解释性强
- 符合人类对预估过程的直觉认识
缺点:
- 表达能力不强,无法进行特征交叉,导致信息丢失
FM与FFM
辛普森悖论:在分组中占优势的一方在总评中不占优势。
POLY2
暴力交叉特征,对所有特征进行两两组合,数学形式:
$x_i$和$x_j$表示特征$i,j$,$w_h(i,j)$表示特征的权重赋值,本质任是线性模型。
有点:
本质任然是线性模型,便于工程兼容
缺点:
- 采用one-shot编码,处理类别特征是会导致特征极度稀疏,并且无法选择特征交叉,导致部分稀疏特征更加稀疏,无法收敛
- 参数上升了,量级从$n$上升至$n^2$。
FM
数学形式:
$w$为$(1,k)$维向量。
优点:
- 引入隐向量使FM有效解决数据稀疏性问题,将权重模型减少到了$n*k$
- 可以使用梯度下降学习,不失灵活性和
FFM
相对于FM,引入了特征感知域的概念,使得模型的表达能力更强
FFM和FM的区别在于隐向量由原来的$w_{j_1}$变成了$w_{j_1,f_2}$,意味着每个特征对应着不是唯一的隐向量,而是一个隐向量组。吧
GBDT+LR
自动化特征的开端
1、GBDT进行特征转换
- 将样本输入一个子树之后,回落到一个叶子结点中,将该节点置为1,其他结点置为0,然后将所有结点进行拼接,就得到一个特征向量
- 决策树的深度决定交叉特征的的阶数,决策树深度为4,经过3次分裂,交叉特征为3阶
传统特征工程:
- 进行人工或者半人工的特征组合和筛选
- 改造目标函数,改进模型结构,提升特征交叉的方式增强特征组合
弊端:
- 对算法工程师经验和经历投入要求太高了
- 从根本上改变模型结构,对模型设计能力要求太高
GBDT+LR的优点:
特征工程由独立模型完成,实现端到端的训练。
深度学习模型
深度学习模型优点:
1、表达能力更强,能够挖掘出更多的数据中潜藏的模式。
2、模型结构灵活,能够根据业务场景和数据特点灵活调整模型结构。
深度学习模型的几个发展方向
- 改变神经网络复杂度
- 改变特征交叉的方式
- 组合模型
- FM模型的学习演化版本
- 注意力机制和推荐模型的结合
- 序列模型与推荐系统的结合
- 强化模型与推荐系统的结合
AutoRec
浅层神经网络,对于协同过滤,存在$m\times n$的共现矩阵,相当于神经网络中的权重$w$,使用单层神经网络具有一定的泛化能力,但是结构较简单,泛化能力存在不足。
Deep Crossing
微软搜索引擎中的搜索广告推荐场景。
Deep Crossing需要解决的三个问题
1、离散类特征过于稀疏,不利于直接输入神经网络进行训练,如何解决稀疏特征稠密化?
引入embedding层,将稀疏特征稠密化
2、如何解决特征自动交叉问题?
引入残差网络结构,通过多层残差对各个维度进行交叉>。
3、如何在输出层达成问题设定的优化目标?
引入Scoring层,对于CTR二分类问题,采用逻辑回归模型,对于图像类多分类问题,采用softmax模型。
优点:
没有采用任何人工特征的参与。
NeuralCF
NeuralCF采用多元神经网络+输出层结构代替了矩阵分解模型中简单內积操作,目的是:
- 让用户向量和物品向量充分交叉,得到价值更多的特征组合信息
- 引入更多非线性特征,让模型表达能力更强
优势:
利用神经网络的优势,可灵活组合不同的特征,按需增加或减少模型复杂度
缺点:
由于基于协同过滤的思想,没有引入其他类别特征。
PNN
相对于Deep Cross,将stacking层换成了Product Layer,乘积层,里面既有内集,也有外集。
优点:
对于Embedding向量多样化交叉,定义了內积和外积操作
缺点:
特征进行了无差别交叉,一定程度的忽略了原始特征向量中包含的价值信息。
Wide&Deep
Wide&Deep设计的初衷和最大价值在于同时具有较强的记忆能力和泛化能力
记忆能力:模型直接学习并且利用历史数据中的物品和特征共现能力,例如协同过滤,可以通过历史数据计算物品和用户共现矩阵,进而通过历史数据进行推荐。
泛化能力:模型的传递特征的相关性,发觉稀疏甚至从未出现过的稀有特征和最终标签相关性能力。
Deep部分输入的是全量的特征,数值型和类别特征的embedding向量通过全连接层连接在一起。
Wide部分仅输入已安装应用和曝光应用两类特征,已安装应用表示用户历史行为,曝光应用代表当前待推荐的应用,选择这两类特征的原因是充分发挥wide的记忆能力强的有点。
Wide&Deep模型的优点:
(1)抓住业务本质特点,融合传统模型的记忆能力和深度模型的泛化能力
(2)模型结构不复杂,容易工程化实现
缺点:
Wide部分任需要人工筛选特征
Wide&Cross
使用Cross网络替代原来的wide部分。设计Cross网络的目的是为了增加特征之间的交互力度,使用多层交叉层对输入向量进行特征交叉。减少人工特征。
假设$l$层交叉层的输出向量为$x_l$,那么$l+1$层的向量输出为:
每层均保留了输入向量,因此在输入向量和输出向量之间的差别不是特别大。
优点:可以自动进行交叉特征,避免了很多基于业务理解的人工特征。
缺点:Cross部分网络复杂度较高。
FM系列
FNN
为了解决Embedding训练速度慢的问题,FNN采用的思路是用FM模型训练好的个特征隐向量初始化Embedding层参数,有点类似预训练。FM的计算公式:
优点:利用FM初始化Embedding层参数,加快训练
缺点:结构比较简单,没有针对性的特征交叉层
DeepFM
采用FM优化Wide&Deep模型中Wide模块,主要针对Wide部分不具备自动组合特征的能力的缺陷进行改善的。利用FM替换了原来的Wide部分,加强了浅层网络部分特征组合的能力。左边FM与右边神经网络共享相同的embedding层。FM对不同特征域两两交叉。也就是将embedding层当做原FM中隐向量。
NFM
NFM的思想,利用神经网络改进FM,主要思路是利用一个表达能力更强的函数替代原FM
主要有5各模块
- 原始稀疏特征向量
- Embedding层
- 特征交叉池化层
- 隐层
- 预测层
其实就是在Embedding层和多层神经网络之间增加了特征交叉池化层,具体操作如下:
$\odot$表示两个向量的元素积操作
基于FM的深度学习模型的有点和局限性
优点:
- 让模型具备非常强的非线性表达能力
局限:
- 进行了大量基于不同特征交互操作思路的尝试,特征工程的思路已经穷尽了。
AFM
在NFM模型中,对于不同的特征一视同仁,但是实际上不同的特征对于业务的影响是不一致的,因此AFM通过在NFM的特征交叉层和最终输出层加上注意力机制实现,AFM的特征交叉过程同样采用元素积操作
AMF加入注意力得分之后的池化过程
为了防止交叉特征数据稀疏问题带来的权重难以收敛,AFM在交叉层和池化层之间的注意力网络来生成注意力得分
DIN
应用场景: 阿里巴巴电商广告推荐
DIN模型是在深度学习网络中加入了注意力机制,利用候选商品和历史行为相关性计算出一个权重,这个权重代表注意力的强弱。例如,广告中的商品是键盘,用户点击商品序列有几个不同的商品id,分别为鼠标、T恤和洗面奶。因此鼠标这个历史行为的商品id对于预测键盘广告的点击率重要程度大于后两者。
注意力形式化表达:
$V_u$是用户Embedding向量,$V_a$是候选广告商品Embedding向量,$V_i$是用户$u$第$i$次行为Embedding向量。用户行为指的是游览的商品和店铺。$w_i$由$V_i$和$V_a$的关系决定,即$w_i=g(V_i,V_a)$, g函数采用的是注意力激活单元。
优点:
- 在传统深度学习推荐系统模型基础上,引入了注意力机制,并利用用户历史行为和目标广告商品的相关性计算注意力得分
缺点:
- 没有充分利用历史行为以外的其他特征。
DIEN
相比DIN,考虑到了时序信息,用户的兴趣也是随着时间变化的,因此时序信息能够
1、加强最近行为对下一次购买的预测影响
2、序列模型能够学习到购买趋势
网络结构还是输入层+Embedding层+连接层+多层全连接层+输出层
DIEN的创新点在于构建了一个兴趣进化网络。
兴趣进化网络分三层:
1、行为序列层:将原始的ID行为序列转换成Embedding行为序列
2、兴趣抽取层:通过模拟用户兴趣迁移过程,抽取用户兴趣。采用GRU,相对于LSTM参数更少
3、兴趣进化层:通过在兴趣层基础上加上注意力机制,模拟兴趣的进化过程。结构为AUGRU,在院GRU的更新门的结构上加上了注意力得分。
优点:
- 考虑到了时序信息
缺点:
- 序列模型训练起来比较复杂