日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深度长文 | 从FM推演各深度CTR预估模型(附开源代码)

發(fā)布時間:2024/10/8 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度长文 | 从FM推演各深度CTR预估模型(附开源代码) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


作者丨龍心塵 & 寒小陽

研究方向丨機器學(xué)習(xí),數(shù)據(jù)挖掘


題記:多年以后,當(dāng)資深算法專家們看著無縫對接用戶需求的廣告收入節(jié)節(jié)攀升時,他們可能會想起自己之前痛苦推導(dǎo) FM 與深度學(xué)習(xí)公式的某個夜晚……


本文代碼部分參考了 lambda 等同學(xué)的 TensorFlow 實現(xiàn),在此向原作者表示感謝。


引言?


點擊率(click-through rate, CTR)是互聯(lián)網(wǎng)公司進行流量分配的核心依據(jù)之一。比如互聯(lián)網(wǎng)廣告平臺,為了精細化權(quán)衡和保障用戶、廣告、平臺三方的利益,準(zhǔn)確的 CTR 預(yù)估是不可或缺的。CTR 預(yù)估技術(shù)從傳統(tǒng)的邏輯回歸,到近兩年大火的深度學(xué)習(xí),新的算法層出不窮:DeepFM, NFM, DIN, AFM, DCN……?


然而,相關(guān)的綜述文章不少,但碎片羅列的居多,模型之間內(nèi)在的聯(lián)系和演化思路如何揭示?怎樣才能迅速 get 到新模型的創(chuàng)新點和適用場景,快速提高新論文速度,節(jié)約理解、復(fù)現(xiàn)模型的成本?這些都是亟待解決的問題。?


我們認為,從 FM 及其與神經(jīng)網(wǎng)絡(luò)的結(jié)合出發(fā),能夠迅速貫穿很多深度學(xué)習(xí) CTR 預(yù)估網(wǎng)絡(luò)的思路,從而更好地理解和應(yīng)用模型。


本文的思路與方法


1. 我們試圖從原理上進行推導(dǎo)、理解各個深度 CTR 預(yù)估模型之間的相互關(guān)系,知其然也知其所以然(以下的分析與拆解角度,是一種我們嘗試的理解視角,并不是唯一的理解方式)。


2. 推演的核心思路:“通過設(shè)計網(wǎng)絡(luò)結(jié)構(gòu)進行組合特征的挖掘”。?


3. 具體來說有兩條:其一是從 FM 開始推演其在深度學(xué)習(xí)上的各種推廣(對應(yīng)下圖的紅線),另一條是從 embedding + MLP 自身的演進特點結(jié)合 CTR 預(yù)估本身的業(yè)務(wù)場景進行推演(對應(yīng)下圖黑線部分)?



4. 為了便于理解,我們簡化了數(shù)據(jù)案例——只考慮離散特征數(shù)據(jù)的建模,以分析不同神經(jīng)網(wǎng)絡(luò)在處理相同業(yè)務(wù)問題時的不同思路。


5. 同時,我們將各典型論文不同風(fēng)格的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖統(tǒng)一按照計算圖來繪制,以便于對比不同模型。


FM:降維版本的特征二階組合


CTR 預(yù)估本質(zhì)是一個二分類問題,以移動端展示廣告推薦為例,依據(jù)日志中的用戶側(cè)的信息(比如年齡,性別,國籍,手機上安裝的 app 列表)、廣告?zhèn)鹊男畔?#xff08;廣告 id,廣告類別,廣告標(biāo)題等)、上下文側(cè)信息(渠道 id 等),去建模預(yù)測用戶是否會點擊該廣告。?


FM 出現(xiàn)之前的傳統(tǒng)的處理方法是人工特征工程加上線性模型(如邏輯回歸 Logistic Regression)。為了提高模型效果,關(guān)鍵技術(shù)是找到到用戶點擊行為背后隱含的特征組合。如男性、大學(xué)生用戶往往會點擊游戲類廣告,因此“男性且是大學(xué)生且是游戲類”的特征組合就是一個關(guān)鍵特征。但這本質(zhì)仍是線性模型,其假設(shè)函數(shù)表示成內(nèi)積形式一般為:



其中為特征向量,為權(quán)重向量,σ() 為 sigmoid 函數(shù)。?


但是人工進行特征組合通常會存在諸多困難,如特征爆炸、特征難以被識別、組合特征難以設(shè)計等。為了讓模型自動地考慮特征之間的二階組合信息,線性模型推廣為二階多項式(2d?Polynomial)模型:



其實就是對特征兩兩相乘(組合)構(gòu)成新特征(離散化之后其實就是“且”操作),并對每個新特征分配獨立的權(quán)重,通過機器學(xué)習(xí)來自動得到這些權(quán)重。將其寫成矩陣形式為:



其中為二階特征組合的權(quán)重矩陣,是對稱矩陣。而這個矩陣參數(shù)非常多,為。為了降低該矩陣的維度,可以將其因子分解(Factorization)為兩個低維(比如 n?k)矩陣的相乘。則此時 W 矩陣的參數(shù)就大幅降低,為O(nk)。公式如下:



這就是 Rendle 等在 2010 年提出因子分解機(Factorization Machines,FM)的名字的由來。FM 的矩陣形式公式如下:



將其寫成內(nèi)積的形式:



利用,可以將上式進一步改寫成求和式的形式:



其中向量是矩陣 W 的第 i 列。為了去除重復(fù)項與特征平方項,上式可以進一步改寫成更為常見的 FM 公式:



對比二階多項式模型,FM 模型中特征兩兩相乘(組合)的權(quán)重是相互不獨立的,它是一種參數(shù)較少但表達力強的模型。


此處附上 FM 的 TensorFlow 代碼實現(xiàn),完整數(shù)據(jù)和代碼請參考網(wǎng)盤


網(wǎng)盤鏈接:

https://pan.baidu.com/s/1eDwOxweRDPurI2fF51EALQ


注意 FM 通過內(nèi)積進行無重復(fù)項與特征平方項的特征組合過程使用了一個小 trick,就是:



class?FM(Model):
????def?__init__(self,?input_dim=None,?output_dim=1,?factor_order=10,?init_path=None,?opt_algo='gd',?learning_rate=1e-2,
?????????????????l2_w=0,?l2_v=0,?random_seed=None)
:

????????Model.__init__(self)
????????#?一次、二次交叉、偏置項
????????init_vars?=?[('w',?[input_dim,?output_dim],?'xavier',?dtype),
?????????????????????('v',?[input_dim,?factor_order],?'xavier',?dtype),
?????????????????????('b',?[output_dim],?'zero',?dtype)]
????????self.graph?=?tf.Graph()
????????with?self.graph.as_default():
????????????if?random_seed?is?not?None:
????????????????tf.set_random_seed(random_seed)
????????????self.X?=?tf.sparse_placeholder(dtype)
????????????self.y?=?tf.placeholder(dtype)
????????????self.vars?=?init_var_map(init_vars,?init_path)

????????????w?=?self.vars['w']
????????????v?=?self.vars['v']
????????????b?=?self.vars['b']

????????????#?[(x1+x2+x3)^2?-?(x1^2+x2^2+x3^2)]/2
????????????#?先計算所有的交叉項,再減去平方項(自己和自己相乘)
????????????X_square?=?tf.SparseTensor(self.X.indices,?tf.square(self.X.values),?tf.to_int64(tf.shape(self.X)))
????????????xv?=?tf.square(tf.sparse_tensor_dense_matmul(self.X,?v))
????????????p?=?0.5?*?tf.reshape(
????????????????tf.reduce_sum(xv?-?tf.sparse_tensor_dense_matmul(X_square,?tf.square(v)),?1),
????????????????[-1,?output_dim])
????????????xw?=?tf.sparse_tensor_dense_matmul(self.X,?w)
????????????logits?=?tf.reshape(xw?+?b?+?p,?[-1])
????????????self.y_prob?=?tf.sigmoid(logits)

????????????self.loss?=?tf.reduce_mean(
????????????????tf.nn.sigmoid_cross_entropy_with_logits(logits=logits,?labels=self.y))?+?\
????????????????????????l2_w?*?tf.nn.l2_loss(xw)?+?\
????????????????????????l2_v?*?tf.nn.l2_loss(xv)
????????????self.optimizer?=?get_optimizer(opt_algo,?learning_rate,?self.loss)

????????????#GPU設(shè)定
????????????config?=?tf.ConfigProto()
????????????config.gpu_options.allow_growth?=?True
????????????self.sess?=?tf.Session(config=config)
????????????#?圖中所有variable初始化
????????????tf.global_variables_initializer().run(session=self.sess)


用神經(jīng)網(wǎng)絡(luò)的視角看FM:嵌入后再進行內(nèi)積


我們觀察 FM 公式的矩陣內(nèi)積形式:



發(fā)現(xiàn)部分就是將離散系數(shù)特征通過矩陣乘法降維成一個低維稠密向量。這個過程對神經(jīng)網(wǎng)絡(luò)來說就叫做嵌入(embedding)。所以用神經(jīng)網(wǎng)絡(luò)視角來看:?


1. FM 首先是對離散特征進行嵌入。?


2. 之后通過對嵌入后的稠密向量進行內(nèi)積來進行二階特征組合。?


3. 最后再與線性模型的結(jié)果求和進而得到預(yù)估點擊率。?


其示意圖如下。為了表述清晰,我們繪制的是神經(jīng)網(wǎng)絡(luò)計算圖而不是網(wǎng)絡(luò)結(jié)構(gòu)圖——在網(wǎng)絡(luò)結(jié)構(gòu)圖中增加了權(quán)重 W 的位置。



FM的實際應(yīng)用:考慮領(lǐng)域信息


廣告點擊率預(yù)估模型中的特征以分領(lǐng)域的離散特征為主,如:廣告類別、用戶職業(yè)、手機APP列表等。由于連續(xù)特征比較好處理,為了簡化起見,本文只考慮同時存在不同領(lǐng)域的離散特征的情形


處理離散特征的常見方法是通過獨熱(one-hot)編碼轉(zhuǎn)換為一系列二值特征向量。然后將這些高維稀疏特征通過嵌入(embedding)轉(zhuǎn)換為低維連續(xù)特征。前面已經(jīng)說明 FM 中間的一個核心步驟就是嵌入,但這個嵌入過程沒有考慮領(lǐng)域信息。這使得同領(lǐng)域內(nèi)的特征也被當(dāng)做不同領(lǐng)域特征進行兩兩組合了。?


其實可以將特征具有領(lǐng)域關(guān)系的特點作為先驗知識加入到神經(jīng)網(wǎng)絡(luò)的設(shè)計中去:同領(lǐng)域的特征嵌入后直接求和作為一個整體嵌入向量,進而與其他領(lǐng)域的整體嵌入向量進行兩兩組合。而這個先嵌入后求和的過程,就是一個單領(lǐng)域的小離散特征向量乘以矩陣的過程。


此時 FM 的過程變?yōu)?#xff1a;對不同領(lǐng)域的離散特征分別進行嵌入,之后再進行二階特征的向量內(nèi)積。其計算圖圖如下所示:



這樣考慮其實是給 FM 增加了一個正則:考慮了領(lǐng)域內(nèi)的信息的相似性。而且還有一個附加的好處,這些嵌入后的同領(lǐng)域特征可以拼接起來作為更深的神經(jīng)網(wǎng)絡(luò)的輸入,達到降維的目的。接下來我們將反復(fù)看到這種處理方式。?


此處需要注意,這與“基于領(lǐng)域的因子分解機”(Field-aware Factorization Machines,FFM有區(qū)別。FFM 也是 FM 的另一種變體,也考慮了領(lǐng)域信息。但其不同點是同一個特征與不同領(lǐng)域進行特征組合時,其對應(yīng)的嵌入向量是不同的。本文不考慮 FFM 的作用機制。?


經(jīng)過這些改進的 FM 終究還是淺層網(wǎng)絡(luò),它的表現(xiàn)力仍然有限。為了增加模型的表現(xiàn)力(model capacity),一個自然的想法就是將該淺層網(wǎng)絡(luò)不斷“深化”。


embedding+MLP:深度學(xué)習(xí)CTR預(yù)估的通用框架


embedding+MLP 是對于分領(lǐng)域離散特征進行深度學(xué)習(xí) CTR 預(yù)估的通用框架。深度學(xué)習(xí)在特征組合挖掘(特征學(xué)習(xí))方面具有很大的優(yōu)勢。比如以 CNN 為代表的深度網(wǎng)絡(luò)主要用于圖像、語音等稠密特征上的學(xué)習(xí),以 W2V、RNN 為代表的深度網(wǎng)絡(luò)主要用于文本的同質(zhì)化、序列化高維稀疏特征的學(xué)習(xí)。CTR 預(yù)估的主要場景是對離散且有具體領(lǐng)域的特征進行學(xué)習(xí),所以其深度網(wǎng)絡(luò)結(jié)構(gòu)也不同于 CNN 與 RNN。?


具體來說, embedding+MLP 的過程如下:?


1. 對不同領(lǐng)域的 one-hot 特征進行嵌入(embedding),使其降維成低維度稠密特征。?


2. 然后將這些特征向量拼接(concatenate)成一個隱含層。?


3. 之后再不斷堆疊全連接層,也就是多層感知機(Multilayer Perceptron, MLP,有時也叫作前饋神經(jīng)網(wǎng)絡(luò))。?


4. 最終輸出預(yù)測的點擊率。?


其示意圖如下:



embedding+MLP 的缺點是只學(xué)習(xí)高階特征組合,對于低階或者手動的特征組合不夠兼容,而且參數(shù)較多,學(xué)習(xí)較困難。?


FNN:FM與MLP的串聯(lián)結(jié)合


Weinan Zhang 等在 2016 年提出的因子分解機神經(jīng)網(wǎng)絡(luò)(Factorisation Machine supported Neural Network,FNN)將考 FM 與 MLP 進行了結(jié)合。它有著十分顯著的特點:?


1. 采用 FM 預(yù)訓(xùn)練得到的隱含層及其權(quán)重作為神經(jīng)網(wǎng)絡(luò)的第一層的初始值,之后再不斷堆疊全連接層,最終輸出預(yù)測的點擊率。?


2. 可以將 FNN 理解成一種特殊的 embedding+MLP,其要求第一層嵌入后的各領(lǐng)域特征維度一致,并且嵌入權(quán)重的初始化是 FM 預(yù)訓(xùn)練好的。?


3. 這不是一個端到端的訓(xùn)練過程,有貪心訓(xùn)練的思路。而且如果不考慮預(yù)訓(xùn)練過程,模型網(wǎng)絡(luò)結(jié)構(gòu)也沒有考慮低階特征組合。?


其計算圖如下所示:?



通過觀察 FFN 的計算圖可以看出其與 embedding+MLP 確實非常像。不過此處省略了 FNN 的 FM 部分的線性模塊。這種省略為了更好地進行兩個模型的對比。接下來的計算圖我們都會省略線性模塊


此處附上 FNN 的代碼實現(xiàn),完整數(shù)據(jù)和代碼請參考網(wǎng)盤。?


網(wǎng)盤鏈接:

https://pan.baidu.com/s/1eDwOxweRDPurI2fF51EALQ


class?FNN(Model):
????def?__init__(self,?field_sizes=None,?embed_size=10,?layer_sizes=None,?layer_acts=None,?drop_out=None,
?????????????????embed_l2=None,?layer_l2=None,?init_path=None,?opt_algo='gd',?learning_rate=1e-2,?random_seed=None)
:

????????Model.__init__(self)
????????init_vars?=?[]
????????num_inputs?=?len(field_sizes)
????????for?i?in?range(num_inputs):
????????????init_vars.append(('embed_%d'?%?i,?[field_sizes[i],?embed_size],?'xavier',?dtype))
????????node_in?=?num_inputs?*?embed_size
????????for?i?in?range(len(layer_sizes)):
????????????init_vars.append(('w%d'?%?i,?[node_in,?layer_sizes[i]],?'xavier',?dtype))
????????????init_vars.append(('b%d'?%?i,?[layer_sizes[i]],?'zero',?dtype))
????????????node_in?=?layer_sizes[i]
????????self.graph?=?tf.Graph()
????????with?self.graph.as_default():
????????????if?random_seed?is?not?None:
????????????????tf.set_random_seed(random_seed)
????????????self.X?=?[tf.sparse_placeholder(dtype)?for?i?in?range(num_inputs)]
????????????self.y?=?tf.placeholder(dtype)
????????????self.keep_prob_train?=?1?-?np.array(drop_out)
????????????self.keep_prob_test?=?np.ones_like(drop_out)
????????????self.layer_keeps?=?tf.placeholder(dtype)
????????????self.vars?=?init_var_map(init_vars,?init_path)
????????????w0?=?[self.vars['embed_%d'?%?i]?for?i?in?range(num_inputs)]
????????????xw?=?tf.concat([tf.sparse_tensor_dense_matmul(self.X[i],?w0[i])?for?i?in?range(num_inputs)],?1)
????????????l?=?xw

????????????#全連接部分
????????????for?i?in?range(len(layer_sizes)):
????????????????wi?=?self.vars['w%d'?%?i]
????????????????bi?=?self.vars['b%d'?%?i]
????????????????print(l.shape,?wi.shape,?bi.shape)
????????????????l?=?tf.nn.dropout(
????????????????????activate(
????????????????????????tf.matmul(l,?wi)?+?bi,
????????????????????????layer_acts[i]),
????????????????????self.layer_keeps[i])

????????????l?=?tf.squeeze(l)
????????????self.y_prob?=?tf.sigmoid(l)

????????????self.loss?=?tf.reduce_mean(
????????????????tf.nn.sigmoid_cross_entropy_with_logits(logits=l,?labels=self.y))
????????????if?layer_l2?is?not?None:
????????????????self.loss?+=?embed_l2?*?tf.nn.l2_loss(xw)
????????????????for?i?in?range(len(layer_sizes)):
????????????????????wi?=?self.vars['w%d'?%?i]
????????????????????self.loss?+=?layer_l2[i]?*?tf.nn.l2_loss(wi)
????????????self.optimizer?=?get_optimizer(opt_algo,?learning_rate,?self.loss)

????????????config?=?tf.ConfigProto()
????????????config.gpu_options.allow_growth?=?True
????????????self.sess?=?tf.Session(config=config)
????????????tf.global_variables_initializer().run(session=self.sess)


NFM:通過逐元素乘法延遲FM的實現(xiàn)過程


我們再回到考慮領(lǐng)域信息的 FM,它仍有改進的空間。因為以上這些網(wǎng)絡(luò)的 FM 部分都是只進行嵌入向量的兩兩內(nèi)積后直接求和,沒有充分利用二階特征組合的信息。Xiangnan He 等在 2017 年提出了神經(jīng)網(wǎng)絡(luò)因子分解機(Neural Factorization Machines,NFM)對此作出了改進。其計算圖如下所示:



NFM 的基本特點是:?


1. 利用二階交互池化層(Bi-Interaction Pooling)對 FM 嵌入后的向量兩兩進行元素級別的乘法,形成同維度的向量求和后作為前饋神經(jīng)網(wǎng)絡(luò)的輸入。計算圖中用圈乘 ? 表示逐元素乘法運算。?


2. NFM 與 DeepFM 的區(qū)別是沒有單獨的 FM 的淺層網(wǎng)絡(luò)進行聯(lián)合訓(xùn)練,而是將其整合后直接輸出給前饋神經(jīng)網(wǎng)絡(luò)。?


3. 當(dāng) MLP 的全連接層都是恒等變換且最后一層參數(shù)全為 1 時,NFM 就退化成了 FM。可見,NFM 是 FM 的推廣,它推遲了 FM 的實現(xiàn)過程,并在其中加入了更多非線性運算。?


4. 另一方面,我們觀察計算圖會發(fā)現(xiàn) NFM 與 FNN 非常相似。它們的主要區(qū)別是 NFM 在 embedding 之后對特征進行了兩兩逐元素乘法。因為逐元素相乘的向量維數(shù)不變,之后對這些向量求和的維數(shù)仍然與 embedding 的維數(shù)一致。因此輸入到 MLP 的參數(shù)比起直接 concatenate 的 FNN 更少。?


此處附上 NFM 的代碼實現(xiàn),完整數(shù)據(jù)和代碼請參考網(wǎng)盤


網(wǎng)盤鏈接:

https://pan.baidu.com/s/1eDwOxweRDPurI2fF51EALQ


def?model_fn(features,?labels,?mode,?params):
????"""Bulid?Model?function?f(x)?for?Estimator."""
????#------hyperparameters----
????field_size?=?params["field_size"]
????feature_size?=?params["feature_size"]
????embedding_size?=?params["embedding_size"]
????l2_reg?=?params["l2_reg"]
????learning_rate?=?params["learning_rate"]
????#optimizer?=?params["optimizer"]
????layers?=?map(int,?params["deep_layers"].split(','))
????dropout?=?map(float,?params["dropout"].split(','))

????#------bulid?weights------
????Global_Bias?=?tf.get_variable(name='bias',?shape=[1],?initializer=tf.constant_initializer(0.0))
????Feat_Bias?=?tf.get_variable(name='linear',?shape=[feature_size],?initializer=tf.glorot_normal_initializer())
????Feat_Emb?=?tf.get_variable(name='emb',?shape=[feature_size,embedding_size],?initializer=tf.glorot_normal_initializer())

????#------build?feaure-------
????feat_ids??=?features['feat_ids']
????feat_ids?=?tf.reshape(feat_ids,shape=[-1,field_size])
????feat_vals?=?features['feat_vals']
????feat_vals?=?tf.reshape(feat_vals,shape=[-1,field_size])

????#------build?f(x)------
????with?tf.variable_scope("Linear-part"):
????????feat_wgts?=?tf.nn.embedding_lookup(Feat_Bias,?feat_ids)?????????#?None?*?F?*?1
????????y_linear?=?tf.reduce_sum(tf.multiply(feat_wgts,?feat_vals),1)

????with?tf.variable_scope("BiInter-part"):
????????embeddings?=?tf.nn.embedding_lookup(Feat_Emb,?feat_ids)?????????#?None?*?F?*?K
????????feat_vals?=?tf.reshape(feat_vals,?shape=[-1,?field_size,?1])
????????embeddings?=?tf.multiply(embeddings,?feat_vals)?????????????????#?vij?*?xi
????????sum_square_emb?=?tf.square(tf.reduce_sum(embeddings,1))
????????square_sum_emb?=?tf.reduce_sum(tf.square(embeddings),1)
????????deep_inputs?=?0.5*tf.subtract(sum_square_emb,?square_sum_emb)???#?None?*?K

????with?tf.variable_scope("Deep-part"):
????????if?mode?==?tf.estimator.ModeKeys.TRAIN:
????????????train_phase?=?True
????????else:
????????????train_phase?=?False

????????if?mode?==?tf.estimator.ModeKeys.TRAIN:
????????????deep_inputs?=?tf.nn.dropout(deep_inputs,?keep_prob=dropout[0])??????????????????????#?None?*?K
????????for?i?in?range(len(layers)):
????????????deep_inputs?=?tf.contrib.layers.fully_connected(inputs=deep_inputs,?num_outputs=layers[i],?\
????????????????weights_regularizer=tf.contrib.layers.l2_regularizer(l2_reg),?scope='mlp%d'?%?i)

????????????if?FLAGS.batch_norm:
????????????????deep_inputs?=?batch_norm_layer(deep_inputs,?train_phase=train_phase,?scope_bn='bn_%d'?%i)???#放在RELU之后?https://github.com/ducha-aiki/caffenet-benchmark/blob/master/batchnorm.md#bn----before-or-after-relu
????????????if?mode?==?tf.estimator.ModeKeys.TRAIN:
????????????????deep_inputs?=?tf.nn.dropout(deep_inputs,?keep_prob=dropout[i])??????????????????????????????#Apply?Dropout?after?all?BN?layers?and?set?dropout=0.8(drop_ratio=0.2)
????????????????#deep_inputs?=?tf.layers.dropout(inputs=deep_inputs,?rate=dropout[i],?training=mode?==?tf.estimator.ModeKeys.TRAIN)

????????y_deep?=?tf.contrib.layers.fully_connected(inputs=deep_inputs,?num_outputs=1,?activation_fn=tf.identity,?\
????????????weights_regularizer=tf.contrib.layers.l2_regularizer(l2_reg),?scope='deep_out')
????????y_d?=?tf.reshape(y_deep,shape=[-1])

????with?tf.variable_scope("NFM-out"):
????????#y_bias?=?Global_Bias?*?tf.ones_like(labels,?dtype=tf.float32)??#?None?*?1??warning;這里不能用label,否則調(diào)用predict/export函數(shù)會出錯,train/evaluate正常;初步判斷estimator做了優(yōu)化,用不到label時不傳
????????y_bias?=?Global_Bias?*?tf.ones_like(y_d,?dtype=tf.float32)??????#?None?*?1
????????y?=?y_bias?+?y_linear?+?y_d
????????pred?=?tf.sigmoid(y)

????predictions={"prob":?pred}
????export_outputs?=?{tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:?tf.estimator.export.PredictOutput(predictions)}
????#?Provide?an?estimator?spec?for?`ModeKeys.PREDICT`
????if?mode?==?tf.estimator.ModeKeys.PREDICT:
????????return?tf.estimator.EstimatorSpec(
????????????????mode=mode,
????????????????predictions=predictions,
????????????????export_outputs=export_outputs)

????#------bulid?loss------
????loss?=?tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=y,?labels=labels))?+?\
????????l2_reg?*?tf.nn.l2_loss(Feat_Bias)?+?l2_reg?*?tf.nn.l2_loss(Feat_Emb)

????#?Provide?an?estimator?spec?for?`ModeKeys.EVAL`
????eval_metric_ops?=?{
????????"auc":?tf.metrics.auc(labels,?pred)
????}
????if?mode?==?tf.estimator.ModeKeys.EVAL:
????????return?tf.estimator.EstimatorSpec(
????????????????mode=mode,
????????????????predictions=predictions,
????????????????loss=loss,
????????????????eval_metric_ops=eval_metric_ops)

????#------bulid?optimizer------
????if?FLAGS.optimizer?==?'Adam':
????????optimizer?=?tf.train.AdamOptimizer(learning_rate=learning_rate,?beta1=0.9,?beta2=0.999,?epsilon=1e-8)
????elif?FLAGS.optimizer?==?'Adagrad':
????????optimizer?=?tf.train.AdagradOptimizer(learning_rate=learning_rate,?initial_accumulator_value=1e-8)
????elif?FLAGS.optimizer?==?'Momentum':
????????optimizer?=?tf.train.MomentumOptimizer(learning_rate=learning_rate,?momentum=0.95)
????elif?FLAGS.optimizer?==?'ftrl':
????????optimizer?=?tf.train.FtrlOptimizer(learning_rate)

????train_op?=?optimizer.minimize(loss,?global_step=tf.train.get_global_step())

????#?Provide?an?estimator?spec?for?`ModeKeys.TRAIN`?modes
????if?mode?==?tf.estimator.ModeKeys.TRAIN:
????????return?tf.estimator.EstimatorSpec(
????????????????mode=mode,
????????????????predictions=predictions,
????????????????loss=loss,
????????????????train_op=train_op)


AFM:對簡化版NFM進行加權(quán)求和


NFM 的主要創(chuàng)新點是在 FM 過程中添加了逐元素相乘的運算來增加模型的復(fù)雜度。但沒有在此基礎(chǔ)上添加更復(fù)雜的運算過程,比如對加權(quán)求和。Jun Xiao 等在 2017 年提出了注意力因子分解模型(Attentional Factorization Machine,AFM)就是在這個方向上的改進。其計算圖如下所示:



AFM 的特點是:?


1. AFM 與 NFM 都是致力于充分利用二階特征組合的信息,對嵌入后的向量兩兩進行逐元素乘法,形成同維度的向量。而且 AFM 沒有 MLP 部分。?


2. AFM 通過在逐元素乘法之后形成的向量進行加權(quán)求和,而且權(quán)重是基于網(wǎng)絡(luò)自身來產(chǎn)生的。其方法是引入一個注意力子網(wǎng)絡(luò)(Attention Net)。?


3. 當(dāng)權(quán)重都相等時,AFM 退化成無全連接層的 NFM。??


4. “注意力子網(wǎng)絡(luò)”的主要操作是進行矩陣乘法,其最終輸出結(jié)果為 softmax,以保證各分量的權(quán)重本身是一個概率分布


PNN:通過改進向量乘法運算延遲FM的實現(xiàn)過程


再回到 FM。既然 AFM、NFM 可以通過添加逐元素乘法的運算來增加模型的復(fù)雜度,那向量乘法有這么多,可否用其他的方法增加 FM 復(fù)雜度?答案是可以的。Huifeng Guo 等在 2016 年提出了基于向量積的神經(jīng)網(wǎng)絡(luò)(Product-based Neural Networks,PNN)就是一個典型例子。其簡化計算圖如下所示:



對比之前模型的計算圖,我們可以發(fā)現(xiàn) PNN 的基本特點是:?


1. 利用二階向量積層(Pair-wisely Connected Product Layer)對 FM 嵌入后的向量兩兩進行向量積,形成的結(jié)果作為之后 MLP 的輸入。計算圖中用圓點 ? 表示向量積運算。PNN 采用的向量積有內(nèi)積外積兩種形式。?


3. 需要說明的是,本計算圖中省略了 PNN 中向量與常數(shù) 1 進行的乘法運算。這部分其實與 FNN 類似,不是 PNN 的主要創(chuàng)新點。故在此圖中省略。?


3. 對于內(nèi)積形式的 PNN,因為兩個向量相乘的結(jié)果為標(biāo)量,可以直接把各個標(biāo)量“拼接”成一個大向量,就可以作為 MLP 的輸入了。?


4. 當(dāng) MLP 的全連接層都是恒等變換且最后一層參數(shù)全為 1 時,內(nèi)積形式的 PNN 就退化成了 FM。?


5. 對于外積形式的 PNN,因為兩個向量相乘相當(dāng)于列向量與行向量進行矩陣相乘,得到的結(jié)果為一個矩陣。各個矩陣向之前內(nèi)積形式的操作一樣直接拼接起來維數(shù)太多,論文的簡化方案是直接對各個矩陣進行求和,得到的新矩陣(可以理解成之后對其拉長成向量)就直接作為 MLP 的輸入。?


6. 觀察計算圖發(fā)現(xiàn)外積形式的 PNN 與 NFM 很像,其實就是?PNN 把 NFM 的逐元素乘法換成了外積。?


此處分別附上 PNN 的內(nèi)積與外積形式代碼,完整數(shù)據(jù)和代碼請參考網(wǎng)盤


網(wǎng)盤鏈接:

https://pan.baidu.com/s/1eDwOxweRDPurI2fF51EALQ


DCN:高階FM的降維實現(xiàn)


以上的 FM 推廣形式,主要是對 FM 進行二階特征組合。高階特征組合是通過 MLP 實現(xiàn)的。但這兩種實現(xiàn)方式是有很大不同的,FM 更多是通過向量 embedding 之間的內(nèi)積來實現(xiàn),而 MLP 則是在向量 embedding 之后一層一層進行權(quán)重矩陣乘法實現(xiàn)。可否直接將 FM 的過程在高階特征組合上進行推廣?答案是可以的。Ruoxi Wang 等在 2017 提出的深度與交叉神經(jīng)網(wǎng)絡(luò)(Deep & Cross Network,DCN)就是在這個方向進行改進的。DCN 的計算圖如下:



DCN 的特點如下:?


1. Deep 部分就是普通的 MLP 網(wǎng)絡(luò),主要是全連接。?


2. 與 DeepFM 類似,DCN 是由 embedding + MLP 部分與 cross 部分進行聯(lián)合訓(xùn)練的。Cross 部分是對 FM 部分的推廣。?


3. Cross 部分的公式如下:




4. 可以證明,cross 網(wǎng)絡(luò)是 FM 的過程在高階特征組合的推廣。完全的證明需要一些公式推導(dǎo),感興趣的同學(xué)可以直接參考原論文的附錄。


5. 而用簡單的公式證明可以得到一個很重要的結(jié)論:只有兩層且第一層與最后一層權(quán)重參數(shù)相等時的 Cross 網(wǎng)絡(luò)與簡化版 FM 等價


6. 此處對應(yīng)簡化版的 FM 視角是將拼接好的稠密向量作為輸入向量,且不做領(lǐng)域方面的區(qū)分(但產(chǎn)生這些稠密向量的過程是考慮領(lǐng)域信息的,相對全特征維度的全連接層減少了大量參數(shù),可以視作稀疏鏈接思想的體現(xiàn))。而且之后進行 embedding 權(quán)重矩陣 W 只有一列——是退化成列向量的情形。


7. 與 MLP 網(wǎng)絡(luò)相比,Cross 部分在增加高階特征組合的同時減少了參數(shù)的個數(shù),并省去了非線性激活函數(shù)。


Wide&Deep:DeepFM與DCN的基礎(chǔ)框架


開篇已經(jīng)提到,本文思路有兩條主線。到此為止已經(jīng)將基于 FM 的主線介紹基本完畢。接下來將串講從 embedding+MLP 自身的演進特點的 CTR 預(yù)估模型主線,而這條思路與我們之前的 FM 思路同樣有千絲萬縷的聯(lián)系。?


Google 在 2016 年提出的寬度與深度模型(Wide&Deep)在深度學(xué)習(xí) CTR 預(yù)估模型中占有非常重要的位置,它奠定了之后基于深度學(xué)習(xí)的廣告點擊率預(yù)估模型的框架。?


Wide&Deep將深度模型與線性模型進行聯(lián)合訓(xùn)練,二者的結(jié)果求和輸出為最終點擊率。其計算圖如下:?



我們將 Wide&Deep 的計算圖與之前的模型進行對比可知:


1. Wide&Deep 是前面介紹模型 DeepFM 與 DCN 的基礎(chǔ)框架。這些模型均采用神經(jīng)網(wǎng)絡(luò)聯(lián)合訓(xùn)練的思路,對神經(jīng)網(wǎng)絡(luò)進行并聯(lián)。


2. DeepFM、DCN 與 Wide&Deep 的 Deep 部分都是 MLP。


3. Wide&Deep 的 Wide 部分是邏輯回歸,可以手動設(shè)計組合特征。


4. DeepFM 的 Wide 部分是 FM,DCN 的 Wide 部分是 Cross 網(wǎng)絡(luò),二者均不強求手動設(shè)計特征。但此時都與字面意義上的 Wide 有一定差異,因為均共享了降維后的嵌入特征。


此處附上 DeepFM 的代碼實現(xiàn),完整數(shù)據(jù)和代碼請參考網(wǎng)盤


網(wǎng)盤鏈接:

https://pan.baidu.com/s/1eDwOxweRDPurI2fF51EALQ


def?get_model(model_type,?model_dir):
????print("Model?directory?=?%s"?%?model_dir)

????#?對checkpoint去做設(shè)定
????runconfig?=?tf.contrib.learn.RunConfig(
????????save_checkpoints_secs=None,
????????save_checkpoints_steps?=?100,
????)

????m?=?None

????#?寬模型
????if?model_type?==?'WIDE':
????????m?=?tf.contrib.learn.LinearClassifier(
????????????model_dir=model_dir,?
????????????feature_columns=wide_columns)

????#?深度模型
????if?model_type?==?'DEEP':
????????m?=?tf.contrib.learn.DNNClassifier(
????????????model_dir=model_dir,
????????????feature_columns=deep_columns,
????????????hidden_units=[100,?50,?25])

????#?寬度深度模型
????if?model_type?==?'WIDE_AND_DEEP':
????????m?=?tf.contrib.learn.DNNLinearCombinedClassifier(
????????????model_dir=model_dir,
????????????linear_feature_columns=wide_columns,
????????????dnn_feature_columns=deep_columns,
????????????dnn_hidden_units=[100,?70,?50,?25],
????????????config=runconfig)

????print('estimator?built')

????return?m


Deep Cross:DCN由其殘差網(wǎng)絡(luò)思想進化


由 K. He 等提出的深度殘差網(wǎng)絡(luò)能夠大大加深神經(jīng)網(wǎng)絡(luò)的深度,同時不會引起退化的問題,顯著提高了模型的精度。Ying Shan 等將該思路應(yīng)用到廣告點擊率預(yù)估模型中,提出深度交叉模型(DeepCross,2016)。Deep Cross 的計算圖如下:



將 Deep Cross 與之前的模型對比,可以發(fā)現(xiàn)其特點是:?


1. 對 embedding+MLP 的改進主要是 MLP 部分增加跳躍連接成為殘差網(wǎng)絡(luò)。?


2. Deep Cross 與傳統(tǒng)的殘差網(wǎng)絡(luò)的區(qū)別主要是沒有采用卷積操作。其中一個原因是在廣告點擊率預(yù)估領(lǐng)域,特征不具備平移不變性。?


3. DCN 其實是從 Deep Cross 進化出來的版本。DCN 相對 Deep Cross 的主要貢獻是解耦了 Deep 與 Cross(特征交叉)部分。?


4. 因此 DCN 中的 Cross 部分可以理解為殘差網(wǎng)絡(luò)的變體:其將 Deep Cross 的跨越鏈接縮短為只有一層,而全連接部分改為與權(quán)重向量和輸入向量的內(nèi)積

DIN:對同領(lǐng)域歷史信息引入注意力機制的MLP


以上神經(jīng)網(wǎng)絡(luò)對同領(lǐng)域離散特征的處理基本是將其嵌入后直接求和,這在一般情況下沒太大問題。但其實可以做得更加精細。


比如對于歷史統(tǒng)計類特征。以用戶歷史瀏覽的商戶 id 為例,假設(shè)用戶歷史瀏覽了 10 個商戶,這些商戶 id 的常規(guī)處理方法是作為同一個領(lǐng)域的特征嵌入后直接求和得到一個嵌入向量。但這 10 個商戶只有一兩個商戶與當(dāng)前被預(yù)測的廣告所在的商戶相似,其他商戶關(guān)系不大。增加這兩個商戶在求和過程中的權(quán)重,應(yīng)該能夠更好地提高模型的表現(xiàn)力。而增加求和權(quán)重的思路就是典型的注意力機制思路。?


Bahdanau et al. (2015) 引入的現(xiàn)代注意力機制,本質(zhì)上是加權(quán)平均(權(quán)重是模型根據(jù)數(shù)據(jù)學(xué)習(xí)出來的),其在機器翻譯上應(yīng)用得非常成功。受注意力機制的啟發(fā),Guorui Zhou 等在 2017 年提出了深度興趣網(wǎng)絡(luò)(Deep Interest Network,DIN)。DIN 主要關(guān)注用戶在同一領(lǐng)域的歷史行為特征,如瀏覽了多個商家、多個商品等。DIN 可以對這些特征分配不同的權(quán)重進行求和。其網(wǎng)絡(luò)結(jié)構(gòu)圖如下:



1. 此處采用原論文的結(jié)構(gòu)圖,表示起來更清晰。


2. DIN 考慮對同一領(lǐng)域的歷史特征進行加權(quán)求和,以加強其感興趣的特征的影響。


3. 用戶的每個領(lǐng)域的歷史特征權(quán)重則由該歷史特征及其對應(yīng)備選廣告特征通過一個子網(wǎng)絡(luò)得到。即用戶歷史瀏覽的商戶特征與當(dāng)前瀏覽商戶特征對應(yīng),歷史瀏覽的商品特征與當(dāng)前瀏覽商品特征對應(yīng)。


4. 權(quán)重子網(wǎng)絡(luò)主要包括特征之間的元素級別的乘法、加法和全連接等操作


5. AFM 也引入了注意力機制。但是?AFM 是將注意力機制與 FM 同領(lǐng)域特征求和之后進行結(jié)合,DIN 直接是將注意力機制與同領(lǐng)域特征求和之前進行結(jié)合


多任務(wù)視角:信息的遷移與補充


對于數(shù)據(jù)驅(qū)動的解決方案而言,數(shù)據(jù)和模型同樣重要,數(shù)據(jù)(特征)通常決定了效果的上限,各式各樣的模型會以不同的方式去逼近這個上限。而所有算法應(yīng)用的老司機都知道很多場景下,如果有更多的數(shù)據(jù)進行模型訓(xùn)練,效果一般都能顯著得到提高。


廣告也是一樣的場景,在很多電商的平臺上會有很多不同場景的廣告位,每個場景蘊含了用戶的不同興趣的表達,這些信息的匯總與融合可以帶來最后效果的提升。但是將不同場景的數(shù)據(jù)直接進行合并用來訓(xùn)練(ctr/cvr)模型,結(jié)果很多時候并不是很樂觀,仔細想想也是合理的,不同場景下的樣本分布存在差異,直接對樣本累加會影響分布導(dǎo)致效果負向。



而深度學(xué)習(xí)發(fā)展,使得信息的融合與應(yīng)用有了更好的進展,用 Multi?task learning (MTL)的方式可以很漂亮的解決上面提到的問題。我們不直接對樣本進行累加和訓(xùn)練,而是像上圖所示,把兩個場景分為兩個 task,即分為兩個子網(wǎng)絡(luò)。


對單個網(wǎng)絡(luò)而言,底層的 embedding 層的表達受限于單場景的數(shù)據(jù)量,很可能學(xué)習(xí)不充分。而上圖這樣的網(wǎng)絡(luò)結(jié)合,使得整個訓(xùn)練過程有了表示學(xué)習(xí)的共享(Shared Lookup Table),這種共享有助于大樣本的子任務(wù)幫助小樣本的子任務(wù),使得底層的表達學(xué)習(xí)更加充分。?


DeepFM 和 DCN 也用到了這個思路!只是它們是對同一任務(wù)的不同模型進行結(jié)合,而多任務(wù)學(xué)習(xí)是對不同任務(wù)的不同模型進行結(jié)合。而且,我們可以玩得更加復(fù)雜。?


Multi-task learning (MTL) 整個結(jié)構(gòu)的上層的不同的 task 的子網(wǎng)絡(luò)是不一樣的,這樣每個子網(wǎng)絡(luò)可以各自去擬合自己 task 對應(yīng)的概念分布。并且,取決于問題與場景的相似性和復(fù)雜度,可以把底層的表達學(xué)習(xí),從簡單的共享 embedding 到共享一些層次的表達。極端的情況是我們可以直接共享所有的表達學(xué)習(xí)(representation learning)部分,而只接不同的網(wǎng)絡(luò) head 來完成不一樣的任務(wù)。這樣帶來的另外一個好處是,不同的task 可以共享一部分計算,從而實現(xiàn)計算的加速。?


值得一提的另一篇 paper 是阿里媽媽團隊提出的“完整空間多任務(wù)模型”(Entire Space Multi-Task Model,ESMM),也是很典型的多任務(wù)學(xué)習(xí)和信息補充思路,這篇 paper 解決的問題不是 CTR(點擊率)預(yù)估而是 CVR(轉(zhuǎn)化率)預(yù)估,傳統(tǒng) CVR 預(yù)估模型會有比較明顯的樣本選擇偏差(sample selection bias)和訓(xùn)練數(shù)據(jù)過于稀疏(data sparsity)的問題,而 ESMM 模型利用用戶行為序列數(shù)據(jù),在完整的樣本數(shù)據(jù)空間同時學(xué)習(xí)點擊率和轉(zhuǎn)化率(post-view clickthrough&conversion rate,CTCVR),在一定程度上解決了這個問題。?


在電商的場景下,用戶的決策過程很可能是這樣的,在觀察到系統(tǒng)展現(xiàn)的推薦商品列表后,點擊自己感興趣的商品,進而產(chǎn)生購買行為。所以用戶行為遵循這樣一個決策順序:impression → click → conversion。CVR 模型旨在預(yù)估用戶在觀察到曝光商品進而點擊到商品詳情頁之后購買此商品的概率,即 pCVR = p (conversion|click, impression)。?


預(yù)估點擊率 pCTR,預(yù)估點擊下單率 pCVR 和預(yù)估點擊與下單率 pCTCVR 關(guān)系如下。



傳統(tǒng)的 CVR 預(yù)估任務(wù)通常采用類似于 CTR 預(yù)估的技術(shù)進行建模。但是不同于 CTR 預(yù)估任務(wù)的是,這個場景面臨一些特有的挑戰(zhàn):1) 樣本選擇偏差;2) 訓(xùn)練數(shù)據(jù)稀疏;3) 延遲反饋等。



ESMM 模型提出了下述的網(wǎng)絡(luò)結(jié)構(gòu)進行問題建模:



EMMS 的特點是:?


1. 在整個樣本空間建模。pCVR 可以在先估計出 pCTR 和 pCTCVR 之后計算得出,如下述公式。從原理上看,相當(dāng)于分別單獨訓(xùn)練兩個模型擬合出 pCTR 和 pCTCVR,進而計算得到 pCVR。




注意到 pCTR 和 pCTCVR 是在整個樣本空間上建模得到的,pCVR 只是一個中間變量。因此,ESMM 模型是在整個樣本空間建模,而不像傳統(tǒng) CVR 預(yù)估模型那樣只在點擊樣本空間建模。?


2. 特征表示層共享。ESMM 模型借鑒遷移學(xué)習(xí)和 multi-task learning 的思路,在兩個子網(wǎng)絡(luò)的 embedding 層共享特征表示詞典。embedding 層的表達參數(shù)占了整個網(wǎng)絡(luò)參數(shù)的絕大部分,參數(shù)量大,需要大量的訓(xùn)練樣本才能學(xué)習(xí)充分。顯然 CTR 任務(wù)的訓(xùn)練樣本量要大大超過 CVR 任務(wù)的訓(xùn)練樣本量,ESMM 模型中特征表示共享的機制能夠使得 CVR 子任務(wù)也能夠從只有展現(xiàn)沒有點擊的樣本中學(xué)習(xí),從而在一定程度上緩解訓(xùn)練數(shù)據(jù)稀疏性問題。


各種模型的對比和總結(jié)


前面介紹了各種基于深度學(xué)習(xí)的廣告點擊率預(yù)估算法模型,針對不同的問題、基于不同的思路,不同的模型有各自的特點。各個模型具體關(guān)系比較如下表 1 所示:


?表1.?各模型對比


本文從開篇就說明這些模型推演的核心思路是“通過設(shè)計網(wǎng)絡(luò)結(jié)構(gòu)進行組合特征的挖掘”,其在各個模型的實現(xiàn)方式如下:


1. FM 其實是對嵌入特征進行兩兩內(nèi)積實現(xiàn)特征二階組合;FNN 在 FM 基礎(chǔ)上引入了 MLP;?

2. DeepFM 通過聯(lián)合訓(xùn)練、嵌入特征共享來兼顧 FM 部分與 MLP 部分不同的特征組合機制; 3. NFM、PNN 則是通過改造向量積的方式來延遲FM的實現(xiàn)過程,在其中添加非線性成分來提升模型表現(xiàn)力;?

4. AFM 更進一步,直接通過子網(wǎng)絡(luò)來對嵌入向量的兩兩逐元素乘積進行加權(quán)求和,以實現(xiàn)不同組合的差異化,也是一種延遲 FM 實現(xiàn)的方式;?

5. DCN 則是將 FM 進行高階特征組合的方向上進行推廣,并結(jié)合 MLP 的全連接式的高階特征組合機制;?

6. Wide&Deep 是兼容手工特征組合與 MLP 的特征組合方式,是許多模型的基礎(chǔ)框架;?

7. Deep Cross 是引入殘差網(wǎng)絡(luò)機制的前饋神經(jīng)網(wǎng)絡(luò),給高維的 MLP 特征組合增加了低維的特征組合形式,啟發(fā)了 DCN;?

8. DIN 則是對用戶側(cè)的某歷史特征和廣告?zhèn)鹊耐I(lǐng)域特征進行組合,組合成的權(quán)重反過來重新影響用戶側(cè)的該領(lǐng)域各歷史特征的求和過程;?

9. 多任務(wù)視角則是更加宏觀的思路,結(jié)合不同任務(wù)(而不僅是同任務(wù)的不同模型)對特征的組合過程,以提高模型的泛化能力。


當(dāng)然,廣告點擊率預(yù)估深度學(xué)習(xí)模型還有很多,比如 Jie Zhu 提出的基于決策樹的神經(jīng)網(wǎng)絡(luò)(Deep Embedding Forest)將深度學(xué)習(xí)與樹型模型結(jié)合起來。如果數(shù)據(jù)特征存在圖像或者大量文本相關(guān)特征,傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)均可以結(jié)合到廣告點擊率預(yù)估的場景中。各個深度模型都有相應(yīng)的特點,限于篇幅,我們就不再贅述了。


后記


目前深度學(xué)習(xí)的算法層出不窮,看論文確實有些應(yīng)接不暇。我們的經(jīng)驗有兩點:要有充分的生產(chǎn)實踐經(jīng)驗,同時要有扎實的算法理論基礎(chǔ)。很多論文的亮點其實是來自于實際做工程的經(jīng)驗。也幸虧筆者一直都在生產(chǎn)一線并帶領(lǐng)算法團隊進行工程研發(fā),積淀了一些特征工程、模型訓(xùn)練的經(jīng)驗,才勉強跟得上新論文。比如 DIN“對用戶側(cè)的某領(lǐng)域歷史特征基于廣告?zhèn)鹊耐I(lǐng)域特征進行加權(quán)求和”的思想,其實與傳統(tǒng)機器學(xué)習(xí)對強業(yè)務(wù)相關(guān)特征進行針對性特征組合的特征工程思路比較相似。


另一方面,對深度學(xué)習(xí)的經(jīng)典、前沿方法的熟悉也很重要。從前面我們的串講也能夠看出,CTR 預(yù)估作為一個業(yè)務(wù)特點很強的場景,在應(yīng)用深度學(xué)習(xí)的道路上,也充分借鑒了注意力機制、殘差網(wǎng)絡(luò)、聯(lián)合訓(xùn)練、多任務(wù)學(xué)習(xí)等經(jīng)典的深度學(xué)習(xí)方法。了解博主的朋友也知道我們一直推崇理論與實踐相結(jié)合的思路,我們自身對這條經(jīng)驗也非常受用。當(dāng)然,計算廣告是一個很深的領(lǐng)域,自己研究尚淺,串講難免存在紕漏。歡迎大家指出問題,共同交流學(xué)習(xí)。


參考文獻


1. 陳巧紅,余仕敏,賈宇波. 廣告點擊率預(yù)估技術(shù)綜述[J]. 浙江理工大學(xué)學(xué)報. 2015(11).?

2. 紀文迪,王曉玲,周傲英. 廣告點擊率估算技術(shù)綜述[J]. 華東師范大學(xué)學(xué)報(自然科學(xué)版). 2013(03).?

3. Rendle S. Factorization machines. Data Mining (ICDM), 2010 IEEE 10th International Conference on. 2010.?

4. Heng-Tze Cheng and Levent Koc. Wide & deep learning for recommender systems. In Proceedings of the 1st Workshop on Deep Learning for Recommender Systems, pages 7–10. ACM, 2016.?

5. Weinan Zhang, Tianming Du, and Jun Wang. Deep learning over multi-field categorical data - - A case study on user response prediction. In ECIR, 2016.?

6. Huifeng Guo, Ruiming Tang, Yunming Ye, Zhenguo Li, and Xiuqiang He. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction. arXiv preprint arXiv:1703.04247 (2017).?

7. Xiangnan He and Tat-Seng Chua. Neural Factorization Machines for Sparse Predictive Analytics SIGIR. 355–364. 2017.?

8. Guorui Zhou, Chengru Song, Xiaoqiang Zhu, Xiao Ma, Yanghui Yan, Xingya Dai, Han Zhu, Junqi Jin, Han Li, and Kun Gai. 2017. Deep Interest Network for Click-Through Rate Prediction. arXiv preprint arXiv:1706.06978 (2017).?

9. J. Xiao, H. Ye, X. He, H. Zhang, F. Wu, and T.-S. Chua. Attentional factorization machines: Learning the weight of feature interactions via attention networks. In IJCAI, 2017.?

10. Ying Shan, T Ryan Hoens, Jian Jiao, Haijing Wang, Dong Yu, and JC Mao. 2016. Deep Crossing: Web-Scale Modeling without Manually Cra ed Combinatorial Features. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 255–262.?

11. Wang, R., Fu, B., Fu, G., Wang, M.: Deep & cross network for ad click predictions. In: Proceedings of the ADKDD 17. pp. 12:1–12:7 (2017).?

12. Ying Shan, T Ryan Hoens, et al. Deep crossing: Web-scale modeling without manually crafted combinatorial features. KDD ’16. ACM, 2016.?

13. Paul Covington, Jay Adams, and Emre Sargin. Deep neural networks for youtube recommendations. In Proceedings of the 10th ACM Conference on Recommender Systems, pages 191–198. ACM, 2016.?

14. Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. 2015. Deep residual learning for image recognition. arXiv preprint arXiv:1512.03385 (2015).



關(guān)于PaperWeekly


PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學(xué)術(shù)平臺。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。


▽ 點擊 |?閱讀原文?| 加入社區(qū)刷論文

總結(jié)

以上是生活随笔為你收集整理的深度长文 | 从FM推演各深度CTR预估模型(附开源代码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产分类视频 | 黄色精品久久久 | 国产一区免费视频 | 亚洲专区视频在线观看 | 亚洲国产网站 | 亚洲一级片在线看 | 欧美成人中文字幕 | 国产无套精品久久久久久 | 色欧美88888久久久久久影院 | 狠狠躁日日躁 | 日韩精品一二三 | 日韩精品高清不卡 | 亚洲一级片免费观看 | 91av观看| 欧美日韩中文国产一区发布 | 99热超碰在线 | 久久夜av | 久久久国产一区二区三区四区小说 | 在线天堂视频 | 久久精品国产美女 | 亚洲美女视频网 | 天天操天天干天天插 | 日韩 在线| 色综合亚洲精品激情狠狠 | 三级大片网站 | 精品视频免费观看 | 国产美女主播精品一区二区三区 | 日韩高清国产精品 | 国产男女免费完整视频 | 99九九99九九九视频精品 | 成年人免费观看国产 | 国产视频一区二区在线观看 | 一区中文字幕 | 久久人人爽人人爽人人片av免费 | 国产成人精品不卡 | 久草在线最新视频 | 欧美少妇18p| 六月丁香在线视频 | 麻豆综合网 | 特级毛片在线 | 999久久国产 | 黄色一级大片在线免费看国产一 | 麻豆国产精品视频 | 成人av电影免费观看 | 中文字幕在线视频一区二区 | 就要干b | 色99之美女主播在线视频 | 久久久久久国产精品999 | 97日日碰人人模人人澡分享吧 | 香蕉久草在线 | 亚洲国产成人在线播放 | 国产专区精品视频 | 成人久久18免费网站图片 | 亚洲精品国产拍在线 | 国产成人精品一区二区在线观看 | 色姑娘综合天天 | av在线永久免费观看 | 97精品超碰一区二区三区 | 亚洲精品国产成人av在线 | 九九久久影视 | 久热精品国产 | 婷婷久久精品 | 国产123区在线观看 国产精品麻豆91 | 成年人电影免费在线观看 | 成片免费观看视频 | 欧美日韩中文在线 | 久久97久久97精品免视看 | 亚洲女人天堂成人av在线 | 久草视频在线免费播放 | 91色国产| 91视频在线免费观看 | 亚洲无在线 | 国偷自产中文字幕亚洲手机在线 | 叶爱av在线 | 在线观看免费观看在线91 | 国产午夜av | 久久99久久精品 | 丁香婷婷激情国产高清秒播 | 久久99国产精品二区护士 | 久久精品久久久久久久 | 国产无套一区二区三区久久 | 国产成人久久精品亚洲 | 精品女同一区二区三区在线观看 | 91麻豆精品国产91久久久使用方法 | 91在线你懂的 | 91色一区二区三区 | 91麻豆精品国产91久久久无限制版 | 又爽又黄又刺激的视频 | 成人三级视频 | 99精品国产免费久久久久久下载 | 色黄久久久久久 | 免费人做人爱www的视 | 91视频-88av| 亚洲一级黄色 | 欧美人操人 | 毛片888| 日韩1页| 2020天天干夜夜爽 | 91自拍视频在线观看 | 日韩av电影国产 | 亚洲最大免费成人网 | 国产在线观看地址 | 国产美女视频 | 亚洲国产丝袜在线观看 | 探花视频在线观看 | 韩国精品在线观看 | 国产亚洲一区二区三区 | 成人亚洲免费 | 日本九九视频 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 国产视频网站在线观看 | 91成人精品一区在线播放69 | 99综合影院在线 | 日韩精品一区二区三区中文字幕 | 亚洲免费不卡 | 99精品国产99久久久久久97 | 日韩网页 | www91在线观看| 欧洲高潮三级做爰 | 欧美在线观看视频一区二区三区 | 成人h电影在线观看 | 999久久久久久久久 69av视频在线观看 | 国产精品久久久久久久久久久久久久 | 69国产盗摄一区二区三区五区 | 国产黄色在线观看 | 最近日本字幕mv免费观看在线 | 婷婷在线免费观看 | 国内精品国产三级国产aⅴ久 | 色com网 | 欧美91片| 最近中文字幕大全中文字幕免费 | 日狠狠| 午夜av大片| 成人国产精品久久久春色 | 国产成人一级 | 在线a人v观看视频 | 91中文字幕在线播放 | 国产在线a免费观看 | 在线观看视频亚洲 | 日韩激情在线 | 不卡的av在线播放 | 精品国产一区在线观看 | 国产小视频在线观看 | 久久久色 | 嫩草伊人久久精品少妇av | www狠狠操 | 久草视频看看 | 久久综合影视 | www.久久色| 视频 天天草 | 国模视频一区二区 | 国产精品一区专区欧美日韩 | 高清一区二区 | 国产精品 国内视频 | 欧美日韩一区二区在线观看 | 国产精品网红直播 | 最新国产精品久久精品 | 国产在线观看 | 精品国产日本 | 久久久久久福利 | 丁香激情综合久久伊人久久 | 91看片淫黄大片91 | av在线影片 | 国产一区二区久久久久 | 国产一级性生活视频 | 国产精品手机播放 | 91精品一区国产高清在线gif | 免费91麻豆精品国产自产在线观看 | 99在线热播精品免费99热 | 波多野结衣在线播放视频 | 高清在线一区 | 中文字幕av免费在线观看 | 亚洲精品乱码久久久久久9色 | 中文字幕 国产视频 | 日韩高清毛片 | 男女激情片在线观看 | 2023av在线| 在线亚洲激情 | 香蕉视频免费在线播放 | 成人国产精品入口 | 99在线观看免费视频精品观看 | av黄免费看 | 亚洲人成在线电影 | 日本成址在线观看 | 精品一区二区三区久久久 | 亚洲精品成人免费 | www九九热 | 九九九九热精品免费视频点播观看 | av电影在线免费观看 | 国内精自线一二区永久 | 91中文字幕在线视频 | 福利视频网址 | 免费在线观看av网站 | 久久人人爽人人爽人人片av软件 | 中文字幕乱码一区二区 | 夜色资源站国产www在线视频 | 亚洲一区二区三区精品在线观看 | av观看免费在线 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 不卡视频国产 | 精品成人在线 | 免费在线观看视频a | h视频日本 | 黄色大片免费播放 | 日本大尺码专区mv | 精品国产电影一区二区 | 久久久国产成人 | 中文字幕乱码日本亚洲一区二区 | 日韩欧美高清一区二区三区 | 一区在线观看 | 免费毛片aaaaaa| 91超在线 | 免费的黄色av | 91成人免费观看视频 | 成人午夜免费福利 | 久草在线在线精品观看 | 天天玩天天操天天射 | 免费看毛片网站 | 午夜久久久精品 | 国产玖玖在线 | 日本天天操 | 国产69精品久久久久99尤 | 国产精品v欧美精品v日韩 | 亚洲高清不卡av | 日本精品视频一区二区 | 欧美国产精品一区二区 | 免费看污网站 | 成人网在线免费视频 | 久久免费的视频 | 在线播放 日韩专区 | 天天天天色综合 | 在线一区av | 在线亚洲人成电影网站色www | 在线看日韩 | 欧美激情精品久久久久久免费印度 | 日韩精品久久久久久久电影99爱 | 久久久久久97三级 | 中文字幕区 | 日韩免费专区 | 男女免费av | 中文字幕色在线视频 | 久久伊99综合婷婷久久伊 | 激情在线免费视频 | 色婷婷视频在线 | 日韩视频在线不卡 | 精品国产一二三四区 | 国产精品福利在线 | 日韩精品播放 | 亚洲欧美日本一区二区三区 | 人人干人人爽 | 免费视频久久久久 | 色婷婷激情综合 | 国产中文字幕视频在线观看 | 最新色站 | www.夜夜操.com| 久久成人免费视频 | 亚洲国产精品女人久久久 | 国产三级午夜理伦三级 | 亚洲97在线 | 欧美日韩国产成人 | 黄色网址在线播放 | 91亚洲欧美激情 | 日韩免费在线视频观看 | 亚洲天堂网站视频 | 国产专区视频 | 欧美综合在线观看 | 99久国产 | 日日躁你夜夜躁你av蜜 | 亚洲精品久久久久久久蜜桃 | 永久精品视频 | 91av视频网站 | 国产高清久久 | 五月婷av | 日本久久久久 | 中文字幕色婷婷在线视频 | 午夜电影一区 | 久艹视频在线免费观看 | 国产码电影 | 91精品第一页 | 极品久久久久久久 | 久久久在线视频 | 精品欧美小视频在线观看 | www.少妇 | 探花系列在线 | 久久国产一区 | 日韩伦理片一区二区三区 | 精品一二三四在线 | 日韩在线三区 | 久久免费精品 | 日韩色综合网 | 亚洲高清av| 欧美日韩国产一区二区三区在线观看 | 亚洲精品乱码久久久久久 | a黄色影院| 欧美永久视频 | 国产成人一区二区三区电影 | 精品字幕在线 | 黄色毛片电影 | 久久男人免费视频 | 在线视频精品 | 夜夜骑天天操 | 免费亚洲婷婷 | 日韩亚洲在线观看 | 国产精品永久久久久久久久久 | 中文字幕色在线视频 | 天天综合网久久 | 国产视频在线看 | .国产精品成人自产拍在线观看6 | 91丨九色丨国产在线观看 | 久久er99热精品一区二区 | 日韩视频二区 | 成人97人人超碰人人99 | 深夜免费小视频 | 久久免费成人精品视频 | 黄色片网站 | 在线观看91| 国产精品99久久久久久小说 | 亚洲激情av | 久久露脸国产精品 | 成人黄色av网站 | 高清不卡一区二区在线 | 亚州精品天堂中文字幕 | 91麻豆精品国产91久久久久久 | 国际精品久久久 | 日韩欧美在线观看一区二区三区 | 国产青青青 | 免费高清男女打扑克视频 | 99人久久精品视频最新地址 | 亚洲天天干| 日韩电影中文,亚洲精品乱码 | a视频免费看 | 日韩中文在线字幕 | 国产美女精品人人做人人爽 | 午夜av免费在线观看 | 91福利小视频 | 国内精品久久天天躁人人爽 | 亚洲网站在线看 | 色网影音先锋 | 久久久wwww| 在线香蕉视频 | 婷婷激情小说网 | 99精品免费| 国产精品国产三级在线专区 | 亚洲精品在线免费观看视频 | 丁香六月婷婷开心婷婷网 | 免费观看福利视频 | 国产a级片免费观看 | 人人插人人射 | 免费福利片2019潦草影视午夜 | 曰本免费av| 久久久综合香蕉尹人综合网 | 三上悠亚一区二区在线观看 | 天天操操操操操操 | 亚洲经典在线 | 婷婷日韩| 91精品在线播放 | 日韩免费久久 | 国产va在线 | 日韩在线视频在线观看 | 日韩久久精品一区二区三区 | 国产伦理精品一区二区 | 91视频高清| 国产精品第 | 玖玖在线免费视频 | 日韩a级黄色| 在线电影 一区 | 美女视频是黄的免费观看 | 最新av网址在线观看 | av黄色大片| 天天视频亚洲 | 日韩欧美国产视频 | 97香蕉久久国产在线观看 | 成人免费毛片aaaaaa片 | 狂野欧美激情性xxxx欧美 | 久久久久久久久久电影 | 日本韩国欧美在线观看 | 国产精品一区二区三区四 | 激情伊人五月天久久综合 | 99久久精品久久亚洲精品 | 国产综合精品一区二区三区 | 视频国产在线 | 麻豆传媒视频在线 | 国产婷婷在线观看 | 91视频88av| 久久久国产视频 | 最新影院 | 日本韩国精品一区二区在线观看 | 99亚洲精品视频 | 亚洲经典中文字幕 | 伊人网综合在线观看 | av黄色影院| 久久久久久久国产精品影院 | 色偷偷中文字幕 | 精品久久一区二区 | 激情在线免费视频 | 成人一级电影在线观看 | 玖操 | 日韩中文免费视频 | 天天伊人网 | 麻豆成人网 | 国产一区二区三区高清播放 | 精品超碰 | 911国产| 精品一区二区久久久久久久网站 | 91看片一区二区三区 | 久久精品站| 中文字幕一区二区三 | 日本久久成人 | 日日日操操 | 九九视频精品在线 | 亚洲欧美精品一区 | 丁香婷婷社区 | 欧洲精品一区二区 | 精品成人在线 | 欧美日韩午夜 | 97超碰人人澡人人爱学生 | 国产视频一二三 | 国产91九色视频 | 国产精品国产三级国产aⅴ无密码 | 99精品国产一区二区 | 888av| 成人影视免费 | 五月婷婷伊人网 | 亚洲精品天天 | 爱爱一区 | 黄污在线观看 | 久久艹综合 | 日日久视频 | 综合久久精品 | 97视频亚洲 | 黄色的网站免费看 | 日黄网站| 国产精久久久久久久 | 国产在线精品视频 | 久热只有精品 | 就色干综合 | 亚洲国产视频直播 | 免费在线观看日韩欧美 | 精品久久久久久一区二区里番 | av亚洲产国偷v产偷v自拍小说 | 亚洲经典中文字幕 | 国产69久久久欧美一级 | av高清免费在线 | 成人小视频在线观看免费 | 成人理论电影 | 91片黄在线观看动漫 | 亚洲成av| 久久视频免费在线观看 | 国产流白浆高潮在线观看 | 又湿又紧又大又爽a视频国产 | 国产人成在线视频 | 成人xxxx| 国产91在| 国产精品二区在线观看 | 99久久www| 色综合天天狠天天透天天伊人 | 欧美极度另类性三渗透 | 久久久精品欧美一区二区免费 | 黄色片网站大全 | 欧美一区二区三区免费观看 | 一区二区精品在线观看 | 91精品电影 | 午夜视频一区二区 | 久久国产91 | 日韩成人在线一区二区 | 久草免费色站 | 久草在| 国产小视频免费在线网址 | 免费黄色在线网站 | 欧美在线1区 | 久久久久久久久久久免费视频 | 天天射天天搞 | 国产精品 欧美 日韩 | 91在线视频免费 | 久久免费视频这里只有精品 | 日本久久久久久 | 免费看色网站 | 国产高清av免费在线观看 | 九九九在线观看视频 | 免费在线观看av的网站 | 中文字幕三区 | 天天色影院 | 亚洲精品在线一区二区 | 麻豆高清免费国产一区 | 日韩成人精品 | 国产精品一区二区免费在线观看 | 国产一区二区三区高清播放 | 久久久久久国产精品亚洲78 | 日韩av在线免费播放 | 日韩字幕 | 深爱开心激情网 | 国产资源 | 91在线看网站 | 久草在线观看视频免费 | 久久超碰在线 | 久久综合九色综合久99 | 综合黄色网 | 久久免费毛片视频 | 亚洲精品视频在线观看网站 | 视频在线99re | 久草在线观看视频免费 | 91精品久久久久久综合乱菊 | 黄色激情网址 | 亚洲高清视频在线播放 | 一区二区三区在线观看免费 | 国产在线一线 | 国产黄色大全 | www久久精品 | 免费91在线 | 视频在线99re | 在线观看亚洲 | 久久精视频 | 亚洲视频在线视频 | 久久久久欧美精品 | 最近日本字幕mv免费观看在线 | 日韩免费在线网站 | 在线亚洲午夜片av大片 | 日韩欧美一区二区不卡 | 国产免费精彩视频 | 国产一级免费观看视频 | 99久久精品国产欧美主题曲 | 国产三级视频在线 | 视频在线精品 | 国产精品成人一区二区三区 | 久热av| 三日本三级少妇三级99 | 日韩精品免费在线视频 | 国产h片在线观看 | 高清av免费看 | 久草在线在线 | 免费观看全黄做爰大片国产 | 天天操天天射天天爱 | 欧美日韩精品在线免费观看 | 一区二区伦理电影 | 亚洲精品视频国产 | 国产精品久久一卡二卡 | 午夜色大片在线观看 | 欧美一区二区在线看 | 久热电影 | 国产免费激情久久 | 5月丁香婷婷综合 | 在线日本看片免费人成视久网 | 黄色99视频 | 亚洲精品久久久久久中文传媒 | 精品国产一区二区三区噜噜噜 | av在线网站免费观看 | 天天色综合1| 精品国产一区二区三区蜜臀 | 久久亚洲福利 | 久久综合久久综合久久综合 | 97免费视频在线 | av高清在线观看 | 免费a网站 | 亚洲精品久久久久中文字幕m男 | 天天摸天天弄 | 日本精油按摩3 | 亚洲综合精品视频 | 国产精品一区二区三区四区在线观看 | 91在线播放综合 | 美国av片在线观看 | 国产精品99久久久精品 | av免费在线网站 | 国产乱对白刺激视频不卡 | av国产网站 | 97超碰免费在线 | 天天色天天射综合网 | 午夜美女wwww | 欧美精彩视频在线观看 | 日韩在线国产精品 | av在线超碰 | 国产色拍拍拍拍在线精品 | 国产一级视频在线 | 成人看片| 天天干天天操人体 | 精品一区二三区 | 欧美日韩午夜 | 日韩影视在线观看 | 丁香六月伊人 | 欧美日韩国产一区二区三区在线观看 | 国产免费av一区二区三区 | 91高清一区| 色综合网在线 | 国产永久免费高清在线观看视频 | 亚洲午夜电影网 | 天天在线免费视频 | 久久99久久久久久 | 精品国产一区二区三区久久影院 | 国产99久久久国产精品免费二区 | 91精品成人| 九九热在线视频 | 99在线观看 | 五月婷婷丁香 | 91九色视频| 午夜精品久久久久久久99 | 免费av片在线 | 五月开心六月伊人色婷婷 | av国产网站| 一区二区三区在线免费观看视频 | 国产精品免费视频一区二区 | 久久成人一区 | 亚洲91av| 91香蕉视频720p| 欧美精品少妇xxxxx喷水 | 最近中文字幕在线中文高清版 | 国产无套一区二区三区久久 | 国产群p | 9在线观看免费高清完整 | 日韩欧美在线高清 | 日本一区二区三区视频在线播放 | 日韩性色 | 国产片网站 | 日韩在线观看中文 | 精品久久网 | 国产精品网址在线观看 | 亚洲电影一区二区 | 超碰国产在线播放 | 人人舔人人插 | 24小时日本在线www免费的 | 五月婷婷在线综合 | 韩国av免费在线观看 | 欧美特一级片 | 久久久久久久国产精品影院 | 国产91精品一区二区麻豆网站 | 久久免费视频这里只有精品 | 干干夜夜 | 人人干97 | 欧美一级黄色网 | 狠狠操91 | a一片一级 | 久久激情视频 | 久久精品站 | 97国产精品亚洲精品 | www.久久免费| av成人免费在线看 | 四虎4hu永久免费 | 中文国产成人精品久久一 | 亚洲电影免费 | 黄色片免费电影 | 久久久久久久久黄色 | 丁香婷婷综合五月 | 国产午夜精品免费一区二区三区视频 | 日韩精品一区二区在线 | 日韩av看片| 成人免费在线视频 | 欧美国产精品一区二区 | 久久亚洲福利视频 | 在线免费成人 | 00av视频 | 国产91精品看黄网站 | 亚洲五月 | 精品毛片一区二区免费看 | 日韩免费高清在线 | 最近中文国产在线视频 | 成人免费91| 国产黄色一级片 | 久久这里只有精品视频99 | 国产区精品区 | 五月婷婷激情六月 | 五月亚洲| 婷婷五综合 | 日韩欧美在线视频一区二区 | 国产精品黄色av | 国产精品国产三级国产不产一地 | 91手机视频在线 | 国产精品一区二区久久久 | 久久久国产一区 | 黄色大片日本免费大片 | 精品国产伦一区二区三区观看体验 | 国产精品免费看久久久8精臀av | 99久久精品无码一区二区毛片 | 色综合天天综合在线视频 | 99久久久久免费精品国产 | 精品国产诱惑 | 色小说av | 婷婷色婷婷 | www.日韩免费 | 日本高清dvd | 高清国产午夜精品久久久久久 | 国产一区二区三区黄 | 九月婷婷综合网 | 婷婷色在线播放 | 怡红院av久久久久久久 | 国产日韩精品一区二区 | 亚洲国产影院av久久久久 | 蜜臀av夜夜澡人人爽人人桃色 | 久久久久久久久久久久久久av | 在线精品视频免费播放 | 玖玖爱国产在线 | 中文在线免费看视频 | 亚洲国产av精品毛片鲁大师 | 婷婷综合电影 | 亚洲视频在线视频 | av免费试看 | 国产精品中文字幕在线播放 | 日日操日日插 | 成年人免费在线观看网站 | 午夜视频在线观看一区 | 精品成人在线 | 少妇精品久久久一区二区免费 | 天天爽天天搞 | 中文字幕视频观看 | 日韩免费观看一区二区三区 | 亚洲激情 欧美激情 | 操夜夜操 | 国产一区欧美日韩 | 夜又临在线观看 | 国产精品999久久久 久产久精国产品 | 久要激情网 | 国产日韩精品视频 | 久艹在线播放 | 天天色.com| 国产高清不卡一区二区三区 | 黄色片亚洲 | 精品国产精品国产偷麻豆 | 国产淫a| 在线观看日韩精品 | 国产精品欧美一区二区三区不卡 | 九九久久影院 | 亚洲精品国产自产拍在线观看 | 国产美女永久免费 | 日韩视频在线观看免费 | 97超碰在线视| 欧美日韩国产一区二区三区在线观看 | www.五月天婷婷.com | 国产区精品 | 五月婷香蕉久色在线看 | 一区免费在线 | 四虎在线视频免费观看 | 在线亚洲午夜片av大片 | 国产精品成人一区二区 | 中文有码在线 | 二区中文字幕 | 欧美一级性生活片 | 成人h电影| 一区二区三区三区在线 | 国产视频综合在线 | 国产九九九视频 | 美女视频黄是免费的 | 欧美日韩一区二区三区在线免费观看 | 国产一区精品在线 | 99热只有精品在线观看 | 国产片免费在线观看视频 | 国产在线美女 | 亚洲欧美综合 | 国产精品日韩久久久久 | 国产精品一区二区果冻传媒 | 天天天综合 | 亚洲天堂网在线视频 | 三上悠亚一区二区在线观看 | 精品国产乱码久久久久久1区2匹 | 免费av片在线 | 在线国产福利 | 不卡av在线 | 在线香蕉视频 | 日韩午夜小视频 | 91少妇精拍在线播放 | 日本久久久久久久久久久 | 黄毛片在线观看 | 在线成人高清电影 | 国内精品免费久久影院 | 黄色福利网站 | aaaaaa毛片| 337p日本欧洲亚洲大胆裸体艺术 | 国产五码一区 | 日本xxxx裸体xxxx17| 最近日本韩国中文字幕 | 97操操操 | 国产成人一区二区三区影院在线 | 久久久国产精品久久久 | 久久99精品一区二区三区三区 | 免费在线观看一区 | 久久免费看 | 久久无码av一区二区三区电影网 | 在线精品亚洲一区二区 | 国产精品99久久久久的智能播放 | 天天摸日日摸人人看 | 激情网五月婷婷 | 波多野结衣在线观看一区二区三区 | 日韩久久久久久久久久久久 | 久久国产品 | 91精品久久久久久综合乱菊 | 五月婷婷综合激情网 | 国产香蕉视频在线观看 | 日本黄色免费看 | 欧美综合在线视频 | 免费在线观看不卡av | 婷婷综合激情 | 99久久精品久久久久久清纯 | 亚洲成av | 狠狠色丁香婷婷综合最新地址 | 日韩欧美精品在线 | 超碰精品在线观看 | 亚洲一区久久久 | 四虎永久国产精品 | 最近2019中文免费高清视频观看www99 | 青青草在久久免费久久免费 | 丁香婷婷激情国产高清秒播 | 国产麻豆果冻传媒在线观看 | 国产成人精品在线播放 | 最新精品国产 | 一区二区网 | 国产一区二区三区 在线 | 精品视频免费播放 | 手机在线中文字幕 | 激情久久综合 | 国产在线观看中文字幕 | 国产综合香蕉五月婷在线 | 日本精品视频免费 | 日韩在线字幕 | 日韩欧美高清一区二区三区 | 人人射人人澡 | 激情五月激情综合网 | 婷婷久久五月天 | 精品国产1区2区3区 国产欧美精品在线观看 | 四虎国产 | 色综合网在线 | 国产视频一区在线 | 一区二区三区在线免费观看视频 | 草久久久久久久 | 亚洲最新av网址 | 91大神在线看 | 久久公开免费视频 | 在线高清一区 | 91精品国产99久久久久久红楼 | 国产午夜精品一区二区三区欧美 | 啪嗒啪嗒免费观看完整版 | 狠狠色综合欧美激情 | 免费中午字幕无吗 | 天堂av在线免费 | 99热最新精品 | 在线午夜电影神马影院 | 亚洲一二三区精品 | 91完整版观看 | 中文字幕亚洲综合久久五月天色无吗'' | 97超碰在| 久久久久久福利 | 亚洲精品国产欧美在线观看 | 国产专区在线播放 | 精品91在线 | 亚洲综合在线五月天 | 91片在线观看 | 精品xxx| 在线观看网站av | 国内一区二区视频 | 日本3级在线观看 | 欧美精品久久久久久久久久白贞 | 日本久草电影 | 久久黄页 | 美女福利视频在线 | 中文字幕在线免费看线人 | 99九九99九九九视频精品 | 精品国产一区二区三区在线 | 婷婷av电影 | 日韩免费一级a毛片在线播放一级 | 九九亚洲精品 | 久久视频在线免费观看 | 天天艹| 国产伦精品一区二区三区四区视频 | 国产中文字幕三区 | 黄色大片视频网站 | 激情网站免费观看 | 中文字幕亚洲五码 | 99精品视频免费看 | av电影在线观看完整版一区二区 | 日本精品视频在线观看 | 精品福利在线 | 九色琪琪久久综合网天天 | 亚洲精品视频久久 | 中文字幕一区在线 | 日韩电影中文,亚洲精品乱码 | 久久久精品一区二区三区 | 国产最新精品视频 | 中文字幕亚洲欧美日韩2019 | 国产精品黄色在线观看 | 精品国产不卡 | 制服丝袜欧美 | 国产精品一区二区三区四 | 911亚洲精品第一 | 久久综合九色九九 | 黄色av免费电影 | 国内精品久久久久久久97牛牛 | 特黄特黄的视频 | 91精品久久久久久 | 午夜精品一区二区三区在线视频 | 色资源在线 | 91久久精品一区二区三区 | 午夜精品一区二区三区免费 | 日本久久久久久久久久久 | 亚州国产视频 | 黄色精品视频 | 人人干人人干人人干 | 三级免费黄色 | 亚洲精品动漫久久久久 | 国产亚洲精品久久久久秋 | 在线日韩一区 | 国产精品久久久久久久久搜平片 | www.久久久.cum | 日韩免费高清在线 | 亚洲婷婷在线 | 国产黄色美女 | 国产精品一区二区免费看 | 精品在线你懂的 | 亚洲婷婷网 | 九九热国产 | 久久久黄视频 | 久久精品欧美一区二区三区麻豆 | 国产精品久久久久久久久软件 | 亚洲精品男人的天堂 | 韩国精品一区二区三区六区色诱 | 久久久国产精品人人片99精片欧美一 | 男女啪啪免费网站 | 亚洲h色精品 | 五月婷影院| 一区二区三区免费在线播放 | 99在线播放 | 中文字幕精品三区 | 69热国产视频 | 亚洲欧洲精品久久 | 99精品免费网 | 天天操天天操天天操天天操天天操天天操 | 久碰视频在线观看 | 婷婷激情av| 国产99久久久国产 | 综合久久婷婷 | 97av影院| 国产精品一区免费看8c0m | 亚洲理论电影 | 97人人添人澡人人爽超碰动图 | 亚洲一区日韩精品 | 6080yy精品一区二区三区 | 日韩在线三级 | 91桃色在线播放 | 欧美日韩在线视频观看 | 日韩精品在线看 | 国产精品麻豆99久久久久久 | 日本精品一区二区三区在线观看 | 精品视频9999| 91试看 | 九九九热视频 | 久久久国产精品久久久 | 国产又粗又猛又黄 | 亚洲爽爽网 | 国产日韩欧美在线影视 | 国产一级黄色av | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 天天插伊人| 456免费视频 | 91看片淫黄大片一级在线观看 | 18做爰免费视频网站 | 欧美日韩中文国产一区发布 | 国产精品video爽爽爽爽 | 狠狠色丁香婷婷综合橹88 | 午夜久久久影院 | 色www精品视频在线观看 | 亚洲午夜精品一区二区三区电影院 | 91中文字幕在线视频 | 国产精品久久久久久久7电影 | 99热这里是精品 | 日本护士三级少妇三级999 | 高清av影院 | 蜜臀精品久久久久久蜜臀 | 免费99视频| 国产精品黄色在线观看 | 91亚色视频在线观看 | 日韩系列 | 天天av综合网 | 91麻豆传媒 | 国产高清成人av | 婷五月天激情 | 欧美日韩不卡一区 | 天堂av中文字幕 | 久久天天躁狠狠躁夜夜不卡公司 | 激情网在线观看 | 一二区精品 | av 在线观看| 亚洲九九精品 | 日本在线观看一区二区 | 亚洲国产精品资源 | 国产精品理论片 | 国产精品99久久免费黑人 | 在线观看日本韩国电影 | 中文字幕在线视频免费播放 | 国产亚洲一区二区在线观看 | 国产精品久久久久久久久久久久午 | 天天爽夜夜爽精品视频婷婷 | 久99久视频 | 亚洲精品一区二区久 | 国产黄色片免费 | 免费看黄电影 | av电影免费观看 | 日韩视频一区二区在线观看 | 欧洲av不卡 | 亚洲一区二区三区91 | 午夜私人影院 | 久久久激情视频 | 99免费在线播放99久久免费 | 国产精品18videosex性欧美 | 一级a性色生活片久久毛片波多野 |