監督式相似度評估

與其比較手動合併的特徵資料,您可以將特徵資料減少為名為嵌入的表示法,然後比較這些嵌入。嵌入會透過在特徵資料上訓練受監督的深層類神經網路 (DNN) 來產生。嵌入功能會將嵌入資料對應至嵌入空間中的向量。一般來說,嵌入空間的尺寸會比特徵資料少,也就是擷取特徵資料集的一些隱含結構。嵌入範例的嵌入向量 (例如同一位使用者觀看的 YouTube 影片) 最終會嵌入嵌入空間。我們會查看相似度指標如何使用這個「相似度」來量化樣本組合的相似性。

別忘了,我們只是討論受監督模式,以建立相似度評估。演算法會使用這項相似度指標 (無論是手動或受監督) 執行不受監督的叢集。

手動與受監督措施的比較

下表按照您的需求,使用手動或監督式相似度測量的時機。

條件手動受監督的帳戶
排除相關功能中的多餘資訊。 不行,您必須分別調查功能之間的關聯性。 是,DNN 會刪除多餘的資訊。
提供計算相似之處的深入分析。 不可以,嵌入內容無法解密。
適合只有少數功能的小型資料集。 可以,只要用幾項功能設計手動評估就行了。 否,小型資料集未提供足夠的 DNN 訓練資料。
適用於擁有多項特徵的大型資料集。 否,手動排除多項功能中的多餘資訊,然後又難以結合。 可以,DNN 會自動排除多餘資訊,並合併多項功能。

監督相似性措施的流程

下圖說明如何建立受監督的相似度測量結果:

輸入特徵資料。選擇 DNN:autoencoder 或預測者。
擷取嵌入。選擇測量方式:Dot 產品、餘弦或 Euclidean 距離。
圖 1:建立受監督的相似度評估步驟。

您已瞭解第一個步驟。本頁面會說明後續步驟,後續頁面會說明其餘步驟。

根據訓練標籤選擇 DNN

訓練使用相同特徵資料 (即輸入和標籤) 的 DNN,將特徵資料減少為嵌入。例如,如果是內部資料,DNN 將使用價格、尺寸和郵遞區號等特徵來預測特徵。為了使用特徵資料來預測相同的特徵資料,系統會強制 DNN 減少輸入特徵資料至嵌入的內容。您將使用這些嵌入功能來計算相似程度。

用來預測輸入資料本身的內嵌 DNN 稱為 autoencoder。由於 Autoencoder 的隱藏層小於輸入和輸出層,所以自動編碼器會強制瞭解壓縮特徵資料的壓縮表示法。DNN 訓練完成後,您可以從最後一個隱藏層中擷取嵌入,以計算相似度。

自動編碼器與預測者 DNN 之間的比較。起始輸入和隱藏層相同,但輸出會由預測器模型中的主要特徵進行篩選。
圖 2:自動編碼器與預測器的比較。

如要產生嵌入內容,最簡單的方法就是自動編碼器。不過,如果某些功能在判斷相似度時比其他功能更重要,則自動編碼器並非最佳選擇。舉例來說,在內部資料中,我們假設「price」比「郵遞區號」更重要。在這種情況下,請只使用重要功能做為 DNN 的訓練標籤。由於這個 DNN 會預測特定輸入特徵,而非預測所有輸入特徵,因此稱為「預測者」DN。請參閱下列指南選擇特徵標籤:

  • 建議將數字特徵視為類別特徵做為標籤,因為這樣更容易計算和解讀數值特徵。

  • 請勿將類別功能設定為基數 \(\lesssim\) 100 做為標籤。這樣做時,系統不會強制 DNN 將輸入資料減少至嵌入,因為 DNN 能夠輕鬆預測低基數類別標籤。

  • 從 DNN 的輸入項目,移除您做為標籤的功能,否則 DNN 將會完全預測輸出內容。

視您選用的標籤而定,產生的 DNN 可能是自動編碼器 DNN 或預測者 DNN。

DNN 遺失函式

如要訓練 DNN,您必須建立損失函式,步驟如下:

  1. 計算 DNN 每個輸出的損失。如為以下輸出內容:
    • 如果是數字,請使用平均平方錯誤 (MSE)。
    • 非類別類別,請使用對數損失。請注意,您不需要自行實作記錄損失,因為您可以使用程式庫函式來計算其。
    • 多值類別,請使用 softmax 交叉熵損失。請注意,您不需要自行實作 softmax 交叉熵損失,因為您可以使用程式庫函式來計算這個。
  2. 將每次輸出的損失加總,計算出總損失。

加總損失時,請確保每個功能與損失的比例成比例。舉例來說,如果您將顏色資料轉換為 RGB 值,則會有三個輸出內容。但是,加總三個輸出內容的損失,代表對色彩損失的權重是其他功能的 3 倍。請改為將每個輸出內容乘以 1/3。

在線上系統中使用 DNN

線上機器學習系統會持續串流新的輸入資料。 你必須使用新資料訓練 DNN。不過,如果您從頭重新訓練 DNN,嵌入就會有所不同,因為 DNN 是透過隨機權重初始化的。請改為一律以現有權重啟動 DNN,並使用新資料更新 DNN。