1. 程式人生 > >計算廣告CTR預估系列(一)--DeepFM理論

計算廣告CTR預估系列(一)--DeepFM理論

計算廣告CTR預估系列(一)–DeepFM理論

本文首發於公眾號: 機器學習薦貨情報局

認真閱讀完本文,抓住DeepFM的理論核心不成問題!
配合《計算廣告CTR預估系列(二)–DeepFM實踐》食用更佳!敬請期待。。。

DeepFM

1. CTR預估

CTR預估資料特點
1. 輸入中包含類別型和連續型資料。類別型資料需要one-hot,連續型資料可以先離散化再one-hot,也可以直接保留原值
2. 維度非常高
3. 資料非常稀疏
4. 特徵按照Field分組

CTR預估重點在於學習組合特徵。注意,組合特徵包括二階、三階甚至更高階的,階數越高越複雜,越不容易學習。Google的論文研究得出結論:高階和低階的組合特徵都非常重要,同時學習到這兩種組合特徵的效能要比只考慮其中一種的效能要好。

那麼關鍵問題轉化成:如何高效的提取這些組合特徵。一種辦法就是引入領域知識人工進行特徵工程。這樣做的弊端是高階組合特徵非常難提取,會耗費極大的人力。而且,有些組合特徵是隱藏在資料中的,即使是專家也不一定能提取出來,比如著名的“尿布與啤酒”問題。

在DeepFM提出之前,已有LR,FM,FFM,FNN,PNN(以及三種變體:IPNN,OPNN,PNN*),Wide&Deep模型,這些模型在CTR或者是推薦系統中被廣泛使用。

2. 模型演進歷史

2.1 線性模型

最開始CTR或者是推薦系統領域,一些線性模型取得了不錯的效果。比如:LR,FTRL。線性模型有個致命的缺點:無法提取高階的組合特徵

。所以常用的做法是人為的加入pairwise feature interactions。即使是這樣:對於那些出現很少或者沒有出現的組合特徵以及高階組合特徵依舊無法提取。

LR最大的缺點就是無法組合特徵,依賴於人工的特徵組合,這也直接使得它表達能力受限,基本上只能處理線性可分或近似線性可分的問題。

2.2 FM模型

線性模型差強人意,直接導致了FM模型應運而生(在Kaggle上打比賽提出來的,取得了第一名的成績)。FM通過隱向量latent vector做內積來表示組合特徵,從理論上解決了低階和高階組合特徵提取的問題。但是實際應用中受限於計算複雜度,一般也就只考慮到2階交叉特徵。

後面又進行了改進,提出了FFM,增加了Field的概念。

2.3 遇上深度學習

隨著DNN在影象、語音、NLP等領域取得突破,人們見見意識到DNN在特徵表示上的天然優勢。相繼提出了使用CNN或RNN來做CTR預估的模型。但是,CNN模型的缺點是:偏向於學習相鄰特徵的組合特徵。 RNN模型的缺點是:比較適用於有序列(時序)關係的資料。

FNN的提出,應該算是一次非常不錯的嘗試:先使用預先訓練好的FM,得到隱向量,然後作為DNN的輸入來訓練模型。缺點在於:受限於FM預訓練的效果。
隨後提出了PNN,PNN為了捕獲高階組合特徵,在embedding layerfirst hidden layer之間增加了一個product layer。根據product layer使用內積、外積、混合分別衍生出IPNN, OPNN, PNN*三種類型。

無論是FNN還是PNN,他們都有一個繞不過去的缺點:對於低階的組合特徵,學習到的比較少。而前面我們說過,低階特徵對於CTR也是非常重要的。

Google意識到了這個問題,為了同時學習低階和高階組合特徵,提出了Wide&Deep模型。它混合了一個線性模型(Wide part)Deep模型(Deep part)。這兩部分模型需要不同的輸入,而Wide part部分的輸入,依舊依賴人工特徵工程。

但是,這些模型普遍都存在兩個問題:
1. 偏向於提取低階或者高階的組合特徵。不能同時提取這兩種型別的特徵。
2. 需要專業的領域知識來做特徵工程。

DeepFM在Wide&Deep的基礎上進行改進,成功解決了這兩個問題,並做了一些改進,其優勢/優點如下:

1. 不需要預訓練FM得到隱向量
2. 不需要人工特徵工程
3. 能同時學習低階和高階的組合特徵
4. FM模組和Deep模組共享**Feature Embedding**部分,可以更快的訓練,以及更精確的訓練學習

下面,就讓我們走進DeepFM的世界,一起去看看它到底是怎麼解決這些問題的!

3. DeepFM

DeepFM閃亮登場!

主要做法如下:
1. FM Component + Deep Component。FM提取低階組合特徵,Deep提取高階組合特徵。但是和Wide&Deep不同的是,DeepFM是端到端的訓練,不需要人工特徵工程。
2. 共享feature embedding。FM和Deep共享輸入和feature embedding不但使得訓練更快,而且使得訓練更加準確。相比之下,Wide&Deep中,input vector非常大,裡面包含了大量的人工設計的pairwise組合特徵,增加了他的計算複雜度。

DeepFM架構圖:
DeepFM架構圖

3.1 FM Component

FM部分的輸出由兩部分組成:一個Addition Unit,多個內積單元
-w403
這裡的d是輸入one-hot之後的維度,我們一般稱之為feature_size。對應的是one-hot之前的特徵維度,我們稱之為field_size

FM架構圖:

Addition Unit

3.2 Deep Component

Deep Component架構圖:

Deep Component是用來學習高階組合特徵的。網路裡面黑色的線是全連線層,引數需要神經網路去學習。

由於CTR或推薦系統的資料one-hot之後特別稀疏,如果直接放入到DNN中,引數非常多,我們沒有這麼多的資料去訓練這樣一個網路。所以增加了一個Embedding層,用於降低緯度。

這裡繼續補充下Embedding層,兩個特點:
1. 儘管輸入的長度不同,但是對映後長度都是相同的.embedding_size 或 k
2. embedding層的引數其實是全連線的Weights,是通過神經網路自己學習到的。

Embedding層的架構圖:

值得注意的是:FM模組和Deep模組是共享feature embedding的(也就是V)。

好處:
1. 模型可以從最原始的特徵中,同時學習低階和高階組合特徵
2. 不再需要人工特徵工程。Wide&Deep中低階組合特徵就是同過特徵工程得到的。

3.3 對比其他模型

模型圖:

FNN

FNN is a FM-initialized feedforward neural network.
FNN使用預訓練的FM來初始化DNN,然後只有Deep部分,不能學習低階組合特徵。

FNN缺點:

  1. Embedding的引數受FM的影響,不一定準確
  2. 預訓練階段增加了計算複雜度,訓練效率低
  3. FNN只能學習到高階的組合特徵。模型中沒有對低階特徵建模。

PNN

PNN:為了捕獲高階特徵。PNN在第一個隱藏層和embedding層之間,增加了一個product layer。

根據product的不同,衍生出三種PNN:IPNN,OPNN,PNN* 分別對應內積、外積、兩者混合。

作者為了加快計算,採用近似計算的方法來計算內積和外積。內積:忽略一些神經元。外積:把m*k維的vector轉換成k維度的vector。由於外積丟失了較多資訊,所以一般沒有內積穩定。

但是內積的計算複雜度依舊非常高,原因是:product layer的輸出是要和第一個隱藏層進行全連線的。

PNN缺點:

  1. 內積外積計算複雜度高。採用近似計算的方法外積沒有內積穩定。
  2. product layer的輸出需要與第一個隱藏層全連線,導致計算複雜度居高不下
  3. 和FNN一樣,只能學習到高階的特徵組合。沒有對於1階和2階特徵進行建模。

Wide&Deep

Wide & Deep設計的初衷是想同時學習低階和高階組合特徵,但是wide部分需要領域知識進行特徵工程。

Wide部分可以用LR來替換,這樣的話就和DeepFM差不多了。
但是DeepFM共享feature embedding 這個特性使得在反向傳播的時候,模型學習feature embedding,而後又會在前向傳播的時候影響低階和高階特徵的學習,這使得學習更加的準確。

Wide&Deep缺點:

  1. 需要特徵工程提取低階組合特徵

DeepFM

優點:

  1. 沒有用FM去預訓練隱向量V,並用V去初始化神經網路。(相比之下FNN就需要預訓練FM來初始化DNN)
  2. FM模組不是獨立的,是跟整個模型一起訓練學習得到的。(相比之下Wide&Deep中的Wide和Deep部分是沒有共享的)
  3. 不需要特徵工程。(相比之下Wide&Deep中的Wide部分需要特徵工程)
  4. 訓練效率高。(相比PNN沒有那麼多引數)

什麼?太多了亂七八糟記不住?OK,那就記住最核心的

  1. 沒有預訓練(no pre-training)
  2. 共享Feature Embedding,沒有特徵工程(no feature engineering)
  3. 同時學習低階和高階組合特徵(capture both low-high-order interaction features)

3.4 超引數建議

論文中還給出了一些引數的實驗結果,直接給出結論,大家實現的時候可以參考下。

超引數 建議 備註
啟用函式 1. IPNN使用tanh 2. 其餘使用ReLU
學習方法 Adam
Dropout 0.6~0.9
隱藏層數量 3~5 根據實際資料大小調整
神經元數量 200~600 根據實際資料大小調整
網路形狀 constant 一共有四種:固定、增長、下降、菱形。

PS: constant效果最好,就是隱藏層每一層的神經元的數量相同

最後,模型對比圖鎮:

Reference

  1. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction

獲取更多機器學習乾貨、薦貨,歡迎關注機器學習薦貨情報局,加入薦貨大家庭!
公眾號

相關推薦

計算廣告CTR系列()--DeepFM理論

計算廣告CTR預估系列(一)–DeepFM理論 本文首發於公眾號: 機器學習薦貨情報局 認真閱讀完本文,抓住DeepFM的理論核心不成問題! 配合《計算廣告CTR預估系列(二)–DeepFM實踐》食用更佳!敬請期待。。。 De

計算廣告CTR的特徵處理方法

1.CTR預估,發現CTR預估一般都是用LR,而且特徵都是離散的。為什麼一定要用離散特徵呢?這樣做的好處在哪裡? A:在工業界,很少直接將連續值作為邏輯迴歸模型的特徵輸入,而是將連續特徵離散化為一系列0、1特徵交給邏輯迴歸模型,這樣做的優勢有以下幾點: 離散特徵的增加

基於深度學習的廣告CTR演算法

數十款阿里雲產品限時折扣中,趕緊點選這裡,領劵開始雲上實踐吧!   演講嘉賓簡介: 朱小強,花名懷人,阿里媽媽高階演算法專家,領導了核心的排序演算法與機器學習平臺團隊,負責阿里精準展示廣告的CTR/CVR預估系統/演算法

聊聊CTR演算法DeepFM

DeepFM這種演算法是一種基於分解機的神經網路,該演算法由哈爾濱工業大學深圳研究生院聯合華為諾亞方舟實驗室於2017年提出的。 這種演算法是一種端到端的學習模型,不僅考慮了低階的特徵融合,也考慮了高階的特徵融合。該演算法利用深度學習來學習特徵,利用分解機做推薦。

用機器學習對CTR建模(

資料集介紹: train - Training set. 10 days of click-through data, ordered chronologically. Non-clicks and clicks are subsampled acco

(讀論文)推薦系統之ctr-DeepFM模型解析

今天第二篇(最近更新的都是Deep模型,傳統的線性模型會後面找個時間更新的哈)。本篇介紹華為的DeepFM模型 (2017年),此模型在 Wide&Deep 的基礎上進行改進,成功解決了一些問題,具體的話下面一起來看下吧。 原文:Deepfm: a factorization-machine base

facebook:gbdt+lr在ctr中的應用

span ctr .com 關聯 auc left under mar 結構 背景 facebook上的廣告並不是與query關聯的,而是與用戶的興趣及其人口信息相關,所以相比於搜索其候選廣告的體量要大的多; 級聯模型:解決上述大量候選集合的問題,逐級增大計算復雜度;

深度學習在CTR中的應用

搜索 前言 deep 帶來 python 2017年 進入 訓練 信息 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~ 本文由鵝廠優文發表於雲+社區專欄 一、前言 二、深度學習模型 1. Factorization-machine(FM) FM = LR

深度學習在CTR的應用

深度學習在各個領域的成功 深度學習在影象和音訊等方向比傳統方向有大的提升,導致很多產品能快速落地 第一行三張圖片代表圖片和音訊方向相比傳統提升30%-50%,第二行第一張代表深度學習在自然語言處理方面方向的應用(相比傳統學習方法有提升,但是提升效果有限),後兩張代表生成式模型(生成圖片

CTR中GBDT與LR融合方案

1、 背景       CTR預估(Click-Through Rate Prediction)是網際網路計算廣告中的關鍵環節,預估準確性直接影響公司廣告收入。CTR預估中用的最多的模型是LR(Logistic Regression)[1],LR是廣義線性模型,與傳統線性模

【實踐】CTR中的貝葉斯平滑方法(二)

1. 前言 這篇部落格主要是介紹如何對貝葉斯平滑的引數進行估計,以及具體的程式碼實現。 首先,我們回顧一下前文中介紹的似然函式,也就是我們需要進行最大化的目標函式: 下面我們就基於這個目標函式介紹怎樣估計引數。 2. 引數估計的幾種方法 1. 矩估計 矩估計在這裡有點亂

科大訊飛AI營銷大賽 CTR總結

背景介紹: 科大訊飛AI營銷雲在高速發展的同時,積累了海量的廣告資料和使用者資料,如何有效利用這些資料去預測使用者的廣告點選概率,是大資料應用在精準營銷中的關鍵問題,也是所有智慧營銷平臺必須具備的核心技術。本次大賽提供了訊飛AI營銷雲的海量廣告投放資料,參賽選手通過人工智慧技術構建預測模型預

ctr的負取樣比率修正公式

p=c1p′−1+cp=c1p′−1+c c∼(0,1]c∼(0,1]: 負樣本取樣比例。如果正負樣本都取樣,取樣比分別為c1,c2c1,c2, 則 c=c2/c1c=c2/c1 p′p′:使用有采

CTR特徵工程

特徵工程 專案資料格式 CTR預估的流程 資料—>預處理—>特徵提取—>模型訓練—>後處理 模型和特徵的關係 一句話概括這個問題,特徵決定了上界,而模型決定了接近上界的程度。 資料預處理 首先要進行

深度長文 | 從FM推演各深度CTR模型(附開原始碼)

作者丨龍心塵 & 寒小陽研究方向丨機器學習,資料探勘題記:多年以後,當資深演算法專家們看

從FM推演各深度CTR模型(附程式碼)

宣告:版權所有,轉載請聯絡作者並註明出處。本文程式碼部分參考了lambda等同學的tensorflow實現,在此向原作者表示感謝。 注:本文根據作者在公司內訓講稿整理而成。 多年以後,當資深演算法專家們看著無縫對接使用者需求的廣告收入節節攀升時,他們可能會想起

PaddlePaddle分散式訓練及CTR模型應用

  前言:我在github上建立了一個新的repo:PaddleAI, 準備用Paddle做的一系列有趣又實用的案例,所有的案例都會上傳資料程式碼和預訓練模型,下載後可以在30s內上手,跑demo出結果,讓大家儘快看到訓練結果,用小批量資料除錯,再用全量資料跑模型,當然,也可以基於我上傳的預訓練模型進行遷移學

阿里CTR:使用者行為長序列建模

本文將介紹Alibaba發表在KDD’19 的論文《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction》。文章針對長序列使用者行為建模的問題從線上系統和演算法兩方面進行改進,已經成功部署在阿里

CTR模型演變及學習筆記

【說在前面】本人部落格新手一枚,象牙塔的老白,職業場的小白。以下內容僅為個人見解,歡迎批評指正,不喜勿噴![握手][握手] 【再囉嗦一下】如果你對智慧推薦感興趣,歡迎先瀏覽我的另一篇隨筆:智慧推薦演算法演變及學習筆記 【最後再說一下】本文只對智慧推薦演算法中的CTR預估模型演變進行具體介紹! 一、傳統CTR預

IOS CoreBluetooth系列理論

核心藍芽概述 Core Bluetooth 框架使你的 Mac/iOS app 能夠與低功耗藍芽裝置進行通訊。例如,你的app能夠搜尋,探索低功耗藍芽裝置,並與之互動,如心率監聽器,數字恆溫器,甚至能夠與其它iOS裝置進行互動。 該框架基於BLE4.0規範,直接適用於