Categories
程式開發

深度廣度模型在用戶購房意願量化的應用


1.引言

隨著各種深度學習方法的快速發展,基於神經網絡的預測模型漸漸成為了主流,深度神經網絡能夠反應特徵的高階非線性變化,同時具有極強的參數訓練和擬合能力,但是深度神經網絡受參數的影響大,需要大量的實際數據,所以深度學習模型一般適用於大規模場景[1]。 這些模型與以往的模型相比性能獲得了巨大的提升,但仍然存在著一些問題。 當神經網絡的輸入中包含高維離散型特徵時,我們通常會將特徵的值轉換為低維稠密的向量,然後再與連續型特徵拼接,共同輸入到網絡。 當模型在預測時出現之前較少出現或從未出現的值,就可能導致過度泛化的問題,而且在部分場景如點擊率預估中,輸入的特徵一般為大規模稀疏矩陣,如何對輸入進行有效表達就成了深度學習在點擊率預估中應用的關鍵所在。

01 深度廣度模型提出

谷歌公司於2016 年提出了寬深度模型(Wide&Deep)去解決上述問題, 該模型分為寬度(Wide)和深度(Deep)兩部分[2]。 寬度部分由傳統的機器學習算法組成,更注重特徵的低階交互的模擬,具有“記憶性”;而深度部分相當於由多層神經網絡組成,更注重特徵間的高階交互,具有“泛化性”。 寬深度模型的提出具有重大意義,雖然直接在它上面的改動不多,但是它提出的寬度和深度模型融合成為了之後新模型中的主流思想。

02 深度廣度模型的演化與應用

許多模型均是在寬深度模型的架構上演變而來。 例如PNN(Product-based Neural Network)模型設計了Product層對特徵進行更細緻的交叉運算[3]。 Deep-FM 模型在華為應用商城上得到了非常好的實踐,該模型可以看作是寬深度模型思想的繼承,它的寬度部分是FM模型,深度部分是一個普通的DNN 網絡[4]。 FM 模型進行embedding得到Dense embeddings的輸出,將Dense embeddings的結果作為左邊FM模塊和右邊DNN模塊的輸入。 通過一定方式組合後,模型左邊FM模塊的輸出完全模擬出了FM的效果,而右邊的DNN模塊則學到了比FM模塊更加高階的特徵交叉,兩者共享參數,共同訓練,最終將兩部分的輸出結合共同預測。 此外,Deep&Cross模型從嵌入和堆積層開始,分成了兩個部分,一個交叉網絡和一個與之平行的深度網絡,並在最後形成組合層,結合了兩個網絡的輸出,並取得了不錯的效果[5]。 京東公司的研究者在推薦領域運用的強化學習方法也為點擊率預估領域提供了新的思路,通過構造線上環境模擬器,對線下的模型進行評估,以應對線上線下環境不一致等問題[6]。

2.Wide & Deep模型概述

Wide&Deep是一種融合淺層模型(Wide)和深層模型(Deep)進行聯合訓練的框架,綜合利用淺層模型的記憶能力和深層模型的泛化能力,實現單模型對推薦系統準確性和多樣性的兼顧。 模型框架如圖1 所示。

深度廣度模型在用戶購房意願量化的應用 1

圖1 Wide&Deep模型框架

Wide&Deep模型的思想來源是,模仿人腦有不斷記憶並且泛化的過程,將線性模型(用於記憶)和深度神經網絡模型(用於泛化)相結合,汲取各自優勢,從而達到整體效果的最優。

01 Wide部分

Wide部分的作用是讓模型具有較強的“記憶能力”。 “記憶能力”可以被理解為模型直接學習並利用歷史數據中物品或者特徵的“共現頻率”的能力。 一般來說,協同過濾、邏輯回歸等簡單模型有較強的“記憶能力”。 由於這類模型的結構簡單,原始數據往往可以直接影響推薦結果,產生類似於“如果點擊過A,就推薦B”這類規則式的推薦,這就相當於模型直接記住了歷史數據的分佈特點,並利用這些記憶進行推薦。 這部分就是我們熟知的LR線性模型,這部分主要用作學習樣本中特徵的共現性,達到“記憶”的目的。 該模型的表達式如下:

深度廣度模型在用戶購房意願量化的應用 2

其中, 是預估值, X 表示特徵向量, w 為模型參數, b 是偏置項。

Wide特徵集合包括原始特徵和轉換後的特徵,其中交叉特徵在Wide部分十分重要,能夠捕捉到特徵間的交互,因此通常會對稀疏的特徵進行交叉特徵轉換,定義如下:

深度廣度模型在用戶購房意願量化的應用 3

其中 Cki 是一個布爾變量,當第 一世 個特徵是第 ķ 個轉換 ķ 的一部分時為1,否則為0。 因此,通過特徵之間的交叉變換,便捕獲了二元特徵之間的相關性,為廣義線性模型增加了非線性。

02 Deep部分

Deep的主要作用是讓模型具有“泛化能力”。 “泛化能力”可以被理解為模型傳遞特徵的相關性,以及發掘稀疏甚至從未出現過的稀有特徵與最終標籤相關性的能力。 深度神經網絡通過特徵的多次自動組合,可以深度發掘數據中潛在的模式,即使是非常稀疏的特徵向量輸入,也能得到較穩定平滑的推薦概率,這就是簡單模型所缺乏的“泛化能力”部分。 它是一個前饋神經網絡,在訓練過程中通過優化損失函數不斷迭代更新,每個隱藏層執行下面的運算:

深度廣度模型在用戶購房意願量化的應用 4

其中 是隱層的標號; F 是激活函數。

03 Wide部分和Deep部分的結合

Wide的部分和Deep的部分使用其輸出對數機率的加權和作為預測,然後將其輸入到聯合訓練的一個共同的邏輯損失函數,通過使用小批量隨機優化同時將輸出的梯度反向傳播到模型的Wide和Deep部分來完成的。 單層的Wide部分善於處理大量稀疏的id類特徵;Deep部分利用神經網絡表達能力強的特點,進行深層的特徵交叉,挖掘藏在特徵背後的數據模式。 這個聯合模型如圖1所示。 對於邏輯回歸問題,模型的預測是:

深度廣度模型在用戶購房意願量化的應用 5

其中,Y是二值分類標籤, σ(。) 是sigmoid函數, φ(x) 是原始特徵 X 的跨特徵變換, b 是偏置項, w 是wide模型的權重向量, w 是用於最終激活函數 一個(lF 的權重。

3.Wide&Deep模型在貝殼用戶購房意願量化的應用

01 背景

貝殼找房作為技術驅動的品質居住服務平台,業務中涉及到用戶購房意願強度識別的場景,更精準地去描述用戶購房意願強度是我們需要長期優化的問題。 在場景應用中很大一部分需要對用戶在不同城市的行為去實施不同的策略,而且基於統計分析得出,不同城市的商機等轉化率是存在明顯差異的,偏好不同的用戶的轉化率也存在較大差異。 在原有的模型中,並未引入這些特徵,採用的是一些行為在各個業務線上通過不同算子進行聚合得到的特徵去進行建模,但是在分城市的場景建模的過程中,會涉及到城市特徵,用戶的不同偏好等多維離散特徵的引入,並且在類別屬性組合的時候,會存在高維稀疏輸入,傳統基於樹的模型並不能很好地處理此類輸入。 因此我們選擇了深度廣度學習模型以更好的對該場景進行建模。

02 問題抽象

房產場景購房意願強度的識別,預測用戶未來是否會發生關鍵行為如簽約成交,優化目標定義為top x%的準確性,該任務的核心問題包括特徵處理與模型選擇兩部分,下面我們展開介紹。

03 特徵處理

特徵工程主要包括特徵構建,特徵分析,特徵處理以及特徵選擇等。 我們把特徵分為三類,用戶行為量特徵,用戶偏好特徵,偏好交叉特徵,接下來對特徵處理進行詳細說明。

低頻過濾:對於超高維稀疏特徵,可以考慮基於頻率角度或基於業務先驗證,進行篩選截取,以一定程度上降低輸入樣本量。 從另一方面考慮,在疊加正則化的情況下,過於低頻的特徵往往也會被降權或忽略。

行為量的時間體現:對用戶的各個行為量進行近一天,近兩天,近五天,近一周,近兩週,近三週,近一個月,近兩個月等時間上的聚合。

归一化处理:我们对取值范围较大的连续值特征使用了最大最小归一化方法,将特征值都转化为0-1之间的数值。该方法能够使得特征拥有统一量纲,并且将数据归一化到0到1之间的数据,能够加快模型的训练速度,实验也证明模型效果确实有显著提升。

04 Wide部分設計

特徵設計

由於廣度部分主要負責記憶功能,因此需要輸入線性或近似線性的特徵,同時需要人工進行交叉等特徵工程,對離散特徵進行one-hot之後得到原始特徵和交叉積特徵,和連續特徵一起輸入到Wide結構中。 Wide部分的特徵設計主要分為連續特徵,離散特徵和交叉特徵。

深度廣度模型在用戶購房意願量化的應用 6

模型設計

Wide部分我們選擇FTRL(Follow-the-regularized-leader)+ L1正則化來進行訓練,Wide部分結構圖如圖2左所示。

深度廣度模型在用戶購房意願量化的應用 7

圖2 Wide部分和Deep部分示意圖

05 Deep部分設計

特徵設計

深度部分負責深度特徵提取與高維稀疏特徵的理解。 因此Deep部分的特徵設計主要分為連續特徵,離散特徵embedding和交叉特徵embedding[7]。

模型設計

Deep部分採用的是兩層128->64的Selu激活的MLP網絡結構,batch_size選用的是4096,模型示意圖如圖2右所示。 對離散特徵和交叉特徵進行embedding之後和連續特徵一起輸入到Deep網絡中進行訓練。

06 模型離線訓練

經過上述的特徵工程與模型設計,生成了訓練集,作為Wide & Deep的訓練樣本,使用的模型結構如圖3所示。

深度廣度模型在用戶購房意願量化的應用 8

圖3 Wide&Deep示意圖

圖中的Hidden Layers為兩個全連接層,每個layer後面連接Selu激活函數,訓練過程中,採用聯合訓練的方式,將Wide和Deep模型組合在一起,在訓練時同時優化所有參數,並且在訓練時進行加權求和,根據最終的loss計算出gradient,反向傳播到Wide和Deep兩部分中。

07 實驗結果與分析

模型訓練後,需要將它進行預測,並對結果進行評價,評價指標我們選擇了topx%上的準確性,這是因為正負樣本比例不平衡,關注整體的auc和準確率沒有意義,所以選擇了topx%的準確率,分母一致的前提下,召回的label量越多,準確率越高,目前得到的實驗結果與樹模型相比在topx%上的準確率相對提升31.6%。

4.更好地平衡模型複雜度和表示能力

01 思考:模型複雜度和表示能力增強的博弈

在訓練期間,Deep側的輸入,在加入交叉特徵的embedding之後,模型收斂變慢且不穩定,效果並沒有提升,而在不把cross feature放入Deep時,提升比較明顯,是由於模型對這部分特徵沒有學到很好的表達,無法發揮出embedding的優勢。 引入了新的信息,也增加了模型的複雜度,進而導致負向影響,因此我們決定對部分高維特徵進行預訓練(pre-train)的方式先對小區,商圈以及偏好組合進行embedding,然後將得到的低維稠密向量作為連續特徵輸入到Wide&Deep模型中。

02 用預訓練調和模型複雜度與表示能力

為此構造的數據集是有N個用戶的點擊會話序列組成, s =(長1個,…,Lñ)∈S 定義為一個用戶點擊的n個房源id組成的不間斷序列,只要用戶連續兩次點擊之間的時間超過20分鐘就認為是一個新的會話。 通過此序列來訓練出一個32的實值向量來標識平台上的所有房源。

通過借鑒Airbnb的嵌入訓練方法來對用戶點擊房源序列進行學習,採用滑動窗口的方式讀取點擊會話,通過隨機梯度下降的方法更新。 在每一步中,都會更新中心房源的向量並將其推正向相關的其他房源,如圖4所示,並且我們採用同樣的方法來進行偏好交叉特徵的訓練[7]。

深度廣度模型在用戶購房意願量化的應用 9

圖4 pre-train房源嵌入訓練示意圖

那麼網絡結構更新如圖5所示:

深度廣度模型在用戶購房意願量化的應用 10

圖5 模型迭代後的示意圖

03 實驗結果與分析

為了防止模型過擬合,加入了dropout;為了加快模型的收斂,引入了Batch Normalization(BN);並且為了保證模型訓練的穩定性和收斂性,嘗試不同的learning rate(deep側0.01效果較好)和batch_size(目前設置的4096);在激活函數的選擇上,我們對比了Selu、Relu、Prelu等激活函數,最終選擇了效果最好的Selu。 實驗證明,通過參數的調整,能夠明顯的影響模型的訓練效果。 更新之後,網絡收斂速度加快,減小了模型的複雜度,表達能力增強,提高了在topx%的準確率。

5.力更好地表達用戶行為-序列引入

01 再思考:時序表達我們學會了嗎?

在探索新的特徵的過程中,我們發現引入用戶在時序上的行為量差特徵會對模型後驗效果有一定的提升,而且用戶行為本身就是時間序列,前期我們是通過固定的時間窗口把問題簡化進行模型訓練,過程中會丟失一部分的信息,Wide &Deep 模型針對用戶購房意願量化的應用場景下,無需考慮模型對時間序列信息的表達問題,故對於時序問題的信息表達有所欠缺,所以我們在Wide&Deep的基礎上引入GRU去更好的提取用戶的時序特徵,來進一步提升模型的準確率,進而給業務場景的應用帶來進一步的提升。

02 GRU時序模型

GRU模型只有兩個gate,一個是reset gate,也就是多大程度上擦除以前的狀態state,一個是update gate,update gate的作用類似於input gate和forget gate,它的作用是多大程度上要用candidate 來更新當前的hidden layer,(1-z)相當於input gate,z相當於forget gate,同樣還混合了cell狀態和隱藏狀態,比標準LSTM簡單,參數更少,比較容易訓練[8]。 模型結構如圖6所示。

深度廣度模型在用戶購房意願量化的應用 11

圖6 GRU的示意圖

特徵設計

GRU+Wide & Deep特徵增加了時序模型的特徵,通過用戶行為量去提取時序特徵,更好地表達用戶隨著時間的行為軌蹟的變化。

深度廣度模型在用戶購房意願量化的應用 12

模型設計

時序模型選擇GRU(64->32),Dense層的激活函數選擇selu,優化器選擇adam,loss選擇binary_crossentropy,整體的網絡結構如圖7所示。

深度廣度模型在用戶購房意願量化的應用 13

圖7 GRU+Wide & Deep示意圖

03 實驗結果與分析

將GRU部分,Wide部分和Deep部分一起加入到loss中進行模型訓練,效果有了明顯的提升,並且我們還嘗試將GRU部分加入到Deep中進行訓練等其他方法,大家可以自由發揮。

6.總結和展望

本文主要介紹了深度廣度模型在用戶價值量化上的應用,包括wide&deep的應用與迭代,端到端與預訓練的討論以及時序模型與深度廣度模型的結合,在預測結果上也取得了較為明顯的正向收益,提高了頭部準確率。

目前我們正在進行模型的進一步優化,不斷總結和嘗試。 例如從注意力角度著手,更好的學習用戶的興趣和行為量表達,進而優化價值判斷精度,有相關進展,會在評論區做更新。

7.參考文獻

[1] Bobadilla J,Ortega F,Hernando A等。 推薦系​​統調查[J]。 知識庫系統,2013,46(1):109-132。

[2] Cheng H,Koc L,Harmsen J等。 推薦系​​統的廣泛和深度學習[J]。 推薦系​​統會議,2016:7-10。

[3] Qu Y,Han C,Kan R,et al。 基於產品的神經網絡用於用戶響應預測[C]// IEEE國際數據挖掘會議。 2017。

[4] 郭輝,唐R,葉Y,等。 DeepFM:用於預測點擊率的基於分解的機器神經網絡[J]。 國際人工智能聯合會議,2017:1725-1731。

[5] Wang R,Fu B,Fu G,et al。 深度和跨網絡的廣告點擊預測[J]。 知識發現和數據挖掘,2017年。

[6] 趙X,張L,丁Z,等。 針對清單建議的深度強化學習。[J]。 arXiv:學習,2018年。

[7] 格博維奇M,程宏。 在Airbnb上使用嵌入進行搜索排名的實時個性化[C]// 2018:311-320。

[8] Chung J,Gulcehre C,Cho KH等。 門控遞歸神經網絡的序列建模經驗評估[J]。 Eprint Arxiv,2014年。

本文轉載自公眾號貝殼產品技術(ID:beikeTC)。

原文鏈接

深度廣度模型在用戶購房意願量化的應用