点击上方,选择星标,每天给你送干货!


炼丹笔记干货

作者:十方

推荐系统会存储大量的用户与items交互数据,这些数据可以用二部图呈现。二部图对消除推荐系统中数据稀疏性和冷启动有着巨大的帮助。这篇主要总结了3个典型的GNN方法在推荐系统领域处理用户与items的二部图。

user-item二部图

我们可以通过每个用户交互过的item列表,构建一个巨大的二部图,如下图所示:

传统的神经网络方法(如协同过滤,双塔),是无法处理上述二部图的,图神经网络就是要充分挖掘节点信息和节点与节点的交互信息,从而带来巨大的商业价值。

在推荐领域,图神经网络主要解决了以下几个问题:

  • 节点的敏感度,节点顺序很小的改变极大的影响模型的输出。

  • 节点间闭塞的信息交互,传统的深度学习模型不能够充分挖掘高阶节点之间的交互信息。

  • 解释能力弱,传统的深度模型面向直观的交互式图结构,不能用于基于图形的解释和推理。

当使用GNN处理二部图,输入节点的顺序并不会影响输出。另外,GNN使用边的去辅助传播、集成节点和邻居的状态,更新当前节点的状态,结构化的信息会被模型捕捉,并表达在每个节点上,从而解决推荐系统稀疏性的问题。

embedding 层

embedding层主要研究如何获得交互图和一系列节点的特征,并使用此信息生成节点embedding,从而生成子图和整个图的embedding。这一层的作用是学习一个低维的向量表示,作为图神经网络模型的输入。在在早期的推荐系统中,提取用户和item的特征应用最广泛的是矩阵分解(MF),如概率矩阵分解(PMF),偏差矩阵因子分解(BiasedMF)、神经网络矩阵因子分解(NNMF)等。然而,这些方法都有很大的缺点。每次分解都需要很长的时间复杂性与较高的空间复杂性,并不能完全探究用户和item之间的隐含关系,导致推荐效果不理想。从DeepWalk算法首次应用,各种深度学习embeding方法层出不穷。

最简单的方法是使用浅层嵌入方法生成节点的唯一低维向量表示,即在初始步骤中,每个用户和item被定义为唯一ID并直接映射成embedding。这种设计的优点是模型可互换,不变形。互换性的不变性在于该模型不依赖于邻接矩阵中行列的任意顺序,弥补了深度模型对节点输入顺序高度敏感的缺陷。

传播更新层

传播更新层是GNN推荐系统模型的核心组成部分,包括两个阶段:邻居节点信息传递,聚合和更新(下图)。嵌入层解决了图数据很难高效地输入推荐算法。下一步是解决深层模型消息传输路径阻塞问题及解决方案长距离节点的信息传播问题,然后是邻居信息可以聚合在一起,为解决推荐系统中数据的稀疏性问题提供了一种可行的思路的。在每个消息传递迭代过程中,每个节点u对应的embeding可以通过图的所有邻居节点N(u)聚合进行更新,因此传播更新层可以抽象地定义为:

卷积聚合器

图卷积聚合器使用中心节点及其相邻节点的embedding的聚合来表示中心节点,并进行迭代传播,从邻居节点聚合嵌入的特征信息,并且只有一个卷积运算变换并聚合一阶图的邻域的嵌入表示,通过叠加多层图卷积网络,达到传播远处多级的信息的目的。最后更新当前节点的嵌入表示。如GraphSAGE提出了一种小批量聚合算法,它在一次更新没使用所有的邻居节点,对邻居节点中的特征进行采样,并将更新后的最终状态用于预测和反向传播。PinSage框架下使用局部图卷积运算从邻居节点聚合信息。图卷积聚合可以抽象地定义为:

门聚合器

经典的长、短期记忆循环神经网络系统已经被证明对于学习序列数据的动态特性非常有效,其中GRU和LSTM中的输入输出门机制可以保持长期的内部状态。门控图神经网络(GGNN)使用一个门递归单元在固定步数的传播过程去更新聚合节点的隐藏状态。门聚合可以抽象地定义为:

注意力聚合器

注意机制几乎已经成为处理序列数据任务的必用方法,已成功应用于机器翻译和机器阅读。注意力机制可以区分不同节点的重要性。例如,购物场景下,最近购买的产品相比那些几个月前购买的产品更有参考价值。在传播过程中加入注意机制可以给邻居节点赋权,通过不同的attention score对邻居节点的embedding进行聚合。注意力聚合器可以抽象地定义为:

预估层

在多层传播之后,从每个层获得的embeding被拼接在一起作为用户或item的最终特征。除了拼接,其他的组合方法,如加权平均、最大池和LSTM,都可以。有研究表明证明了拼接是最简单且有效的,且它不涉及其他参数需要学习。最后,计算用户与item之间的内积用来预测用户的未来行为:

结论

本篇总结了一些GNN在推荐系统的应用,其实还有很多gnn算法没有介绍,如KGAT,融合了知识图谱辅助推荐。再如KARN和SCPR这两个模型,不是选出来一个匹配商品集就完事了,还要在图中找出来对应的路径作为推荐的解释,感兴趣的读者可以去查阅相关资料。

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

推荐两个专辑给大家:

专辑 | 李宏毅人类语言处理2020笔记

专辑 | NLP论文解读

专辑 | 情感分析


整理不易,还望给个在看!

推荐系统与GNN擦出的火花竟如此绚丽多彩相关推荐

  1. c语言修仙受控可看吗,强推三本神奇到爆的小说,c语言修仙,程序员与修真会擦出什么火花...

    大家好,我是小龙.今天我给大家推荐三本神奇到爆的小说,c语言修仙,程序员与修真会擦出什么火花! 一<c语言修仙>[一十四洲] [简介]: 林浔是一个程序员,通宵编代码后发现自己身体内多了一 ...

  2. 光明日报:当教育遇上区块链,会擦出什么火花

    说起现在最火的新兴技术,区块链必是处在风口上的答案之一.日前,京津冀大数据教育区块链试验区成立,为"区块链+教育"的融合发展之路,提供了一个新的窗口. 当传统的教育行业与区块链相遇 ...

  3. 5G,上天了!卫星和基站擦出了火花?

    大家好,我是无线深海,我们好久不见. 本期我们来聊聊卫星通信,以及卫星通信和地面通信的融合:非地面网络的故事. 对于5G来说,这可能只是后半场的锦上添花:但对仍处于畅想中的6G来说,空天地海一体化通信 ...

  4. Golang 和 lua 相遇会擦出什么火花?

    在 GitHub 玩耍时,偶然发现了 gopher-lua ,这是一个纯 Golang 实现的 Lua 虚拟机.我们知道 Golang 是静态语言,而 Lua 是动态语言,Golang 的性能和效率各 ...

  5. 机器学习 + NFT,跨界联合可以擦出什么火花?

    前几天在Github上看到一个用SN-GAN技术生成punk的项目,项目地址:https://github.com/teddykoker/cryptopunks-gan,跑了一遍感觉很有趣,所以就研究 ...

  6. 安搭Share:当色彩与文物碰撞会擦出什么火花

    每年流行色的发布,都会引发新一轮设计风尚,那么当色彩与文物碰撞会有怎样的呈现呢,如果你有这样的好奇心,不妨一起来看看色彩微妙变化与文物的碰撞. 中国传统正五色主要有青.赤.黄.白.黑,"五色 ...

  7. 当稳定币遇上BCH,将会擦出什么样的火花?

    2019独角兽企业重金招聘Python工程师标准>>> 当稳定币遇上BCH,将会擦出什么样的火花? 币圈太黑了,什么都割,我空仓都被割,拿着USDT都被割-- 2018年10月15日 ...

  8. 5G与智慧杆将擦出什么样的火花?

    伴随着5G时代如火如荼地发展,整合了监控摄像头.5G微基站等硬件,通过信息感知和大数据交互技术,能实现智慧交通.信息发布等功能的智慧灯杆正在城市建设中广泛应用. 那么,问题来了! 在这样的大环境下, ...

  9. 《皇室战争》牵手《奇葩说》第五季,游戏和辩论将会擦出怎样的火花?

    <皇室战争>牵手<奇葩说>第五季,游戏和辩论将会擦出怎样的火花? 知名手游<皇室战争>近日大动作不断,继抖音首个超级挑战活动结束之后,这次开发商Supercell又 ...

  10. 当量子计算和机器学习相遇,会碰撞出什么火花?

    https://3w.huanqiu.com/a/564394/7LHofkwRmxi?agt=20 没有人会怀疑,量子计算和机器学习是当前最炙手可热的两个研究领域. 在量子计算方面,理论和硬件的一个 ...

最新文章

  1. QT删除QWidget或QLayout下的控件
  2. Visual Studio 2017 15.9预览版3支持ARM64 for UWP
  3. Oracle 宣布 Java EE 8 推迟到2017年年底发布
  4. Collectors.maxBy()和minBy()
  5. SQL Server触发器更新原理
  6. Python实现的文件夹同步
  7. java ojdbc6_JAVA JDBC在连接ORACLE数据库时出现ojdbc6.jar has no source 问题?
  8. 搭建sql注入平台及DVWA漏洞环境
  9. python可读性好吗_Python 输出可读性更好的时间文本
  10. 新项目筹划中。。。。
  11. 调用国家气象局天气接口
  12. 用matlab做矩阵变换(理解+实践);假设随机发给某班所有同学任意数字,生成10*5的矩阵
  13. 俄罗斯公司开发者提交开源代码被拒,Linux 内核维护者: 我们不愿意接受
  14. 润肺健脾,试试3款靓汤
  15. 企业级刀片式服务器和盘柜的能效比较
  16. 事业编职业技能测试刷题软件,事业单位考试做题软件哪个好?试试这个简直不要太好用啦!...
  17. 【翻译】硅谷创业教父保罗·格雷厄姆:做不可拓展的事 Do things that don't scale...
  18. 计算机应用对教学的影响,计算机应用教学存在的主要问题及对策
  19. Matlab 标定工具箱使用教程
  20. 基于DCT变换的JPEG图像压缩原理与JPEG2000编解码原理

热门文章

  1. [Web 前端] 018 css 清除浮动的四种方法
  2. ios客户端快速滚动和回弹效果的实现
  3. MAC OS Finder 中快速定位指定路径
  4. mac 下php运行bug
  5. UIWebView关于XMLHttpRequest的内存泄漏
  6. Asp.net can do Native Code also can do it(updated)
  7. 【leetcode】遍历二叉树从跟到叶子的核心代码
  8. 【linux】centos7下muduo库的安装
  9. C++多态的练习——编写一个计算器项目
  10. 【转】到底什么时候应该用MQ