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