RNN:循環(huán)神經(jīng)網(wǎng)絡(luò)
與CNN最大的不同是記憶暫存功能,可以把過去輸入的內(nèi)容所產(chǎn)生的遠期影響量化后與當(dāng)前時間輸入內(nèi)容一起反應(yīng)到網(wǎng)絡(luò)中參與訓(xùn)練。尤其是對時間序列、自然語言(上下文關(guān)系)的處理,具有優(yōu)勢。
馬爾科夫鏈:在給定當(dāng)前的知識或信息下产雹,觀測對象過去的歷史狀態(tài)對于將來的預(yù)測是無關(guān)的,只需要觀測當(dāng)前狀態(tài)即可得出翁锡。
HMM:隱馬爾可夫模型蔓挖,隱馬爾可夫鏈的模型相對簡化,是貝葉斯信念的一個特例馆衔。
假如三個骰子瘟判,分別是正方體D6、四面體D4和八面體D8角溃。
無序的扔這三個骰子拷获,可能出現(xiàn)了一串序列,2,1,8减细。這就叫做可見狀態(tài)鏈匆瓜,而其中還存在隱含狀態(tài)鏈,如D4未蝌,D6驮吱,D8。HMM中的馬爾科夫鏈一般是指隱含狀態(tài)鏈萧吠,實際是隱含狀態(tài)之間的轉(zhuǎn)化概率左冬。隱含狀態(tài)和可見狀態(tài)直接的概率叫做輸出概率。
HMM隱馬爾可夫模型纸型,即通過統(tǒng)計的方法可以去觀察和認知一個事件序列上鄰近事件發(fā)生的概率轉(zhuǎn)換問題又碌。
如何訓(xùn)練HMM模型:輸入Xi序列和Oi序列九昧,全部通過統(tǒng)計學(xué)模型完成,得到的模型結(jié)果就是一個轉(zhuǎn)移矩陣毕匀。一個輸出概率矩陣和一個隱含狀態(tài)轉(zhuǎn)移矩陣。這樣可以對下一個輸出狀態(tài)進行基于概率的預(yù)測癌别。
RNN為如下的結(jié)構(gòu):
輸入向量是Xt皂岔,得到Wx與Xt的乘積之后會有一個Ht,這個Ht會和下一次進入網(wǎng)絡(luò)的Xt一起再次輸入網(wǎng)絡(luò)進行計算展姐,調(diào)整權(quán)值躁垛,這樣就可以使得前一次輸入的向量所產(chǎn)生的結(jié)果對于本次輸出的結(jié)果有一定影響,計算公式:
最終得到WH和Wx的矩陣圾笨。
RNN的模型在時間上可以進行展開(僅僅在時間上展開即隨著時間的推移更新網(wǎng)絡(luò)權(quán)值):
【圖片來自:http://blog.csdn.net/heyongluoyao8/article/details/48636251】
誤差傳播:
由于誤差的計算其中的
涉及很長的連乘教馆,計算量頗大,所以會造成災(zāi)難擂达,因此傳統(tǒng)的RNN理論上雖然說得通土铺,但是訓(xùn)練效果不理想。
改進的RNN:LSTM
LSTM:長短期記憶網(wǎng)絡(luò)(long stort-term memory)由LSTM算法對標(biāo)準(zhǔn)RNN進行改進板鬓。規(guī)避了標(biāo)準(zhǔn)RNN中的梯度爆炸和梯度消失的問題悲敷。
忘記門(forget gate)某個X值可能會影響一個在時間上或者空間上比較遠的hj輸出,訓(xùn)練的過程就是學(xué)習(xí)到這個影響被量化的過程俭令。LSTM可以是一個很大的方陣后德,中間部分是一個個LSTM單元,如下圖所示:
http://www.reibang.com/p/9dc9f41f0b29這篇文章中有詳細的解釋抄腔。
首先是從左到右的向量傳輸過去(輸入的C(t-1)先進行乘法運算再疊加一個向量)瓢湃。乘法器乘的系數(shù)可以考到左側(cè)的h(t-1)和下面的Xt經(jīng)過連接操作,再通過Sigmoid函數(shù)生成0-1之間的數(shù)赫蛇。
忘記門:忘記就是這個相乘的過程绵患,如果Sigmoid輸出為1就完全記住,0就完全忘記棍掐,中間的值就是記憶的比例藏雏。
3、Tanh也是神經(jīng)網(wǎng)絡(luò)的一個層作煌,可以把一個值映射到一個-1掘殴,1之間的數(shù)。
到這里其實決定本次輸出的Ct究竟有多少采納本次輸入的信息粟誓,多少采納上次遺留的信息奏寨。在語言模型中,表示前一個主語到當(dāng)前是否應(yīng)該被遺忘鹰服,而新的主語是否應(yīng)該代替原先的主語出現(xiàn)病瞳。
最后的輸出:2個揽咕,一個輸出到同層下一個單元,一個輸出到下一層的單元上套菜。
應(yīng)用:分類器亲善、翻譯器、有限狀態(tài)機逗柴、聊天機器人等蛹头。
RNN+CNN 實現(xiàn)圖片特征標(biāo)注:
CNN用于提取特征,RNN用這些特征的Feature向量和描述向量來做訓(xùn)練戏溺。