哈嘍,大家好,上一次我們了解了什么是卷積神經網絡RNN,然后我又加上了我翻譯的那一篇文章來簡述了一下RNN和LSTM,今天,讓我們來詳細的了解下什么是LSTM。
首先提到RNN呢,我們自然會想到RNN所帶來的弊端,因此人們為了解決這個弊端,因此人們引入了我們今天所要了解的對象LSTM。
LSTM是long short term memory的一種簡稱,中文名字呢又叫做長短期記憶,這是現在最流行的RNN的計算方式的其中的一種,在上一篇文章中,我介紹過RNN是在有序的數據中進行學習的,為了記住這些數據,RNN會對先前產生的數據進行一些記憶,就跟我們人類一樣,但是一般形式的RNN一般來說還是會想我們人類中那些上了年齡的老爺爺,還是比較健忘的,為什么會這個樣子呢?現在想象有這樣的一種RNN:
X-RNN-Y
他的輸入值X現在假設是一句話:“我今天要做醬豬蹄,首先要準備豬蹄,然后(此處省略一萬字),最后一道美味的醬豬蹄就誕生了“,寫著寫著居然餓了。。。
回到正題,現在請RNN來進行分析,我們今天做了個什么菜呢?RNN可能會給了我們一個結果,我們今天做了個紅燒排骨這個答案,因為這個答案很顯然是錯誤的,現在RNN就開始進行學習,這個輸入值X中和醬豬蹄的關系,而RNN所需要的數據醬豬蹄卻出現在句子開頭,那么RNN是應該怎么樣學習的呢?醬豬蹄這個記憶點要經過長途跋涉才能夠到達這個句子的句尾這個時間點,這樣呢,我們就可以得到誤差,然而當反向傳遞的時候得到的這個誤差,他在每個句子的一個時間段都會乘以一個額外的參數,如果這個額外的參數小于1,現在假設是0.9,這個誤差會一直一直的相乘,等到這個誤差傳到出發點的時候這個誤差也會到一個接近0的數,所以對于初始時刻,誤差就相等于消失了,我們把這個現象叫做梯度消失或者梯度彌散,反正如果W是一個大于1的數,比如1.1,不斷壘乘,這樣就可能會變成一個無窮大的數,rnn就會被這樣的大誤差給撐死了,我們就叫做這樣的現象叫做梯度爆炸,這就是普通RNN沒有辦法回憶起久遠記憶點的原因,這時候,LSTM就是為了解決這個問題產生的。
LSTM與普通RNN相比,多出來幾個控制器,輸入控制,輸出控制,忘記控制,我們現在的結構如圖中所示,左邊的那個Hidden可以看做為我們進行操作時候的主線劇情,旁邊的那些RNN體系可以看為分線劇情,這三個控制器都是在RNN的這個體系上,我們先看輸入方面,如果現在的這個輸入控制輸入的數據足夠的重要,RNN這個體系就會把這個數據匯集進入主線劇情,在進行分析,在看忘記方面,如果現在的分線劇情會改變了主線劇情的這個線索觀點,那么忘記控制就會把一些主線劇情忘記,按比例替換成現在的新劇情,所以主線劇情的更新就會注意取決于輸入和忘記這兩個控制器,最后的輸出方面,輸出控制會基于現在的主線劇情和分線劇情判斷要輸出的什么,基于這些控制機制,LSTM就像是一種延緩記憶衰退的良藥,帶來更好的結果
好了,這就是LSTM的一個簡短的介紹,如果想了解更多的只是,歡迎和我進行交流,也歡迎大家給出更好的建議,謝謝大家。