嵌入

假設您要開發一款提供食物建議的應用程式,使用者只要輸入喜歡的餐點,應用程式就會推薦與使用者喜好類似的餐點。您想開發可預測食物相似度的機器學習模型,讓應用程式提供貼近使用者需求的建議 (例如:「由於您喜歡鬆餅,在此提供可麗餅供您參考」)。

為訓練模型,您彙整了 5,000 種熱門餐點,包括羅宋湯熱狗沙拉披薩沙威瑪

圖 1. 五種餐點的插圖組合。從左上角依順時針方向依序為:羅宋湯、熱狗、沙拉、披薩、沙威瑪。
圖 1. 食物資料集中的餐點取樣資料。

您建立了 meal 功能,當中包含資料集中每種餐點的 one-hot 編碼表示法。編碼是指選擇要使用哪個初始數值表示法訓練模型的過程。

圖 2. 頂端:羅宋湯 one-hot 編碼的圖表。向量 [1, 0, 0, 0, ..., 0] 顯示在六個方框上方,方框由左到右分別對應一個向量數值。方框由左至右分別包含下列圖片:羅宋湯、熱狗、沙拉、披薩、[空白]、沙威瑪。中間:熱狗 one-hot 編碼的圖表。向量 [0, 1, 0, 0, ..., 0] 顯示在六個方框上方,方框由左到右分別對應一個向量數值。方框由左至右分別顯示與上方羅宋湯圖表相同的圖片。底部:沙威瑪 one-hot 編碼的圖表。向量 [0, 0, 0, 0, ..., 1] 顯示在六個方框上方,方框由左到右分別對應一個向量數值。方框中由左至右分別顯示與羅宋湯和熱狗圖表相同的圖片。
圖 2. 羅宋湯、熱狗和沙威瑪的 one-hot 編碼。每個 one-hot 編碼向量的長度為 5,000 (單筆資料代表資料集中的每個菜單品項)。圖表中的刪節號代表未顯示的 4,995 筆資料。

稀疏資料表示法相關問題

查看 one-hot 編碼時,就能注意到此資料表示法的幾個問題。

  • 權重數量:大量輸入向量代表類神經網路要處理大量權重。輸入後,one-hot 編碼有 M 筆資料,而第一層網路有 N 個節點,則模型在該層需要訓練 M x N 個權重。
  • 資料點數量:模型的權重越多,需要有效訓練的資料就越多。
  • 運算作業量:權重越多,就必須進行越多運算才能訓練及使用模型。硬體功能很有可能無法負荷這種情況。
  • 記憶體數量:模型的權重越多,用於訓練及執行模型的加速器就需要越多記憶體,而想要有效向上擴充記憶體並不容易。
  • 支援裝置端機器學習 (ODML)十分困難:如果想在本機裝置執行機器學習模型 (相對於提供機器學習模型),必須著重於縮小模型,建議做法是減少權重的數量。

本單元將說明如何建立嵌入、稀疏資料的低維度表示法,以便解決上述問題。