簡單易學的深度學習演算法——Wide & Deep Learning
這篇文章是閱讀《Wide & Deep Learning for Recommender Systems》後的總結,該文章中提出結合Wide模型和Deep模型的組合方法,對於提升推薦系統(Recommendation System)的效能有很重要的作用。
1、背景
本文提出Wide & Deep模型,旨在使得訓練得到的模型能夠同時獲得記憶(memorization)和泛化(generalization)能力:
- 記憶(memorization)即從歷史資料中發現item或者特徵之間的相關性。
- 泛化(generalization)即相關性的傳遞,發現在歷史資料中很少或者沒有出現的新的特徵組合。
在推薦系統中,記憶體現的準確性,而泛化體現的是新穎性。
在本文中,利用Wide & Deep模型,使得訓練出來的模型能夠同時擁有上述的兩種特性。
2、Wide & Deep模型
2.1、Wide & Deep模型結構
Wide & Deep模型的結構如下圖所示:
在Wide & Deep模型中包括兩個部分,分別為Wide部分和Deep部分,Wide部分如上圖中的左圖所示,Deep部分如上圖中的右圖所示。
2.2、Wide模型
Wide模型如上圖中的左側的圖所示,實際上,Wide模型就是一個廣義線性模型:
其中,特徵是一個維的向量,為模型的引數。最終在的基礎上增加Sigmoid函式作為最終的輸出。
2.3、Deep模型
Deep模型如上圖中的右側的圖所示,實際上,Deep模型是一個前饋神經網路。深度神經網路模型通常需要的輸入是連續的稠密特徵,對於稀疏,高維的類別特徵,通常首先將其轉換為低維的向量,這個過程也成為embedding。
在訓練的時候,首先隨機初始化embedding向量,並在模型的訓練過程中逐漸修改該向量的值,即將向量作為引數參與模型的訓練。
隱含層的計算方法為:
其中,稱為啟用函式,如ReLUs。
2.4、Wide & Deep模型的聯合訓練(joint training)
聯合訓練是指同時訓練Wide模型和Deep模型,並將兩個模型的結果的加權和作為最終的預測結果:
訓練的方法:
- Wide模型:FTRL
- Deep模型:AdaGrad
3、apps的推薦系統
本文將上述的Wide & Deep模型應用在Google play的apps推薦中。
3.1、推薦系統
對於推薦系統,其最一般的結構如下圖所示:
當一個使用者訪問app商店時,此時會產生一個請求,請求到達推薦系統後,推薦系統為該使用者返回推薦的apps列表。
在實際的推薦系統中,通常將推薦的過程分為兩個部分,即上圖中的Retrieval和Ranking,Retrieval負責從資料庫中檢索出與使用者相關的一些apps,Ranking負責對這些檢索出的apps打分,最終,按照分數的高低返回相應的列表給使用者。
3.2、apps推薦的特徵
模型的訓練之前,最重要的工作是訓練資料的準備以及特徵的選擇,在apps推薦中,可以使用到的資料包括使用者和曝光資料。因此,每一條樣本對應了一條曝光資料,同時,樣本的標籤為1表示安裝,0則表示未安裝。
對於類別特徵,通過詞典(Vocabularies)將其對映成向量;對於連續的實數特徵,將其歸一化到區間。
3.3、度量的標準
度量的指標有兩個,分別針對線上的度量和離線的度量,線上時,通過A/B test,最終利用安裝率(Acquisition);離線則使用AUC作為評價模型的指標。