深度学习推荐系统(一)
原文来自微信公众号
深度学习推荐系统(一)
协同过滤
缺点:对绝对值大小不敏感,在某些情况下会出问题。如:用户A对两部电影评分分别是1分和2分,用户B对两部电影评分分别是4分和5分,通过余弦相似度计算,两个用户相似度为0.98。
矩阵分解算法
特征向量v和特征值??求解如下:
奇异值分解(SVD)
假设M是m*n的矩阵,矩阵的SVD如下,其中U是m*m的正交矩阵,V是n*n的正交矩阵,??是m*n的对角阵。
取对角阵??中较大的k个元素,矩阵M被分解成如下形式。
局限性:
特点
Wh(j1, j2)是特征组合的权重
推导参考:
https://www.cnblogs.com/zhangchaoyang/articles/7897085.html
在FFM模型训练过程中,需要学习n个特征在f个域上的k维隐向量,参数数量共n*k*f个,计算复杂度为kn^2
深度学习推荐系统特点
embedding层将稀疏类别型特征转换成稠密向量,数值特征(如Feauture #2)直接进入stacking层
stacking层把不同embedding特征和数值型特征拼接一起,形成新的包含全部特征的特征向量
多层残差网络对特征向量各个维度进行充分交叉组合
Wide&Deep
Deep部分(左): 全量的特征向量,离散特征经Embedding层输入全连接层
Wide部分(右): 组合“已安装应用”和“曝光应用”两类特征
Deep&cross
FM与深度学习融合
DeepFM 模型由两种组件构成:FM 组件、deep 组件,它们共享输入。这种共享输入使得DeepFM 可以同时从原始特征中学习低阶特征交互和高阶特征交互,完全不需要执行特征工程,最终模型联合了 FM 组件和 deep 组件的输出
FM Component
FM部分用于学习一阶特征和二阶交叉特征
假设输入包含 sparse 特征和 dense 特征,将sparse特征变成one-hot形式,dense保持其原始特征,通过向量拼接形成输入向量
FM的输出
标量wj对一阶特征重要性进行建模,即 FM 组件左侧的 + 部分
Vj用于对它的二阶特征重要性进行建模,即 FM 组件右侧的 x 部分
Deep Component
Deep部分是一个全连接的前馈神经网络,用于学习高阶特征交互
与FM共享输入embedding层,embedding层的输出如下,其中ei是field i,m是field number。
DNN的输出
参考
https://www.ijcai.org/Proceedings/2017/0239.pdf
https://github.com/ChenglongChen/tensorflow-DeepFM https://github.com/Johnson0722/CTR_Prediction/blob/master/Deep_FM/DeepFM.py
Embedding层:这是一个全连接层,将稀疏输入映射到一个稠密向量,vi代表第i个特征的Embedding向量,在embedding后,得到全部向量
Bi-Interaction层: 该层是一个池化操作,将一系列的Embedding向量转换成一个向量, ?表示element wise相乘,Bi-interaction层的输出是一个k维向量
注意力机制在推荐模型中应用
使用MLP获取注意力得分
AFM最后输出
DIN
背景
在电商领域,每个用户都有丰富的历史行为数据,历史行为数据指的是用户曾经点击过商品集合,如何对这些历史行为数据建模得到用户特征?
基准模型
普通DNN通常是在 embeddin层之后添加一个池化层,sum pooling 或者 avg pooling,将用户的一组历史行为 embedding 转化为固定尺寸的embedding 向量,这导致部分信息丢失,无法充分利用用户丰富的历史行为数据
基准模型embedding&MLP由两个部分组成:
embedding 部分:将稀疏 id 特征映射到 embedding 向量,对于长度可变序列,对向量序列聚合(sum pooling)
MLP 部分:将 embedding 向量馈入 MLP 来预测输出
引入注意力机制,通过候选商品和历史行为数据计算权重,该权重代表了“注意力”的强弱。
Dice激活函数
依赖于数据
参考
https://arxiv.org/pdf/1706.06978.pdf
https://github.com/zhougr1993/DeepInterestNetwork/tree/master/din
https://zhuanlan.zhihu.com/p/42934748
https://zhuanlan.zhihu.com/p/39439947
DIEN--序列模型与推荐系统的结合
Interest Extractor层
从用户行为序列中提取背后的一系列兴趣状态。
使用GRU来对用户行为之间的依赖进行建模,GRU的输入是用户按时间排序的行为序列,也就是行为对应的商品。
实际上隐状态ht无法无法有效的表达用户兴趣,目标商品的点击是由最终兴趣触发的,因此损失函数中使用的 label 仅仅监督了最后一个兴趣状态hT,历史兴趣状态没有得到合适的监督
辅助损失:利用t+1步的行为监督第t步的兴趣状态ht,正样本就是真实的下一个item,负样本就是从item set中随机抽取的item
Interest Evolving层
用户的各种兴趣随着时间的推移不断演化
Interest Evolving层对与目标商品相关的兴趣演化轨迹进行建模
DIEN 结合了注意力机制的局部激活能力以及GRU 的序列学习能力来建模兴趣演化过程
注意力
GRU attention
GRU with attentional input (AIGRU)
Attention based GRU(AGRU)
GRU with attentional update gate (AUGRU)
参考
https://arxiv.org/pdf/1809.03672v1.pdf
https://github.com/mouna99/dien/blob/master/script/model.py
强化学习与推荐系统的结合
模型学习过程
- 定义
- 商品推荐的例子:

- 电商网站的商品库里一共有四件商品
- 用户X访问该电商网站,电商网站的推荐系统需要决定是否推荐电视机给用户X
- 将用户商品图转化成矩阵的形式,被称作“共现矩阵”,好评记为1,差评记为0,没有的可以取评分的均值
- 推荐问题转换成预测矩阵中问号元素的值的问题。
- 从共现矩阵中得知,用户B和用户C跟用户X的行向量近似,被选为Top n(n取2)的相似用户
- 相似用户对“电视机”的评价是负面的,因此预测用户X对“电视机”的评价也是负面的
- UserCF
- ItemCF
- 构建用户-物品m*n维的共现矩阵
- 计算任意列向量间的相似性,构建n*n维物品相似度矩阵
- 获取用户历史行为数据中正反馈物品列表
- 利用物品相似度矩阵,找出与用户正反馈物品相似的Top k个物品,组成相似物品集合
- 对相似物品集合,根据相似度分值排序生成最终排序列表
- UserCF具备更强的社交性,可以通过“朋友”的动态快速更新自己的推荐列表,适用于新闻推荐场景
- ItemCF适用于兴趣变化较为稳定的应用,如电商场景
- 直观、解释性强
- 头部效应较明显、泛化能力弱
- 无法有效地引入用户特征、物品特征和上下文特征
- 余弦相似度

- 皮尔逊相关系数


- 改进的皮尔逊相关系数


- 原理

- 求解过程




- 要求原始共现矩阵是稠密,因此必须对缺失值填充
- 传统奇异值分解计算复杂度高 ,达到了O(mn^2) 计算方式
- 让原始评分rui与用户向量和物品向量之积的差尽量小

- 对目标函数求偏导
- 更新参数
- 迭代次数超过上限或者损失低于阈值结束训练

- 泛化性强:一定程度解决数据稀疏问题
- 空间复杂度低:不需要存储用或物品相似性矩阵,由n^2降低到(m+n)k
- 扩展性和灵活性:与Embedding类似,便于与其他特征组合拼接
- 原理
- 推荐流程
- 将用户、物品和上下文等特征转化成数值型特征向量
- 确定优化目标,训练模型
- 服务阶段,输入特征向量,输出点击概率
- 根据点击概率对候选物品进行排序,得到推荐列表
- 优势
- 数学含义支撑,假设因变量y服从伯努利分布
- 可解释性强:各个特征的加权和,在施加sigmoid
- 工程化的需要:易于并行、模型简单、训练开销小等
- 局限性
- 表达能力不强,无法进行特征交叉、特征筛选
- 原理

- 特点
- 原理

- 推导





- 特点
- 原理

- 举例


- 特点
- 组合特征结构

- 影响
- 推进特征工程模型化,即特征工程完全交由一个独立模型完成

- 具体例子

- 传统LR模型不能解决非线性问题,MLR可以克服该问题

- 特点

- 丰富特征交叉方式
- 组合模型
- 引入注意力机制
- 融合序列模型
- 结合强化学习
- 原理
- 模型结构图:



- item-based AutoRec胜出user-based AutoRec,这可能是由于每个物品评分的平均数量高于每个用户的评分数,用户评分数量的高方差导致基于用户的方法的预测不可靠
- 激活函数如何选择?g(.) sigmoid, f(.) identity
- 隐层数量?k=500
- 特点
- 使用一个单隐层泛化用户或物品评分,使模型具有一定泛化和表达能力
- 模型简单,泛化能力不足
- 结构上与word2vec一致
- 需要解决问题 如何解决稀疏特征向量稠密化问题
- 模型结构图

残差网络解决的问题Scoring 使用逻辑回归或者softmax
通过输入向量短路减少过拟合现象的发生
解决梯度消失现象,收敛速度加快
- 特征表示
- embedding

- 评价
- 解决问题

- 特点
- 基本原理
- 模型结构

- 基本原理
- 模型结构

- 原理
- 结构

- FNN 使用FM的隐向量完成embedding层初始化
- DeepFM








- NFM NFM模型用一个表达能力更强的函数替代原FM中二阶隐向量内积部分



- AFM AFM是NFM的延续,在NFM中,不同域的特征经过交叉池化层的交叉,将各交叉向量进行“加和“。 AFM引入注意力机制是通过在特征交叉层和最终的输出层之间加入注意力网络实现的。 模型结构




- DIN模型


- 背景
- 模型结构







- DRN

- 初始化推荐系统(agent)
- 推荐系统基于当前已收集的数据(state)进行新闻排序(action),并推送到网站或app(Environment)中
- 用户收到推荐列表,点击或忽略(反馈)某推荐结果
- 推荐系统收到反馈,更新当前状态或通过模型训练更新模型
- 重复第2步

