假設您正在開發美食推薦應用程式 使用者輸入自己最愛的餐點,應用程式就會推薦類似餐點 他們可能會喜歡的您想開發機器學習 (ML) 模型 預測食物相似度,讓您的應用程式 推薦 (「既然你喜歡鬆餅,我們推薦個可麗餅」)。
如要訓練模型,您彙整了 5,000 個熱門資料集 餐點,包括 borscht、 「hot dog」 salad、 披薩 和 shawarma。
![圖 1. 一張插圖,畫中有五項食物品。從現在開始
左上方:波士克喜、熱狗、沙拉、披薩、沙威瑪。](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images.png?authuser=3&hl=zh-tw)
您會建立 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 個方塊上方,每個方塊都對齊
由左至右,並加上其中一個向量編號。方塊上有
也就是從左到右,和幼犬和熱狗的圖片
以圖表呈現](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images_one_hot_encodings.png?authuser=3&hl=zh-tw)
稀疏資料表示法的問題
查看這些 one-hot 編碼,發現有兩項主要問題 這種表示法
- 權重數量。大型輸入向量代表
權重
類神經網路的結果
使用 one-hot 編碼的 M 項目,以及 N
輸入內容後,模型必須訓練
該圖層的 MxN 權重。大量權重會導致其他問題:
- 資料點數量。模型中的權重越多,資料就越豐富 需要有效訓練
- 運算量。權重越多,計算所需的運算就越多 訓練和使用模型如果效能比 硬體
- 記憶體容量。模型中的權重越多, 而用來訓練並提供服務的加速器擴充 相當困難
- 支援困難 裝置端機器學習 (ODML)。 如果您想在本機裝置上執行機器學習模型 也需著重縮小模型規模 減少權重數量
- 向量之間沒有有意義的關係。系統會將向量值 one-hot 編碼並未提供任何有關食物的有意義資訊 食物的相似性就數學上來說,索引 1 (「熱狗」) 是 較靠近索引 2 (「沙拉」) 和索引 4999 (「沙威瑪」) 比起沙拉,狗更像沙威瑪 (包括肉類和麵包) 更相似。
在本單元中,您將瞭解如何建立嵌入,但 才能解決這些問題。