推薦系統(tǒng)-重排序-CTR-DeepFM等DNN模型

概述

關(guān)鍵詞:特征組合
LR:缺乏特征組合能力假栓,需人工做特征工程
GBDT+LR:特種組合能力不強(qiáng),對(duì)高維的稀疏特征應(yīng)對(duì)乏力
FM:具有較強(qiáng)的二階特征組合能力儡率,高階特征組合應(yīng)對(duì)乏力
Wide&Deep:較好地利用了低階和高階組合特征。但是wide部分依舊需要特征工程,其二階特征組合需要人工挑選
DeepFM :其實(shí)是Wide&Deep的變體熄捍,把wide部分由LR轉(zhuǎn)變?yōu)镕M。所以更好地利用了低階和高階的組合特征母怜。而且免去了人工特種組合余耽。

說到底,為什么CTR領(lǐng)域苹熏,特征組合如此被強(qiáng)調(diào)碟贾?
首先,CTR領(lǐng)域特征基本屬于離散類別特征轨域。
而不同的特征之間可能存在某種聯(lián)系袱耽。例如:

  • 1,性別男+20-30歲+喜歡籃球 可能更傾向于點(diǎn)擊 槍戰(zhàn)的游戲廣告
  • 2干发,飯點(diǎn)時(shí)間段 用戶可能更容易去下載外賣類app
  • 3朱巨,經(jīng)典的尿布-啤酒案例

像第一種組合,可能很容易就能想出來枉长,甚至不需要數(shù)據(jù)的支持
而第二種組合冀续,就不太容易能想出來,但可能通過簡單的數(shù)據(jù)分析而發(fā)現(xiàn)此規(guī)律
但像第三種組合必峰,幾乎只能通過數(shù)據(jù)發(fā)掘出來洪唐。
這就提示我們,數(shù)據(jù)中可能存在很多難以人工發(fā)掘甚至不能通過簡單數(shù)據(jù)分析而得出的有用的組合特征這些組合特征可能是低階的也可能是高階的吼蚁,而且高低階組合特征都很重要凭需。
所以要盡可能做特征組合。
其實(shí)在NLP中肝匆,n-gram也屬于特征組合粒蜈。只不過會(huì)帶來更高的特征維度。因?yàn)?术唬,詞表太大薪伏,2,詞不分field粗仓。最終會(huì)導(dǎo)致詞的embedding矩陣太大嫁怀。

DeepFM

模型

DeepFm

如上圖所示:
其實(shí)DeepFM就是把Wide&Deep模型的wide部分改為了FM设捐。
黑色線---帶權(quán)重的連接
紅色線---不帶權(quán)重的連接
藍(lán)色線---稀疏特征向稠密特征轉(zhuǎn)換的embedding向量,并且這個(gè)embedding會(huì)隨著訓(xùn)練而學(xué)習(xí)更新

  • 第一層:Sparse Feature 稀疏特征塘淑,每個(gè)field下有一個(gè)onehot編碼的向量萝招,其長度等于此filed下特征類別數(shù),共m個(gè)field存捺。
  • 第二層:m個(gè)Dense向量拼接而成的mk維向量x槐沼。
    第一層中的 每個(gè)field i都轉(zhuǎn)換(Embedding)到了k維稠密向量空間Dense_i,filed i中每個(gè)不同的onehot向量(具體的一個(gè)特征如[0,0,1,0,0,0,0])對(duì)應(yīng)著一個(gè)特定的稠密向量Dense_{ik}捌治,例如對(duì)于某個(gè)filed i岗钩,可能有如下對(duì)應(yīng)(k=4)
    \begin{alignedat}{2} [1,0,0,0,0,0,0] &\Rightarrow [0.2,0.3,0.5,0.2]=Dense_{i1}\\ ...\\ [0,0,0,0,0,1,0] &\Rightarrow [0.4,0.3,0.9,0.3]=Dense_{i6}\\ [0,0,0,0,0,0,1] &\Rightarrow [0.1,0.1,0.3,0.8]=Dense_{i7}\\ \end{alignedat}
    Dense_{i1},...Dense_{i7}都是空間Dense_i里的向量
    注意,這里的[1,0,0,0,0,0,0]僅代表了一個(gè)field肖油,而非一個(gè)樣本兼吓,一個(gè)樣本由若干個(gè)這樣的filed拼接而成。
    這里把每一個(gè)field映射到了對(duì)應(yīng)的一個(gè)k維空間里面
  • 第三層FM Layer:
    一個(gè)Addition符號(hào)森枪,接收黑色連線视搏,代表了FM的一階特征部分\sum w_ix_i
    后續(xù)的若干個(gè)Inner Product接收紅色連線,代表了二階特征組合部分^1(見探究部分) 县袱。對(duì)于每一個(gè)樣本\sum \sum <v_i·v_j>x_ix_j=\sum \sum <Dense_{ia}·Dense_{ja}> 對(duì)于field內(nèi)互斥的onehot編碼浑娜,對(duì)于一個(gè)特定樣本,v_i=Dense_{ia},v_j=Dense_{ja}
    注意這里式散,兩個(gè)\sum部分是在第四層Output Units完成的筋遭,本層只交叉出該樣本的組合特征。
  • 第三層Hidden Layer:簡單的全連接杂数。
    輸入是m個(gè)Dense向量的拼接a^0=x宛畦,維度是mk
    后續(xù)是a^l=W^{l-1}a^{l-1}+b^l
  • 第四層 Output Units。接收第三層的輸出:
    \sum w_ix_i +\sum \sum <v_i·v_j>x_ix_j+W^la^l
    最后的輸出是
    P(Y=1|x)=\sigma(\sum w_ix_i +\sum \sum <v_i·v_j>x_ix_j+W^la^l)

FM層的探究

FM

對(duì)于onehot編碼來說揍移,
x_i特征對(duì)應(yīng)著向量[0,0...1...0...0]其中第i位=1,其他=0反肋;
x_i特征對(duì)應(yīng)著向量[0,0...0...1...0]其中第j位=1那伐,其他=0;
所以x_i的隱向量=v_i等價(jià)于[0,0...1...0...0]被編碼成v_i
v_i=transform([0,0...1...0...0])
x_i*x_j表示兩特征交叉石蔗,其權(quán)重w_{ij}則被FM表示成了兩隱向量的內(nèi)積<v_i·v_j>
<v_i·v_j>x_i*x_j=transform([0,0...1...0...0])·transform([0,0...0...1...0])
注意式子
\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}<v_i·v_j>x_ix_j \tag{4.1}
雖然看似有o(n^2)的復(fù)雜度罕邀,但實(shí)際上x_ix_j絕大多數(shù)時(shí)候都=0,這表示對(duì)于每一個(gè)樣本养距,式(4.1)計(jì)算量遠(yuǎn)達(dá)不到o(n^2)诉探。對(duì)于一個(gè)特定的樣本,式(4.1)退化成
\sum_{i=1}^{\overline{n} -1}\sum_{j=i+1}^{\overline{n}}<v_i·v_j>x_ix_j \tag{4.2}
\overline{n}表示該樣本的稀疏特征中1的數(shù)量棍厌。

\begin{alignedat}{2} \sum_{i=1}^{\overline{n} -1}\sum_{j=i+1}^{\overline{n}}<v_i·v_j>x_ix_j = \sum_{i=1}^{\overline{n} -1}\sum_{j=i+1}^{\overline{n}}transform([0,0...1...0...0])·transform([0,0...0...1...0]) \end{alignedat}

在DeepFM的FM層中肾胯,對(duì)于特定的樣本竖席,二階特征組合被表示成了
\sum\sum<Dense_{ia}·Dense_{ja}>
Dense_{ia},Dense_{ja}表示樣本a分別在filed i和j的具體Dense特征。這其實(shí)就是FM的隱向量v_i,v_j
\sum\sum<Dense_{ia}·Dense_{ja}> =\sum\sum<v_i·v_j>
而要使這個(gè)等式成立敬肚,需要滿足如下條件:

  • 1毕荐,所有Dense向量維度相等都為k。這個(gè)顯而易見艳馒。
  • 2憎亚,特征的交叉限于field之間,而非filed之內(nèi)弄慰。但FM中沒有field概念第美,F(xiàn)M特征交叉是每一個(gè)特征都會(huì)交叉,會(huì)比DeepFM的交叉特征多很多陆爽。
  • 3什往,稀疏編碼應(yīng)該是One-Hot(向量中只有一個(gè)1,如性別墓陈,分桶后的年齡)的恶守。而非Multi-Hot(一個(gè)向量中有多個(gè)1,如安裝的app贡必,愛好)兔港。
    FM無論是onehot還是multihot編碼,都會(huì)構(gòu)建出所有二階交叉的特征(例如性別和某一個(gè)app的交叉)仔拟。
    DeepFM只有在onehot編碼下才能構(gòu)建出所有二階交叉特征衫樊。當(dāng)每個(gè)field只用onehot編碼時(shí),就不會(huì)存在field內(nèi)的特征交叉(就像不存在性別男x性別女的交叉一樣)利花。但如果有的field是multihot編碼的科侈,即一個(gè)樣本在一個(gè)field中同時(shí)存在多個(gè)1,即應(yīng)該使用多個(gè)隱向量v_i炒事,那么按照DeepFM或wide&deep的網(wǎng)絡(luò)結(jié)構(gòu)臀栈,就必須把這多個(gè)隱向量v_i(或稱Dense_{ia})合而為一(例如求和)。這樣就無法做該filed內(nèi)的特征組合了(例如無法完成“安裝了微信x安裝了支付寶”這樣的特征交叉挠乳,而這樣的交叉顯然是很有意義的)权薯。但是field間的特征組合還是可以做的,因?yàn)楦鶕?jù)乘法分配律y\sum x_i=\sum yx_i睡扬,field間依舊可以做二階特征交叉盟蚣。

如果要解決multihot的問題,就需要把每一個(gè)特征化為一個(gè)field卖怜。但這樣會(huì)帶來一個(gè)問題屎开,就是DenseEmbedding層維度太高(相當(dāng)于稀疏編碼的k倍!)马靠,造成神經(jīng)網(wǎng)絡(luò)參數(shù)過多影響速度奄抽,所以DeepFM也算是一種折中(但結(jié)果還是有提高的)
在DeepFM的論文中蔼两,特征只使用了onehot編碼,巧妙地規(guī)避了這個(gè)問題如孝。

而反觀wide&deep模型宪哩,是使用了multihot編碼的(user installed app,impression app)第晰,在轉(zhuǎn)化為dense embedding時(shí)可能用了求和或平均然后送入Deep模塊锁孟;但同時(shí)模型把稀疏的multihot編碼做了人工特征挑選和交叉后送入了Wide模塊。所以可以認(rèn)為wide&deep模型反而比DeepFM模型多做了field內(nèi)特征交叉的工作(但是是非自動(dòng)化的茁瘦,亦非全部field的)品抽。所以在multihot編碼問題上,DeepFM還有提升空間甜熔。例如對(duì)于multihot特征圆恤,單獨(dú)使用一個(gè)FM做field內(nèi)交叉。

其它FM與神經(jīng)網(wǎng)絡(luò)組合模型

FNNPNN.png

FNN

使用FM初始化DenseEmbedding層腔稀,然后直接輸入全連接網(wǎng)絡(luò)盆昙。
需要預(yù)訓(xùn)練。在神經(jīng)網(wǎng)絡(luò)訓(xùn)練后焊虏,高階組合特征得到了較好地訓(xùn)練淡喜,但可能因而使得低階特征被忽略

PNN

從稀疏層到DenseEmbedding層是類似DeepFM的隨機(jī)初始化+后續(xù)訓(xùn)練。只不過在DenseEmbedding層到隱層之間诵闭,又多了一層Product層炼团。這個(gè)Product層用于組合DenseEmbedding層中不同field的特征。怎么組合呢疏尿?
看上圖中瘟芝,在Product層,有兩部分組成:

  • 灰底灰度點(diǎn)部分表示DenseEmbedding的直接拼接
  • 黃點(diǎn)部分則表示DenseEmbedding不同field特征的兩兩組合褥琐。而這里的兩兩組合又有很多種形式:
    • 第一種锌俱,是求內(nèi)積,就像DeepFM的FM部分一樣敌呈,只不過其結(jié)果送入了隱層 嚼鹉。模型叫做IPNN
    • 第二種,是求外積驱富,這樣兩個(gè)field特征交叉得到一個(gè)矩陣而非實(shí)數(shù)。而這兩兩獲得的多個(gè)矩陣匹舞,如果通過拼接來組合那就會(huì)帶來計(jì)算量的暴增褐鸥,所以為了降低計(jì)算量,會(huì)把這多個(gè)矩陣?yán)奂悠饋怼?/li>

NFM

像PNN赐稽,在DenseEmbedding層和隱層之間加一層FM層做特征組合叫榕。其實(shí)比PNN簡單

AFM

引入注意力機(jī)制
待續(xù)

參考

DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
https://cloud.tencent.com/developer/article/1164785

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浑侥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子晰绎,更是在濱河造成了極大的恐慌寓落,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荞下,死亡現(xiàn)場(chǎng)離奇詭異伶选,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)尖昏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門仰税,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抽诉,你說我怎么就攤上這事陨簇。” “怎么了迹淌?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵河绽,是天一觀的道長。 經(jīng)常有香客問我唉窃,道長耙饰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任句携,我火速辦了婚禮榔幸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘矮嫉。我一直安慰自己削咆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布蠢笋。 她就那樣靜靜地躺著拨齐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昨寞。 梳的紋絲不亂的頭發(fā)上瞻惋,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音援岩,去河邊找鬼歼狼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛享怀,可吹牛的內(nèi)容都是我干的羽峰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼梅屉!你這毒婦竟也來了值纱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤坯汤,失蹤者是張志新(化名)和其女友劉穎虐唠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惰聂,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疆偿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了庶近。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翁脆。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鼻种,靈堂內(nèi)的尸體忽然破棺而出反番,到底是詐尸還是另有隱情,我是刑警寧澤叉钥,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布罢缸,位于F島的核電站,受9級(jí)特大地震影響投队,放射性物質(zhì)發(fā)生泄漏枫疆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一敷鸦、第九天 我趴在偏房一處隱蔽的房頂上張望息楔。 院中可真熱鬧,春花似錦扒披、人聲如沸值依。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽愿险。三九已至,卻和暖如春价说,著一層夾襖步出監(jiān)牢的瞬間辆亏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工鳖目, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扮叨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓领迈,卻偏偏與公主長得像甫匹,于是被迫代替她去往敵國和親甸鸟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容