當前位置:
首頁 > 知識 > 深度學習基礎知識 | 上

深度學習基礎知識 | 上

1.深度學習基礎知識介紹


本章會介紹各自常用的網路結構,以及模型訓練過程中常用的方法。

1.1MLP網路

MLP網路是一種應用最為廣泛的一種網路,其中DNN就是屬於MLP網路,它是一個前向結構的人工神經網路,輸入一組向量向前傳播輸出向量,網路結構如下:

各個層級關係:

其中σ表示激活函數,集中常見的激活函數有:sigmod函數,tanh函數,ReLU函數。

sigmod函數:



tanh函數:



ReLU函數:




1.2RNN網路

RNN是一種節點定向連接成環的人工神經網路,與DNN網路相比,RNN可以利用上一個時序的輸出及當前輸入計算輸出,網路結構如下:

展開如下:


    


各層關係:



1.3CNN網路

卷積神經網路,是一種前饋神經網路,通過卷積操作可以對一個連續區域進行識別,在圖像處理取得不錯效果。卷積神經網路的結構有原始圖像輸入層、卷積層、池化層、全連接層、輸出層。網路結構如下:

各個層之間的連接關係如下:

輸入層X與卷積層C的關係:


卷積層C與採樣層S的關係:


採樣層S與輸出層Y的關係:


其中K={km,n}表示一個卷積核。



1.4AE網路

AE自編碼器,屬於無監督網路。自編碼器的目的是輸入X與輸出X』儘可能接近,網路結構為兩層的MLP,這種接近程度通過重構誤差表示,誤差的函數有均方差和交叉熵,為了保證網路的稀疏性誤差函數加L1正則項,為了保證網路的魯棒性輸入增加隨機雜訊數據。網路結構如下:

1.5RBM網路


Restricted Boltzmann Machine

受限波爾茲曼機

 )

RBM是無監督的網路。具有兩層結構、對稱連接且無自反饋的隨機神經網路模型,層間全連接,層內無連接。RBM是一種有效的特徵提取方法,用於初始化前饋神經網路可明顯提高泛化能力,堆疊多個RBM組成的深度信念網路(DBN)能提取更抽象的特徵。網路結構如下:

RBM網路參數的訓練原理較為複雜,簡單來講就是求網路的能量函數最小時對應的參數。



1.6深度學習與傳統模型融合

深度學習與傳統模型融合,例如:利用wide&deep就是MLP結合LR的模型,根據模型的訓練方式融合模型可以分為松耦合模型和緊耦合模型。

松耦合模型:模型的不同部分是獨自訓練,例如FNN模型就是預先訓練好embedding層參數,然後在訓練MLP參數。

緊耦合模型:模型的不同部分是一起訓練的,這類模型也可以稱為end-to-end模型,例如wide&deep就是LR模型的參數和MLP的參數是一起訓練的。

兩種方式各有利弊,松耦合模型的優勢是可以靈活組裝,緊耦合模型的優勢是通過聯合在一起訓練得到整體效果最優的參數。



1.7深度學習常見的損失函數

常用的損失損失函數有兩種:交叉熵損失函數、均方差損失函數

(1)交叉熵損失函數:



(2)均方差損失函數:



1.8梯度下降法

在機器學習的許多演算法的模型求解過程中,都是通過構造損失函數,然後求解損失函數最小時對應的參數作為模型的解。梯度函數的求解過程如下:

第1步:把模型所有參數統一記到一個集合,不妨記為

,隨機給定一組在0-1之間,設為

,初始化迭代步數 k=0。

第2步:迭代計算

其中

用於控制收斂速度,取0.01。

第3步,判斷是否收斂,如果滿足下列兩個條件之一則返回

,兩個條件分別為:





  • 條件1:

    ,其中iteNums是最大迭代次數。



  • 條件2:

    ,其中

    是參數的數量,

    是一個很小的值,可以取



2.深度學習推薦演算法的介紹

在本章中,我們挑選了一些業界有影響力會議、期刊的深度學習推薦演算法進行介紹。

2.1 FM模型

論文見參考資料:FM。FM模型是由Steffen Rendle於2010年提出的一種方法,模型的公式如下:


網路結構:


FM模型是在LR模型的基礎上,增加不同特徵之間的交叉項,交叉項的向量可以理解為對特徵的embedding,簡單來講就是把特徵映射到一個多維空間,所有特徵的關係可以表示為多維空間中不同向量的關係。



2.2 FNN模型

論文見參考資料FNN。網路結構如下:

FNN模型是FM+MLP的一種模型。Dense Real Layer層,可以理解為embedding層,每個節點代表FM模型的一個參數,然後後面接一個MLP網路。

在訓練FNN模型的時候,預先訓練Dense Real Layer層,訓練的方法和FM模型的訓練方法一致。後面在訓練MLP參數。由於FNN模型FM和MLP是分開訓練的,因此該模型是松耦合模型。



2.3 PNN模型

論文見參考資料PNN。網路結構如下:

PNN模型是在FNN模型的基礎上,在FM層與MLP層中間加上一層Product Layer層,該層的作用是增加不同field的embedding向量交叉(主要的目的是考慮不同特徵組合)。

Product Layer層中,z部分類似FNN模型的Dense Real Layer層,p部分是不同field的embedding向量兩兩交叉值。



2.4 wide&deep模型

論文見附件Wide&deep.pdf。網路結構如下:

Wide&deep模型是MLP + LR的一種模型,LR部分是各種ID類特徵的交叉。MLP部分是首先對用戶和物品進行embedding,然後接一個MLP模型。模型如下:

由於在訓練模型的時候LR部分的參數和MLP部分的參數是一起訓練的,因此該模型是緊耦合的模型。



2.5 deepFM模型

論文見參考資料deepFM。網路結構如下:

DeepFM模型與wide&deep相比,是將LR部分改為FM,與LR相比,FM的優點在於自動做特徵交叉,減少人工特徵工程的工作量。模型計算公式:

2.6 NFM模型

NFM模型也是一種融合模型,它是由LR + FM + MLP的模型,融合模型分為兩部分,一部分是線性模型部分,另一部分是深度學習網路部分,模型公式如下:


深度學習f(x)的結構如下:




其中embedding層:

是需要學習的模型參數,Bi層是兩兩embedding向量交叉,然後求和,公式如下,

Bi層後面就是MLP網路。


2.7 AFM模型


論文見參考資料AFM。AFM是在NFM上,引入attention機制,簡單來說就是把NFM的Bi層直接求和改進為加權求和,網路結構如下:

改進後的Bi層公式如下:

其中ai,j是需要訓練的attention權重,ai,j的節點是embedding層接一個ReLU層,然後在做歸一化,表達式如下:

2.8 DSSM模型

論文見參考資料MV-DNN。DSSM模型是MLP + cosine的一個融合演算法,該模型主要是運用在搜索場景裡面的請求(query)與點擊物品(document),首先模型將請求/物品分別運用MLP網路進行特徵學習,然後運用餘弦值衡量請求對物品的相關性,網路結構如下:



損失函數的定義過程如下,首先定義請求與物品的相關性:


   


然後對請求與不同物品相關性進行標準化處理:

損失函數定義為:



其中損失函數只取用戶對物品有點擊過的樣本(只取正樣本),該損失函數對一個Q(請求)訓練一次(不同query的MLP網路參數不一樣)。



2.9 MV-DNN模型

論文見參考資料MV-DNN。MV-DNN是在DSSM上面進行改進,DSSM中所有物品都用同一個MLP網路結構及參數,而MV-DNN則是一個物品一個網路,由於一個物品一個MLP網路該模型取名為「多視角的DNN模型」,網路結構如下:

損失函數的定義與DSSM類似:




2.10 DCN模型

論文見參考資料DCN。該模型首先會有一個embedding層,然後並行接入Deep網路和一個CROSS網路,最後合併兩個網路的輸出接一個sigmoid層作為最終輸出,結構如下:

網路結構embedding層主要做的工作就是把稀疏且維度高(一般是特徵的one-hot編碼)的輸入轉化為稠密且維度低的向量(低維實數向量),轉化通過一個embedding矩陣參數完成,如:

Deep網路是一個MLP網路。

CROSS網路有點類似MLP網路,在MLP網路的基礎上,每個層都會與輸入的embedding層做交叉,公式如下:

模型的訓練:embedding層參數和cross網路參數及deep網路參數,及sigmoid層參數都是一起訓練的。



2.11 NCF模型

論文見附件NCF.pdf。NCF模型簡單來講就是embedding + MLP網路。模型首先會把用戶輸入和物品輸入分開,並且分別接一層embedding,然後合併兩個embedding層作為MLP網路的輸入。



2.12 GBDT+LR模型

論文見GBDT+LR.pdf。GBDT+LR演算法最早是由Facebook在2014年提出的一個推薦演算法,該演算法分兩部分構成,第一部分是GBDT,另一部分是LR.下面先介紹GBDT演算法,然後介紹如何將GBDT和LR演算法融合

2.12.1 GBDT演算法

GBDT是Boost的一種典型演算法,Boost的原理:首先對樣本集進行訓練得到第一個模型,然後對模型分類錯誤的樣本進行提權得到新的樣本集,在新的樣本集上進行訓練得到第二個模型,如此類推得到n個預測模型。預測的時候通過每個模型的預測值進行加權,模型的權重可以用模型的準確率衡量

GBDT演算法首先對訓練樣本建立一顆決策樹,然後每個樣本的目標變數調整為第一顆決策樹預測值與實際值的殘差,得到一個新的訓練樣本,在新的訓練樣本下建立第二課決策樹,依次類推得到m顆決策樹。詳細構造如下:



Step1:數據準備,

設原始的訓練樣本為

Step2:生成第1顆決策樹,

運用CART演算法,對原始樣本生成1顆決策樹,第1顆決策樹定義為,表示第1顆決策樹對樣本的預測值。



Step3:生成第2顆決策樹,

構造第2顆決策樹的訓練樣本數據,對每個樣本的目標變數用殘差表示,具體如下,

同樣運用CART演算法生成第2課決策樹,第2顆決策樹定義為DT2,DT2(Xi)表示第2顆決策樹對樣本Xi的預測值






Step4:生成第m顆決策樹,

構造第m顆決策樹的訓練樣本數據如下:



運用CART演算法生成第m課決策樹,第m顆決策樹定義為DTm,DTm(Xi)表示第m顆決策樹對樣本Xi的預測值,

預測的時候,將每一顆決策樹的預測結果加起來就是GBDT模型的預測值。



2.12.2 GBDT與LR融合的演算法


Facebook提出來的論文當中,把樣本在GBDT模型中決策樹的葉子節點作為樣本的特徵,輸入到LR模型裡面。簡單理解就是讓GBDT模型來做特徵工程。



2.12.3 擴展

沿著上述演算法的思路,我們可以將one-hot離散化特徵,以及BP模型融合到與GBDT並行的一層,在外面在接一層LR演算法。這裡面並行的模塊有GBDT、one-hot離散化特徵、BP,可以理解為3種不同方法的特徵工程,結構圖如下:



2.13 seq2seq模型

論文見參考資料seq2seq。seq2seq模型是由谷歌在2014年提出的一種模型,它由一系列的LSTM構成的模型,而LSTM是RNN的一種變種,RNN前面我們已經介紹了,下面我們先介紹LSTM,在介紹seq2seq模型。



2.13.1 LSTM模型

(1)LSTM模型網路結構:

LSTM是RNN的一種改進網路,單層LSTM網路結構如下:


設用Xt表示LSTM輸入向量,ht表示LSTM的輸出值,Ct表示LSTM的狀態向量。LSTM模型可以看作是由兩個主要兩個函數構成的網路,第一個是用於計算記憶向量Ct的函數,另一個是用於計算輸出向量ht的函數。

用於計算狀態向量Ct的函數定義為,它依賴的向量有3個,分別為前一個輸入得到的狀態向量Ct-1及輸出向量ht-1,

和當前輸入向量Xt。

那麼,

用於計算輸出向量ht的函數定義為,它同樣依賴Ct-1、ht-1、Xt。

那麼,

(2)LSTM內部邏輯

如上圖,我們隊LSTM內部的計算做了紅色標記,總共有9次計算,每次計算的公式如下:

第1次計算

其中σ是sigmod函數  

 , Wf和bf是模型參數,ft是0到1之間的實數。

第2次計算:

其中Ct-1是上一個輸入的狀態向量。

第3次計算:

其中Wi和bi是模型參數,it是0到1之間的實數。

第4次計算:

其WC和bC是模型參數,tanh是雙曲正切函數,表達式為  

第5次計算:

第6次計算:

第7次計算:

第8次計算:

第9次計算:



(3)LSTM的使用

LSTM模型使用,首先把所有事件按照順序排列成一個序列,逐個輸入到LSTM模型,通過狀態向量Ct-1使模型記憶和理解上下文,例如:用戶輸入一串字元ABC,預測用戶下一個輸入,把A、B、C進行one-hot向量化,得到X1,X2,X3,依次帶入計算(

其中C0,h0為初始化向量

):



2.13.2  seq2seq

模型結構圖如下:


上圖中左邊為輸入ABC,後邊為輸出WXYZ,整個模型分為左右兩個LSTM網路,左邊為encoder的LSTM網路,右邊為decoder的LSTM網路。在谷歌發表的論文中,他們採用的是4層的LSTM網路。

為了便於說明,我們以單層LSTM的seq2seq模型為例,模型展開如下:

其中Input每個輸入的LSTM網路參數都是一樣,同理output的每個輸出的LSTM網路參數是一樣的。ENCODER的輸入是one-hot編碼的詞,DECODER輸出的是one-hot編碼的詞。



2.13.4 如何將seq2seq運用到推薦演算法

seq2seq模型的優點,序列化預測,一個輸入序列輸出一個序列。在推薦場景中可以將用戶歷史瀏覽的物品按照時間順序排列形成輸入序列,將用戶在輸入節點後的物品瀏覽記錄按照時間順序形成輸出序列,然後運用seq2seq演算法進行預測



 2.14  DNN在youtube應用

論文見參考資料DNN-YouTube。在該模型中,首先會用一個MLP網路對用戶進行特徵抽取得到向量u,然後與視頻的向量相乘做歸一化作為輸出,網路結構如下:

其中視頻的embedding該論文只是一筆帶過(把稀疏實數向量映射到低維的稠密向量),實際上可以embedding的方法根據目標函數的不同及模型的不同分為很多種,例如:FM模型,W2V模型都可以用來做embedding的方法。

Deep網路把用戶的歷史觀看視頻記錄、搜索記錄、地理位置embedding後、及用戶社會屬性聯合起來作為Deep模型的輸入MLP模型的輸入。



推薦閱讀



斬獲BAT等7家Offer!GitHub 4萬Star項目作者的面試經歷


下載 | 850頁>>深度學習與強化學習教程【DeepMind出品】


教程 | Python集合與集合運算


收藏 | 白話Hadoop架構原理


下載 | 512頁教程《神經網路與深度學習》,2018最新著作


必備 | AI & DS七大 Python 庫


下載 | 954頁《數據可視化》手冊


知識點 | 全面理解支持向量機

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |