前段時間,跟部門同事分享了深度學習相關的一些理論基礎,在此記錄一下。僅供后續學習和復習。
目錄
1、背景及現狀
2、Embeding
3、DNN
4、CNN
5、RNN(LSTM)
6、應用(結合自身的應用案例)
(1)情感分析/類目預測(文本分類)
(2)NER/POS TAGGING (標注、命名實體識別)
(3)流量預測
(4)CTR預估
7、總結與挑戰
一、背景與現狀
上圖基本說明深度學習的發展歷史,簡要說明如下:
1、MCP人工神經元模型,但是還是比較簡單的單層感知機的形式,改模型被證明是一種線性模型,只能解決線性問題,就連最簡單的異或都無法正確分類。於是迎來了神經網絡的第一次低谷。
2、到了1986年,由於BP算法的發明,人們提出了多層的神經網絡,當時被證明是可以逼近任何一個連續的函數。(包括非線性問題)。那個時候比較有代表性的是BP神經網絡;然而當時提出的網絡缺乏理論支持,並且又被指出BP反向傳播算法存在梯度消失的情況,又一次讓深度學習陷入谷底。
3、2012年,再一次ImageNet圖像識別比賽中,Hinton團隊采用了CNN構建的AlexNet網絡,直接碾壓第二名,獲得比賽冠軍。當時AlexNet的創新點是:(1)采用ReLU激活函數,能夠解決梯度消失的問題。(2)采用GPU對計算進行加速(3)添加了DropOut層減少過擬合,增強泛化能力。
二、Embeding
(1)Word2Vec
該方法是一個三層的神經網絡,分別利用CBOW(利用上下文預測當前單詞)和Skip-Gram(利用當前單詞預測上下文)兩種方式進行訓練。
CBOW:
Skip-Gram:
這里需要注意的是,
1)三層的神經網絡結構。其中輸出層為了減少算法的復雜度,采用Huffman編碼樹的形式進行編碼輸出。即輸出一顆樹型結構。
2)訓練過程中,實際是需要兩次遍歷預料,第一次遍歷構建輸出的Huffman樹和字典,第二次遍歷進行訓練。
(2)Paragraph2Vec、Doc2vec
該方法類似word2vec,只是在訓練的過程中,增加了paragraph vector(段落向量)
(3)Glove
該方法用的是詞的共現矩陣通過矩陣分解得到全局的信息,並且得到每個詞對應的全局詞向量,
再根據CBOW的思想(利用上下文預測當前單詞的概率,這里的概率就是共現矩陣中共現概率比值)進行優化全局詞向量,進而得到最優的詞向量。
三、DNN
1、神經網絡的思想源於生物醫學上的感知器,啟用計算機模擬如下:
,
典型的DNN模型如下所示:
前向輸入后向傳播:
這里主要講解一下訓練過程中是如何訓練的,參數是如何更新迭代的,這里采用一個例子進行說明:
假如有這樣一個網絡:
第一層是輸入,第二層是隱藏層,第三層是輸出層。
(1)前向運算:
1)第二層輸出,如下所示:
2)第三層輸出:
則一般通用公式如下:
,
反向傳播(BP算法):(這里需要理解為何需要反向傳播?主要是為了更新網絡參數)
我們知道前向傳播的算是函數如下:
,進一步展開得到如下:
對損失函數求導可得:
我們假設:,則導數可以變換成如下所示:
我沒來看看對應的
則有:,即
得到了梯度之后,我們即可得到每層的權重更新的方法。
四、CNN
首先來看一下CNN的網絡結構及特性:(1)局部感知,(2)權值共享。從整體上,采用通信里面的知識理解CNN,本質是一個濾波器,只是該濾波器是通過卷積的方式進行濾波。這里需要注意的地方是,卷積層的輸出神經元個數分別維護一個卷積算子的權重。每個輸出的神經元可以理解成就是一個濾波器,多少個神經元就有多少個濾波器。(在分享時,發現很多人這里不是很理解。。。)
例如:
,假設我們的卷積因子是
,則有如下所示:
五、RNN(LSTM)
經典RNN結構如下所示:這里由於篇幅的問題,本來是也想說一下它的訓練過程中參數是如何更新的。這里就略過,感興趣的可以留言。主要跟CNN類似,不同的地方是它加上了時間維度。稱之為(BPTT算法)。
重點講一下LSTM,這里主要講解一下我自己對LSTM的理解,如果需要知道其他方面的內容可以網上查閱相關資料,這方面還挺詳細的。這里我也把它相關的結構圖貼上來:
理解經典LSTM網絡結構主要包含三個部門,分別是:遺忘門,輸入門,輸出門
1、遺忘門:指的是上一狀態的記憶,在當前狀態下,有多少信息是可以遺忘的。這里主要是通過一個sigmod函數進行加權得到有多少信息作為當前狀態的記憶保留下來。
2、輸入門:由於上一狀態記憶會有一個遺失過程,當前狀態可以根據當前輸入x和上一狀態記憶決定當前狀態下,有多少信息可以添加到記憶(信息流)中去。這里有一個加法操作和一個sigmod函數決定添加多少信息。信息時通過輸入x和上一狀態記憶通過tan函數得到當前狀態的信息
3、輸出門:根據當前狀態的輸入x和上一狀態記憶,通過sigmod函數決定當前狀態記憶信息多少可以輸出。當前狀態記憶信息是由輸入門添加的信息+上一狀態保留的信息通過tanh函數得到信息
注意:輸入門和輸出門對應的tanh輸入的內容是不一樣的。輸入門對應的輸入時輸入x和上一狀態記憶;輸出門對應的是加法之后的記憶信息。
六、應用
1、文本分類
LSTM
2、NER
BI-LSTM+CRF
3、流量預測
LSTM
4、CTR預估
Wide-Deep