參考文檔:https://lumingdong.cn/application-practice-of-embedding-in-recommendation-system.html
1、Embedding的理解
Embedding,即嵌入,起先源自於 NLP 領域,稱為詞嵌入(word embedding),主要是利用背景信息構建詞匯的分布式表示,最終可以可以得到一種詞的向量化表達,即用一個抽象的稠密向量來表征一個詞。
Embedding 在數學上表示一個映射(mapping),也是一個函數(function),即 𝑓:𝑋→𝑌, 其中該函數是 injective(就是我們所說的單射函數,每個 𝑌 只有唯一的 𝑋 對應,反之亦然)和 structure-preserving(結構保存,比如在 X 所屬的空間上 𝑋1<𝑋2, 那么映射后在 𝑌 所屬空間上同理 𝑌1<𝑌2)的。那么對於 word embedding,就是將單詞 word 映射到另外一個空間,其中這個映射具有 injective 和 structure-preserving 的特點。
“嵌入” 本身是一個數學概念。我們這里通俗理解,如果將詞看作是文本的最小單元,詞嵌入本身是一種特別的映射過程,即將文本空間中的某個詞,通過一定的方法,映射或者說嵌入到另一個數值向量空間,原來的整數全部變為實數,是用連續向量表示離散變量的方法。
之所以稱之為 embedding,是因為這種表示方法往往伴隨着一種降維的意思,就像高維事物拍扁了嵌入到另一個低維空間中一樣。
Embedding 這種向量化表達過程通常伴隨以下變化:高維——> 低維、稀疏——> 稠密、離散——> 連續、整數——> 實數
不難發現,經過 Embedding 向量化表達后的數據,其實變得更加適合深度神經網絡的訓練和學習,也有利於工業界數據的工程化處理。高維稀疏數據對於機器學習的參數學習和相關計算都不太友好,因此通常特別稀疏的離散數據更適合使用 Embedding 代替傳統 One-Hot 編碼方式。
- 高維易引發 “維度之災”,使空間距離很難有效衡量,另外高維經常使參數數量變得非常多,計算復雜度增加,也容易導致過擬合;
- 稀疏容易造成梯度消失,導致無法有效完成參數學習
此外,Embedding 雖然是一種降維表示,但是卻攜帶了語義信息,而且這種表示方式並不局限於詞,可以是句子、文檔、物品、人等等,Embedding 能夠很好地挖掘嵌入實體間的內部關聯,即便降維也能保留這種潛在關系,這簡直就是 “神來之筆”,怪不得說萬物皆可 Embedding。本質上來說,經過 Word Embedding 之后,各個單詞就組合成了一個相對低維空間上的一組向量,這些向量之間的遠近關系則由他們之間的語義關系決定。
2、Embedding優勢
因為上面提到的特性,使用 Embedding 可帶來諸多好處:
- 不丟失信息的情況下降低維度
- 矩陣及向量運行便於並行
- 向量空間具有物理意義,比如可以根據距離比較相似性
- 可以在多個不同的維度上具有相似性
- 線性規則:king - man = queen - woman
Embedding 的這種攜帶語義信息以及保留嵌入實體間的潛在關系的特性,使 Embedding 有了更多用武之地,例如:
- 計算相似度,比如 man 和 woman 的相似度比 man 和 apple 的相似度高
- 在一組單詞中找出與眾不同的一個,例如在如下詞匯列表中:[dog, cat, chicken, boy],利用詞向量可以識別出 boy 和其他三個詞不是一類。
- 直接進行詞的運算,例如經典的:woman + king - man = queen
- 表征文本,如累加得到一個文本的稠密向量,或平均表征一個更大的主體;
- 方便聚類,會得到比使用詞向量聚類更好的語義聚類效果。
- 由於攜帶了語義信息,還可以計算一段文字出現的可能性,也就是說,這段文字是否通順。
3、Embedding 和 One Hot 編碼區別?
- 在 embedding 空間中查找最近鄰,這可以很好的用於根據用戶的興趣來進行推薦。
- 2)作為監督性學習任務的輸入。
- 3)用於可視化不同離散變量之間的關系。
在深度神經網絡中你如果直接接入onehot,那么你需要訓練的參數維度也是爆炸式增長的,這個在深度模型中是一個困擾。所以在保留相同信息的基礎上使用embedding作為輸入是一個可靠的選擇。
4、獨熱編碼(One-hot Encoding)
定義:獨熱編碼通常用於處理類別間不具有大小關系的特征。
獨熱編碼的優點有以下幾個:
- 能夠處理非數值屬性。比如血型、性別等
- 一定程度上擴充了特征。
- 編碼后的向量是稀疏向量,只有一位是 1,其他都是 0,可以利用向量的稀疏來節省存儲空間。
- 能夠處理缺失值。當所有位都是 0,表示發生了缺失。此時可以采用處理缺失值提到的高維映射方法,用第 N+1 位來表示缺失值。
當然,獨熱編碼也存在一些缺點:
1.高維度特征會帶來以下幾個方面問題:
- KNN 算法中,高維空間下兩點之間的距離很難得到有效的衡量;
- 邏輯回歸模型中,參數的數量會隨着維度的增高而增加,導致模型復雜,出現過擬合問題;
- 通常只有部分維度是對分類、預測有幫助,需要借助特征選擇來降低維度。
