

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 用於圖形上機器學習的 Amazon Neptune ML
<a name="machine-learning"></a>

在大型連線的資料集中通常會有珍貴的資訊，但很難僅根據人類的直覺使用查詢來擷取這些資訊。機器學習 (ML) 技術可以協助在具有數十億個關係的圖形中找出隱藏的關聯性。這些關聯性可能有助於推薦產品、預測信用度，識別詐欺等等。

Neptune ML 功能可讓您在數小時而不是數週的時間內，在大型圖形上建置並訓練有用的機器學習模型。為了達成此目的，Neptune ML 使用採用 [Amazon SageMaker AI ](https://aws.amazon.com/sagemaker/)和 [Deep Graph Library (DGL) （開放原始碼） 技術的圖形神經網路 (](https://www.dgl.ai/)GNN) 技術。 [https://github.com/dmlc/dgl/](https://github.com/dmlc/dgl/)圖形神經網路是人工智慧的新興領域 (例如，請參閱[圖形神經網路的全面調查](https://arxiv.org/abs/1901.00596))。如需有關使用 GNN 搭配 DGL 的實作教學課程，請參閱[使用 Deep 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 目前支援的推論任務類型**
+ **節點分類** – 預測頂點屬性的類別特徵。

  例如, 鑑於電影 *The Shawshank Redemption*，Neptune ML 可以從 `[story, crime, action, fantasy, drama, family, ...]` 的候選集將其 `genre` 屬性預測為 `story`。

  有兩種類型的節點分類任務：
  + **單一類別分類**：在這種任務中，每個節點只有一個目標特徵。例如，`Alan Turing` 的屬性 `Place_of_birth` 具有值 `UK`。
  + **多類別分類**：在這種任務中，每個節點可有多個目標特徵。例如，影片 *The Godfather* 的屬性 `genre` 具有值 `crime` 和 `story`。
+ **節點迴歸** – 預測頂點的數值屬性。

  例如，鑑於電影 *Avengers: Endgame*，Neptune ML 可以預測其屬性 `popularity` 具有 `5.0` 一值。
+ **邊緣分類** – 預測邊緣屬性的類別特徵。

  有兩種類型的邊緣分類任務：
  + **單一類別分類**：在這種任務中，每個邊緣只有一個目標特徵。例如，使用者與電影之間的評分邊緣可能具有屬性 `liked`，其值為「Yes」或「No」。
  + **多類別分類**：在這種任務中，每個邊緣可有多個目標特徵。例如，使用者與電影之間的評分可能會對「Funny」、「Heartwarming」、「Chilling」等屬性標籤具有多個值。
+ **邊緣迴歸** – 預測邊緣的數值屬性。

  例如，使用者與電影之間的評分邊緣可能具有數值屬性 `score`，Neptune ML 可以鑑於使用者和電影針對該屬性預測一值。
+ **連結預測** – 為特定來源節點和傳出邊緣預測最有可能的目的地節點，或為給定的目的地節點和傳入邊緣預測最有可能的來源節點。

  例如，透過藥物疾病知識圖譜，假設 `Aspirin` 作為來源節點，且 `treats` 作為傳出邊緣，Neptune ML 可以將最相關的目的地節點預測為 `heart disease`、`fever` 等等。

  或者，透過 Wikimedia 知識圖譜，假設 `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）模型** – 其中包含 [Relational Graph Convolutional Networks (R-GCNs)](https://arxiv.org/abs/1703.06103)。GNN 模型適用於上述所有三種類型的任務。
+ **知識圖譜嵌入 (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)。