天天看點

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

 一、寫在前面

        由于學業繁忙,突然發現近四個月沒更新部落格了,于是将前幾天講課的PPT做了簡單整理,水一篇部落格。本文主要做一些RNN及LSTM的簡介而非深入講解,文中部分LSTM通用結構圖及通用公式來源于網絡,此處不一一列舉,感謝圖檔的原創部落客提供的支援!

二、RNN

2.1什麼是RNN

        RNN的全稱為Recurrent Neural Network, 即“循環神經網絡”,是一類以序列(sequence)資料為輸入,在序列的演進方向進行遞歸(recursion)且所有節點(循環單元)按鍊式連接配接的遞歸神經網絡(recursive neural network)。

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

        1. 為什麼要采用遞歸循環結構

        RNN最開始是為NLP領域的任務所設計的,例如機器翻譯。在機器翻譯任務中,每次翻譯的語句長度是不定的,采用遞歸結構的好處在于RNN網絡可根據要翻譯的語句長度通過遞歸自行展開到所需要的長度,而不用針對每一種句子長度單獨設計具有不同網絡層數的RNN。

        2. 為什麼要權值共享

        在上圖CNN與RNN的對比中可以看出,CNN的每一層由數字進行區分,但RNN的每一層卻是相同的。由循環遞歸的思想我們也可以知道,通過循環遞歸展開的RNN網絡,每一層必然是相同的,即網絡的每一層進行了權值共享。但是,權值共享不僅是循環遞歸的一個結果,更有一定的工程意義。假如RNN像CNN一樣,每層都有自己獨立的權值,那麼我們考慮一個極端的例子,如果我們要翻譯一段有一萬詞的句子,那RNN則需要一萬層,而每一層又具有自己獨立的權值,那麼整個網絡的參數量将是巨大的,這就使得RNN難以在工程中應用。

2.2 RNN的用途

        RNN主要用于序列處理,比如自然語言處理,時間序列預測這種輸入輸出序列之間具有高度的相關性或依賴性的任務,RNN可以捕獲序列間的依賴關系進而完成相應的任務。

        1.什麼是序列

        這裡的序列可以簡單了解為離散資料,比如周期序列,語言文字等。

        2.什麼是依賴性或相關性

         以下将通過三個例子來解釋所謂的依賴性或相關性

        (1)語義依賴關系

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

        在這個機器翻譯的例子中,句中的系動詞用is還是are取決于前面是cat還是cats。也就是說,前邊名詞的單複數決定了後面系動詞的形式,系動詞依賴于前邊的名詞,兩者就産生了語義上的依賴關系。

        (2)周期依賴關系

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

        在已知周期規律的周期序列中,給出前幾個值我們就可以知道後邊的值。例如以1,2,3為周期的周期序列,我們知道3後邊的一定是1,這是因為數字之間具有周期依賴關系。

        (3)函數依賴關系

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

        在軌迹預測中,我們知道上一刻運動目标的位置、速度、加速度、方向、時間間隔等資訊,就可以通過實體公式計算出下一刻目标的位置,這是因為它們之間存在函數依賴關系。

        當然,依賴關系有很多,包括但不限于上述列舉的三種。

 2.3 為什麼RNN可以捕捉依賴關系

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

        通過上圖以及公式可以看出,RNN的每一步輸出不僅依賴于目前的輸入,還會綜合考慮以前所有步的輸入。即Y2的輸出不僅取決于X2(紅色),還利用了X1的隐狀态S1(藍色)。各時間步之間通過隐狀态的連接配接實作資訊共享,使每一步都能綜合考慮目前與以前的所有輸入進行輸出。

2.4 RNN的缺陷

        1.梯度消失

        梯度消失不僅是RNN的缺陷,而是包括CNN在内的神經網絡的普遍問題,這也催生了ResNet的出現。是以,對于梯度消失問題,這裡不再作贅述。

        2. 無法捕獲序列的長時間依賴關系

        考慮一個NLP領域的例子:I grew up in France… I speak fluent French。在例子中,France與French具有語義上的依賴關系,但兩者之間間隔很大,RNN難以捕捉到兩者間的依賴關系,模型性能會是以下降。我們很難從數學的角度嚴格推導RNN捕捉長時序列依賴性能力差的原因(不考慮梯度消失),目前比較普遍的解釋是,傳統RNN中,模型對以前時間步傳過來的隐狀态做了過于複雜的操作,以至于使隐狀态中蘊含的資訊丢失。更直覺的了解,像人類一樣,如果在讓你記住事件A的同時讓你去做很多其他的事,那你忘掉事件A的機率就大大增加了,這裡的“其他事”就相當于RNN中對記憶狀态過複雜的操作。

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

傳統RNN對記憶狀态的操作

        也正是RNN的這種缺陷,催生了後來的LSTM。

三、LSTM

3.1 什麼是RNN

        長短期記憶網絡(LSTM)的全稱是Long Short Term Memory networks,是RNN的一種特殊形式,特點是能夠學習長距離依賴關系。由Hochreiter & Schmidhuber (1997)首先提出,之後被很多學者改善和推廣。它在很多問題上都得到很好的表現,現在被廣泛使用。

        LSTM的設計之初就是為了解決長距離依賴問題。記住長距離的資訊實際上是他們的最基本的行為。

        1.RNN與LSTM的關系

        LSTM可以看作是RNN網絡的一種特殊形式,同理,GRU也是如此。LSTM将傳統RNN中每一個RNN單元換成了更加複雜的結構,如圖下所示。

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

        3.2 為什麼LSTM可以捕獲長時依賴關系

        LSTM的關鍵之處是單元狀态(cell),就是圖中最上面的水準線。

        單元狀态就像一個傳送帶。它直接沿着整個鍊運作,隻有一些簡單的加減等線性操作,資訊很容易保持不變。

        LSTM建立一條單獨的“路線”用來傳遞長時依賴關系,每個LSTM單元隻對這條通路上做一些簡單的加減操作,以保證長時依賴資訊不被破壞。

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

3.3 LSTM結構分解

        1.遺忘門

        LSTM的第一步是決定我們要從單元狀态中舍棄什麼資訊。這一步由激活函數為sigmoid的神經層決定,我們稱之為遺忘門(forget gate)。首先将ht-1與xt的和作為遺忘門的輸入,對于的每一個數字,遺忘門輸出一個[0,1]區間的數字,輸出1代表“完全保留”,輸出0代表“完全遺忘”,再将遺忘門的輸出與Ct-1對應元素相乘以忘記一些長時依賴資訊。

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

        2.輸入門

        LSTM的第二步決定将要在單元狀态(cell)中存儲哪些新的資訊。這由兩個部分組成。首先,激活函數為sigmoid的稱為輸入門(forget gate)的層決定将更新哪些值。接下來,激活函數為tanh的層建立一個新的候選值向量,可以添加到單元狀态。 候選值向量經過輸入門篩選後加入到細胞狀态(cell)中,細胞狀态是以完成更新。

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

        3.輸出門

        最後,LSTM将決定輸出的内容,這由輸出門(Input gate)決定。這個輸出将基于我們的單元狀态,但将是一個過濾版。首先,我們運作一個sigmoid層,決定我們要輸出單元狀态的哪些部分。然後,我們通過tanh函數把更新後的細胞狀态值轉換為[-1,1]區間。最後,把轉換後的單元狀态與sigmoid門的輸出相乘,這樣我們隻輸出我們決定的部分。

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

四、總結

        總結來看,LSTM中紅色的主線傳遞是長時記憶,而藍色的主線傳遞的是短時記憶,這大概也是它被命名為“長短時記憶”的原因吧。

RNN與LSTM原理淺析 一、寫在前面三、LSTM四、總結五、說下自己的感受

五、說下自己的感受

        近些時間,Transformer憑借其強大的多頭注意力機制以“屠城”之勢在NLP、CV等領域吊打各種主流模型,其中就包括LSTM。但多頭注意力機制也給訓練Transformer帶來了巨大的時間成本與計算開銷,雖然有些研究人員将多頭注意力機制換為傅裡葉變化以減小計算量,但LSTM相比之下在這些方面仍很大優勢,是以将合适的注意力機制融合進LSTM架構可能是LSTM與Transformer抗衡的思路之一。

繼續閱讀