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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NLP模型集锦----pynlp

發布時間:2024/3/12 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NLP模型集锦----pynlp 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

github 地址?

目錄

1、Introduction

2、Our Model

2.1 CTR

2.1.1 Models List

2.1.2 Convolutional Click Prediction Model

2.1.2?Factorization-supported Neural Network

2.1.3?Product-based Neural Network

2.1.4?Wide & Deep

2.1.4?DeepFM

2.1.5?Piece-wise Linear Model

2.1.6 Deep & Cross Network

2.1.7?Attentional Factorization Machine

2.1.8?Neural Factorization Machine

2.1.9?xDeepFM

2.1.10?AutoInt

? ? ? ? ?2.1.11?Deep Interest Network

2.1.12??Deep Interest Evolution Network

2.1.13?NFFM

2.1.14?FGCNN

2.1.15?Deep Session Interest Network

2.1.16?FiBiNET

2.1.17?DSTN

2.2?NLU

2.2.1 模型介紹與實現:Joint Model (Intent+Slot)

2.3?TextSimilarity

2.3.1??模型介紹:深度學習之文本相似度Paper總結

2.3.2? 模型實現說明:github

2.4?Sequence labeling

2.4.1 介紹

2.4.2? 模型實現

2.5?Text classification

2.5.1 介紹

2.5.2? 模型實現

2.6?NLG


1、Introduction

pynlp是包含CTR、NLP、NLG、文本相似度、文本序列標注、文本分類等模型的一個Tensorflow實現。

2、Our Model

2.1 CTR

2.1.1 Models List

ModelPaper
Convolutional Click Prediction Model[CIKM 2015]A Convolutional Click Prediction Model
Factorization-supported Neural Network[ECIR 2016]Deep Learning over Multi-field Categorical Data: A Case Study on User Response Prediction
Product-based Neural Network[ICDM 2016]Product-based neural networks for user response prediction
Wide & Deep[DLRS 2016]Wide & Deep Learning for Recommender Systems
DeepFM[IJCAI 2017]DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
Piece-wise Linear Model[arxiv 2017]Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction
Deep & Cross Network[ADKDD 2017]Deep & Cross Network for Ad Click Predictions
Attentional Factorization Machine[IJCAI 2017]Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks
Neural Factorization Machine[SIGIR 2017]Neural Factorization Machines for Sparse Predictive Analytics
xDeepFM[KDD 2018]xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems
AutoInt[arxiv 2018]AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks
Deep Interest Network[KDD 2018]Deep Interest Network for Click-Through Rate Prediction
Deep Interest Evolution Network[AAAI 2019]Deep Interest Evolution Network for Click-Through Rate Prediction
NFFM[arxiv 2019]Operation-aware Neural Networks for User Response Prediction
FGCNN[WWW 2019]Feature Generation by Convolutional Neural Network for Click-Through Rate Prediction
Deep Session Interest Network[IJCAI 2019]Deep Session Interest Network for Click-Through Rate Prediction
FiBiNET[RecSys 2019]FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction

DSTN

Deep Spatio-Temporal Neural Networks for Click-Through Rate Prediction

?

2.1.2 Convolutional Click Prediction Model

模型結構


主要思想
通過一個(width, 1)的kernel進行對特征的embedding矩陣進行二維卷積,其中width表示的每次對連續的width個特征進行卷積運算,之后使用一個Flexible pooling機制進行池化操作進行特征聚合和壓縮表示,堆疊若干層后將得到特征矩陣作為MLP的輸入,得到最終的預測結果。

這里解釋兩個問題

1.為什么強調是連續的width個特征進行卷積

我們都知道CNN之所以在CV領域大放異彩是由于其具有如下特性

  • 參數共享

? ? ? ?通常一個特征檢測子(如邊緣檢測)在圖像某一部位有用也在其他部位生效。

  • 稀疏連接

? ? ? ?每一層的輸出只依賴于前一層一小部分的輸入

在NLP任務中由于語句天然存在前后依賴關系,所以使用CNN能獲得一定的特征表達,那么在CTR任務中使用CNN能獲得特征提取的功能嗎?

答案是能,但是效果可能沒有那么好,問題就出在卷積是對連續的width個特征進行計算,這導致了我們輸入特征的順序發生變化就會引起結果的變化,而在CTR任務中,我們的特征輸入是沒有順序的。
這相當于我們給了一個先驗在里面,就是連續的width個特征進行組合更具有意義。
雖然我們可以使用類似空洞卷積的思想增加感受野來使得卷積計算的時候跨越多個特征,但是這仍然具有一定的隨機性。
所以使用CNN進行CTR任務的特征提取的一個難點就在于其計算的是局部特征組合,無法有效捕捉全局組合特征。

2.Flexible pooliong是什么?
其實就是Max Pooling,只不過每次沿某一維度取p個最大的,不是1個最大的。
p的取值根據當前池化層數和總層數自適應計算,其中i是當前層數,l是總層數

2.1.2?Factorization-supported Neural Network

2.1.2.1 、摘要:
預測用戶回應(user response),例如CTR、CVR(轉化率)在網頁搜索、個性化推薦、在在線廣告起著至關重要的作用;不同于圖像和音頻領域,網頁空間的輸入特征通常是離散和類別型的,并且依賴性也基本未知;原來要預測用戶響應:線性模型(欠擬合)或手工設計高階交互特征(計算量大);文章提出通過DNN來自動學習有效的類別特征交互模式,為了使DNN有效工作,利用三個特征轉換方法:FM(factorisation machines)、RBM(限制波爾茲曼機)、DAE(降噪自編碼器);

2.1.2.2、介紹
一堆balabala,就是講線性模型不能有效的學習出不明顯的模式;FM和GBDT雖然能做特征組合,但是不能利用全部不同特征的組合;許多模型需要依靠特征工程和手工設計特征,并且大多數模型是淺層結構,泛化性能不好;
然后文章提出深度學習在圖像、文本等的廣泛應用,可以學習出局部特征并進而學習出高階特征篩。但是對于CTR問題,存在多個領域并且都是類別特征(如城市、設備類型、廣告類型),他們的局部依賴性是未知的,通過DNN來學習特征表示是很有前景的;文中提出方法Factorisation Machine supported Neural Network (FNN) 和 Sampling-based Neural Network (SNN)。 其中FNN通過監督學習Embedding并用FM來將稀疏特征變成Dense特征,減少維度;SNN通過負采樣方式,基于RBM或者DAE。

2.1.2.3、DNNs for CTR Estimation given Categorical Features
如圖所示是一個4層的FNN結構:

輸入類別特征是field-wise 的One-hot編碼形式,只有一個值為1,其他為0;

2.1.2.4、Factorisation-machine supported Neural Networks (FNN)

2.1.2.5、Sampling-based Neural Networks (SNN)
基于采樣的NN如下圖所示:

SNN和FNN不同的地方在于最底層是不一樣的,FNN是基于FM,而SNN是全連接網絡,使用sigmoid函數,但由于輸入是稀疏的,所以直接訓練效果不行,使用上圖右邊所示的兩種方法:基于采樣的RBM和基于采樣的DAE。

2.1.3?Product-based Neural Network

PNN,全稱為Product-based Neural Network,認為在embedding輸入到MLP之后學習的交叉特征表達并不充分,提出了一種product layer的思想,既基于乘法的運算來體現特征交叉的DNN網絡結構,如下圖:

按照論文的思路,從上往下來看這個網絡結構:

輸出層
輸出層很簡單,將上一層的網絡輸出通過一個全鏈接層,經過sigmoid函數轉換后映射到(0,1)的區間中,得到我們的點擊率的預測值:

?

l2

根據l1層的輸出,經一個全鏈接層 ,并使用relu進行激活,得到我們l2的輸出結果:

?

l1層
l1層的輸出由如下的公式計算:

重點馬上就要來了,我們可以看到在得到l1層輸出時,我們輸入了三部分,分別是lz,lp 和 b1,b1是我們的偏置項,這里可以先不管。lz和lp的計算就是PNN的精華所在了。我們慢慢道來:

Product Layer

product思想來源于,在ctr預估中,認為特征之間的關系更多是一種and“且”的關系,而非add"或”的關系。例如,性別為男且喜歡游戲的人群,比起性別男和喜歡游戲的人群,前者的組合比后者更能體現特征交叉的意義。

product layer可以分成兩個部分,一部分是線性部分lz,一部分是非線性部分lp。二者的形式如下:

在這里,我們要使用到論文中所定義的一種運算方式,其實就是矩陣的點乘:

我們先繼續介紹網絡結構,有關Product Layer的更詳細的介紹,我們在下一章中介紹。

?

Embedding Layer

Embedding Layer跟DeepFM中相同,將每一個field的特征轉換成同樣長度的向量,這里用f來表示。

損失函數
損失函數使用交叉熵:

?

?

2.1.3.1Product Layer詳細介紹

前面提到了,product layer可以分成兩個部分,一部分是線性部分lz,一部分是非線性部分lp。它們同維度,其具體形式如下:

?

看上面的公式,我們首先需要知道z和p,這都是由我們的embedding層得到的,其中z是線性信號向量,因此我們直接用embedding層得到:

論文中使用的等號加一個三角形,其實就是相等的意思,可以認為z就是embedding層的復制。

對于p來說,這里需要一個公式進行映射:

不同的g的選擇使得我們有了兩種PNN的計算方法,一種叫做Inner PNN,簡稱IPNN,一種叫做Outer PNN,簡稱OPNN。

接下來,我們分別來具體介紹這兩種形式的PNN模型,由于涉及到復雜度的分析,所以我們這里先定義Embedding的大小為M,field的大小為N,而lz和lp的長度為D1。

?

2.1.3.2?IPNN

IPNN中p的計算方式如下,即使用內積來代表pij:

所以,pij其實是一個數,得到一個pij的時間復雜度為M,p的大小為N*N,因此計算得到p的時間復雜度為N*N*M。而再由p得到lp的時間復雜度是N*N*D1。因此 對于IPNN來說,總的時間復雜度為N*N(D1+M)。文章對這一結構進行了優化,可以看到,我們的p是一個對稱矩陣,因此我們的權重也可以是一個對稱矩陣,對稱矩陣就可以進行如下的分解:

因此:

因此:

?

2.1.3.3?OPNN

OPNN中p的計算方式如下:

此時pij為M*M的矩陣,計算一個pij的時間復雜度為M*M,而p是N*N*M*M的矩陣,因此計算p的事件復雜度為N*N*M*M。從而計算lp的時間復雜度變為D1 * N*N*M*M。這個顯然代價很高的。為了減少復雜度,論文使用了疊加的思想,它重新定義了p矩陣:

通過元素相乘的疊加,也就是先疊加N個field的Embedding向量,然后做乘法,可以大幅減少時間復雜度,定義p為:

這里計算p的時間復雜度變為了D1*M*(M+N)

?

2.1.3.4.Discussion

和FNN相比,PNN多了一個product,和FM相比,PNN多了隱層,并且輸出不是簡單的疊加;在訓練部分,可以單獨訓練FNN或者FM部分作為初始化,然后BP算法應用整個網絡,那么至少效果不會差于FNN和FM

2.1.4?Wide & Deep

2.1.4.1 背景

Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右發布的一類用于分類和回歸的模型,并應用到了 Google Play 的應用推薦中。wide and deep 模型的核心思想是結合線性模型的記憶能力(memorization)和 DNN 模型的泛化能力(generalization),在訓練過程中同時優化 2 個模型的參數,從而達到整體模型的預測能力最優。
記憶(memorization)即從歷史數據中發現item或者特征之間的相關性。
泛化(generalization)即相關性的傳遞,發現在歷史數據中很少或者沒有出現的新的特征組合。

2.1.4.2?原理

  • ?網絡結構

?

可以認為:WideDeep = LR + DNN

  • 推薦系統

?

流程:

  • query召回 100 個 相關的items;
  • 根據query+items+用戶日志學習排序模型;
  • 利用 2 的模型,對 1 中召回的items排序,先去top10 推薦給用戶;
  • 論文主要講排序的部分,排序時使用到的特征:

  • user features (e.g., country, language, demographics);
  • contextual features (e.g., device, hour of the day, day of the week);
  • impression features (e.g., app age, historical statistics of an app).
  • 2.1.4.3The Wide Component

    wide部分就是LR,LR的輸入特征包括了原始特征和交叉特征;
    交叉特征的定義:

    ?

    ?

    在論文中,當x_i = 1 x_j = 1 其他值都是 0 時,就添加一個交叉特征 1 ,由于輸入的x是one-hot類型,交叉特征可以理解為任意兩個特征的乘積。

    2.1.4.4The Deep Component

    Deep部分就是一個MLP,隱藏層的激活函數使用了ReLUs = max(0, a)。MLP的輸入包括了連續的特征和 embedding特征,對于每個field embedding特征采樣隨機初始化的方式。

    2.1.4.5 joint training

    ?

    joint training指同時訓練Wide模型和Deep模型,并將兩個模型的結果的加權作為最終的預測結果:

    ?

    ?

    在論文實驗中,訓練部分,Wide使用Follow-the-regularized-learder(FTRL)+L1正則, Deep使用了AdaGrad。

    2.1.4?DeepFM

    2.1.4.1、背景

    特征組合的挑戰

    對于一個基于CTR預估的推薦系統,最重要的是學習到用戶點擊行為背后隱含的特征組合。在不同的推薦場景中,低階組合特征或者高階組合特征可能都會對最終的CTR產生影響。

    之前介紹的因子分解機(Factorization Machines, FM)通過對于每一維特征的隱變量內積來提取特征組合。最終的結果也非常好。但是,雖然理論上來講FM可以對高階特征組合進行建模,但實際上因為計算復雜度的原因一般都只用到了二階特征組合。

    那么對于高階的特征組合來說,我們很自然的想法,通過多層的神經網絡即DNN去解決。

    DNN的局限

    下面的圖片來自于張俊林教授在AI大會上所使用的PPT。

    我們之前也介紹過了,對于離散特征的處理,我們使用的是將特征轉換成為one-hot的形式,但是將One-hot類型的特征輸入到DNN中,會導致網絡參數太多:

    如何解決這個問題呢,類似于FFM中的思想,將特征分為不同的field:

    再加兩層的全鏈接層,讓Dense Vector進行組合,那么高階特征的組合就出來了

    但是低階和高階特征組合隱含地體現在隱藏層中,如果我們希望把低階特征組合單獨建模,然后融合高階特征組合。

    即將DNN與FM進行一個合理的融合:

    二者的融合總的來說有兩種形式,一是串行結構,二是并行結構

    而我們今天要講到的DeepFM,就是并行結構中的一種典型代表。

    2.1.4.2、DeepFM模型

    我們先來看一下DeepFM的模型結構:

    DeepFM包含兩部分:神經網絡部分與因子分解機部分,分別負責低階特征的提取和高階特征的提取。這兩部分共享同樣的輸入。DeepFM的預測結果可以寫為:

    FM部分

    FM部分的詳細結構如下:

    FM部分是一個因子分解機。關于因子分解機可以參閱文章[Rendle, 2010] Steffen Rendle. Factorization machines. In ICDM, 2010.。因為引入了隱變量的原因,對于幾乎不出現或者很少出現的隱變量,FM也可以很好的學習。

    FM的輸出公式為:

    深度部分

    深度部分是一個前饋神經網絡。與圖像或者語音這類輸入不同,圖像語音的輸入一般是連續而且密集的,然而用于CTR的輸入一般是及其稀疏的。因此需要重新設計網絡結構。具體實現中為,在第一層隱含層之前,引入一個嵌入層來完成將輸入向量壓縮到低維稠密向量。

    嵌入層(embedding layer)的結構如上圖所示。當前網絡結構有兩個有趣的特性,1)盡管不同field的輸入長度不同,但是embedding之后向量的長度均為K。2)在FM里得到的隱變量Vik現在作為了嵌入層網絡的權重。

    這里的第二點如何理解呢,假設我們的k=5,首先,對于輸入的一條記錄,同一個field 只有一個位置是1,那么在由輸入得到dense vector的過程中,輸入層只有一個神經元起作用,得到的dense vector其實就是輸入層到embedding層該神經元相連的五條線的權重,即vi1,vi2,vi3,vi4,vi5。這五個值組合起來就是我們在FM中所提到的Vi。在FM部分和DNN部分,這一塊是共享權重的,對同一個特征來說,得到的Vi是相同的。

    有關模型具體如何操作,我們可以通過代碼來進一步加深認識。

    2.1.4.3、相關知識

    我們先來講兩個代碼中會用到的相關知識吧,代碼是參考的github上星數最多的DeepFM實現代碼。

    Gini Normalization

    代碼中將CTR預估問題設定為一個二分類問題,繪制了Gini Normalization來評價不同模型的效果。這個是什么東西,不太懂,百度了很多,發現了一個比較通俗易懂的介紹。

    假設我們有下面兩組結果,分別表示預測值和實際值:

    predictions = [0.9, 0.3, 0.8, 0.75, 0.65, 0.6, 0.78, 0.7, 0.05, 0.4, 0.4, 0.05, 0.5, 0.1, 0.1]

    actual = [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]

    然后我們將預測值按照從小到大排列,并根據索引序對實際值進行排序:

    SortedActualValues[0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1]

    然后,我們可以畫出如下的圖片:

    接下來我們將數據Normalization到0,1之間。并畫出45度線。

    橙色區域的面積,就是我們得到的Normalization的Gini系數。

    這里,由于我們是將預測概率從小到大排的,所以我們希望實際值中的0盡可能出現在前面,因此Normalization的Gini系數越大,分類效果越好。

    embedding_lookup

    在tensorflow中有個embedding_lookup函數,我們可以直接根據一個序號來得到一個詞或者一個特征的embedding值,那么他內部其實是包含一個網絡結構的,如下圖所示:

    假設我們想要找到2的embedding值,這個值其實是輸入層第二個神經元與embedding層連線的權重值。

    之前有大佬跟我探討word2vec輸入的問題,現在也算是有個比較明確的答案,輸入其實就是one-hot Embedding,而word2vec要學習的是new Embedding。

    2.1.5?Piece-wise Linear Model

    2.5.1.1、算法介紹

    現階段各CTR預估算法的不足
    我們這里的現階段,不是指的今時今日,而是阿里剛剛公開此算法的時間,大概就是去年的三四月份吧。

    業界常用的CTR預估算法的不足如下表所示:

    方法簡介不足
    邏輯回歸使用了Sigmoid函數將函數值映射到0~1區間作為CTR的預估值。LR這種線性模型很容易并行化,處理上億條訓練樣本不是問題。線性模型的學習能力有限,需要引入大量的領域知識來人工設計特征以及特征之間的交叉組合來間接補充算法的非線性學習能力,非常消耗人力和機器資源,遷移性不夠友好。
    Kernel方法將低維特征映射到高維特征空間復雜度太高而不易實現
    樹模型如Facebook的GBDT+LR算法,有效地解決了LR模型的特征組合問題是對歷史行為的記憶,缺乏推廣性,樹模型只能學習到歷史數據中的特定規則,對于新規則缺乏推廣性
    FM模型自動學習高階屬性的權值,不用通過人工的方式選取特征來做交叉FM模型只能擬合特定的非線性模式,常用的就是二階FM
    深度神經網絡使用神經網絡擬合數據之間的高階非線性關系,非線性擬合能力足夠強適合數據規律的、具備推廣性的網絡結構業界依然在探索中,尤其是要做到端到端規模化上線,這里面的技術挑戰依然很大

    那么挑戰來了,如何設計算法從大規模數據中挖掘出具有推廣性的非線性模式?

    MLR算法

    2011-2012年期間,阿里媽媽資深專家蓋坤創新性地提出了MLR(mixed logistic regression)算法,引領了廣告領域CTR預估算法的全新升級。MLR算法創新地提出并實現了直接在原始空間學習特征之間的非線性關系,基于數據自動發掘可推廣的模式,相比于人工來說效率和精度均有了大幅提升。

    MLR可以看做是對LR的一個自然推廣,它采用分而治之的思路,用分片線性的模式來擬合高維空間的非線性分類面,其形式化表達如下:

    其中u是聚類參數,決定了空間的劃分,w是分類參數,決定空間內的預測。這里面超參數分片數m可以較好地平衡模型的擬合與推廣能力。當m=1時MLR就退化為普通的LR,m越大模型的擬合能力越強,但是模型參數規模隨m線性增長,相應所需的訓練樣本也隨之增長。因此實際應用中m需要根據實際情況進行選擇。例如,在阿里的場景中,m一般選擇為12。下圖中MLR模型用4個分片可以完美地擬合出數據中的菱形分類面。

    在實際中,MLR算法常用的形式如下,使用softmax作為分片函數:

    在這種情況下,MLR模型可以看作是一個FOE model:

    關于損失函數的設計,阿里采用了 neg-likelihood loss function以及L1,L2正則,形式如下:

    由于加入了正則項,MLR算法變的不再是平滑的凸函數,梯度下降法不再適用,因此模型參數的更新使用LBFGS和OWLQN的結合,具體的優化細節大家可以參考論文(https://arxiv.org/pdf/1704.05194.pdf).

    MLR算法適合于工業級的大規模稀疏數據場景問題,如廣告CTR預估。背后的優勢體現在兩個方面:
    端到端的非線性學習:從模型端自動挖掘數據中蘊藏的非線性模式,省去了大量的人工特征設計,這 使得MLR算法可以端到端地完成訓練,在不同場景中的遷移和應用非常輕松。
    稀疏性:MLR在建模時引入了L1和L2,1范數正則,可以使得最終訓練出來的模型具有較高的稀疏度, 模型的學習和在線預測性能更好。當然,這也對算法的優化求解帶來了巨大的挑戰。

    2.1.6 Deep & Cross Network

    背景

    探索具有預測能力的組合特征對提高CTR模型的性能十分重要,這也是大量人工特征工程存在的原因。但是數據高維稀疏(大量離散特征one-hot之后)的性質,對特征探索帶來了巨大挑戰,進而限制了許多大型系統只能使用線性模型(比如邏輯回歸)。線性模型簡單易理解并且容易擴展,但是表達能力有限,對模型表達能力有巨大作用的組合特征通常需要人工不斷的探索。深度學習的成功激發了大量針對它的表達能力的理論分析,研究顯示給定足夠多隱藏層或者隱藏單元,DNN能夠在特定平滑假設下以任意的精度逼近任意函數。實踐中大多數函數并不是任意的,所以DNN能夠利用可行的參數量達到很好的效果。DNN憑借Embedding向量以及非線性激活函數能夠學習高階的特征組合,并且殘差網絡的成功使得我們能夠訓練很深的網絡。

    相關工作

    由于數據集規模和維度的急劇增加,為了避免針對特定任務的大規模特征工程,涌現了很多方法,這些方法主要是基于Embedding和神經網絡技術。

    • FM將稀疏特征映射到低維稠密向量上,通過向量內積學習特征組合,也就是通過隱向量的內積來建模組合特征。
    • FFM在FM的基礎上引入Field概念,允許每個特征學習多個向量,針對不同的Field使用不同的隱向量。
    • DNN依靠神經網絡強大的學習能力,能夠自動的學習特征組合,但是它隱式的學習了所有的特征組合,這對于模型效果和學習效率可能是不利的。

    遺憾的是FM和FFM的淺層結構限制了它們的表達能力(兩者都是針對低階的特征組合進行建模),也有將FM擴展到高階的方法,但是這些方法擁有大量的參數產生了額外的計算開銷。Kaggle競賽中,很多取勝的方法中人工構造的組合特征都是低階的,并且是顯性(具有明確意義)高效的。而DNN學習到的都是高度非線性的高階組合特征,含義難以解釋。是否有一種模型能夠學習有限階數的特征組合,并且高效可理解呢?本文提出的DCN就是一種。W&D也是這種思想,組合特征作為線性模型的輸入,同時訓練線性模型和DNN,但是該模型的效果取決于組合特征的選擇。

    主要貢獻

    交叉網絡是個多層網絡,能夠有效的學習特定階數的特征組合,特征組合的最高階數取決于網絡層數。通過聯合(jointly)訓練交叉網絡和DNN,DCN保留了DNN捕獲復雜特征組合的能力。DCN不需要人工特征工程,而且相對于DNN來說增加的復雜度也是微乎其微。實驗表明DCN在模型準確度和內存使用方面具有優勢,需要比DNN少一個數量級的參數。

    • 支持稀疏、稠密輸入,能夠高效的學習特定階數限制下的特征組合以及高階非線性特征組合,并且不需要人工特征工程,擁有較低的計算開銷;
    • 交叉網絡簡單有效,特征組合的最高階數取決于網絡層數,網絡中包含了1價到特定階數的所有項的組合并且它們的系數不同;
    • 節省內存并且易于實現,擁有比DNN低的logloss,而且參數量少了近一個數量級。

    核心思想

    Embedding和Stacking層

    模型的輸入大部分是類別特征,這種特征通常會進行one-hot編碼,這就導致了特征空間是高維稀疏的(比如ID特征經過one-hot編碼之后)。為了降低維度,通常會利用Embedding技術將這些二值特征轉變成實值的稠密向量(Embedding向量)。Embedding過程用到的參數矩陣會和網絡中的其它參數一塊進行優化。最后將這些Embedding向量和經過歸一化的稠密特征組合(stack)到一起作為網絡的輸入。

    ?

    X0=[XTembed,1,…,XTembed,k,XTdense]X0=[Xembed,1T,…,Xembed,kT,XdenseT]

    交叉網絡(Cross Network)

    DCN主要有以下幾點貢獻:

    • 提出一種新型的交叉網絡結構,可以用來提取交叉組合特征,并不需要人為設計的特征工程;
    • 這種網絡結構足夠簡單同時也很有效,可以獲得隨網絡層數增加而增加的多項式階(polynomial degree)交叉特征;
    • 十分節約內存(依賴于正確地實現),并且易于使用;
    • 實驗結果表明,DCN相比于其他模型有更出色的效果,與DNN模型相比,較少的參數卻取得了較好的效果。

    2.1.7?Attentional Factorization Machine

    2.1.7.1、摘要:

    提出一個Attentional FM,Attention模型+因子分解機,其通過Attention學習到特征交叉的權重。因為很顯然不是所有的二階特征交互的重要性都是一樣的,如何通過機器自動的從中學習到這些重要性是這篇論文解決的最重要的問題,

    比如:作者舉了一個例子,在句子"US continues taking a leading role on foreign payment transparency"中,除了"foreign payment transparency",其它句子明顯與財經新聞無關,它們之間的交叉作用可認為對主題預測是一種噪音。

    2.1.7.2、FM

    2.1.7.3、注意力機制

    AFM模型架構:

    ?

    ?

    2.1.8?Neural Factorization Machine

    NFM(Neural?Factorization?Machines)?又是在?FM?上的一個改進工作,出發點是?FM?通過隱向量可以對完成一個很好的特征組合工作,并且還解決了稀疏的問題,但是?FM?對于它對于?non-linear?和higher-order?特征交叉能力不足,而?NFM?則是結合了?FM?和?NN?來彌補這個不足。模型框架如下(圖里沒畫一階的回歸):

    2.1.9?xDeepFM

    2.1.9.1 Compressed Interaction Network

    為了實現自動學習顯式的高階特征交互,同時使得交互發生在向量級上,文中首先提出了一種新的名為壓縮交互網絡(Compressed Interaction Network,簡稱CIN)的神經模型。在CIN中,隱向量是一個單元對象,因此我們將輸入的原特征和神經網絡中的隱層都分別組織成一個矩陣,記為X0和Xk。CIN中每一層的神經元都是根據前一層的隱層以及原特征向量推算而來,其計算公式如下:

    其中點乘的部分計算如下:

    我們來解釋一下上面的過程,第k層隱層含有H_k條神經元向量。隱層的計算可以分成兩個步驟:(1)根據前一層隱層的狀態Xk和原特征矩陣X0,計算出一個中間結果Z^k+1,它是一個三維的張量,如下圖所示:

    在這個中間結果上,我們用Hk+1個尺寸為m*Hk的卷積核生成下一層隱層的狀態,該過程如圖2所示。這一操作與計算機視覺中最流行的卷積神經網絡大體是一致的,唯一的區別在于卷積核的設計。CIN中一個神經元相關的接受域是垂直于特征維度D的整個平面,而CNN中的接受域是當前神經元周圍的局部小范圍區域,因此CIN中經過卷積操作得到的特征圖(Feature Map)是一個向量,而不是一個矩陣。

    如果你覺得原文中的圖不夠清楚的話,希望下圖可以幫助你理解整個過程:

    CIN的宏觀框架可以總結為下圖:

    可以看出,它的特點是,最終學習出的特征交互的階數是由網絡的層數決定的,每一層隱層都通過一個池化操作連接到輸出層,從而保證了輸出單元可以見到不同階數的特征交互模式。同時不難看出,CIN的結構與循環神經網絡RNN是很類似的,即每一層的狀態是由前一層隱層的值與一個額外的輸入數據計算所得。不同的是,CIN中不同層的參數是不一樣的,而在RNN中是相同的;RNN中每次額外的輸入數據是不一樣的,而CIN中額外的輸入數據是固定的,始終是X^0。

    可以看到,CIN是通過(vector-wise)來學習特征之間的交互的,還有一個問題,就是它為什么是顯式的進行學習?我們先從X1來開始看,X1的第h個神經元向量可以表示成:

    進一步,X^2的第h個神經元向量可以表示成:

    最后,第k層的第h個神經元向量可以表示成:

    因此,我們能夠通過上面的式子對特征交互的形式進行一個很好的表示,它是顯式的學習特征交叉。

    2.1.9.2 xDeepFM

    將CIN與線性回歸單元、全連接神經網絡單元組合在一起,得到最終的模型并命名為極深因子分解機xDeepFM,其結構如下圖:

    集成的CIN和DNN兩個模塊能夠幫助模型同時以顯式和隱式的方式學習高階的特征交互,而集成的線性模塊和深度神經模塊也讓模型兼具記憶與泛化的學習能力。值得一提的是,為了提高模型的通用性,xDeepFM中不同的模塊共享相同的輸入數據。而在具體的應用場景下,不同的模塊也可以接入各自不同的輸入數據,例如,線性模塊中依舊可以接入很多根據先驗知識提取的交叉特征來提高記憶能力,而在CIN或者DNN中,為了減少模型的計算復雜度,可以只導入一部分稀疏的特征子集。

    2.1.9.3 Tensorflow充電

    在介紹xDeepFM的代碼之前,我們先來進行充電,學習幾個tf的函數以及xDeepFM關鍵過程的實現。

    tf.split
    首先我們要實現第一步:

    ?

    如何將兩個二維的矩陣,相乘得到一個三維的矩陣?我們首先來看一下tf.split函數的原理:

    tf.split(value,num_or_size_splits,axis=0,num=None,name='split' )

    其中,value傳入的就是需要切割的張量,axis是切割的維度,根據num_or_size_splits的不同形式,有兩種切割方式:

  • 如果num_or_size_splits傳入的是一個整數,這個整數代表這個張量最后會被切成幾個小張量。此時,傳入axis的數值就代表切割哪個維度(從0開始計數)。調用tf.split(my_tensor, 2,0)返回兩個10 * 30 * 40的小張量。
  • 如果num_or_size_splits傳入的是一個向量,那么向量有幾個分量就分成幾份,切割的維度還是由axis決定。比如調用tf.split(my_tensor, [10, 5, 25], 2),則返回三個張量分別大小為 20 * 30 * 10、20 * 30 * 5、20 * 30 * 25。很顯然,傳入的這個向量各個分量加和必須等于axis所指示原張量維度的大小 (10 + 5 + 25 = 40)。
  • 好了,從實際需求出發,我們來體驗一下,假設我們的batch為2,embedding的size是3,field數量為4。我們先來生成兩個這樣的tensor(假設X^k的field也是4 ):

    arr1 = tf.convert_to_tensor(np.arange(1,25).reshape(2,4,3),dtype=tf.int32) arr2 = tf.convert_to_tensor(np.arange(1,25).reshape(2,4,3),dtype=tf.int32)

    生成的矩陣如下:

    在經過CIN的第一步之后,我們目標的矩陣大小應該是2(batch) * 3(embedding Dimension) * 4(X^k的field數) * 4(X^0的field數)。如果只考慮batch中第一條數據的話,應該形成的是 1 * 3 * 4 * 4的矩陣。忽略第0維,想像成一個長寬為4,高為3的長方體,長方體橫向切割,第一個橫截面對應的數字應該如下:

    那么想要做到這樣的結果,我們首先按輸入數據的axis=2進行split:

    split_arr1 = tf.split(arr1,[1,1,1],2) split_arr2 = tf.split(arr2,[1,1,1],2) print(split_arr1) print(sess.run(split_arr1)) print(sess.run(split_arr2))

    分割后的結果如下:

    通過結果我們可以看到,我們現在對每一條數據,得到了3個4 * 1的tensor,可以理解為此時的tensor大小為 3(embedding Dimension) * 2(batch) * 4(X^k 或X^0的field數) * 1。

    此時我們進行矩陣相乘:

    res = tf.matmul(split_arr1,split_arr2,transpose_b=True)

    這里我理解的,tensorflow對3維及以上矩陣相乘時,矩陣相乘只發生在最后兩維。也就是說,3 * 2 * 4 * 1 和 3 * 2 * 1 * 4的矩陣相乘,最終的結果是3 * 2 * 4 * 4。我們來看看結果:

    可以看到,不僅矩陣的形狀跟我們預想的一樣,同時結果也跟我們預想的一樣。

    最后,我們只需要進行transpose操作,把batch轉換到第0維就可以啦。

    res = tf.transpose(res,perm=[1,0,2,3])

    這樣,CIN中的第一步就大功告成了,明白了這一步如何用tensorflow實現,那么代碼你也就能夠順其自然的看懂啦!

    這一塊完整的代碼如下:

    import tensorflow as tf import numpy as nparr1 = tf.convert_to_tensor(np.arange(1,25).reshape(2,4,3),dtype=tf.int32) arr2 = tf.convert_to_tensor(np.arange(1,25).reshape(2,4,3),dtype=tf.int32)with tf.Session() as sess:sess.run(tf.global_variables_initializer())split_arr1 = tf.split(arr1,[1,1,1],2)split_arr2 = tf.split(arr2,[1,1,1],2)print(split_arr1)print(sess.run(split_arr1))print(sess.run(split_arr2))res = tf.matmul(split_arr1,split_arr2,transpose_b=True)print(sess.run(res))res = tf.transpose(res,perm=[1,0,2,3])print(sess.run(res))

    2.1.10?AutoInt

    2.1.10.1 簡介

    這篇論文提出使用multi-head self attention(類似Transformer里的那個) 機制來進行自動特征交叉學習以提升CTR預測任務的精度。


    廢話不多說,先看下主要結構。典型的四段式深度學習CTR模型結構:輸入,嵌入,特征提取,輸出。這里我們重點看下嵌入和特征提取部分

    ?

    核心結構

    輸入和嵌入

    輸入和嵌入層結構

    針對類別特征,通過embedding方式轉換為低維稠密向量??其中,??是特征組?對應的嵌入字典(嵌入矩陣),??是特征組特征的獨熱編碼表示向量(通常出于節省空間的考慮,只存儲非零特征對應的索引)

    對于連續特征有,??其中??是一個嵌入向量,??是一個標量值

    通常在CTR任務中我們對連續值特征的處理方式有三種:

  • 進行歸一化處理拼接到embedding向量側
  • 進行離散化處理作為類別特征
  • 賦予其一個embedding向量,每次用特征值與embedding向量的乘積作為其最終表示
  • 本文采取的是第三種方式,具體這三種方式孰優孰劣,要在具體場景具體任務下大家自己去驗證了~

    從實現的角度看第三種是比較便捷的。

    InteractingLayer(交互層)

    交互層使用多頭注意力機制將特征投射到多個子空間中,在不同的子空間中可以捕獲不同的特征交互模式。通過交互層的堆疊,可以捕獲更高階的交互模式。

    下面展示在特定子空間??下,對于特征組??下的特征??,交互層是如何計算與其相關的交互特征??的

    ?

  • 首先輸入特征通過矩陣乘法線性變換為在注意力空間下的向量表示,對于每個特征??在特定的注意力空間??中,都有三個表示向量??,??,?
  • 計算??與其他特征??的相似度,本文使用向量內積表示:?
  • 計算softmax歸一化注意力分布:
  • 通過加權求和的方式得到特征??及其相關的特征組成的一個新特征?
  • 假設有??個注意力子空間,將每個子空間下的結果進行拼接,得到特征??最終的結果表示 :?
    我們可以選擇使用殘差網絡保留一些原始特征的信息留給下一層繼續學習

    最后,將每個特征的結果拼接,計算最終的輸出值

    ?

    一層交互層捕獲的階數有限,通過堆疊若干交互層可以捕獲高階交互,提升注意力空間向量維度和提高子空間個數均能提升模型的表達能力。該模型也可以聯合傳統的MLP進行聯合訓練進一步提升表達能力。

    我不想看數學,我想看代碼:OK

    下面就是核心代碼啦,可以看到其實很短。 我們使用tensorflow進行實現的時候,可以充分利用矩陣運算的特性來簡化實現。

    先說明一些定義,fieldsize為特征組的個數,embedding_size為嵌入層單個特征的嵌入維度,att_embedding_size為注意力空間下隱向量的長度,head_num為注意力空間的個數,use_res為一個布爾變量,表示是否使用殘差連接。

    首先假設輸入inputs的shape為(batch_size,field_size,embedding_size),四個投影矩陣??的shape均為(embedding_size, att_embedding_size * head_num)

  • 通過矩陣乘法得到注意力空間下的三組向量表示
  • querys = tf.tensordot(inputs, W_Query, axes=(-1, 0)) # (batch_size,field_size,att_embedding_size*head_num) keys = tf.tensordot(inputs, W_key, axes=(-1, 0)) values = tf.tensordot(inputs, W_Value, axes=(-1, 0))

    2. 為了同時在不同的子空間下計算特征相似度,需要先進行一些變換

    querys = tf.stack(tf.split(querys, self.head_num, axis=2)) # (head_num,batch_size,field_size,att_embedding_size) keys = tf.stack(tf.split(keys, self.head_num, axis=2)) values = tf.stack(tf.split(values, self.head_num, axis=2))

    3. 計算相似度及歸一化注意力分布

    inner_product = tf.matmul(querys, keys, transpose_b=True) # (head_num,batch_size,field_size,field_size) normalized_att_scores = tf.nn.softmax(inner_product)

    4. 計算加權和

    result = tf.matmul(normalized_att_scores, values) # (head_num,batch_size,field_size,att_embedding_size)

    5. 將不同子空間下的結果進行拼接

    result = tf.concat(tf.split(result, self.head_num, ), axis=-1) result = tf.squeeze(result, axis=0)# (batch_size,field_size,att_embedding_size*head_num)

    6. 使用殘差連接保留原始信息,

    if use_res:result += tf.tensordot(inputs, self.w_res, axes=(-1, 0)) result = tf.nn.relu(result)# (batch_size,field_size,att_embedding_size*head_num)

    我不想看代碼,我想直接拿來用:沒問題

    首先確保你的python版本>=3.4,然后pip install deepctr, 再去下載一下demo數據?然后直接運行下面的代碼吧!

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? criteo sample

    import pandas as pd from sklearn.metrics import log_loss, roc_auc_score from sklearn.model_selection import train_test_split from sklearn.preprocessing import LabelEncoder, MinMaxScalerfrom deepctr.models import AutoInt from deepctr.inputs import SparseFeat, DenseFeat,get_fixlen_feature_namesif __name__ == "__main__":data = pd.read_csv('./criteo_sample.txt')sparse_features = ['C' + str(i) for i in range(1, 27)]dense_features = ['I' + str(i) for i in range(1, 14)]data[sparse_features] = data[sparse_features].fillna('-1', )data[dense_features] = data[dense_features].fillna(0, )target = ['label']# 1.Label Encoding for sparse features,and do simple Transformation for dense featuresfor feat in sparse_features:lbe = LabelEncoder()data[feat] = lbe.fit_transform(data[feat])mms = MinMaxScaler(feature_range=(0, 1))data[dense_features] = mms.fit_transform(data[dense_features])# 2.count #unique features for each sparse field,and record dense feature field namefixlen_feature_columns = [SparseFeat(feat, data[feat].nunique())for feat in sparse_features] + [DenseFeat(feat, 1,)for feat in dense_features]dnn_feature_columns = fixlen_feature_columnslinear_feature_columns = fixlen_feature_columnsfixlen_feature_names = get_fixlen_feature_names(linear_feature_columns + dnn_feature_columns)# 3.generate input data for modeltrain, test = train_test_split(data, test_size=0.2)train_model_input = [train[name] for name in fixlen_feature_names]test_model_input = [test[name] for name in fixlen_feature_names]# 4.Define Model,train,predict and evaluatemodel = AutoInt( dnn_feature_columns, task='binary')model.compile("adam", "binary_crossentropy",metrics=['binary_crossentropy'], )history = model.fit(train_model_input, train[target].values,batch_size=256, epochs=10, verbose=2, validation_split=0.2, )pred_ans = model.predict(test_model_input, batch_size=256)print("test LogLoss", round(log_loss(test[target].values, pred_ans), 4))print("test AUC", round(roc_auc_score(test[target].values, pred_ans), 4))

    2.1.11?Deep Interest Network

    2.1.11.1 背景

    經典MLP不能充分利用結構化數據,本文提出的DIN可以(1)使用興趣分布代表用戶多樣化的興趣(不同用戶對不同商品有興趣)(2)與attention機制一樣,根據ad局部激活用戶興趣相關的興趣(用戶有很多興趣,最后導致購買的是小部分興趣,attention機制就是保留并激活這部分興趣)。

    ?

    2.1.11.2 評價指標

    按照user聚合樣本,累加每個user組的sum(shows*AUC)/sum(shows)。paper說實驗表明GAUC比AUC準確穩定。

    ?

    2.1.11.3 DIN算法

    ?

    ?? ??? ?左邊是基礎模型,也是實驗的對照組,paper介紹大部分線上模型使用的是左面的base model。user和ad的特征做one_hot編碼,為了定長采用池化層,網絡結構是全連接的MLP。

    ?? ?? ? 右邊是DIN,不同是為了處理上述兩個數據結構,輸入層增加了激活單元。

    2.1.11.4 激活函數

    激活函數g如下所示。

    ?

    其中,vi代表用戶的行為編碼id,vu代表用戶的興趣編碼id,va代表ad的編碼id,wi代表對于某個候選廣告,attention機制中行為id對總體興趣編碼id的貢獻度。

    ?? ?? ? 激活函數采用本文提出的Dice,如下yi所示。

    ?

    其中,pi和 mini batch數據的期望和方差,如下所示。

    ? ? ?? ?Dice激活函數的優點是根據minibatch的期望方差自適應調整校正點,而Relu采用硬校正點0。

    ?? ?? ? 對照組的PRelu(又叫leaky Relu)激活函數如下所示。

    ?

    2.1.11.5 正則化

    優化方法梯度下降法,如下所示。

    ?

    其中,Ii如下所示。

    2.1.11.6 架構實現

    實現基于XDL平臺,分為三部分:分布式特征編碼層,本地后臺(Tensorflow)和溝通機制(MPI)。如下圖所示。

    2.1.11.7 實驗結果

    1)特征編碼:聚類效果明顯,而且紅色的CTR最高,DIN模型能夠正確的辨別商品是否符合用戶的興趣,如下圖所示。

    ?

    2)局部激活效果:與候選廣告越相關的行為的attention分數越高,如下圖所示。

    ?

    ?

    3)正則化效果:DIN效果最好,如下圖所示。

    ?

    ?

    ?

    4)與基礎MLP模型相比:DIN最佳,如下圖所示。

    ?

    ?

    2.1.11.8 model網絡搭建

    # -- 嵌入層 start ---ic = tf.gather(cate_list, self.i) # [B]i_emb = tf.concat(values=[tf.nn.embedding_lookup(item_emb_w, self.i), # [B ,hidden_units // 2]tf.nn.embedding_lookup(cate_emb_w, ic), # [B ,hidden_units // 2] = [B, H // 2]], axis=1) # [B ,H]i_b = tf.gather(item_b, self.i)hc = tf.gather(cate_list, self.hist_i) # [B , T]h_emb = tf.concat([ # 在shape【0,1,2】某一個維度上連接tf.nn.embedding_lookup(item_emb_w, self.hist_i), # [B, T, hidden_units // 2]tf.nn.embedding_lookup(cate_emb_w, hc), # [B, T, hidden_units // 2]], axis=2) # [B, T, H]# -- 嵌入層 end ---# -- attention start ---hist = attention(i_emb, h_emb, self.sl)# [B, 1, H]# -- attention end ---hist = tf.layers.batch_normalization(inputs=hist)hist = tf.reshape(hist, [-1, hidden_units]) # [B, hidden_units]hist = tf.layers.dense(hist, hidden_units)# [B, hidden_units]u_emb = hist# -- fcn begin -------# -- 訓練集全連接層 開始 -------din_i = tf.concat([u_emb, i_emb], axis=-1)din_i = tf.layers.batch_normalization(inputs=din_i, name='b1')d_layer_1_i = tf.layers.dense(din_i, 80, activation=tf.nn.sigmoid, name='f1') # 全連接層 [B, 80]# if u want try dice change sigmoid to None and add dice layer like following two lines. You can also find model_dice.py in this folder.# d_layer_1_i = tf.layers.dense(din_i, 80, activation=None, name='f1')# d_layer_1_i = dice(d_layer_1_i, name='dice_1_i')d_layer_2_i = tf.layers.dense(d_layer_1_i, 40, activation=tf.nn.sigmoid, name='f2')# d_layer_2_i = dice(d_layer_2_i, name='dice_2_i')d_layer_3_i = tf.layers.dense(d_layer_2_i, 1, activation=None, name='f3')d_layer_3_i = tf.reshape(d_layer_3_i, [-1]) # 展開成行向量self.logits = i_b + d_layer_3_i

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    2.1.12??Deep Interest Evolution Network

    2.1.12.1 背景

    在大多數非搜索電商場景下,用戶并不會實時表達目前的興趣偏好。因此通過設計模型來捕獲用戶的動態變化的興趣,是提升CTR預估效果的關鍵。阿里之前的DIN模型將用戶的歷史行為來表示用戶的興趣,并強調了用戶興趣的多樣性和動態變化性,因此通過attention-based model來捕獲和目標物品相關的興趣。雖然DIN模型將用戶的歷史行為來表示興趣,但存在兩個缺點:
    1)用戶的興趣是不斷進化的,而DIN抽取的用戶興趣之間是獨立無關聯的,沒有捕獲到興趣的動態進化性
    2)通過用戶的顯式的行為來表達用戶隱含的興趣,這一準確性無法得到保證。

    基于以上兩點,阿里提出了深度興趣演化網絡DIEN來CTR預估的性能。DIEN模型的主要貢獻點在于:
    1)模型關注電商系統中興趣演化的過程,并提出了新的網絡結果來建模興趣進化的過程,這個模型能夠更精確的表達用戶興趣,同時帶來更高的CTR預估準確率。
    2)設計了興趣抽取層,并通過計算一個輔助loss,來提升興趣表達的準確性。
    3)設計了興趣進化層,來更加準確的表達用戶興趣的動態變化性。

    接下來,我們來一起看一下DIEN模型的原理。

    2.1.12.2 DIEN模型原理

    • ?模型總體結構

    我們先來對比一下DIN和DIEN的結構。
    DIN的模型結構如下:

    ?

    DIEN的模型結構如下:

    ?

    可以看到,DIN和DIEN的最底層都是Embedding Layer,User profile, target AD和context feature的處理方式是一致的。不同的是,DIEN將user behavior組織成了序列數據的形式,并把簡單的使用外積完成的activation unit變成了一個attention-based GRU網絡。

    2.1.12.3 興趣抽取層Interest Extractor Layer

    興趣抽取層Interest Extractor Layer的主要目標是從embedding數據中提取出interest。但一個用戶在某一時間的interest不僅與當前的behavior有關,也與之前的behavior相關,所以作者們使用GRU單元來提取interest。GRU單元的表達式如下:

    GRU表達式

    這里我們可以認為ht是提取出的用戶興趣,但是這個地方興趣是否表示的合理呢?文中別出心裁的增加了一個輔助loss,來提升興趣表達的準確性:

    這里,作者設計了一個二分類模型來計算興趣抽取的準確性,我們將用戶下一時刻真實的行為e(t+1)作為正例,負采樣得到的行為作為負例e(t+1)',分別與抽取出的興趣h(t)結合輸入到設計的輔助網絡中,得到預測結果,并通過logloss計算一個輔助的損失:

    2.1.12.4 興趣進化層Interest Evolution Layer

    興趣進化層Interest Evolution Layer的主要目標是刻畫用戶興趣的進化過程。舉個簡單的例子:

    以用戶對衣服的interest為例,隨著季節和時尚風潮的不斷變化,用戶的interest也會不斷變化。這種變化會直接影響用戶的點擊決策。建模用戶興趣的進化過程有兩方面的好處:
    1)追蹤用戶的interest可以使我們學習final interest的表達時包含更多的歷史信息。
    2)可以根據interest的變化趨勢更好地進行CTR預測。

    而interest在變化過程中遵循如下規律:
    1)interest drift:用戶在某一段時間的interest會有一定的集中性。比如用戶可能在一段時間內不斷買書,在另一段時間內不斷買衣服。
    2)interest individual:一種interest有自己的發展趨勢,不同種類的interest之間很少相互影響,例如買書和買衣服的interest基本互不相關。

    為了利用這兩個時序特征,我們需要再增加一層GRU的變種,并加上attention機制以找到與target AD相關的interest。

    attention的計算方式如下:

    而Attention和GRU結合起來的機制有很多,文中介紹了一下三種:

    GRU with attentional input (AIGRU)
    這種方式將attention直接作用于輸入,無需修改GRU的結構:

    Attention based GRU(AGRU)
    這種方式需要修改GRU的結構,此時hidden state的輸出變為:

    GRU with attentional update gate (AUGRU)
    這種方式需要修改GRU的結構,此時hidden state的輸出變為:

    2.1.13?NFFM

    NFFM結構

    2.1.14?FGCNN

    文章的主要貢獻點有2個:

    使用重組層進行特征生成緩解了CCPM中CNN無法有效捕獲全局組合特征的問題
    FGCNN作為一種特征生成方法,可以和任意模型進行組合


    模型結構

    分組嵌入
    由于原始特征既要作為后續模型的輸入,又要作為FGCNN模塊的輸入,所以原始特征的embedding向量可能會遇到梯度耦合的問題。
    這里對于FGCNN模塊使用一套獨立的embedding向量,避免梯度耦合的問題。

    卷積層和池化層
    卷積和池化和CCPM類似,池化層使用的是普通的Max Pooling。

    重組層

    拼接層
    經過若干重組后,將重組后生成的特征拼接上原始的特征作為新的輸入,后面可以使用各種其他的方法,如LR,FM,DeepFM等。
    ?

    2.1.15?Deep Session Interest Network

    2.1.15.1 背景

    從用戶行為中呢,我們發現,在每個會話中的行為是相近的,而在不同會話之間差別是很大的,如下圖的例子:

    這里會話的劃分和airbnb一樣,首先將用戶的點擊行為按照時間排序,判斷每兩個行為之間的時間間隔,前后的時間間隔大于30min,就進行切分。可以看上圖,第一個session中,用戶查看的都是跟褲子相關的物品,第二個session中,查看的是戒指相關的物品,第三個則是上衣相關。

    基于此,阿里提出了深度會話興趣網絡Deep Session Interest Network,來建模用戶這種跟會話密切相關的行為。接下來,我們就來介紹模型的結構。

    2.1.15.2、模型結構

    Base Model

    Base Model就是一個全連接神經網絡,其輸入的特征的主要分為三部分,用戶特征待推薦物品特征用戶歷史行為序列特征。用戶特征如性別、城市、用戶ID等等,待推薦物品特征包含商家ID、品牌ID等等,用戶歷史行為序列特征主要是用戶最近點擊的物品ID序列。

    這些特征會通過Embedding層轉換為對應的embedding,拼接后輸入到多層全連接中,并使用logloss指導模型的訓練。

    DSIN

    DSIN模型的總體框架如下圖:

    DSIN在全連接層之前,分成了兩部分,左邊的那一部分,將用戶特征和物品特征轉換對應的向量表示,這部分主要是一個embedding層,就不再過多的描述。右邊的那一部分主要是對用戶行為序列進行處理,從下到上分為四層:
    1)序列切分層session division layer
    2)會話興趣抽取層session interest extractor layer
    3)會話間興趣交互層session interest interacting layer
    4)會話興趣激活層session interest acti- vating layer

    接下來,我們主要介紹這4層。

    Session Division Layer

    這一層將用戶的行文進行切分,首先將用戶的點擊行為按照時間排序,判斷每兩個行為之間的時間間隔,前后的時間間隔大于30min,就進行切分。

    切分后,我們可以將用戶的行為序列S轉換成會話序列Q。第k個會話Qk=[b1;b2;...;bi;...;bT],其中,T是會話的長度,bi是會話中第i個行為,是一個d維的embedding向量。所以Qk是T * d的。而Q,則是K * T * d的

    Session Interest Extractor Layer

    這里對每個session,使用transformer對每個會話的行為進行處理。有關Transformer的內容,可以參考文章https://mp.weixin.qq.com/s/RLxWevVWHXgX-UcoxDS70w。

    在Transformer中,對輸入的序列會進行Positional Encoding。Positional Encoding對序列中每個物品,以及每個物品對應的Embedding的每個位置,進行了處理,如下:

    但在我們這里不一樣了,我們同時會輸入多個會話序列,所以還需要對每個會話添加一個Positional Encoding。在DSIN中,這種對位置的處理,稱為Bias Encoding,它分為三塊:

    BE是K * T * d的,和Q的形狀一樣。BE(k,t,c)是第k個session中,第t個物品的嵌入向量的第c個位置的偏置項,也就是說,每個會話、會話中的每個物品有偏置項外,每個物品對應的embedding的每個位置,都加入了偏置項。所以加入偏置項后,Q變為:

    隨后,是對每個會話中的序列通過Transformer進行處理:

    這里的過程和Transformer的Encoding的block處理是一樣的,不再贅述。感興趣的同學可以看一下上文提到的文章。

    這樣,經過Transformer處理之后,每個Session是得到的結果仍然是T * d,隨后,我們經過一個avg pooling操作,將每個session興趣轉換成一個d維向量。

    這樣,Ik就代表第k個session對應的興趣向量。

    ?Session Interest Interacting Layer

    用戶的會話興趣,是有序列關系在里面的,這種關系,我們通過一個雙向LSTM(bi-LSTM)來處理:

    每個時刻的hidden state計算如下

    相加的兩項分別是前向傳播和反向傳播對應的t時刻的hidden state。這里得到的隱藏層狀態Ht,我們可以認為是混合了上下文信息的會話興趣。

    Session Interest Activating Layer

    用戶的會話興趣與目標物品越相近,那么應該賦予更大的權重,這里使用注意力機制來刻畫這種相關性:

    這里XI是帶推薦物品向量。

    同樣,混合了上下文信息的會話興趣,也進行同樣的處理:

    后面的話,就是把四部分的向量:用戶特征向量、待推薦物品向量、會話興趣加權向量UI、帶上下文信息的會話興趣加權向量UH進行橫向拼接,輸入到全連接層中,得到輸出。

    2.1.16?FiBiNET

    2.1.16.1 簡介

    文章指出當前的許多通過特征組合進行CTR預估的工作主要使用特征向量的內積或哈達瑪積來計算交叉特征,這種方法忽略了特征本身的重要程度。提出通過使用Squeeze-Excitation network (SENET) 結構動態學習特征的重要性以及使用一個雙線性函數來更好的建模交叉特征。

    2.1.16.2 模型結構

    整體結構


    圖中可以看到相比于我們熟悉的基于深度學習的CTR預估模型,主要增加了SENET LayerBilinear-Interaction Layer兩個結構。下面就針對這兩個結構進行簡單的說明。

    SENET Layer

    Squeeze

    Excitation

    Re-Weight

    Bilinear-Interaction
    傳統的特征交叉方式廣泛采用了內積(fm,ffm等)和哈達瑪積(AFM,NFM等)。而這兩種方式在稀疏數據上很難有效對特征交叉進行建模。
    文章提出結合內積和哈達瑪積并引入一個額外的參數矩陣W WW來學習特征交叉,

    Field-All Type

    Field-Each Type

    Filed-Interaction Type

    Combination Layer

    2.1.17?DSTN

    2.1.17.1 背景

    CTR預估問題在廣告領域十分重要,吸引了工業界和學術界學者的研究。之前我們也介紹過許多比較成功的方法,如LR、FM、Wide & Deep、DeepFM等。

    但上述的方法,存在一個共同的問題,即當我們要預估對一個廣告的點擊概率時,只考慮該廣告的信息,而忽略了其他廣告可能帶來的影響。如用戶歷史點擊或者曝光未點擊的廣告、當前上下文已經推薦過的廣告等。因此,將這些廣告作為輔助信息,加入到模型中,也許可以提升CTR預估的準確性。

    總結一下,輔助廣告總共有三種類型:上下文廣告、用戶點擊過的廣告、用戶未點擊的廣告,如下圖所示:

    這里還是想強調一下上下文廣告這個概念,之前的模型可能一次計算所有廣告的點擊率,然后按點擊率進行排序,取top-K進行展示。但這里我們把一次推薦K個廣告過程看作K個單次推薦的過程集合。先推薦第一個位置的廣告,再推薦第二個位置的廣告,,依次類推。在推薦第三個廣告時,推薦的第一個廣告和第二個廣告便是我們這里所說的上下文廣告。

    為了將這些信息加入到模型中,必須要注意以下幾點:

    1)每種類型的輔助廣告數量可能相差很多,模型必須適應這些所有可能的情況。
    2)輔助的廣告信息可能與目標廣告是不相關的,因此,模型需要具備提取有效信息,而過濾無用信息的能力。舉例來說,用戶點擊過的廣告可能有咖啡廣告、服裝廣告和汽車廣告,當目標廣告是咖啡相關的廣告時,過往點擊中咖啡相關的廣告可能是起比較大作用的信息。
    3)不同類型的輔助廣告信息,有時候起到的作用可能是不同的,模型需要能夠有能力對此進行判別。

    總的來說,就是模型需要有能力有效處理和融合各方面的信息。

    本文提出了DSTN(Deep Spatio-Temporal neural Networks)模型來處理和融合各種輔助廣告信息,下一節,咱們就來介紹一下模型的結構。

    2.1.17.2 模型架構

    這里講了三種不同的DSTN的架構,分別是DSTN - Pooling Model、DSTN - Self-Attention Model和DSTN - Interactive Attention Model。但這三種模型的Embedding部分是同樣的,所以咱們先講Embedding層,再分別介紹幾種模型的結構。

    Embedding Layer

    Embedding Layer的結構如下:

    可以看到,輸入有四部分信息,分別是目標廣告的信息、上下文廣告信息、點擊廣告信息、曝光未點擊廣告信息。目標廣告信息包括用戶特征、query特征(如果是搜索場景的話)、目標廣告特征;上下文廣告信息包括上下文廣告特征;用戶點擊過和未點擊過的廣告信息包括廣告特征以及對應的query特征。

    這些特征可以歸為三類:

    單值離散特征:如用戶ID、廣告ID等,這類特征直接轉換為對應的Embedding。

    多值離散特征:如廣告的標題,經過分詞之后會包含多個詞,每個詞在轉換為對應的Embedding之后,再經過sum pooling的方式轉換為單個向量。

    連續特征:對于連續特征如年齡,這里會進行分桶操作轉換為離散值,然后再轉換為對應的Embedding。

    不同的特征轉換成對應的Embedding之后,進行拼接操作,如目標廣告信息中,會將用戶ID、用戶年齡、廣告ID、廣告名稱等等對應的Embedding進行拼接;上下文廣告信息中的每一個廣告,會將廣告ID和廣告名稱對應的Embedding進行拼接等等。

    最終,對目標廣告信息會得到一個t維的vector,計作xt;對于上下文廣告信息,我們會得到nc個c維的vector,每一個計作xci;對于點擊廣告序列,我們會得到nl個l維的vector,每一個計作xlj;對于未點擊序列,會得到nu個u維的vector,每個計作xuq。

    介紹完了Embedding,接下來介紹幾種不同的上層結構。

    DSTN - Pooling Model

    第一種結構稱為DSTN - Pooling Model,其模型結構如下:

    這種方式就是對上下文廣告序列、點擊廣告序列和未點擊廣告序列中的vector進行簡單的sum-pooling,轉換為一個vector:

    然后各部分進行拼接,經過全連接神經網絡之后,在輸出層經過一個sigmoid轉換為點擊的概率:

    損失函數的話選擇logloss:

    這種方式,實現比較簡單,但是存在一定的缺點,當對應一個廣告位置,有多個候選目標廣告時,只有目標廣告信息xt發生變化,其他信息都沒有發生變化,這說明我們添加的輔助廣告信息僅僅是一個靜態信息。同時,由于使用了sum-pooling的方式,一些有用的信息可能會被噪聲所覆蓋。舉例來說,如果目標廣告是咖啡相關的, 點擊序列中有一個咖啡相關的廣告,有10個服飾相關的廣告,那么這個咖啡相關廣告的信息很容易被忽略。

    ?DSTN - Self-Attention Model

    對于sum-pooling帶來的缺陷,文中提出了第二種結構,稱為DSTN - Self-Attention Model,這里的Self-Attention是針對每一種特定的輔助廣告信息的,也就是說,上下文廣告之間進行Self-Attention,點擊廣告序列之間進行Self-Attention等等。

    如果是上下文廣告之間進行Self-Attention,其最終輸出為:

    通過公式可以看出,這里并不是我們所熟知的Transformer里面的self-attention,第一次看也沒注意,第二次細看才發現,所以有時候盡管名字一樣,但內容也許千差萬別。

    這里的self-attention的含義是,將每一個廣告對應的embedding vector輸入到一個f中,得到一個標量輸出βci,這里的f可以是一個多層全連接神經網絡。然后通過softmax歸一化到0-1之間,得到每一個廣告的權重aci,隨后基于權重進行加權求和。

    使用self-attention的好處是可以對序列中的不同廣告賦予不同的權重,能夠在一定程度上解決sum-pooling的問題,但其仍然存在一定的缺陷。首先,self-attention中計算的權重,沒有考慮target ad的信息,也就是說,針對不同的target ad,其attention權重保持不變。其次,歸一化后的權重aci,其求和是等于1的,這樣,當所有的廣告都與目標廣告關系不大時,部分廣告的權重由于歸一化也會變得很大。最后,每種類型的輔助廣告的數量也是會產生影響的,但由于對權重進行了歸一化,這個信息相當于也丟失了。

    DSTN - Interactive Attention Model

    因此,再針對上面的不足,提出了DSTN - Interactive Attention Model。其模型結構如下:

    相對于self-attention,這里的權重aci沒有經過歸一化,其計算過程加入了目標廣告的信息,計算公式如下:

    這樣,針對不同的目標廣告,不同類型的輔助廣告信息的權重會不斷變化,同時權重也沒有進行歸一化,避免了歸一化帶來的種種問題。

    2.1.17.3 實驗結果

    論文對比了多種模型的實驗結果:

    2.1.17.4 模型部署

    看論文的時候,比較關心的一點就是模型的性能問題,因為模型中的一部分輸入是上下文廣告信息,更準確的前面推薦的廣告的信息。假設我們有5個廣告位需要推薦,比較容易想到的做法過程如下:

    1、得到所有的候選廣告集,并得到對應的特征,此時的上下文廣告信息為空。
    2、模型計算所有廣告的點擊概率。
    3、選擇點擊率最高的一個廣告。隨后把這個廣告加入到上下文廣告信息中。
    4、對于剩下的廣告,再計算所有廣告的點擊概率。
    5、重復第3步和第4步,直到得到5個展示的廣告。

    我們通過第2步得到了第一個位置的廣告,重復執行3和4步4次得到剩下4個位置的廣告。

    這么做無疑是十分耗時的,線上性能難以保證。因此,文中提到了一種折中的做法,每次從候選集中選擇2-3個廣告。其示意圖如下:

    2.1.17.5 總結

    感覺本文還是有一定借鑒意義的,最主要的是在推薦過程中考慮推薦結果之間的相互關系,這么做的話個人感覺可以消除點擊率預估中的坑位偏置。因為如果上下文信息有兩個廣告的話,模型會感知到這是對第三個坑位的廣告進行推薦。同時上下文信息的加入,在一定程度上也能提升推薦結果的多樣性,避免太多同質信息推薦出來。

    2.2?NLU

    2.2.1 模型介紹與實現:Joint Model (Intent+Slot)

    2.3?TextSimilarity

    2.3.1??模型介紹:深度學習之文本相似度Paper總結

    2.3.2? 模型實現說明:github

    2.4?Sequence labeling

    2.4.1 介紹

    2.4.1.1?一篇BiLSTM-CRF原理通俗易懂的文章

    2.4.1.2??中文命名實體識別

    2.4.1.3??BiGRU-Attention實體識別

    2.4.1.4??IDCNN-CRF命名實體識別

    2.4.1.5??BERT中文實戰---命名實體識別

    2.4.2? 模型實現

    2.5?Text classification

    2.5.1 介紹

    一文讀懂深度學習文本分類方法

    2.5.2? 模型實現

    地址

    2.6?NLG

    ? ? ?待補充。。。

    如果你喜歡我們所做的事情,歡迎加入我們!

    ?

    ?

    總結

    以上是生活随笔為你收集整理的NLP模型集锦----pynlp的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    天天综合区 | 成人动漫一区二区三区 | 免费看的黄色录像 | 中文字幕视频观看 | 婷婷色社区 | 日本黄网站 | 91在线观看欧美日韩 | 日韩av进入| 在线观看爱爱视频 | 欧美日韩精品网站 | 亚洲动漫在线观看 | 成人试看120秒 | 香蕉成人在线视频 | 天天操夜| 国产在线日本 | 成人小视频免费在线观看 | 久久婷婷网 | 久久综合狠狠综合久久激情 | 最新中文字幕在线观看视频 | 夜夜躁日日躁狠狠躁 | 四虎免费在线观看视频 | 亚洲精品理论 | 中文国产在线观看 | 在线看国产日韩 | 色婷婷啪啪免费在线电影观看 | 久久久福利 | 丰满少妇在线观看资源站 | 日本中出在线观看 | 97国产大学生情侣白嫩酒店 | 精品一区av| 欧美日韩高清在线 | 黄色成年网站 | 国产精品2018 | 91精品一区二区三区久久久久久 | 免费看91的网站 | 99久久精品免费看国产一区二区三区 | 在线观看mv的中文字幕网站 | 国产成人av免费在线观看 | 欧美极度另类 | 色操插 | av短片在线| 精品影院 | 天天操人人要 | 欧美最猛性xxxxx免费 | 久久99久久99精品中文字幕 | 亚欧日韩成人h片 | a在线观看视频 | 美女黄视频免费看 | 中文字幕资源在线 | 天天操狠狠操 | 在线观看日韩精品视频 | 丁香激情综合久久伊人久久 | 97超级碰碰碰碰久久久久 | 九九热在线观看视频 | 成人欧美亚洲 | 亚洲 欧洲 国产 日本 综合 | 国外调教视频网站 | 久久不卡视频 | 国产一区二区在线精品 | 久久久久亚洲国产精品 | 日韩精品久久久久久 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 久久亚洲电影 | 中文日韩在线视频 | 日日夜夜网| 在线免费观看涩涩 | 超碰97中文 | 欧美淫aaa免费观看 日韩激情免费视频 | 丁香久久五月 | 国产在线v| 国产在线精| 欧美激情综合五月色丁香小说 | 国产成人精品区 | 国产va在线 | 91九色在线视频 | 十八岁以下禁止观看的1000个网站 | 亚洲性xxxx | 天天射天| 国产成人在线看 | 欧美一级日韩三级 | 亚洲综合一区二区精品导航 | 又黄又爽又无遮挡的视频 | 亚洲 综合 激情 | 国产成人精品久久久久 | 色狠狠久久av五月综合 | 伊人中文网 | 国产在线欧美日韩 | 久久视频网址 | 有没有在线观看av | 久久99精品久久久久久秒播蜜臀 | 久久久久国产精品www | 正在播放久久 | 激情欧美日韩一区二区 | 在线视频欧美精品 | 欧美日韩裸体免费视频 | 在线不卡a | 美女网站在线播放 | 又黄又爽又刺激的视频 | 久久高清毛片 | 日韩av影片在线观看 | 日韩激情视频在线观看 | 国精产品满18岁在线 | 国产.精品.日韩.另类.中文.在线.播放 | 午夜电影 电影 | 久久精品99国产精品亚洲最刺激 | 色a网 | 激情视频免费在线 | 日日夜夜免费精品视频 | 久久69精品 | 91在线中字 | 六月婷婷久香在线视频 | 在线免费三级 | www.伊人网| 99视频在线免费看 | 日韩av专区| 国产福利91精品一区 | 精品久久久免费 | av在线等 | 国产麻豆视频 | 麻豆精品视频在线观看免费 | 91.麻豆视频| 久久久久国产一区二区 | 69国产盗摄一区二区三区五区 | 亚洲一级在线观看 | 视频三区 | 人人澡视频 | 久草精品视频 | 在线欧美日韩 | 91av精品 | 日本黄色大片儿 | 色综合天天狠天天透天天伊人 | 麻豆国产在线播放 | 亚洲国产精品电影 | 国产一区二区视频在线 | 亚洲一级特黄 | 亚洲最新毛片 | 亚洲国产美女久久久久 | 国产69精品久久久久久 | 99久久精品免费 | 国产视频高清 | av免费在线播放 | 成人一级片免费看 | 伊人国产在线播放 | 在线免费观看黄色大片 | 国产精品中文久久久久久久 | 免费看一级特黄a大片 | 亚洲午夜久久久综合37日本 | 国产日韩高清在线 | 午夜影院一区 | 久久国产亚洲视频 | 日韩精品一卡 | 天天干,天天射,天天操,天天摸 | 五月天婷婷丁香花 | 91精品国产一区二区在线观看 | 最新中文在线视频 | 高清国产在线一区 | 国产a精品 | 久久视频精品在线观看 | 中文日韩在线视频 | 亚洲免费成人av电影 | 精品久久久久国产 | 天天草网站| 中文av不卡 | 日韩一区二区三区高清在线观看 | 日韩精品一区二区三区免费观看 | 欧美另类一二三四区 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 91色在线观看视频 | 美女黄色网在线播放 | 久久亚洲二区 | 精品久久久久久国产偷窥 | 亚洲国产成人久久综合 | 中文av一区二区 | 国产亚洲精品综合一区91 | 国产一级三级 | 婷婷四房综合激情五月 | 婷婷中文字幕综合 | 日韩天天干 | 91 在线视频播放 | 日韩精品久久久久久中文字幕8 | 在线看v片成人 | 久久不射影院 | 中文字幕视频播放 | 中文字幕一区二区三区四区 | 欧美色图p | 中文国产成人精品久久一 | av免费电影在线观看 | 亚洲成人黄色在线观看 | 婷婷av在线 | 999成人 | 欧美日韩视频一区二区三区 | 天天操人人干 | 五月婷在线播放 | 中文字幕在线观看91 | 国产视频色 | 久久免费成人网 | 色5月婷婷| 免费91在线观看 | 午夜12点| 久久亚洲影视 | av千婊在线免费观看 | 特级免费毛片 | 精油按摩av| 日韩三级视频在线观看 | 婷婷视频在线 | 亚洲一区视频免费观看 | 国产精品永久在线观看 | 久久久精品电影 | 欧美激情视频在线观看免费 | 亚洲国产中文字幕在线视频综合 | 亚洲3级| 国产视频精品网 | 精品视频在线观看 | 在线观看成人网 | 国产99久久九九精品免费 | 久久免费毛片视频 | 国产黄在线 | 亚洲专区免费观看 | 在线电影a | 国产18精品乱码免费看 | 久久久国际精品 | 日日操网 | 国产精品高| 国产福利一区在线观看 | 91在线精品秘密一区二区 | 2000xxx影视 | 日韩欧美一区二区三区免费观看 | 久久精品欧美一区二区三区麻豆 | 99视频这里只有 | 国产美女在线精品免费观看 | av资源在线观看 | 国产黄在线播放 | 国产黄色大片 | 在线观看你懂的网址 | 国内成人精品2018免费看 | 亚洲成色777777在线观看影院 | 亚洲国产三级在线 | 国产视频精品免费 | 天天拍天天干 | 午夜精品福利一区二区 | 精品久久久网 | 国产另类av | 国产探花在线看 | 天天操伊人 | 国产不卡视频在线播放 | 亚洲伊人成综合网 | 日韩欧美亚州 | 在线免费黄 | 在线黄色免费av | 2017狠狠干| 国产人成在线视频 | 欧美在线日韩在线 | 亚洲视频一区二区三区在线观看 | 麻豆视频一区二区 | 国产三级午夜理伦三级 | 久久久久免费精品国产小说色大师 | 久久久久激情电影 | 国产欧美在线一区 | 免费污片 | 99久久99热这里只有精品 | 色婷婷综合久久久久中文字幕1 | 99久在线精品99re8热视频 | 欧美伦理电影一区二区 | 国产无遮挡又黄又爽在线观看 | 天天插夜夜操 | 久久久久久视频 | 久久无码精品一区二区三区 | 日韩av二区| 欧美大片大全 | 欧美极品久久 | 日韩激情在线视频 | 麻豆视频在线播放 | 日韩成人免费在线电影 | 欧美高清视频不卡网 | 天天操夜夜曰 | 亚洲国产高清在线观看视频 | 国产在线自 | 欧美二区三区91 | 麻豆一级视频 | 最近2019中文免费高清视频观看www99 | 五月婷激情 | 亚洲午夜av电影 | 亚洲第一中文网 | 人人藻人人澡人人爽 | 干亚洲少妇| 精品无人国产偷自产在线 | av直接看| 99久久婷婷国产综合精品 | 天天做天天爱天天爽综合网 | 国产中文字幕一区二区三区 | 蜜桃视频色 | 91麻豆产精品久久久久久 | 亚洲视频精品 | 四虎影视成人精品国库在线观看 | 成年人免费观看国产 | 九九九九九九精品 | 午夜精品久久久久久久久久 | 西西人体4444www高清视频 | 亚洲va欧美 | av在线一级 | 射久久 | 毛片a级片 | av在线成人 | 久久色在线播放 | 久久精品女人毛片国产 | 天天五月天色 | 欧美xxxxx在线视频 | 三级动态视频在线观看 | 黄a网站| 97视频网址 | 中文字幕在线影视资源 | 超碰夜夜 | 在线观看av小说 | 蜜桃av综合网 | 精品毛片一区二区免费看 | 亚洲国产日本 | 九九久久精品视频 | 韩国精品福利一区二区三区 | 在线久草视频 | 日本一区二区不卡高清 | 亚洲国产视频直播 | 欧美性黑人 | 999视频在线播放 | 日日干干 | 国产96精品 | www视频在线免费观看 | 久久久久久久久久网站 | 国产精品中文 | 国产精品18久久久久久vr | 日韩欧美高清 | 麻豆免费精品视频 | 久久久www| 麻豆网站免费观看 | 波多野结衣视频一区二区 | 91理论电影 | 日本中文在线播放 | 欧美 亚洲 另类 激情 另类 | 在线观看v片 | 天天天天天操 | 久久久一本精品99久久精品 | 午夜精品久久久久久久久久久久 | 91精品久久久久久久99蜜桃 | 久久精品中文字幕 | 在线观看亚洲 | 久久精品波多野结衣 | 97超碰在线播放 | 国产在线美女 | 日本婷婷色 | 成年人三级网站 | 久久精品欧美 | 日韩成人av在线 | 久久久久久久久久电影 | 成人av播放 | 欧美粗又大 | 国产精品成人a免费观看 | 久久美女高清视频 | 深夜免费福利在线 | www色网站| 少妇视频在线播放 | 欧洲一区二区三区精品 | 久久精品伊人 | 精品免费在线视频 | 日韩网| 日韩av高清 | 久久免费精品国产 | www.日韩免费| 午夜电影一区 | 成人毛片a | 最近免费在线观看 | 日韩激情免费视频 | 91一区啪爱嗯打偷拍欧美 | 亚洲专区中文字幕 | 国产精品videossex国产高清 | 丁香婷婷综合激情五月色 | 中文字幕网站视频在线 | 日韩在线观看视频免费 | www.国产在线观看 | 在线电影 一区 | 国产一区电影在线观看 | 色欧美88888久久久久久影院 | 久久老司机精品视频 | 99精品成人 | 日韩av美女| 中文字幕在线观看完整版电影 | 国内精自线一二区永久 | 最近免费在线观看 | 久久草av| 日本视频精品 | 久久久噜噜噜久久久 | av黄色在线播放 | 久久久久99精品成人片三人毛片 | 亚洲免费视频观看 | 亚洲一区二区视频在线 | 91在线porny国产在线看 | 国产亚州av | 九色porny真实丨国产18 | 视频二区 | av看片在线观看 | 五月天电影免费在线观看一区 | 毛片一区二区 | 九九免费在线观看视频 | 国产精品久久二区 | 丰满少妇在线观看资源站 | 亚洲激情六月 | 肉色欧美久久久久久久免费看 | 在线高清 | 国产精品久久久久久69 | 国产视频一区二区在线观看 | 国产精品6 | 精品国产一区二区三区在线 | 国产超碰在线 | 亚洲精品影院在线观看 | 国产一区在线观看视频 | 六月丁香综合网 | 少妇av网 | 一区在线观看视频 | 五月丁色| 久久久久久久久艹 | 久久精品99国产国产 | 国产精品日韩久久久久 | 天天躁日日躁狠狠躁av中文 | 992tv人人网tv亚洲精品 | 国产日产精品一区二区三区四区 | 亚洲精品五月天 | 欧美少妇xx| 国产 一区二区三区 在线 | 日韩午夜一级片 | 麻豆系列在线观看 | 操夜夜操 | 国产成人一区二区三区久久精品 | 99色在线视频 | 夜夜躁日日躁狠狠久久88av | 日本二区三区在线 | 久久av电影 | 五月天伊人 | 成人国产精品免费 | 精品福利在线 | 日韩电影在线观看一区二区三区 | 五月婷婷中文 | 久久 亚洲视频 | 日本久久久精品视频 | 激情五月伊人 | 色视频国产直接看 | 人人爱人人做人人爽 | 成人黄色在线电影 | 狠狠干中文字幕 | 亚洲伊人成综合网 | 久久免费视频99 | 在线观看成人毛片 | 国产生活一级片 | 在线免费视频一区 | 丁香综合av | 亚洲最快最全在线视频 | 中文字幕在线字幕中文 | 色综合久久综合中文综合网 | 黄色视屏在线免费观看 | 亚洲www天堂com | 久久天天躁夜夜躁狠狠85麻豆 | 又黄又爽的免费高潮视频 | 在线观看国产一区二区 | 成人h视频| 欧美一区中文字幕 | 国产高清在线a视频大全 | 97电影院在线观看 | 国产午夜精品理论片在线 | 在线观看一区 | 久久精品女人毛片国产 | 免费的成人av | 国产精品久久久久免费a∨ 欧美一级性生活片 | 精品国产乱码久久久久久1区2匹 | 亚洲观看黄色网 | 久久国内精品 | 精品国产123 | 久久黄色网址 | 日韩久久电影 | 成人久久18免费网站麻豆 | 黄色a一级片 | 欧美日韩裸体免费视频 | 久久精品成人热国产成 | 韩日电影在线免费看 | 91亚洲欧美| 日日夜夜艹 | 亚洲欧美视屏 | 久久久久久免费网 | 96视频在线 | 午夜视频在线观看一区二区 | 成人蜜桃| 91色亚洲 | 干天天 | 成人亚洲综合 | 88av网站| 欧美在线观看小视频 | 98涩涩国产露脸精品国产网 | 日韩区在线观看 | 中文字幕乱码一区二区 | 日韩精品在线观看av | 国产96视频 | 久草视频在线资源站 | 国产系列 在线观看 | av网站免费在线 | 日产乱码一二三区别免费 | 在线观看国产永久免费视频 | 日韩欧美国产成人 | 国产精品一区二区三区视频免费 | 精品免费视频. | 天天色天天射综合网 | 天天综合网天天综合色 | 六月婷操 | 日日爱av| 成人国产精品 | 国产黄色特级片 | 精品国产一区二区三区四 | 国产精品av免费在线观看 | 麻豆传媒视频在线 | 中文字幕在线观看一区二区三区 | 黄色一级在线观看 | 亚洲天堂网在线观看视频 | 国产99久久精品一区二区永久免费 | 久久久国产精品麻豆 | 一级黄色免费 | av成人在线网站 | 在线观看爱爱视频 | 色国产精品一区在线观看 | 日韩高清不卡在线 | 日韩国产精品一区 | 国产精品美女久久久免费 | 国产精品永久在线观看 | 黄色毛片一级 | 国产色啪 | 亚洲精品1区2区3区 超碰成人网 | 色婷婷一区| 在线免费av播放 | 国产呻吟在线 | 久久精品4 | 99热这里有精品 | 97在线观视频免费观看 | 色婷婷成人 | 久久黄色小说视频 | 久久刺激视频 | 国产精品99蜜臀久久不卡二区 | 另类五月激情 | 黄色特级一级片 | 天天综合导航 | 国产麻豆电影在线观看 | 黄色小说在线免费观看 | 超碰97.com | 国产精品96久久久久久吹潮 | 97视频亚洲 | 婷婷国产v亚洲v欧美久久 | 9992tv成人免费看片 | 九九在线免费视频 | 九九热免费精品视频 | 欧美一级片免费 | 四虎4hu永久免费 | 日韩在线观看一区 | 国产 一区二区三区 在线 | 亚洲人久久 | 激情五月在线视频 | 99视频免费在线观看 | 97视频在线看 | 久久久色| 91视频网址入口 | 久碰视频在线观看 | 色网站在线免费 | 欧美午夜性生活 | 国产亚洲成av人片在线观看桃 | 免费观看性生交 | 国产精品大尺度 | 国产成人精品一二三区 | 黄色在线观看免费网站 | 久久久国产影院 | 色婷婷视频在线观看 | 国产日韩精品久久 | 国产美女免费视频 | 亚洲精品美女视频 | 精品亚洲免费视频 | 色99中文字幕 | 日韩欧美视频免费看 | 日本中文字幕影院 | 亚洲尺码电影av久久 | 国产一区二区三区免费在线观看 | 午夜91在线 | 国产日韩视频在线 | 在线影院 国内精品 | 日韩视频二区 | 一级黄色a视频 | 97在线视频网站 | 好看的国产精品视频 | 日本mv大片欧洲mv大片 | 久久精品国产第一区二区三区 | 午夜av免费| 色婷婷综合久久久中文字幕 | 网站在线观看日韩 | 亚洲精品男女 | 成人黄色av网站 | 日日躁你夜夜躁你av蜜 | 久久国色夜色精品国产 | 伊人影院在线观看 | 国产不卡精品 | 日韩精品在线一区 | 久久久久亚洲精品男人的天堂 | av网站大全免费 | 97超碰资源网 | 成人黄色电影在线观看 | 国内精品免费 | 国产网站在线免费观看 | 超碰在线人人艹 | 一区二区三区电影大全 | 亚洲一区尤物 | 成人午夜剧场在线观看 | 国产精品久久久久一区二区三区 | 免费观看丰满少妇做爰 | 中文一区在线 | 久久久久亚洲精品国产 | 看v片 | 欧美另类xxx| 国产精品一区二区在线 | 夜夜躁日日躁狠狠久久av | 久久er99热精品一区二区三区 | 免费视频久久久久 | 国产中年夫妇高潮精品视频 | 久久艹人人 | 一区二区三区三区在线 | 欧美日韩在线观看一区 | 日韩动态视频 | 亚洲日本精品视频 | 欧美国产日韩一区二区三区 | 成人在线免费看视频 | 在线免费观看视频一区二区三区 | 91资源在线免费观看 | 国产视频一区精品 | 日日夜夜干 | 亚洲六月丁香色婷婷综合久久 | 美女视频黄频 | 欧美精品一区在线 | 国产精品视频区 | 九九视频精品在线 | 日韩在线精品 | 国产婷婷vvvv激情久 | 精品国产自 | 国产一级片免费观看 | 国产美女网 | 久久99久久99免费视频 | 欧美成年网站 | 视频国产区| 黄色免费网战 | 国产福利免费看 | 婷婷在线资源 | 日韩电影一区二区在线 | 日韩在线色视频 | 国产伦理久久精品久久久久_ | 久久视频 | 久久艹在线观看 | 日本精品久久久久中文字幕5 | 国产一区二区三精品久久久无广告 | 久久综合九色九九 | 国产精品视频免费看 | 九九久久婷婷 | 又黄又爽又色无遮挡免费 | 日韩色一区二区三区 | 91精品视频在线观看免费 | 91理论片午午伦夜理片久久 | 精品久久久久久久 | 精品视频一区在线观看 | 91理论片午午伦夜理片久久 | 91中文视频 | 国产精品一区二区62 | 亚洲精品在线观看视频 | 超碰免费在线公开 | 最新国产精品久久精品 | 午夜私人影院久久久久 | 国产传媒一区在线 | 欧美一级片免费播放 | 亚洲第一区精品 | 国产成人在线观看免费 | 日本精品一二区 | 日韩在线色 | 日韩精品视频第一页 | 久青草视频 | 国产成人资源 | 麻豆视屏 | 欧美日韩二三区 | 亚洲精品午夜久久久久久久 | 国产精品第52页 | 欧美日韩另类在线 | 久久久在线免费观看 | 久久精品影视 | 成人一区影院 | 五月天中文字幕 | 成人精品亚洲 | 婷婷激情综合五月天 | 国产精品第一页在线观看 | 精品久久久久久久久久久久久久久久久久 | 国产123区在线观看 国产精品麻豆91 | a级片在线播放 | 91亚洲综合| 国产免费小视频 | 亚洲成人网在线 | 国产字幕在线看 | 97网在线观看 | 狠狠色丁香婷婷综合欧美 | 日韩在线电影 | 日韩二区精品 | 91麻豆精品国产91久久久久久 | 日韩欧美在线一区二区 | 在线观看日韩一区 | 国产人成在线视频 | 成人午夜免费剧场 | 九九免费精品视频在线观看 | 中文字幕国语官网在线视频 | 久久久久久久久久伊人 | 黄色一级片视频 | 国产亚州精品视频 | 99色人 | 欧美一级片免费播放 | 成年美女黄网站色大片免费看 | 久久久av电影| 91视频免费 | 色狠狠婷婷 | 欧美视频xxx | 成人在线视频你懂的 | 日韩理论电影网 | 在线视频国产区 | 99精品一区二区三区 | 日韩区视频| 亚洲高清视频一区二区三区 | 亚洲精品国偷自产在线91正片 | 黄色com| 国产96在线观看 | 国产午夜剧场 | 日韩在线色视频 | 日韩电影一区二区在线观看 | 久久精品视频免费 | 蜜桃久久久 | 久久99国产精品久久99 | 日本精品一区二区在线观看 | 国产盗摄精品一区二区 | 日韩精品在线观看视频 | 久久夜靖品 | 色视频网站在线观看一=区 a视频免费在线观看 | 四虎影视精品永久在线观看 | 国产精品福利无圣光在线一区 | 国产69精品久久久久久久久久 | 亚洲精品乱码久久久一二三 | 免费国产在线精品 | av电影免费在线看 | 97在线观看免费高清完整版在线观看 | www在线观看视频 | 在线看片中文字幕 | 欧美a级成人淫片免费看 | 午夜视频在线观看一区二区三区 | 在线视频观看亚洲 | 国产精品日韩欧美一区二区 | 国产在线观看一区 | 人人爽人人av | 99精品热视频| 欧美日韩一区二区在线 | 在线观看视频91 | 人人爽人人澡人人添人人人人 | 五月天亚洲综合小说网 | 午夜一级免费电影 | 亚洲激精日韩激精欧美精品 | 99久久综合国产精品二区 | 二区三区中文字幕 | 精品99免费 | 国产小视频网站 | 免费久久久久久 | 国产美女无遮挡永久免费 | 色婷婷激情 | 九草在线视频 | 日本精品一区二区 | 亚洲成a人片在线观看网站口工 | 一区二区三区四区五区在线视频 | 日韩一区正在播放 | 国产日韩精品一区二区在线观看播放 | 亚洲aⅴ乱码精品成人区 | 欧美日韩国产mv | 91视频 - x99av | 中文字幕电影在线 | 狠狠地操 | 免费在线观看污 | 9999精品视频| 91av在线免费观看 | 日韩在线视频观看免费 | 免费精品在线视频 | 黄色官网在线观看 | 日本天天操 | 久久久久国产精品视频 | av久久在线 | 日本女人的性生活视频 | 99精品黄色片免费大全 | 欧美性受极品xxxx喷水 | 91在线精品秘密一区二区 | 久久在线影院 | 日韩高清不卡一区二区三区 | 狠狠干2018| 亚洲免费在线观看视频 | 人人爽爽人人 | 美女黄网久久 | 91免费视频国产 | 成人av播放 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 欧美一级小视频 | 狠狠干网 | 国产91影视 | 韩日色视频 | 成人在线观看网址 | 青草视频在线免费 | 日本中文字幕在线观看 | 在线观看视频日韩 | 最新日韩在线观看 | 日韩av黄| www.天天操.com | 久久伊人精品一区二区三区 | 亚洲午夜精品在线观看 | 日韩婷婷 | 日韩网站视频 | 亚洲精品在线视频观看 | 国产精品激情在线观看 | 国产91精品久久久久 | 国内精品国产三级国产aⅴ久 | 日韩在线视频免费观看 | 午夜10000| 亚洲精品动漫成人3d无尽在线 | 91亚色免费视频 | 婷婷亚洲综合五月天小说 | 日本精品久久久一区二区三区 | 日韩欧美一区二区三区视频 | 国产人成在线观看 | 国产高清在线永久 | 99久久国产免费,99久久国产免费大片 | 午夜色大片在线观看 | 看毛片网站| 超碰在线网 | 日韩av电影一区 | 在线观看福利网站 | 久久国产精品视频观看 | 免费高清在线视频一区· | 午夜精品福利一区二区三区蜜桃 | 欧美激情第八页 | 丁香六月在线 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 最近中文字幕免费 | 丰满少妇一级片 | av免费片 | 日韩黄色软件 | 亚洲精品视频在线观看视频 | 在线观影网站 | 国产极品尤物在线 | 亚州精品成人 | 欧美日韩中文字幕综合视频 | 国产一二区免费视频 | 啪啪小视频网站 | 久久三级毛片 | 国产精品美女久久久久久 | 成年人免费看的视频 | 日韩动态视频 | 欧美日韩亚洲一 | 久久夜色精品国产欧美一区麻豆 | 91视频xxxx| 久久免费视频在线观看6 | 国产网站av | 怡红院av| 色综合咪咪久久网 | 日韩激情视频 | 综合色综合 | 99精品国产99久久久久久福利 | 一级片免费观看视频 | 亚洲午夜精品久久久久久久久久久久 | 国产午夜精品理论片在线 | 奇米影视在线99精品 | 丁香婷婷久久 | 亚洲精品成人av在线 | 国产精品一区二 | 中文国产字幕在线观看 | 亚洲va天堂va欧美ⅴa在线 | 欧美色黄 | 色国产视频 | 色资源网在线观看 | 91av福利视频| 午夜黄网 | 国产精品午夜久久 | 91麻豆精品国产 | 伊人狠狠| 一区二区三区中文字幕在线观看 | 日本久久精品视频 | 日本久久电影网 | 国产精品色婷婷视频 | 中文字幕 国产精品 | 国产日韩中文字幕在线 | 国产精品av久久久久久无 | 在线观看av网 | 色综合久久久久综合体 | av免费看网站 | 亚洲mv大片欧洲mv大片免费 | 91视频久久久久久 | 亚洲精品字幕在线观看 | 成人亚洲精品久久久久 | 国产一区二区影院 | 国产精品自产拍在线观看蜜 | 夜夜躁狠狠燥 | 天天操狠狠干 | 婷婷在线免费观看 | av在线收看 | 久久综合久久综合这里只有精品 | 天天曰天天爽 | 91av视频免费在线观看 | 亚洲va欧洲va国产va不卡 | 天无日天天操天天干 | 一区二区伦理 | 久久久久久免费毛片精品 | 国产免费精彩视频 | 美女视频a美女大全免费下载蜜臀 | 日韩va欧美va亚洲va久久 | 天堂av在线中文在线 | 免费一级特黄毛大片 | 亚洲黄色在线观看 | 日韩av在线影视 | 99精品视频一区 | 久久久久二区 | 天天爽夜夜爽人人爽一区二区 | 亚洲va欧美va国产va黑人 | av在线播放一区二区三区 | 黄色com | 99视频免费观看 | 国产欧美最新羞羞视频在线观看 | 夜色成人av| 国产精品美女久久久久aⅴ 干干夜夜 | 久草视频中文在线 | 狠狠的干狠狠的操 | 日韩免费高清在线 | 亚洲涩涩网 | 在线免费观看欧美日韩 | 欧美91精品国产自产 | 四虎成人精品永久免费av | a午夜在线 | 精品久久久久久久久久岛国gif | 天天骚夜夜操 | 狠狠色婷婷丁香六月 | 免费视频 三区 | free,性欧美| 91手机电视 | 色国产精品一区在线观看 | 亚州中文av | 97在线免费观看视频 | 97精品国产97久久久久久久久久久久 | 国产精品久久久久久久久久久久冷 | 日韩av在线小说 | 在线观看香蕉视频 | 国产精品免费观看国产网曝瓜 | 亚洲资源在线网 | 麻豆精品国产传媒 | 国产馆在线播放 | 99在线视频网站 | 国内成人精品视频 | 精品二区久久 | 91精品视频在线观看免费 | 日本久久中文 | 国产成人精品女人久久久 | 久久久黄色 | 在线看片日韩 | 国产麻豆精品久久一二三 | 中文字幕在线观看完整版 | 99精品欧美一区二区蜜桃免费 | 久久精品国产一区 | 日韩成人精品一区二区 | www国产精品com | 91黄色在线看 | av免费看在线 | 日韩1级片 | 国产精品高潮呻吟久久av无 | 亚洲成人资源在线观看 | 成人免费在线电影 | 最新影院| 天天色天天干天天 | 精品久久久免费 | 91成人精品一区在线播放 | 毛片黄色一级 | 国产成人性色生活片 | 中文字幕韩在线第一页 | 日本久久免费电影 | 国产黄色片免费 | 国产精品久久中文字幕 | 91桃色免费观看 | 一级特黄aaa大片在线观看 | 久久久久久美女 | 成人午夜精品 | 美女国产免费 | 黄色a三级| 福利在线看片 | 黄p在线播放 | 亚洲天天摸日日摸天天欢 | 亚洲综合射 | 欧美成人在线免费观看 | 久久久久成人精品 | 日韩免费高清 | 激情欧美一区二区三区 | 成人三级网址 |