powerdesigner中cmd模型中多对多_推荐系统中的深度匹配模型(中)

本文深入探讨了推荐系统中的深度学习模型,包括NeuMF、NNCF和ONCF等基于NCF框架的方法,以及transRec和LRML等基于translation框架的模型。这些模型利用神经网络和矩阵分解技术,旨在捕捉用户和物品的高阶特征交叉和关系,提高推荐的准确性。此外,还介绍了feature-based模型如wide&deep、deep crossing和PNN等,强调了特征交叉在模型中的重要性。
摘要由CSDN通过智能技术生成

下文要讲的模型,也是在模型结构或者特征层面做的各种变化。

4.1.1.1 NeuMF 模型 ( Neural Matrix Factorization )

Neural MF,顾名思义,同时利用了 MF 和神经网络 MLP 的能力来拟合 matching score;MF 利用向量内积学习 user 和 item 的关联,同时 MLP 部分捕捉两者的其他高阶信息。这篇 paper 其实和 NCF 框架是出自同一篇 paper 的。模型可以分为 GMF 和 MLP 两个部分来看,如图4.4所示。

1cc66835572b2f34e48351b9e7d5413c.png

图4.4 NeuMF 模型结构框架

❶ GMF ( General Matrix Factorization ) 部分

User 和 item 都通过 one-hot 编码得到稀疏的输入向量,然后通过一个 embedding 层映射为 user vector 和 item vector。这样就获得了 user 和 item 的隐向量,一般可以通过向量点积或者哈达马积 ( element-wide product ) 得到交互,不过在 NeuMF 中多连接了一个连接层,也就是 GMF layer:

810eb0338e9a04fdfd2149f9747951b1.png

❷ MLP 部分

输入和 GMF 部分一样,都是 one-hot 的稀疏编码,然后通过 embedding 层映射为 user vector 和 item vector。注意到这里 user 和 item 的 vector 和 GMF 部分是不一样的,原因是 GMF 和 MLP 两个网络结构对隐层维度要求不同,MLP 部分会高一些 ( 个人感觉 share embedding 能更充分训练 embedding )。

Embedding 层之后就是几层常规的 MLP,这块没什么好说的,最后一层输出作为 MLP 的 output。

5daa3a68db4264be45715be774aa0aa9.png

4.1.1.2 NNCF 模型 ( Neighbor-based NCF )

CIKM2017 提出的一种基于 neighbor 的 NCF 方法,最大的不同在于输入除了 user 和 item 的信息,还各自引入了 user 和 item 各自的 neighbor 信息。

72d3f449a0b6011ea65f2f9c1a3c13cc.png

图4.5 NNCF 模型框架

图4.5所示的输入由两部分组成,中间 xu 和 yi 为原始的 user 和 item 的 one-hot 输入,通过 embedding 层后映射为 pu 和 qi 的 embedding 向量,然后通过哈达马积作为 MLP 的输入。而输入层两侧的 nu 和 ni 是 user 和 item 各自的 neighbor 信息的输入,这里 nu 和ni 信息如何提取可以采用多种手段,如二部图挖掘,user-CF 或者 item-CF 等。

对于 neighbor 信息,由于每个用户和 item 的 neighbor 数不一致,输入是不定长的,通过卷积和 pooling 后提取得到定长的 embedding,然后和 user 以及 item 本身的向量 concat 后输入到模型中:

ddef8dccc15da37f026a079cd2f5dd8a.png

4.1.1.3 ONCF 模型 ( Outer-Product based NCF )

何向南博士2018年在 NCF 模型框架上提出了 outer-product based NCF,在原有的 NCF 框架上,引入了 outer product 的概念,如图4.6所示。

373f74fe94592bdc425984d7ff530c1c.png

图4.6 ONCF 模型框架

在 embedding layer 之后,O-NCF 模型引入了 interaction map 也就是特征交叉层,对于用户 u 的向量 pu 和物品 i 的向量 qi,引入两者的 outer-product:

0c93c8ddf3430185cf5d7820bdaf3ff4.png

E 是一个 k*k 维的矩阵,其中的每个 element 两两相乘,得到2维的矩阵。到这,可以通过把二维矩阵展开变成一个 k2 维度的向量,作为 MLP 的输入。假设 k=64,那么 E 就是个4096的向量,每一层隐层单元个数设置为上一层的一半,那么第一层的维度为4096*2048约需要840万的网络参数需要训练,参数量非常巨大。

因此,文章提出了一种利用 CNN 局部连接共享参数的方法来减少 embedding layer 到 hidden layer 之间的参数,如图4.7所示。

a21869db11b9296b199cf7b61309a675.png

图4.7 ConvNCF 模型框架

假设隐层维度 K=64,有6层 hidden layer,每一层有32个卷积核 ( feature map ),步长 stride=2,那么经过每个卷积核后的 feature map 大小为原来的1/4 ( 长和宽各少了一半 )。以第一层卷积为例:

fdcdaf7b8521d9043dd1de00d95e51aa.png

那么第一层卷积后得到的网络是个32*32*32的3维 vector,其中最后一个32代表 feature map 个数。这里如何体现特征交叉的思想呢?ei,j,c 代表的就是在前一层的 feature map 中,第 i 个单元和第 j 个 element 的二阶交叉。第一层 feature map 中,每个单元提取的是上一层2*2区域的 local 连接信息,第三层提取的就是第一层4*4的信息,那么在网络的最后一层就能提取到原始 feature map 里的 global 连接信息,从而达到高阶特征提取的目的。

总结来说,使用原始的 outer-product 思想,在第一层网络处有近千万的参数需要学习,而使用 CNN 网络一方面能够减少参数量,另一方面又同时提取了低阶和高阶特征的组合。个人觉得引入 CNN 固然能节省内存,但也同时会带来训练和推理时间的增加,是一种时间换空间的思想。另外用 CNN 是否能够比原始 MLP 更有效拟合特征组合也需要结合数据分布去看。

4.1.1.4 小结

基于 NCF 框架的方法基础原理是基于协同过滤,而协同过滤本质上又是在做 user 和 item 的矩阵分解,所以,基于 NCF 框架的方法本质上也是基于 MF 的方法。矩阵分解本质是尽可能将 user 和

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值