推荐系统是在从社交网络到电子商务平台的实际应用中采用最广泛的机器学习 (ML) 技术之一。 许多在线系统的用户依靠推荐系统结交新朋友,根据推荐的音乐列表发现新音乐,甚至根据推荐的产品做出电子商务购买决定。 在社交网络中,一个常见的用例是根据用户的其他关系向用户推荐新朋友。 有共同朋友的用户可能彼此认识。 因此,如果他们还没有连接,他们应该有更高的推荐系统分数来推荐。
社交网络可以自然地用图来表示,其中节点代表人,人与人之间的联系(例如友谊或同事)由边表示。 下面说明了一个这样的社交网络。 假设我们有一个社交网络,成员(节点)有 Bill、Terry、Henry、Gary 和 Alistair。 他们的关系由一条链接(边)表示,每个人的兴趣,如体育、艺术、游戏和漫画,由节点属性表示。
这里的目标是预测成员之间是否存在潜在的缺失链接。 例如,我们应该推荐 Henry 和 Terry 之间的联系吗? 查看图表,我们可以看到他们有两个共同的朋友,Gary 和 Alistair。 因此,很有可能亨利和特里要么已经认识,要么很快就会认识。 亨利和比尔呢? 他们没有任何共同的朋友,但通过朋友的关系,他们确实有一些微弱的联系。 此外,他们都对艺术、漫画和游戏有着相似的兴趣。 我们应该促进这种联系吗? 所有这些问题和直觉都是社交网络推荐系统的核心逻辑。
一种可能的方法是基于图形探索推荐关系。 在图形查询语言中,例如 Apache TinkerPop Gremlin,计算共同好友等规则集的实现相对容易,可以用来判断Henry和Terry之间的联系。 然而,当我们要考虑节点属性、连接强度等其他属性时,这些规则集将非常复杂。让我们想象一个规则集来确定亨利和比尔之间的联系。 这个规则集必须考虑到他们的共同利益和他们通过图中某些路径的薄弱联系。 为了增加鲁棒性,我们可能还需要添加一个距离因子来支持强连接并惩罚弱连接。 同样,我们想要一个有利于共同利益的因素。 很快,可以揭示复杂隐藏模式的规则集将变得无法枚举。
机器学习技术让我们通过学习算法发现隐藏的模式。 一个例子是 XGBoost,它广泛用于分类或回归任务。 但是,XGBoost 等算法使用基于表格数据格式的传统 ML 方法。 这些方法并未针对图形数据结构进行优化,并且它们需要复杂的特征工程来处理这些数据模式。
在前面的社交网络示例中,图形交互信息对于提高推荐准确性至关重要。 图神经网络 (GNN) 是一种深度学习 (DL) 框架,可应用于图数据以执行边级、节点级或图级预测任务。 GNN 在学习图形表示和底层模式时可以利用单个节点特征以及图形结构信息。 因此,近年来,基于 GNN 的方法在许多推荐系统基准测试中树立了新的标准。 在最近的研究论文中查看更多详细信息: 图神经网络综合综述 和 基于图学习的推荐系统:综述.
以下是此类用例的一个著名示例。 Pinterest 的研究人员和工程师接受过培训 用于网络规模推荐系统的图卷积神经网络,称为 PinSage,有 18 亿个节点代表引脚和电路板,以及 XNUMX 亿条边。 PinSage 生成代表图钉(在线内容的可视书签)的高质量嵌入。 这些可用于广泛的下游推荐任务,例如用于内容发现和推荐的学习嵌入空间中的最近邻查找。
在这篇文章中,我们将通过将 GNN 转化为链接预测问题来向您介绍如何将 GNN 用于推荐用例。 我们还将说明 Neptune ML 如何促进实施。 我们还将提供 GitHub 上的示例代码 使用 Neptune ML 训练您的第一个 GNN,并通过链接预测任务对演示图进行推荐推理。
使用图形神经网络进行链接预测
考虑到前面的社交网络示例,我们想向 Henry 推荐新朋友。 特里和比尔都是不错的候选人。 特里和亨利有更多共同的朋友(加里、阿利斯泰尔),但没有共同的兴趣。 虽然比尔与亨利有共同的兴趣(艺术、漫画、游戏),但没有共同的朋友。 哪一个会是一个更好的建议? 当构建为链接预测问题时,任务是为两个节点之间的任何可能链接分配分数。 链接得分越高,该推荐收敛的可能性就越大。 通过学习图中已经存在的链接结构,链接预测模型可以概括“完成”该图的新链接预测。
函数的参数 f
预测链接分数的方法是在训练阶段学习的。 由于函数 f
对图中的任意两个节点进行预测,与节点关联的特征向量对于学习过程至关重要。 为了预测 Henry 和 Bill 之间的链接分数,我们有一组可以代表 Henry 和 Bill 的原始数据特征(艺术、漫画、游戏)。 我们使用 GNN 网络对其进行转换以及图中的连接,以形成称为节点嵌入的新表示。 我们还可以使用来自嵌入查找表的向量来补充或替换初始原始特征,这些向量可以在训练过程中学习。 理想情况下,Henry 和 Bill 的嵌入式特征应该代表他们的兴趣以及他们在图中的拓扑信息。
GNN 的工作原理
GNN 通过使用称为的技术将初始节点特征转换为节点嵌入 信息传递. 消息传递过程如下图所示。 一开始,节点属性或特征被转换成数字属性。 在我们的例子中,我们对分类特征进行一次性编码(Henry 的兴趣:艺术、漫画、游戏)。 然后,GNN 的第一层聚合所有邻居(Gary 和 Alistair)的原始特征(黑色)以形成一组新的特征(黄色)。 一种常见的做法是对所有相邻特征进行线性变换,然后通过归一化求和将它们聚合,并将结果传递给非线性激活函数,例如 ReLU,生成新的向量集。 下图说明了消息传递如何为节点工作 Henry. H,GNN 消息传递算法,将计算所有图形节点的表示。 这些稍后用作第二层的输入特征。
GNN 的第二层重复相同的过程。 它将先前从第一层计算出的特征(黄色)作为输入,聚合所有 Gary 和 Alistair 的邻居的新嵌入特征,并为 Henry(橙色)生成第二层特征向量。 如您所见,通过重复消息传递机制,我们将特征聚合扩展到 2 跳邻居。 在我们的示例中,我们将自己限制为 2 跳邻居,但可以通过添加另一个 GNN 层以相同的方式扩展到 3 跳邻居。
Henry 和 Bill(橙色)的最终嵌入用于计算分数。 在训练过程中,当两个节点之间存在边(正样本)时,链接分数被定义为1,当两个节点之间不存在边(负样本)时,链接分数被定义为0。 然后,实际得分与预测之间的误差或损失 f(e1,e2)
被反向传播到前面的层以调整权重。 训练完成后,我们可以依靠每个节点的嵌入特征向量来使用我们的函数计算它们的链接分数 f
.
在这个例子中,我们简化了学习任务 齐次图,其中所有节点和边都属于同一类型。 例如,图中所有的节点都是“People”类型,所有的边都是“friends with”类型。 但是,学习算法还支持具有不同节点和边类型的异构图。 我们可以扩展之前的用例,向具有相似交互和兴趣的不同用户推荐产品。 在这篇研究论文中查看更多详细信息: 使用图卷积网络建模关系数据.
在 AWS re:Invent 2020 上,我们介绍了 亚马逊海王星机器学习,这让我们的客户可以在图形数据上训练 ML 模型,而无需具备深厚的 ML 专业知识。 在此示例中,借助 Neptune ML,我们将向您展示如何基于图形数据构建您自己的推荐系统。
使用 Amazon Neptune ML 训练您的图形卷积网络
Neptune ML 使用图形神经网络技术在图形数据上自动创建、训练和部署 ML 模型。 Neptune ML 支持常见的图预测任务,如节点分类与回归、边分类与回归、链路预测等。
它的动力来自:
- 亚马逊海王星:一个快速、可靠且完全托管的图形数据库,它针对存储数十亿关系和以毫秒延迟查询图形进行了优化。 Amazon Neptune 支持三种构建图形应用程序的开放标准:Apache TinkerPop Gremlin、RDF SPARQL 和 openCypher。 了解更多信息 Amazon Neptune 功能概述。
- 亚马逊SageMaker:一项完全托管的服务,可为每位开发人员和数据科学家提供快速准备构建、训练和部署 ML 模型的能力。
- 深度图库(DGL):一个 开放源码,高性能和可扩展的 Python 包,用于图上的深度学习。 它为训练图形神经网络提供快速且内存高效的消息传递原语。 Neptune ML 使用 DGL 自动为您的工作负载选择和训练最佳 ML 模型。 这使您能够在数小时而不是数周内对图形数据进行基于 ML 的预测。
开始使用 Neptune ML 的最简单方法是使用 AWS CloudFormation 快速入门模板. 该模板安装所有必要的组件,包括 Neptune 数据库集群,并设置网络配置、IAM 角色和关联的 SageMaker 笔记本实例,其中包含用于 Neptune ML 的预填充笔记本示例。
下图说明了 Neptune ML 训练基于 GNN 的推荐系统的不同步骤。 让我们放大每个步骤并探索它涉及的内容:
-
数据导出配置
Neptune ML 流程的第一步是从 Neptune 集群导出图形数据。 我们必须指定数据导出任务的参数和模型配置。 我们使用 Neptune 工作台进行所有配置和推荐。 工作台让我们可以使用 Amazon SageMaker 托管的 Jupyter 笔记本来处理 Neptune 数据库集群。 此外,它在笔记本中提供了一些神奇的命令,可以节省大量的时间和精力。 这是我们的导出参数示例:
In export_params
,我们必须配置基本设置,例如 Neptune 集群和输出 亚马逊简单存储服务(S3) 导出数据存储路径。 中指定的配置 additionalParams
是要执行的 ML 任务的类型。 在此示例中,可选地使用链接预测来预测特定边缘类型(用户-朋友-用户)。 如果未指定目标类型,则 Neptune ML 将假定任务是链接预测。 这些参数还指定了有关存储在我们的图形中的数据的详细信息以及 ML 模型将如何解释该数据(我们将“用户”作为节点,将“兴趣”作为节点属性)。
要运行 ML 构建过程中的每个步骤,只需使用 Neptune 工作台命令即可。 这 海王星工作台 包含一个线魔术和一个单元魔术,可以为您节省大量管理这些步骤的时间。 要运行数据导出,请使用 Neptune 工作台命令: %neptune_ml export start
导出作业完成后,我们会将 Neptune 图导出为 CSV 格式并存储在 S3 存储桶中。 将有两种类型的文件: nodes.csv
和 edges.csv
. 一个名为 training-data-configuration.json
还将生成具有 Neptune ML 执行模型训练所需的配置的文件。
我们 从 Neptune 为 Neptune ML 导出数据 获取更多信息.
-
数据预处理
Neptune ML 在数据处理步骤中执行特征提取和编码。 常见的属性预处理类型包括:通过 one-hot 编码对分类特征进行编码,对数值特征进行分桶,或者使用 word2vec 对字符串属性或其他自由格式的文本属性值进行编码。
在我们的示例中,我们将简单地使用属性“interests”。 Neptune ML 将值编码为多分类。 但是,如果分类值很复杂(每个节点超过三个词),则 Neptune ML 会将属性类型推断为文本并使用 text_word2vec 编码。
要运行数据预处理,请使用以下 Neptune Notebook 魔术命令: %neptune_ml dataprocessing start
在此步骤结束时,将根据导出的数据集生成 DGL 图,供模型训练步骤使用。 Neptune ML 使用中定义的超参数优化调整作业自动调整模型 training-data-configuration.json
. 我们可以下载并修改这个文件来调优模型的超参数,比如batch-size、num-hidden、num-epochs、dropout等。下面是一个 示例 configuration.json 文件。
我们 处理从 Neptune 导出的图形数据进行训练 获取更多信息.
-
模型训练
下一步是 GNN 模型的自动化训练。 模型训练分两个阶段完成。 第一阶段使用 SageMaker Processing 作业生成模型训练策略。 这是一个配置集,用于指定将用于模型训练的模型类型和模型超参数范围。
然后,将启动 SageMaker 超参数调整作业。 这 SageMaker 超参数调整优化作业 在处理后的数据上运行预先指定数量的模型训练作业试验,根据 model-hpo-configuration.json
文件,并将训练生成的模型工件存储在输出 Amazon S3 位置。
要开始训练步骤,您可以使用 %neptune_ml training start
命令。
所有训练作业完成后,超参数调整作业将从性能最佳的模型中保存工件,这些工件将用于推理。
在训练结束时,Neptune ML 将指示 SageMaker 保存训练模型、为节点和边缘计算的原始嵌入以及嵌入和节点索引之间的映射信息。
我们 使用 Neptune ML 训练模型 获取更多信息.
-
在 Amazon SageMaker 中创建推理终端节点
现在已经学习了图形表示,我们可以将学习到的模型部署在端点后面以执行推理请求。 模型输入将是我们需要为其生成好友推荐的用户以及边缘类型,输出将是该用户可能推荐的好友列表。
要将模型部署到 SageMaker 端点实例,请使用 %neptune_ml endpoint create
命令。
-
使用 Gremlin 查询 ML 模型
一旦端点准备就绪,我们就可以将其用于图形推理查询。 Neptune ML 支持 Gremlin 或 SPARQL 中的图形推理查询。 在我们的示例中,我们现在可以使用 Neptune ML 检查用户“Henry”的好友推荐。 它需要几乎相同的语法来遍历边缘,并列出通过 FRIEND 连接连接到 Henry 的其他用户。
Neptune#ml.prediction
通过使用我们刚刚在社交图上训练的模型,返回由 Neptune ML 预测确定的连接。 Bill 就像我们期望的那样返回。
这是另一个示例预测查询,用于预测最有可能与 Henry 联系的前八位用户:
结果从强连接到弱连接,其中链接 Henry — FRIEND — Colin and Henry — FRIEND — Terry
还提出。 这个命题是通过基于图的 ML 来实现的,其中可以探索图上的复杂交互模式。
我们 Neptune ML 中的 Gremlin 推理查询 获取更多信息.
图数据变化时的模型转换或再训练
您可能会问的另一个问题是:如果我的社交网络发生变化,或者我想为新添加的用户提供建议怎么办? 在这些不断变化的图表场景中,您可能需要使用最新的图表数据更新 ML 预测。 训练后生成的模型工件直接与训练图相关联。 这意味着一旦原始训练图中的实体发生变化,就必须更新推理端点。
但是,您无需重新训练整个模型即可对更新后的图表进行预测。 使用增量模型推理工作流,您只需导出 Neptune DB 数据,执行增量数据预处理,运行模型批量转换作业,然后更新推理端点。 模型转换步骤将来自主工作流程的训练模型和增量数据预处理步骤的结果作为输入。 然后它输出一个新的模型工件用于推理。 这个新的模型工件是根据最新的图形数据创建的。
这里的一个特别重点是模型转换步骤命令。 它可以在未用于模型训练的图形数据上计算模型工件。 重新计算节点嵌入并覆盖任何现有节点嵌入。 Neptune ML 将从先前训练的模型中学习的 GNN 编码器应用到具有新特征的新图形数据节点。 因此,新的图数据必须使用相同的特征编码进行处理,并且必须遵循与原始图数据相同的图模式。 查看更多 Neptune ML 实施详细信息,请访问 生成新的模型工件.
此外,如果图表发生显着变化,或者如果之前训练的模型不能再准确地表示潜在的交互,您可以重新训练整个模型。 在这种情况下,在新图上重新使用学习到的模型参数不能保证相似的模型性能。 您必须在新图表上重新训练您的模型。 为了加速超参数搜索,Neptune ML 可以利用先前模型训练任务中的信息进行热启动:先前训练作业的结果用于选择超参数的良好组合以搜索新的调整作业。
我们 处理不断变化的图形数据的工作流程 以获得更多细节。
结论
在本文中,您了解了 Neptune ML 和 GNN 如何通过结合来自图形中复杂交互模式的信息,使用链接预测任务帮助您对图形数据提出建议。
链接预测是在图上实现推荐系统的一种方式。 您可以通过许多其他方式构建推荐系统。 您可以使用在链接预测训练期间学习的嵌入以无监督的方式将节点聚类到不同的段,并向属于同一段的节点推荐项目。 此外,您可以获得嵌入并将它们作为输入特征提供给下游基于相似性的推荐系统。 现在,这个额外的输入特征还对从图派生的语义信息进行编码,可以显着提高系统的整体精度。 通过访问了解有关 Amazon Neptune ML 的更多信息 官网 或者随时在评论中提问!
作者简介
崔艳伟, 博士,是 AWS 的机器学习专家解决方案架构师。 他在 IRISA(计算机科学与随机系统研究所)开始了机器学习研究,并在计算机视觉、自然语言处理和在线用户行为预测方面拥有数年构建人工智能驱动的工业应用的经验。 在 AWS,他分享领域专业知识并帮助客户释放业务潜力,并通过大规模机器学习推动可操作的成果。 工作之余,他喜欢阅读和旅行。
威尔巴德尔 是首席 AI/ML 专家 SA,是全球 Amazon 机器学习团队的一员。 Will 热衷于以创新方式使用技术对社区产生积极影响。 在业余时间,他喜欢潜水、踢足球和探索太平洋岛屿。
- '
- "
- 100
- 2020
- 7
- 关于
- 根据
- 账号管理
- 增加
- 额外
- 算法
- 算法
- 所有类型
- 已经
- Amazon
- 亚马逊机器学习
- 亚马逊SageMaker
- 阿帕奇
- 应用领域
- 人造的
- 人工智能
- 艺术
- 自动化
- AWS
- AWS re:Invent
- 开始
- 最佳
- 法案
- 亿
- 黑色
- 建立
- 建筑物
- 商业
- 例
- 挑战
- 分类
- 码
- 相当常见
- 社体的一部分
- 复杂
- 计算
- 计算机科学
- 计算机视觉
- 计算
- 配置
- 地都
- 连接
- 安慰
- 内容
- 汇集
- 可以
- 合作伙伴
- data
- 数据科学家
- 数据存储
- 数据库
- 处理
- 深入学习
- 开发商
- 不同
- 发现
- 距离
- 电子商务
- 边缘
- 端点
- 工程师
- 工程师
- 等
- 例子
- 体验
- 勘探
- 出口
- 萃取
- 高效率
- 专栏
- 特征
- 数字
- 姓氏:
- 专注焦点
- 申请
- 格式
- 骨架
- Free
- 友谊
- 功能
- Games
- 生成
- 全球
- 非常好
- 图神经网络
- 大
- 处理
- 帮助
- 帮助
- 此处
- 创新中心
- How To
- HTTPS
- IAM
- 影响力故事
- 实施
- 改善
- 包含
- 增加
- 个人
- 产业
- 信息
- 创新
- 房源搜索
- 相互作用
- 利益
- IT
- 工作
- 工作机会
- 语言
- 语言
- 学习用品
- 知道
- 学习
- 杠杆作用
- 自学资料库
- Line
- 友情链接
- 清单
- 书单
- 圖書分館的位置
- 寻找
- 查找
- 机器学习
- 成员
- 毫秒
- ML
- 模型
- 音乐
- 自然语言
- 自然语言处理
- 打印车票
- 邻居
- 网络
- 网络
- 神经
- 神经网络
- 神经网络
- 新功能
- 节点
- 笔记本电脑
- 在线
- 打开
- 其他名称
- 太平洋
- 纸类
- 员工
- 性能
- 相
- 平台
- 播放
- 平台精度
- 预测
- 预测
- 当下
- 校长
- 市场问题
- 过程
- 热销产品
- 本人简介
- 促进
- 财产
- 提供
- 提供
- 提供
- 采购
- 蟒蛇
- 题
- 范围
- 原
- 原始数据
- RE
- 阅读
- 回归
- 关系
- 更换
- 研究
- 成果
- 再培训
- 回报
- 运行
- sagemaker
- 鳞片
- 科学
- 搜索
- 集
- Share
- 分享
- 类似
- 简易
- 小
- 足球
- 社会
- 社会图
- 社交网络
- 社会网络
- 解决方案
- 太空
- 运动
- 阶段
- 标准
- 开始
- 开始
- 存储
- 商店
- 策略
- 补充
- 支持
- 调查
- 系统
- 产品
- 目标
- 技术
- 专业技术
- 图
- 通过
- 次
- 最佳
- 产品培训
- 改造
- 转型
- 更新
- us
- 用户
- 折扣值
- 愿景
- 什么是
- WHO
- 广泛
- 维基百科上的数据
- 也完全不需要
- 话
- 工作
- 工作流程
- 合作
- 将
- 年
- 放大