嵌入

假設您正在開發美食推薦應用程式 使用者輸入自己最愛的餐點,應用程式就會推薦類似餐點 他們可能會喜歡的您想開發機器學習 (ML) 模型 預測食物相似度,讓您的應用程式 推薦 (「既然你喜歡鬆餅,我們推薦個可麗餅」)。

如要訓練模型,您彙整了 5,000 個熱門資料集 餐點,包括 borscht、 「hot dogsalad披薩shawarma

圖 1. 一張插圖,畫中有五項食物品。從現在開始
       左上方:波士克喜、熱狗、沙拉、披薩、沙威瑪。
圖 1:食物資料集中所含餐飲項目的取樣。

您會建立 meal 功能,其中包含 one-hot 編碼 代表資料集中每個餐飲項目的表示法。

圖 2:上方:borscht 的 one-hot 編碼視覺化。
       向量 [1, 0, 0, 0, ..., 0] 會顯示在 6 個方塊上方
       每個靠左對齊
       然後在接下來的一個向量編號中填入一個向量方塊由左至右
       包含以下圖片:borscht、熱狗、沙拉、披薩、[空白]、
       沙威瑪。中間:熱狗 one-hot 編碼視覺化。
       向量 [0, 1, 0, 0, ..., 0] 在 6 個方塊上方顯示
       對齊至其中一個向量編號。方塊上有
       也就是從左到右比較和 borscht 圖像
       。下圖:shawarma 的 one-hot 編碼視覺化。
       向量 [0, 0, 0, 0, ..., 1] 會顯示在 6 個方塊上方,每個方塊都對齊
       由左至右,並加上其中一個向量編號。方塊上有
       也就是從左到右,和幼犬和熱狗的圖片
       以圖表呈現
圖 2 borscht、hot dog 和 Shawarma 的 one-hot 編碼。 每個 one-hot 編碼向量的長度為 5,000 (每個項目各一個項目) 選單項目)。圖中的刪節號代表 這裡則未顯示 4,995 個項目

稀疏資料表示法的問題

查看這些 one-hot 編碼,發現有兩項主要問題 這種表示法

  • 權重數量。大型輸入向量代表 權重 類神經網路的結果 使用 one-hot 編碼的 M 項目,以及 N 輸入內容後,模型必須訓練 該圖層的 MxN 權重。大量權重會導致其他問題:
    • 資料點數量。模型中的權重越多,資料就越豐富 需要有效訓練
    • 運算量。權重越多,計算所需的運算就越多 訓練和使用模型如果效能比 硬體
    • 記憶體容量。模型中的權重越多, 而用來訓練並提供服務的加速器擴充 相當困難
    • 支援困難 裝置端機器學習 (ODML) 如果您想在本機裝置上執行機器學習模型 也需著重縮小模型規模 減少權重數量
  • 向量之間沒有有意義的關係。系統會將向量值 one-hot 編碼並未提供任何有關食物的有意義資訊 食物的相似性就數學上來說,索引 1 (「熱狗」) 是 較靠近索引 2 (「沙拉」) 和索引 4999 (「沙威瑪」) 比起沙拉,狗更像沙威瑪 (包括肉類和麵包) 更相似。

在本單元中,您將瞭解如何建立嵌入,但 才能解決這些問題。