这种方法分别学习user和item的embedding向量,然后通过matching score如向量內积、cosine距离函数来得到匹配分数,构建如下图所示。
基于表示学习的方法主要有基于协同过滤(CF)以及CF+上下文信息的方法。
主要分为user-based、item-based和model-based三类。
从输入-隐藏层,会针对用户id学习一个和item无关的Vu表示,该向量可以很好地刻画不同用户之间的评分喜好差异。
对于输出节点,可以认为是用户u对物品i的打分预测:
这类方法有如下几个特点:
在传统的CF模型中加入了Attention机制,这里的Attention机制有两层意思:(1)用户历史交互过的 item 的权重是不一样的。(2)用户对一个物品中的特征结合权重也是不一样的,如下图所示。
利用知识图谱做 representation learning,分别在结构化信息、文本信息和视觉信息中提取 item 侧特征作为 item 的 representation。
该方法可用如下图所示的框架作为范式表达:
这些方法有着以下特点:
1.representation learning:目的是学习到 user 和 item 各自的 representation ( 也叫 latent vector,或者 embedding )。
2. 特征表达:user 侧特征除了用户 id 本身 userid,可以加上其他 side info;item 侧特征除了物品 id 本身 itemid,还有其他文本特征、图文特征、视频帧特征等信息。
3. 模型表达:除了传统的 DNN,其他结构如 Auto-Encoder ( AE ),Denoise-Auto-Encoder ( DAE ),CNN,RNN 等。
与表示学习最大的不同,就是基于match function learning不直接学习user和item的embedding,而是通过输入和神经网络框架来直接拟合user和item的匹配分数,简单来说,第一种方法 representation learning 不是一种 end-2-end 的方法,通过学习 user 和 item 的 embedding 作为中间产物,然后可以方便的计算两者的匹配分数;而第二种方法 matching function learning 是一种 end2end 的方法,直接拟合得到最终的匹配分数。本章主要介绍基于 match function learning 的深度学习匹配方法。
在得到 user vector 和 item vector 后,连接了 MLP 网络后,最终拟合输出,得到一个 end-2-end 的 model。这套框架好处就是足够灵活,user 和 item 侧的双塔设计可以加入任意 side info 的特征,而 MLP 网络也可以灵活的设计,如下图所示:
NCF 框架对比之前的CF方法最主要引入了 MLP 去拟合 user 和 item 的非线性关系,而不是直接通过 inner product 或者 cosine 去计算两者关系,提升了网络的拟合能力。基于 NCF 框架的方法基础原理是基于协同过滤,而协同过滤本质上又是在做 user 和 item 的矩阵分解,所以,基于 NCF 框架的方法本质上也是基于 MF 的方法。矩阵分解本质是尽可能将 user 和 item 的 vector,通过各种方法去让 user 和 item 在映射后的空间中的向量尽可能接近 ( 用向量点击或者向量的 cosine 距离直接衡量是否接近)。
另一种思路是基于翻译的方法,也叫 translation based model,认为 user 和 item 在新的空间中映射的 vector 可以有 gap,这个 gap 用 relation vector 来表达,也就是让用户的向量加上 relation vector 的向量,尽可能和 item vector 接近。
2017年的 recsys 会议上提出的一种基于 “translate” 的推荐方法,要解决的是 next item 的推荐问题。基本思想是说用户本身的向量,加上用户上一个交互的 item 的向量,应该接近于用户下一个交互的 item 的向量,输入是 (user, prev item, next item),预测下个 item 被推荐的概率。
LRML 模型通过引入 memory network 来学习度量距离。可以分为三层 layer,分别是 embedding layer, memory layer 和 relation layer。
之前介绍的基于CF的方法,输入的特征向量都是稀疏且高维的,而特征之间的交叉关系对模型来说非常重要。例如,用户一般会在一天快吃三餐的时候,打开和订餐相关的 app,这样,用户使用订餐 app 和时间存在着二阶交叉关系。因此,如何捕捉特征之间的交叉关系,衍生了众多基于特征的模型,在这里将这些捕捉特征交叉关系的模型称为 feature-based model。
2016年 google 提出的 wide and deep 模型。说是模型,不如说是通用的一套范式框架,在整个工业界一举奠定了风靡至今的模型框架,如下图所示:
在这个经典的 wide&deep 模型中,google 提出了两个概念:generalization ( 泛化性 ) 和 memory ( 记忆性 )。
1.记忆性:wide 部分长处在于学习样本中的高频部分,优点是模型的记忆性好,对于样本中出现过的高频低阶特征能够用少量参数学习;缺点是模型的泛化能力差,例如对于没有见过的 ID 类特征,模型学习能力较差。
2. 泛化性:deep 部分长处在于学习样本中的长尾部分,优点是泛化能力强,对于少量出现过的样本甚至没有出现过的样本都能做出预测 ( 非零的 embedding 向量 ),容易带来惊喜。缺点是模型对于低阶特征的学习需要用较多参数才能等同 wide 部分效果,而且泛化能力强某种程度上也可能导致过拟合出现 bad case。尤其对于冷启动的一些 item,也有可能用用户带来惊吓。
Google 的 wide&deep 框架固然强大,但由于 wide 部分是个 LR 模型,仍然需要人工特征工程。华为诺亚方舟团队结合 FM 相比 LR 的特征交叉的功能,在2017年提出了 deepFM,将 wide&deep 部分的 LR 部分替换成 FM 来避免人工特征工程,如下图所示:
DeepFM有着如下特点:
前面提到的各种网络结构中的 FM 在做特征交叉时,让不同特征的向量直接做交叉,基于的假设是各个特征交叉对结果的贡献度是一样的。这种假设往往不太合理,原因是不同特征对最终结果的贡献程度一般是不一样的。AFM模型通过引入attention机制来解决这个问题。
目前为止讲到的模型中,使用到 attention 的是 AFM 模型,而在 AutoInt 文章中,作者除了 attention 机制,还使用了在 transform 中很火的 multi-head 和 self-attention 的概念,整体框架如图所示。
声明:转载于https://zhuanlan.zhihu.com/p/101136699,如有侵权,联系删除,谢谢!