熟悉深度學(xué)習(xí)的朋友知道,LSTM是一種RNN模型,可以方便地處理時(shí)間序列數(shù)據(jù),在NLP等領(lǐng)域有廣泛應(yīng)用。
在看了臺(tái)大李宏毅教授的深度學(xué)習(xí)視頻后,特別是介紹的第一部分RNN以及LSTM,整個(gè)人醍醐灌頂。
0. 從RNN說(shuō)起
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是一種用于處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)。相比一般的神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),他能夠處理序列變化的數(shù)據(jù)。比如某個(gè)單詞的意思會(huì)因?yàn)樯衔奶岬降膬?nèi)容不同而有不同的含義,RNN就能夠很好地解決這類問(wèn)題。
1. 普通RNN
先簡(jiǎn)單介紹一下一般的RNN。其主要形式如下圖所示(圖片均來(lái)自臺(tái)大李宏毅教授的PPT):
這里:
為當(dāng)前狀態(tài)下數(shù)據(jù)的輸入,表示接收到的上一個(gè)節(jié)點(diǎn)的輸入。
為當(dāng)前節(jié)點(diǎn)狀態(tài)下的輸出,而為傳遞到下一個(gè)節(jié)點(diǎn)的輸出。
通過(guò)上圖的公式可以看到,輸出 h'與 x 和 h 的值都相關(guān)。
而 y 則常常使用 h'投入到一個(gè)線性層(主要是進(jìn)行維度映射)然后使用softmax進(jìn)行分類得到需要的數(shù)據(jù)。
對(duì)這里的y如何通過(guò) h'計(jì)算得到往往看具體模型的使用方式。
通過(guò)序列形式的輸入,我們能夠得到如下形式的RNN。
2. LSTM
2.1 什么是LSTM
長(zhǎng)短期記憶(Long short-term memory, LSTM)是一種特殊的RNN,主要是為了解決長(zhǎng)序列訓(xùn)練過(guò)程中的梯度消失和梯度爆炸問(wèn)題。簡(jiǎn)單來(lái)說(shuō),就是相比普通的RNN,LSTM能夠在更長(zhǎng)的序列中有更好的表現(xiàn)。
LSTM結(jié)構(gòu)(圖右)和普通RNN的主要輸入輸出區(qū)別如下所示。
相比RNN只有一個(gè)傳遞狀態(tài),LSTM有兩個(gè)傳輸狀態(tài),一個(gè)(cell state),和一個(gè)(hidden state)。RNN中的等價(jià)于LSTM中的。
其中對(duì)于傳遞下去的改變得很慢,通常輸出的是上一個(gè)狀態(tài)傳過(guò)來(lái)的加上一些數(shù)值。
而則在不同節(jié)點(diǎn)下往往會(huì)有很大的區(qū)別。
2.2 深入LSTM結(jié)構(gòu)
下面具體對(duì)LSTM的內(nèi)部結(jié)構(gòu)來(lái)進(jìn)行剖析。
首先使用LSTM的當(dāng)前輸入和上一個(gè)狀態(tài)傳遞下來(lái)的拼接訓(xùn)練得到四個(gè)狀態(tài)。
其中,,是由拼接向量乘以權(quán)重矩陣之后,再通過(guò)一個(gè) sigmoid激活函數(shù)轉(zhuǎn)換成0到1之間的數(shù)值,來(lái)作為一種門(mén)控狀態(tài)。而則是將結(jié)果通過(guò)一個(gè) tanh激活函數(shù)將轉(zhuǎn)換成-1到1之間的值(這里使用 tanh是因?yàn)檫@里是將其做為輸入數(shù)據(jù),而不是門(mén)控信號(hào))。
下面開(kāi)始進(jìn)一步介紹這四個(gè)狀態(tài)在LSTM內(nèi)部的使用(敲黑板)
是Hadamard Product,也就是操作矩陣中對(duì)應(yīng)的元素相乘,因此要求兩個(gè)相乘矩陣是同型的。則代表進(jìn)行矩陣加法。
LSTM內(nèi)部主要有三個(gè)階段:
1. 忘記階段。這個(gè)階段主要是對(duì)上一個(gè)節(jié)點(diǎn)傳進(jìn)來(lái)的輸入進(jìn)行選擇性忘記。簡(jiǎn)單來(lái)說(shuō)就是會(huì) “忘記不重要的,記住重要的”。
具體來(lái)說(shuō)是通過(guò)計(jì)算得到的(f表示forget)來(lái)作為忘記門(mén)控,來(lái)控制上一個(gè)狀態(tài)的哪些需要留哪些需要忘。
2. 選擇記憶階段。這個(gè)階段將這個(gè)階段的輸入有選擇性地進(jìn)行“記憶”。主要是會(huì)對(duì)輸入進(jìn)行選擇記憶。哪些重要?jiǎng)t著重記錄下來(lái),哪些不重要,則少記一些。當(dāng)前的輸入內(nèi)容由前面計(jì)算得到的表示。而選擇的門(mén)控信號(hào)則是由(i代表information)來(lái)進(jìn)行控制。
將上面兩步得到的結(jié)果相加,即可得到傳輸給下一個(gè)狀態(tài)的。也就是上圖中的第一個(gè)公式。
3. 輸出階段。這個(gè)階段將決定哪些將會(huì)被當(dāng)成當(dāng)前狀態(tài)的輸出。主要是通過(guò)來(lái)進(jìn)行控制的。并且還對(duì)上一階段得到的進(jìn)行了放縮(通過(guò)一個(gè)tanh激活函數(shù)進(jìn)行變化)。
與普通RNN類似,輸出往往最終也是通過(guò)變化得到。
3. 總結(jié)
以上,就是LSTM的內(nèi)部結(jié)構(gòu)。通過(guò)門(mén)控狀態(tài)來(lái)控制傳輸狀態(tài),記住需要長(zhǎng)時(shí)間記憶的,忘記不重要的信息;而不像普通的RNN那樣只能夠“呆萌”地僅有一種記憶疊加方式。對(duì)很多需要“長(zhǎng)期記憶”的任務(wù)來(lái)說(shuō),尤其好用。
但也因?yàn)橐肓撕芏鄡?nèi)容,導(dǎo)致參數(shù)變多,也使得訓(xùn)練難度加大了很多。因此很多時(shí)候我們往往會(huì)使用效果和LSTM相當(dāng)?shù)珔?shù)更少的GRU來(lái)構(gòu)建大訓(xùn)練量的模型。
審核編輯 :李倩
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100723 -
LSTM
+關(guān)注
關(guān)注
0文章
59瀏覽量
3748
原文標(biāo)題:人人都能看懂的LSTM
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論