1. 程式人生 > >簡單易學的深度學習演算法——Wide & Deep Learning

簡單易學的深度學習演算法——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模型就是一個廣義線性模型:

y=wTx+b

其中,特徵x=[x1,x2,,xd]是一個d維的向量,w=[w1,w2,,wd]為模型的引數。最終在y的基礎上增加Sigmoid函式作為最終的輸出。

2.3、Deep模型

Deep模型如上圖中的右側的圖所示,實際上,Deep模型是一個前饋神經網路。深度神經網路模型通常需要的輸入是連續的稠密特徵,對於稀疏,高維的類別特徵,通常首先將其轉換為低維的向量,這個過程也成為embedding。

在訓練的時候,首先隨機初始化embedding向量,並在模型的訓練過程中逐漸修改該向量的值,即將向量作為引數參與模型的訓練。

隱含層的計算方法為:

a(l+1)=f(W(l)a(l)+b(l))

其中,f稱為啟用函式,如ReLUs。

2.4、Wide & Deep模型的聯合訓練(joint training)

聯合訓練是指同時訓練Wide模型和Deep模型,並將兩個模型的結果的加權和作為最終的預測結果:

P(Y=1x)=σ(wwideT[x,ϕ(x)]+wdeepTa(lf)+b)

訓練的方法:

  • 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)將其對映成向量;對於連續的實數特徵,將其歸一化到區間[0,1]


這裡寫圖片描述

3.3、度量的標準

度量的指標有兩個,分別針對線上的度量和離線的度量,線上時,通過A/B test,最終利用安裝率(Acquisition);離線則使用AUC作為評價模型的指標。

參考文獻