最近真是心態(tài)炸了,標(biāo)題都寫錯了.
前言
在之前已經(jīng)復(fù)習(xí)過了CNN的主要內(nèi)容, CNN在處理圖像與文本的任務(wù)上有非常好的表現(xiàn), 可以認(rèn)為CNN側(cè)重于構(gòu)造單個結(jié)構(gòu)性樣本的相鄰區(qū)域之間的組合特征, 這里有一個很重要的詞就是單個樣本,那么對于某些樣本之間存在關(guān)聯(lián)的數(shù)據(jù),如何去挖掘前后樣本的關(guān)聯(lián)?
比較常見的有時間序列分析以及隱馬爾科夫模型等方法.
- 時間序列分析
其中時間序列分析常見于計量經(jīng)濟(jì)學(xué)領(lǐng)域,該技術(shù)有以下三個基本特點:
(1)假設(shè)事物發(fā)展趨勢會延伸到未來;
(2)預(yù)測所依據(jù)的數(shù)據(jù)具有不規(guī)則性;
(3)不考慮事物發(fā)展之間的因果關(guān)系。
基本的思想是,某一時刻的輸出等于前面若干時刻輸出的線性組合, 常用的算法包括:ARMA, ARIMA等. - 隱馬爾科夫模型(HMM)
一種用于標(biāo)注問題的統(tǒng)計學(xué)模型, 模型假設(shè)序列滿足馬爾科夫性,也就是每個狀態(tài)的轉(zhuǎn)移只依賴于之前的n個狀態(tài). 這里夾帶一點個人的理解.
HMM與時間序列分析都假設(shè)當(dāng)前時刻的輸出依賴于前面若干時刻輸出, 而不同有以下幾點:
a.時間序列分析不考慮事物發(fā)展的因果關(guān)系,而HMM反之
b.時間序列分析針對連續(xù)與離散的輸出結(jié)果, 而HMM針對的是離散的輸出,也就是輸出的狀態(tài)有固定的集合.
HMM常用于ASR, NLP, 基因序列分析等領(lǐng)域, 一個最常見的應(yīng)用就是分詞算法. -
Why RNN
那么為什么要搞出一個RNN? 其實也就是為了讓神經(jīng)網(wǎng)絡(luò)能處理序列輸入數(shù)據(jù), 能夠在模型中學(xué)習(xí)上下文信息. 假設(shè)我們構(gòu)建一個簡單的對話機(jī)器人(Chat Bot), 在下面的對話場景中, 如果不帶上下文信息的話, 機(jī)器人無法知道對方是想詢問天津明天的天氣; 但是如果機(jī)器人的分類器算法有能力學(xué)習(xí)上下文信息, 這種意圖就可以很輕松地識別出來.
上下文對話
基本原理
在已知神經(jīng)網(wǎng)絡(luò)ANN的基本結(jié)構(gòu)以及BP算法的前提條件下.
最基本的RNN原理就是一句話, 某一時刻的隱藏層輸出作為下一時刻輸入的一部分, 這樣就做到了上下文信息的傳遞, 從圖上可以非常清楚地看到RNN的基本結(jié)構(gòu).
如圖可以得到任意時刻的輸出為:
其中F為輸出層函數(shù), 暫時忽略隱藏層的激活函數(shù),到這里為止,也就是樸素的RNN的前向傳導(dǎo)算法.
這里關(guān)于BP算法的推導(dǎo)過程就忽略了把.
若干變種
從架構(gòu)設(shè)計到應(yīng)用開發(fā),關(guān)于 RNN 的文獻(xiàn)已經(jīng)有大量的論文發(fā)表, 比較重要的研究成果如下圖.
這里我挑選幾種最常見的變種進(jìn)行回顧.
LSTM
LSTM全稱是Long Short Term Memory, 長短期記憶網(wǎng)絡(luò).對于普通的RNN, 由于在傳播過程中的信息丟失, 對于較長序列,在序列尾部就將頭部信息基本上拋棄了, 基于這個問題, LSTM 在1997年由“Hochreiter & Schmidhuber”提出蕊温,目前已經(jīng)成為 RNN 中的標(biāo)準(zhǔn)形式,用來解決上面提到的 RNN 模型存在“長期依賴”的問題蝌麸。廢話少說先上圖
LSTM通過三種"門"結(jié)構(gòu)來控制不同時刻的狀態(tài)以及輸出,當(dāng)我第一次看到上面這個圖以及門結(jié)構(gòu)的時候,我覺得他跟我本科學(xué)的電氣里的某類原件有點像, 比如說下面這個IGBT管子.
這個管子的原理我已經(jīng)忘的一干二凈了,不知道LSTM跟這些個玩意是不是有一定聯(lián)系.不過簡單地來說, 這種管子里都有類似于二極管的導(dǎo)電特性,就是下面這個圖.這個圖形的大致內(nèi)容是,當(dāng)電壓低于VBR時完全不導(dǎo)電,在VR到VF之間時緩慢上升,電壓超過VF時電流迅速增大,就像沒有電阻一樣.
這個圖形的性質(zhì)其實是有點像sigmoid函數(shù)的, 而LSTM中的門其實都是通過sigmoid去實現(xiàn)的,所以門的特性也表現(xiàn)為高通低阻, 也就是超過某一數(shù)值時保留上文信息,而低于某一數(shù)值時就丟棄.這塊只是個人的一些理解,有點扯遠(yuǎn)了,希望有誰懂的話指出一下.
-
遺忘門
shit,簡書點了保存又沒保存,重來了.
遺忘門的作用是決定上一時刻的信息C在當(dāng)前時刻是否保留,而LSTM之所以叫長短期記憶網(wǎng)絡(luò),是因為,在下面的圖里,C代表了長期記憶,而上一時刻的隱藏層信息h代表短期記憶.
從圖中可以看出來,相對于樸素的RNN, LSTM多了一個狀態(tài)C. 這個隱藏狀態(tài)通常成為細(xì)胞狀態(tài)(Cell State).
遺忘門
此處當(dāng)前時刻的輸入x_t的作用是根據(jù)輸入的新信息決定忘記哪些歷史信息.
-
輸入門
作用是處理當(dāng)前時刻的輸入信息,確定哪些信息會被保存到細(xì)胞狀態(tài)中.輸入門通常包含兩部分,其中sigmoid決定更新哪些信息, tanh輸出更新信息的值,二者結(jié)合更新到細(xì)胞狀態(tài)里.結(jié)構(gòu)圖如下:
輸入門 -
輸出門
輸出門的作用是在計算完細(xì)胞狀態(tài)后,進(jìn)行結(jié)果的輸出,子結(jié)構(gòu)如下
輸出門
從圖中可以看出拔第,隱藏狀態(tài) ht 的更新由兩部分組成咕村,輸出門依然是由歷史信息 ht-1 和新的信息 xt 來決定的.
GRU
GRU即Gated Recurrent Unit,是針對LSTM的一種變種,主要在于簡化了模型,原本的三個門變成了兩個門,即更新門與重置門.其中更新門用于控制上一時刻狀態(tài)信息帶入當(dāng)前時刻的比例,重置門用于控制忽略上一時刻的狀態(tài)信息的程度.
從圖中容易看到,GRU將LSTM中的細(xì)胞狀態(tài)與隱藏層信息合成了一個單一的隱藏層輸出.
Bi-LSTM
全稱是Bi-directional LSTM,也就是雙向LSTM網(wǎng)絡(luò), 其特點就是將前向與后向的LSTM相結(jié)合,那么既能考慮上文信息,又能考慮下文信息, 這就是它相對于LSTM的優(yōu)勢所在.
雙向卷積神經(jīng)網(wǎng)絡(luò)的隱藏層要保存兩個值, A 參與正向計算蚊俺, A' 參與反向計算懈涛。如圖
干脆再偷一下計算過程把.
在某些需要考慮上下文信息的任務(wù)中, Bi-LSTM 的表現(xiàn)要比LSTM好,比如情感分析與實體抽取,但是代價就是其計算復(fù)雜度明顯要比LSTM還高.
此外還有一些其他的變種,例如GRU的變種SRU, BRNN等, 平時用不上就忽略了.
之前寫的沒保存上,任性點不寫了.
參考文獻(xiàn)
[1]黃成甲.數(shù)據(jù)分析之時間序列分析[EB/OL].http://www.reibang.com/p/ff6abad2514f,2018-09-03.
[2]機(jī)器之心.從90年代的SRNN開始,縱覽循環(huán)神經(jīng)網(wǎng)絡(luò)27年的研究進(jìn)展[EB/OL].https://zhuanlan.zhihu.com/p/32668465,2018-01-05.
[3]不會停的蝸牛.雙向 LSTM[EB/OL].http://www.reibang.com/p/471bdbd0170d,2017-08-11.
[4]lreaderl.GRU與LSTM總結(jié)[EB/OL].https://blog.csdn.net/lreaderl/article/details/78022724,2017-09-18.
[5]李航.統(tǒng)計學(xué)習(xí)方法[M].清華大學(xué)出版社,2012.