推薦系統實踐 0x12 什麼是Embedding
做過深度學習的小夥伴,大家應該多多少少都聽說過Embedding,這麼火的Embedding到底是什麼呢?這篇文章就用來介紹Embedding。另外,基於深度學習的推薦系統方法或者論文還沒有結束,我打算穿插進行講解,畢竟,深度學習出來的推薦框架的演算法實在是太相像了,很難有大的不同。所以,這一篇就聊聊Embedding。
初識Embedding
Embedding又被成為向量化,或者向量的映射。Embedding(嵌入)也是拓撲學裡面的詞,在深度學習領域經常和Manifold(流形)搭配使用。在之前的Embedding的操作,往往都是將稀疏的向量轉換成稠密的向量,以便於交給後面的神經網路處理。其實,Embedding還有更多應用場景,以及更多的實現方法,後面會慢慢談到這些方法。Embedding可以看做是用低維稠密向量表示一個對象,可以是單詞,可以是用戶,可以是電影,可以是音樂,可以是商品等等。只要這個向量能夠包含,或者表達所表示對象的特徵,同時能夠通過向量之間的距離反應對象之間的關係或者相似性,那麼Embedding的作用就體現出來了。
Example
如下圖所示,就是Embedding在自然語言處理當中,對單詞Embedding的一種刻畫:
上圖中從king到queen,與從man到woman的距離向來那個幾乎相同,說明Embedding之間的向量運算能夠包含詞之間的語義關係資訊,同理,圖中的詞性例子當中,從進行時態到過去時態也是相同的距離。Embedding可以在大量預料的輸入前提下,發掘出一些通用的常識,比如首都-國家之間的關係。
通過這個例子,我們可以了解到,在詞向量空間當中,即使是完全不知道一個詞向量的含義下,僅依靠語義關係加詞向量運算就可以推斷出這個詞的詞向量。Embedding就這樣從一個空間表達對象,同時還可以表示對象之間的關係。
應用
除了在自然語言處理中對單詞進行Embedding之外,我們可以對物品進行Embedding。比如在影視作品推薦當中,「神探夏洛克」與「華生」在Embedding向量空間當中會比較近,「神探夏洛克」與「海綿寶寶」在向量空間中會比較遠。另外,如果在電商推薦領域,「桌子」和「桌布」在向量空間中會比較緊,「桌子」和「滑雪板」在向量空間中會比較遠。
不同領域在使用這些語義資料進行訓練的時候也會有不同,比如電影推薦會將用戶觀看的電影進行Embedding,而電商會對用戶購買歷史進行Embedding。
深度學習推薦系統中的Embedding
一般來說,推薦系統當中會大量使用Embedding操作:
- 使用one-hot對類別,id等類型進行編碼會導致特徵向量極其稀疏,使用Embedding可以將高維稀疏的特徵向量轉化為低維稠密的特徵向量。
- Embedding具有很強的表達能力,在Graph Embedding提出之後,Embedding可以引入任何資訊進行編碼,包含大量有價值的資訊。
- Embedding可以表達對象之間的關係,可以對物品、用戶的相似度進行計算,在推薦系統的召回層經常使用,尤其是在局部敏感哈希(Locality-Sensitive Hashing)等快速最近鄰搜索提出之後,Embedding被用來對物品進行快速篩選,到幾百或幾千的量級之後再進行神經網路的精排。
常見方法
- Word2Vec
- Item2Vec
- Node2Vec
等等方法,以及文中提到的局部敏感哈希,也會在後續的系列文章逐步更新介紹。
參考
深度學習推薦系統 王喆編著
怎麼形象理解embedding這個概念? – 劉斯坦的回答 – 知乎