

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

# Object2Vec 演算法
<a name="object2vec"></a>

Amazon SageMaker AI Object2Vec 演算法是可充分自訂的一般用途神經嵌入演算法。它可以學習高維度物件的低維度密集內嵌。透過下列方式學習內嵌：將原始空間物件組之間的關係語意保留在內嵌空間中。例如，您可以使用學習的內嵌有效率地計算物件的最鄰近項，並視覺化低維度空間中相關物件的自然叢集。您也可以將內嵌做為下游監督式任務中對應物件的功能，例如分類或迴歸。

Object2Vec 將知名的 Word2Vec 內嵌技術一般化，用於在 SageMaker AI [BlazingText 演算法](blazingtext.md) 中最佳化的文字。如需討論如何套用 Object2Vec 至一些實際使用案例的部落格文章，請參閱 [Amazon SageMaker AI Object2Vec 簡介](https://aws.amazon.com/blogs/machine-learning/introduction-to-amazon-sagemaker-object2vec/)。

**Topics**
+ [Object2Vec 演算法的 I/O 介面](#object2vec-inputoutput)
+ [適用於 Object2Vec 演算法的 EC2 執行個體建議](#object2vec--instances)
+ [Object2Vec 範例筆記本](#object2vec-sample-notebooks)
+ [Object2Vec 的運作方式](object2vec-howitworks.md)
+ [Object2Vec 超參數](object2vec-hyperparameters.md)
+ [調校 Object2Vec 模型](object2vec-tuning.md)
+ [適用於 Object2Vec 訓練的資料格式](object2vec-training-formats.md)
+ [適用於 Object2Vec 推論的資料格式](object2vec-inference-formats.md)
+ [適用於 Object2Vec 的編碼器內嵌](object2vec-encoder-embeddings.md)

## Object2Vec 演算法的 I/O 介面
<a name="object2vec-inputoutput"></a>

您可以在多種輸入資料類型上使用 Object2Vec，包括下列範例。


| 輸入資料類型 | 範例 | 
| --- | --- | 
| 句子/句子對 | “多名男性參與的一場足球比賽。” 和 “一些男士正在運動。” | 
| 標籤/序列對 | 影片 “鐵達尼號” 的風格標籤，例如 “浪漫” 和 “戲劇”，以及其簡短說明：“詹姆斯卡梅隆的鐵達尼號是一部史詩級精彩紛呈的浪漫故事，但 R.M.S. 鐵達尼號的首航卻發生不幸。她是她那個時代最奢華的郵輪 (一艘夢之船)，最終在1912 年 4 月 15 日凌晨於北大西洋的冰冷水域中造成 1,500 多人死亡。” | 
| 客戶/客戶對 | Jane 的客戶 ID 和 Jackie 的客戶 ID。 | 
| 產品/產品對 | 足球的產品 ID 和籃球的產品 ID。 | 
| 項目審核使用者/項目對 | 使用者 ID 和她購買的項目，例如蘋果、梨子和橘子。 | 

若要將輸入資料轉換為支援的格式，您必須預先處理資料。目前，Object2Vec 可原生支援兩種類型的輸入：
+ 分散式權杖，這會以單一 `integer-id` 的清單表示。例如 `[10]`。
+ 一連串分散式權杖，這會以 `integer-ids` 的清單表示。例如 `[0,12,10,13]`。

每一對中的物件可以是非對稱的。例如，對可以是 (權杖、序列) 或 (權杖、權杖) 或 (序列、序列)。若是權杖輸入，演算法支援簡單內嵌做為相容的編碼器。若是權杖向量的序列，演算法支援以下編碼器：
+  平均集區內嵌
+  階層卷積神經網絡 (CNN)、
+  多層雙向長短期記憶體 (BiLSTM) 

每一對的輸入標籤可以是以下其中一個：
+ 分類標籤，表示配對中物件之間的關係 
+ 分數，表示兩個物件之間的相似性強度 

若是用於分類的分類標籤，演算法支援跨熵損失函式。若是用於迴歸的評分/分數標籤，演算法支援均方誤差 (MSE) 損失函式。當您建立模型訓練任務時，請使用 `output_layer` 超參數指定這些損失函式。

## 適用於 Object2Vec 演算法的 EC2 執行個體建議
<a name="object2vec--instances"></a>

您使用的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體類型，取決於您是訓練還是執行推論。

在 CPU 上使用 Object2Vec 演算法來訓練模型時，請從 ml.m5.2xlarge 執行個體開始。若為 GPU 上的訓練，從 ml.p2.xlarge 執行個體開始。如果在此執行個體上訓練的時間太長，您可以使用較大的執行個體。目前，Object2Vec 演算法只能在單一機器上訓練。不過，它提供對多種 GPU 的支援。Object2Vec 可支援 P2、P3、G4DN 和 G5 GPU 執行個體系列，進行訓練和推論。

針對擁有深度類神經網路的 Object2Vec 模型訓練推論，建議您使用 ml.p3.2xlarge GPU 執行個體。由於 GPU 記憶體不足，無論 [GPU 最佳化：分類或廻歸](object2vec-inference-formats.md#object2vec-inference-gpu-optimize-classification) 或 [GPU 最佳化：編碼器內嵌](object2vec-encoder-embeddings.md#object2vec-inference-gpu-optimize-encoder-embeddings) 推論網路是否載入 GPU，都會指定要最佳化 `INFERENCE_PREFERRED_MODE` 環境變數。

## Object2Vec 範例筆記本
<a name="object2vec-sample-notebooks"></a>
+ [使用 Object2VEC 將句子編碼為固定長度的內嵌](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/object2vec_sentence_similarity/object2vec_sentence_similarity.html)