

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 用于在图形上进行机器学习的 Amazon Neptune ML
<a name="machine-learning"></a>

大型互联数据集中通常存在有价值的信息，仅使用基于人类直觉的查询很难提取这些信息。机器学习 (ML) 技术可以帮助在具有数十亿个关系的图形中找到隐藏的相关性。这些相关性可能有助于推荐产品、预测信用价值、识别欺诈行为以及许多其它事情。

Neptune ML 特征可以在几小时而不是几周内在大型图形上构建和训练有用的机器学习模型。[为了实现这一目标，Neptune ML使用了由[亚马逊 SageMaker 人工智能](https://aws.amazon.com/sagemaker/)和[深度图库（DGL）（开源）提供支持的图神经网络（GNN）](https://www.dgl.ai/)技术。](https://github.com/dmlc/dgl/)图形神经网络是人工智能中的一个新兴领域（例如，请参阅[图形神经网络综合调查](https://arxiv.org/abs/1901.00596)）。有关使用 DGL 的动手教程，请参阅 GNNs 使用 Dee [p Graph Library 学习图神经网络](https://www.amazon.science/videos-webinars/learning-graph-neural-networks-with-deep-graph-library)。

**注意**  
在 Neptune ML 模型中，图形顶点标识为“节点”。例如，顶点分类使用节点分类机器学习模型，而顶点回归使用节点回归模型。

## Neptune ML 能做什么
<a name="machine-learning-capabilities"></a>

Neptune 既支持转导推理，也支持归纳推理，前者返回训练时根据当时的图形数据预先计算的预测，后者根据当前数据实时返回应用的数据处理和模型评估。请参阅[归纳推理和转导推理的区别](machine-learning-overview-evolving-data.md#inductive-vs-transductive-inference)。

Neptune ML 可以训练机器学习模型以支持五种不同的推理类别：

**Neptune ML 目前支持的推理任务类型**
+ **节点分类** – 预测顶点属性的分类特征。

  例如，给定电影《肖申克的救赎》**，Neptune ML 可以根据候选 `[story, crime, action, fantasy, drama, family, ...]` 集，将其 `genre` 属性预测为 `story`。

  有两种类型的节点分类任务：
  + **单类分类**：在这种任务中，每个节点只有一个目标特征。例如，`Alan Turing` 的属性 `Place_of_birth` 的值为 `UK`。
  + **多类分类**：在这种任务中，每个节点可以有多个目标特征。例如，电影《教父》**的属性 `genre` 具有值 `crime` 和 `story`。
+ **节点回归** – 预测顶点的数值属性。

  例如，给定电影《复仇者联盟：残局》**，Neptune ML 可以预测其 `popularity` 属性的值为 `5.0`。
+ **边缘分类** – 预测边缘属性的分类特征。

  有两种类型的边缘分类任务：
  + **单类分类**：在这种任务中，每个边缘只有一个目标特征。例如，用户和电影之间的评分边缘可能具有属性 `liked`，其值为“是”或“否”。
  + **多类分类**：在这种任务中，每个边缘可以有多个目标特征。例如，用户和电影之间的评分可能有多个属性标签值，例如“Funny”、“Heartwarming”、“Chilling”等。
+ **边缘回归** – 预测边缘的数值属性。

  例如，用户和电影之间的评分边缘可能具有数值属性 `score`，Neptune ML 可以针对给定的用户和电影预测其值。
+ **链接预测** – 预测特定源节点和传出边缘最有可能的目标节点，或者预测给定目标节点和传入边缘最有可能的源节点。

  例如，对于药物疾病知识图谱（以给定 `Aspirin` 作为源节点和 `treats` 作为传出边缘），Neptune ML 可以将最相关的目标节点预测为 `heart disease`、`fever` 等。

  或者，对于维基媒体知识图谱（以 `President-of` 作为边缘或关系，并以 `United-States` 作为目标节点），Neptune ML 可以将最相关的领导人预测为 `George Washington`、`Abraham Lincoln`、`Franklin D. Roosevelt` 等。

**注意**  
节点分类和边缘分类仅支持字符串值。这意味着不支持诸如 `0` 或 `1` 之类的数值属性值，但支持等同的字符串 `"0"` 和 `"1"`。同样，布尔属性值 `true` 和 `false` 不起作用，但 `"true"` 和 `"false"` 起作用。

借助 Neptune ML，您可以使用分为两大类的机器学习模型：

**Neptune ML 目前支持的机器学习模型类型**
+ **图神经网络 (GNN) 模型** — 这些模型包括[关系图卷积网络 (R](https://arxiv.org/abs/1703.06103)-)。GCNsGNN 模型适用于上述所有三种类型的任务。
+ **知识图谱嵌入 (KGE) 模型** – 这些模型包括 `TransE`、`DistMult` 和 `RotatE` 模型。它们仅适用于链接预测。

**用户定义的模型** – Neptune ML 还允许您为上面列出的所有类型的任务提供自己的自定义模型实现。在将 Neptune ML 训练 API 用于模型之前，您可以使用 [Neptune ML 工具包](https://github.com/awslabs/neptuneml-toolkit)来开发和测试基于 python 的自定义模型实现。有关如何构造和组织实现以使其与 Neptune ML 的训练基础设施兼容的详细信息，请参阅[Neptune ML 中的自定义模型](machine-learning-custom-models.md)。