無中生有:論推薦算法中的 Embedding 思想

前言

前段時間面試了許多應界生同學,驚訝地發現很多同學只做深度學習,對於 LR/GBDT 這樣的傳統機器學習算法,既不掌握理論,也從未實踐過。於是就想寫一篇文章,梳理一下推薦算法由傳統機器學習,發展到深度學習,再到未來的強化學習、圖神經網絡的技術發展脈絡,因爲**「只有瞭解過去,才能更好地把握當下與未來」**。

無奈這個題目太大,再加上近來分身乏術,實在無暇宏篇大論。於是今日小撰一文,聚焦於深度學習的核心思想 Embedding(**「Embedding is all you need」**😃),管中窺豹,梳理一下推薦算法的前世(前深度學習時代)、今生(當下的深度學習時代)和將來(圖神經網絡處於燎原的前夕)。本文只討論算法思想,即 “道” 的部分,至於如何實現具體算法,屬於 “技” 的部分,請移步本人專欄裏面的其他文章。

任何一門技術,要想獲得互聯網打工人的青睞,都必須能夠實實在在解決我們面臨的問題。那推薦算法面臨的經典問題,無非兩個,“「記憶」” 與 “「擴展」”。

推薦算法的傳統機器學習時代:博聞強記

我們希望推薦系統記住什麼?能夠記住的肯定是那些**「常見、高頻」**的模式。舉個簡單的例子:

爲什麼?因爲 <春節,中國人,餃子> 的模式、<感恩節、美國人、火雞>的模式**「在訓練樣本中出現得太多太多了,推薦系統只需要記得住」**,下次遇到同樣的場景,“照方扒抓藥”,就能 “藥到病除”。

怎麼記住?上 “評分卡”

Logistic Regression 就是一個非常擅於記憶的模型。說是模型,其實就是一個超大規模的 “評分卡”。

上圖的評份卡,是金融風控領域用來評估申請人的信用分。推薦算法的 LR,如果形象地畫出來,與上面的評分卡類似,只不過卡里面的條目要多得多得多。

LR("評分卡") 模型的特點

LR("評分卡") 模型的缺陷

LR 強於記憶,弱於擴展。還舉剛纔的例子

不要小看這個問題,它關乎到企業的生死,也就關係到你老闆和你的腰包

推薦算法的剛需:擴展

綜上所述,爲了避開 “大衆推薦” 這一片內卷嚴重的紅海,而擁抱“「個性化精準推薦」” 的**「藍海」**,推薦算法不能只滿足於記住 “常見、高頻” 的模式(訓練數據中頻繁出現的),而必須能夠自動挖掘出“**「低頻、長尾」**”(訓練數據中罕見的)模式。

如何擴展?看似神祕,其實就是將粗粒度的概念,拆解成一系列細粒度的特徵,從而 “看山非山、看水非水”。還舉餃子、火雞的例子

這樣看來,只要我們喂入算法的,不是粗粒度的概念,而是細粒度的特徵向量,即便是 LR 這樣強記憶的算法,也能夠具備擴展能力。

但是,上述方法依賴於人工拆解,也就是所謂的 “特徵工程”,有兩方面的缺點:

既然人工拆解有困難、受侷限,即能不能**「讓算法自動將概念拆解成特徵向量」**?如果你能夠想到這一步,恭喜你,你一隻腳已經邁入了深度學習的大門。你已經悟到了 “道”,剩下的只是“技” 而已。

深度學習的核心套路:無中生有的 Embedding

學習的過程,就是把書讀薄的過程。我曾經提到過,林彪元帥用 “剪貼法” 來讀書:在讀書時,選擇他認爲 “有用” 的話剪貼起來。一本《共產黨宣言》最後被他剪到最後只剩下 “大工業、大機器” 幾個字。

區區不才,而欲效法先賢。到目前爲止,我也曾經將兩門技術總結成四字成語,並 “自鳴得意”。第一個,我將 Object-Oriented Programming 總結爲 “求同存異”,即 OOP 的核心思想就是將不同的實現隱藏在相同的接口後面。另一個就是深度學習,我總結它爲 “「無中生有」”,也就是本文標題的來歷。

所謂 “無中生有”,

這種 “無中生有” 的套路,好似 “上帝說,要有光,於是便有了光” 的神蹟。以訛傳訛,後來就變成了初學者口中 “深度學習不需要特徵工程”,給了某些人“我只做深度學習,不做機器學習” 的盲目自信。其實這種“「將特徵、函數轉化爲待優化變量」” 的思想,並不是深度學習發明的,早在**「用矩陣分解進行推薦」**的 “古代” 就已經存在了,只不過那時候,它不叫 Embedding,而叫“**「隱向量」**”。

變 “精確匹配” 爲“模糊查找”

深度學習對於推薦算法的貢獻與提升,其核心就在於 Embedding。如前文所述,Embedding 是一門自動將概念拆解爲特徵向量的技術,目標是提升推薦算法的擴展能力,從而能夠自動挖掘那些低頻、長尾、小衆的模式,擁抱 “個性化推薦” 的“藍海”。

Embedding 到底是如何提升 “擴展” 能力的?簡單來說,Embedding 將推薦算法從“「精確匹配」” 轉化爲 “「模糊查找」”,從而能夠 “「舉一反三」”。

比如在使用倒排索引的召回中,是無法給一個喜歡 “科學” 的用戶,推出一篇帶 “科技” 標籤的文章的(不考慮近義詞擴展),因爲 “科學” 與“科技”是兩個完全獨立的詞。但是經過 Embedding,我們發現 “科學” 與“科技”兩個向量,並不是正交的,而是有很小的夾角。設想一個極其簡化的場景,用戶向量就用 “科學” 向量來表示,文章的向量只用其標籤的向量來表示,那麼用 “科學” 向量在所有標籤向量裏做 Top-K 近鄰搜索,一篇帶 “科技” 標籤的文章就有機會呈現在用戶眼前,從而破除之前 “只能精確匹配‘科學’標籤” 帶來的“「信息繭房」

再回到原來餃子、火雞的例子裏,藉助 Embedding,算法能夠自動學習到火雞與餃子的相似性,從而給 <中國人,火雞> 的小衆組合打一個不低的分數,使火雞得到了推薦給中國人的機會,從而能更好地給那些喜歡過洋節的中國人提供更好的個性化服務

誰來接過 Embedding 的手中的旗幟?

在以 Embedding 爲核心的深度學習之後,推薦算法的下一個技術方向在哪裏?現如今,“圖神經網絡在推薦領域的應用” 的 paper 層出不窮,在各大廠也已經有落地的成功案例,處於燎原的前夕。但是作爲一個合格的煉丹師 + 調參俠,總要搞清楚 GNN 爲什麼火?它到底解決了什麼當下技術無法解決的難題?

我在《也評 Deep Interest Evolution Network》中曾經提到過,“「高維、稀疏的 categorical/id 類特徵都是推薦系統中的一等公民」”。比如,用戶購買過的商品、光顧過的店鋪、搜索過的關鍵詞、商品的分類與標籤,都是這樣的 ID 類特徵。包括 Embedding 在內的很多推薦技術,都是爲了更好地伺候好這些一等公民而提出的。

而到了 “圖計算” 或“知識圖譜”的階段,ID 類特徵換了個名字,變成圖上的節點或者知識圖譜中的 entity。換名字是小事,「關鍵是這些 ID 不再是孤立的,而是彼此關聯,從而帶來了信息的傳遞」

可以發現,「如果說 Embedding 是在提升各 ID 類特徵的內涵,那麼 GNN 就是在擴展各 ID 類特徵的外延」

所以,GNN 瞄準的改進方向是:

對於 GNN 在推薦系統中的應用感興趣的同學,可以參考我的另一篇文章《知識圖譜上的雙塔召回:阿里的 IntentGC 模型》。

簡單總結一下,幫助各位調參俠 + 打工人,更好地掌握推薦算法的 “昨天、今天與明天”:

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/hURdID1vkjUYEGbRNKt59w