DeepFM算法

? ??本文記錄的目的是方便自己學(xué)習(xí)和復(fù)習(xí),有誤之處請(qǐng)諒解,歡迎指出。

? ??FM通過(guò)對(duì)于每一位特征的隱變量?jī)?nèi)積來(lái)提取特征組合,最后的結(jié)果還不錯(cuò),理論上FM可以對(duì)高階特征組合進(jìn)行建模,但實(shí)際中因?yàn)橛?jì)算復(fù)雜度的原因,一般只用到了二階特征組合。如果需要高階特征的話,怎么辦?DeepFM就是可以同時(shí)學(xué)習(xí)低階和高階的特征交叉的改進(jìn)模型,主要由FM和DNN兩部分組成,結(jié)合了廣度和深度模型的優(yōu)點(diǎn),聯(lián)合訓(xùn)練FM模型和DNN模型,

? ? DeepFM如下圖所示,從架構(gòu)上可以拆解成FM部分和DNN部分,分別負(fù)責(zé)低階特征的提取和高階特征的提取,同時(shí)共享第二層Dense Embedding。

DeepFM

? ? 公式如下,就是將兩部分特征融合,然后sigmoid:

? ? 網(wǎng)上用這個(gè)張圖講解較多,剛開(kāi)始看到時(shí),沒(méi)理解里面的具體計(jì)算細(xì)節(jié),花了半天時(shí)間進(jìn)行理解,現(xiàn)在通過(guò)自己的理解進(jìn)行介紹。

一、FFM模塊

? ? ? ? 第一層,就是針對(duì)m個(gè)領(lǐng)域做One Hot編碼,每一個(gè)特征領(lǐng)域的One Hot中只有一個(gè)值為1,其他為0:

????????第二層,在之前FM篇講解中說(shuō)過(guò),每個(gè)特征x_{i} 都轉(zhuǎn)換對(duì)應(yīng)一個(gè)k維的隱向量,這里k=5。但是由于一層中的x_{i} 只有一個(gè)值為1,其他值為0,所以只有特征值為1的x_{i} 隱向量傳遞至第二層,這樣每個(gè)領(lǐng)域只上傳遞一個(gè)5維的特征向量到第二層。(從公式上理解,其實(shí)就是只有值為1的特征做特征組合才有意義,F(xiàn)M篇也講過(guò),如果值為0的隱向量傳遞到第二層,做特征交叉輸出也為0,沒(méi)有意義

? ? ? ? 第三層,框架圖左側(cè)第一個(gè)+就是公式左邊的計(jì)算,將值為1的特征權(quán)重相加,值為0的特征加了也是白加,其輸出為0;框架圖右側(cè)\times 就是公式右邊的計(jì)算過(guò)程,將特征值都為1的特征隱向量?jī)蓛商卣鹘徊妗?/p>

FFM部分公式
FFM部分框架

? ? FFM模塊計(jì)算過(guò)程如上所述,輸出的是一個(gè)特征寬度優(yōu)先的二階特征交叉。

一、Deep模塊

? ? 現(xiàn)在介紹特征深度模塊,這個(gè)部分我覺(jué)得沒(méi)啥細(xì)節(jié)可講,就是用第二層每個(gè)領(lǐng)域的特征隱向量embedding layer作為DNN的輸入,提取高階特征y_{dnn} 。

Deep模塊框架
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容