1. 程式人生 > >wide&deep模型演化

wide&deep模型演化

推薦系統模型演化

LR-->GBDT+LR

FM-->FFM-->GBDT+FM|FFM

FTRL-->GBDT+FTRL

Wide&DeepModel (Deep learning era)

將從以下4各方面進行模型分析:

1.why(模型設計背後的原理)

2.how(具體怎麼設計,如何應用)

3.discussion(模型討論)

Wide&Deep

  • why

Memorization 和 Generalization

假如你設計了一個外賣推薦系統gugu,使用者睡覺醒來需要點個外賣,推薦系統推薦給使用者了一個烤肉飯,使用者如果購買了就標記為1,否則為0(說明不是一個好的推薦)。點選率預估就是衡量推薦系統的一個線下指標。

wide(memorization)

​ 那如何對使用者合適的商品呢,我們需要記住使用者的愛好。所以,你設計了幾個相關的特徵,用一個簡單的線性模型學習這些特徵的權重組合,模型會預測對特定產品的點選概率, gugu2.0上線了。一段時間後,使用者吃膩了,需要換個口味,但是模型只記住了特定的模式。對一些訓練集中未出現的組合特徵,由於模型沒有見過,記憶中沒有關於這個特徵的資訊,導致模型單一,使用者就會不滿意。

deep(generalization)

​ 為了推薦一些新的食物而且和使用者之前點的食物相關,但是要口味不一樣。模型需要能都捕捉到食物之間的內在聯絡,普通的離散特徵無法滿足這一要求,embedding引入了低維稠密向量表示離散特徵的方法,相似的食物在embedding的一些維度上可能是一樣的。比如口水雞和椒麻雞,經過embedding用4個維度[雞肉,辣,麻,甜]表示

[0.52,0.23,0.312,0.002] [0.52,0.23,0.45,0.002]

使用embedding後的稠密向量,可以充分挖掘不同食物的相似性,可以做出新的合理的推薦,使用前饋神經網路進行學習,對於沒有見過的特徵,由於深度學習的泛化能力,模型也可以做出不錯的預測。但是你發現模型會過度泛化,當用戶的行為比較稀疏時,gugu會推薦一些相關性較小的食物。

wide+deep

​ 為什麼不同時進行memorization和generalization呢?Wide&Deep聯合線性模型和深度模型,利用兩個模型的優點進行聯合訓練。

  • how

input

wide: 包括sparse型別的特徵以及cross型別的特徵等。原始輸入特徵和手動交叉特徵

deep: 稠密特徵,包括real value型別的特徵以及embedding後特徵

training

wide: \(y=wx+b\)

deep: \(a^{(l+1)}=f(w^{(l)}a^{(l)}+b^{(l)})\)

joint: \(P(Y=1 | \mathbf{x})=\sigma\left(\mathbf{w}_{w i d e}^{T}[\mathbf{x}, \phi(\mathbf{x})]+\mathbf{w}_{d e e p}^{T} a_{f}^{\left(l_{f}\right)}+b\right)\)

Wide部分用FTRL+L1來訓練;Deep部分用AdaGrad來訓練。 使用BP演算法採用joint train的方式訓練。

  • discussion

1.利用wide和deep組合,wide手動交叉特徵,deep對離散進行embedding

2.對wide部分進行改進,自動化交叉特徵,DeepFM,DCN

3.embedding線上訓練得到,可否離線預訓練

4.deep部分進行改進,AFM

DCN

  • why

FM可以自動組合特徵,但也僅限於二階叉乘。告別人工組合特徵,並且自動學習高階的特徵組合呢

\(x1x2x3\)

  • how

擬合殘差
\[ \mathbf{x}_{l+1}=\mathbf{x}_{0} \mathbf{x}_{l}^{T} \mathbf{w}_{l}+\mathbf{b}_{l}+\mathbf{x}_{l}=f\left(\mathbf{x}_{l}, \mathbf{w}_{l}, \mathbf{b}_{l}\right)+\mathbf{x}_{l} \]

  • discussion
  1. 顯示的高階特徵組合,特徵組合階數隨著網路深度增加而增加

  2. 複雜度線性增長,相比DNN更快

  3. 利用最後的高階組合特徵,實際高層特徵組合已經包含了低層的組合,考慮單層的組合引入最後的計算

  4. 特徵互動還是bit-wise,對模型記憶能力提升是否有幫助

  5. 是否真的學到了高階特徵互動?輸出是輸入的標量乘積

xDeepFm

  • why

傳統特徵工程缺點:

1.好的特徵需要專家知識

2.大資料量下無法無法手動交叉特徵

3.手動交叉特徵的無法泛化

FM對所有特徵組合,引入噪聲;FNN、PNN聚焦於高階特徵,忽略了低階特徵;

DNN學習高階特徵互動,但是學習到特徵互動是隱含的,bit-wise級的,那麼DNN是否真的有效在高階特徵處理上?CIN被設計在vector-wise級進行學習高階特徵

embedding: 不同樣本的長度不同,但embedding維度是一樣的

隱式高階特徵:bit-wise

顯示高階特徵互動: DCN,輸出受限於和x0的互動、bit-wise

CIN(Compressed Interaction Network(CIN))

CIN沒有有效的學習到高階特徵互動,輸出是x0的標量乘積
\[ \begin{aligned} \mathrm{x}_{i+1} &=\mathrm{x}_{0} \mathrm{x}_{i}^{T} \mathrm{w}_{i+1}+\mathrm{x}_{i} \\ &=\mathrm{x}_{0}\left(\left(\alpha^{i} \mathrm{x}_{0}\right)^{T} \mathrm{w}_{i+1}\right)+\alpha^{i} \mathrm{x}_{0} \\ &=\alpha^{i+1} \mathrm{x}_{0} \end{aligned} \]
但是標量並不意味著線性!!!

  • how

bit-wise到vector-wise

顯示互動

複雜度非指數級增長
\[ \mathrm{X}_{h, *}^{k}=\sum_{i=1}^{H_{k-1}} \sum_{j=1}^{m} \mathrm{W}_{i j}^{k, h}\left(\mathrm{X}_{i, *}^{k-1} \circ \mathrm{X}_{j, *}^{0}\right) \]

取前一層 中的 個vector,與輸入層 中的 個vector,進行兩兩Hadamard乘積運算,得到 個 vector,然後加權求和

層的不同vector區別在於,對這 個 vector 求和的權重矩陣不同。 即對應有多少個不同的權重矩陣

1.為什麼做Hadamard積

保持維度不變

2.vector-wise互動

網路的每一層計算是以embedding向量的方式進行哈達瑪積,保持embedding的結構

3.每一層的輸出由當前輸入和隱狀態共同決定,類RNN

4.類CNN(裝飾)

sum pooling 有效性:\(p_{i}^{k}=\sum_{j=1}^{D} \mathrm{X}_{i, j}^{k}\)

當只有一層,sum pooling就是兩兩向量的內積之和,降為FM

組合

\[ \hat{y}=\sigma\left(\mathbf{w}_{\text {linear}}^{T} \mathbf{a}+\mathbf{w}_{d n n}^{T} \mathbf{x}_{d n n}^{k}+\mathbf{w}_{\operatorname{cin}}^{T} \mathbf{p}^{+}+b\right) \]
線性單元、DNN、CIN;記憶、泛化、記憶+泛化

1.CIN如何顯示的執行特徵互動

2.必須組合顯示和隱式表達嗎

3.xDeepFm引數設定影響

  • discussion

1.特徵交叉利用稠密向量進行,是否存在一個網路進行離散高階向量級特徵互動

2.互動深度改進,殘差,全域性資訊觀

3.identify啟用函式,線性?

bit-wise VS vector-wise

假設隱向量的維度為3維,如果兩個特徵(對應的向量分別為(a1,b1,c1)和(a2,b2,c2)的話)在進行互動時,互動的形式類似於f(w1 * a1 * a2,w2 * b1 * b2 ,w3 * c1 * c2)的話,此時我們認為特徵互動是發生在元素級(bit-wise)上。如果特徵互動形式類似於 f(w * (a1 * a2 ,b1 * b2,c1 * c2))的話,那麼我們認為特徵互動是發生在特徵向量級(vector-wise)。

explicitly VS implicitly

顯式的特徵互動和隱式的特徵互動。以兩個特徵為例xi和xj,在經過一系列變換後,我們可以表示成 wij * (xi * xj)的形式,就可以認為是顯式特徵互動,否則的話,是隱式的特徵互動。

相關推薦

wide&deep模型演化

推薦系統模型演化 LR-->GBDT+LR FM-->FFM-->GBDT+FM|FFM FTRL-->GBDT+FTRL Wide&DeepModel (Deep learning era) 將從以下4各方面進行模型分析: 1.why(模型設計背後的原理) 2.how(具

基於深度學習模型Wide&Deep的推薦

本實驗選用資料為UCI開源資料集,僅用於學習,請勿商用) Wide&Deep推薦演算法出自一篇論文《Wide&Deep Learning for RecommenderSystems》,Wide&Deep由兩部分組成,分別是Wide和Deep。先來說wide,表示的是generali

Wide & Deep Learning for Recommender Systems 模型實踐

Wide & Deep 模型實踐 部落格程式碼均以上傳至GitHub,歡迎follow和start~~! 1. 資料集 資料集如下,其中,最後一行是label,預測收入是否超過5萬美元,二分類問題。 2. Wide Linear Model 離

CTR學習筆記&程式碼實現2-深度ctr模型 MLP->Wide&Deep

## 背景 這一篇我們從基礎的深度ctr模型談起。我很喜歡Wide&Deep的框架感覺之後很多改進都可以納入這個框架中。Wide負責樣本中出現的頻繁項挖掘,Deep負責樣本中未出現的特徵泛化。而後續的改進要麼用不同的IFC讓Deep更有效的提取特徵互動資訊,要麼是讓Wide更好的記憶樣本資訊 ##

巨經典論文!推薦系統經典模型Wide & Deep

今天我們剖析的也是推薦領域的經典論文,叫做Wide & Deep Learning for Recommender Systems。它發表於2016年,作者是Google App Store的推薦團隊。這年剛好是深度學習興起的時間。這篇文章討論的就是如何利用深度學習模型來進行推薦系統的CTR預測,可以

論文筆記-Wide & Deep Learning for Recommender Systems

wiki body pos ear recommend sys con 損失函數 wrapper 本文提出的W&D是針對rank環節的模型。 網絡結構: 本文提出的W&D是針對rank環節的模型。 網絡結構: wide是簡單的線性模型,但

深度學習(十二)wide&deep model

結合 稀疏 正則化 深度學習 img div 網絡 傳遞 討論 推薦系統在電商等平臺使用廣泛,這裏討論wide&deep推薦模型,初始是由google推出的,主要用於app的推薦。 概念理解 Wide & Deep模型,旨在使得訓練得到的模型能夠同時獲得

TensorFlow Wide And Deep 模型詳解與應用

Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右釋出的一類用於分類和迴歸的模型,並應用到了 Google Play 的應用推薦中 [1]。wide and deep 模型的核心思想是結合線性模型的記憶能力(memorization)和 DNN 模型的泛化能力(g

DL課程:MLP、DNN、Wide&deep model及相關案例程式碼

以下是我的學習筆記,以及總結,如有錯誤之處請不吝賜教。 線性分類和邏輯迴歸兩種簡單的模型大家應該都知道:(ml課程:線性迴歸、邏輯迴歸入門(含程式碼實現)) 機器學習中,分類和迴歸常用損失函式大家也都熟悉:(ml課程:機器學習演算法串講及相關常見問題總結) 神經網路: 一般神經網

Wide & Deep Learning for Recommender Systems 論文閱讀總結

Wide & Deep Learning for Recommender Systems 論文閱讀總結 文章目錄 Wide & Deep Learning for Recommender Systems 論文閱讀總結 Abstract

構建並用 TensorFlow Serving 部署 Wide & Deep 模型

Wide & Deep 模型是谷歌在 2016 年發表的論文中所提到的模型。在論文中,谷歌將 LR 模型與 深度神經網路 結合在一起作為 Google Play 的推薦獲得了一定的效果。在這篇論文後,Youtube,美團等公司也進行了相應的嘗試並公開了他們的工作(相關

wide & deep模型

feature embeddinghttp://blog.kaggle.com/2016/01/22/rossmann-store-sales-winners-interview-3rd-place-cheng-gui/https://github.com/entron/en

POJ 3280 Cheapest Palindrome ( 區間DP && 經典模型 )

ide aps class nbsp 圖片 pri 子串 microsoft using 題意 : 給出一個由 n 中字母組成的長度為 m 的串,給出 n 種字母添加和刪除花費的代價,求讓給出的串變成回文串的代價。 分析 : 原始模型 ==> 題意和本題差不多,

【轉】HTTP學習---圖解HTTP[三次握手&&ISO模型]

sts 建立 log user 圖解 header 進入 ica 過程 【轉】https://www.toutiao.com/i6592556686068679182/ 首先了解一次完整的HTTP請求到響應的過程需要的步驟: 1. 域名解析 2. 發起TCP的3次握手 3

Python資料處理之(九)Numpy copy & deep copy

一、= 的賦值方式會有關聯性 首先匯入numpy並建立變數a,b,c,d >>> import numpy as np >>> a=np.arange(4) >>> print(a) [0 1 2 3] >>>

資料庫系統概論01-基本概念&特點& 三級模型結構&二級映像

從聯機事務處理(On-Line Transaction Processing,LOTP)到聯機分析處理(On-Line Analysis Processing,OLAP) 從一般企業管理到計算機輔助設計與製作(CAD/CAM)、計算機整合制造系統(CIMS)、電子政務(e-G

Cuda程式設計系列-Cuda程式設計基本概念&程式設計模型

原文連結 系列文章: Cuda程式設計101:Cuda程式設計的基本概念及程式設計模型 Cuda程式設計102:Cuda程式效能相關話題 Cuda程式設計103:Cuda多卡程式設計 Cuda tips: nvcc的-code、-arch、-gencode選項 基本想法 在介紹編

文字樣式設定&盒子模型

<( < ) / >( > ) 1,文字樣式設定: 段落首行縮排text-indent 該屬性是用於設定每個段落首行縮排數量值的屬性,如果是用於中文佈局,一般會使用“2em”的數值和單位來為每個段落的首行縮排“兩個字元”。例如: 文字裝飾性(下劃線)text-de

【機器學習_3】常見術語區別(人工智慧&amp;資料探勘&amp;機器學習&amp;統計模型等)

1.人工智慧&資料探勘&機器學習&深度學習&統計模型 人工智慧:是一個大的概念,是讓機器像人一樣思考甚至超越人類。 資料探勘:有目的地從現有大資料中提取資料的模式(pattern)和模型(model)。——比較偏向探索性分析,不是強烈的目的導向,只是能發現多少發現多少。 資料

CSS初識- 選擇器 &amp;背景&amp; 浮動&amp; 盒子模型

上一個 大於 light info 最大 圖片地址 模式 元素 而不是 CSS初識 CSS:cascading style sheets,css樣式表或層疊樣式表(級聯樣式表),主要用於設置HTML頁面中的文本內容(字體、大小、對齊方式等)、圖片的外形(寬高、邊框樣式、邊距