李宏毅機器學習筆記14(RNN)

Recurrent Neural Network (RNN)

一、什麼是RNN面試

二、LSTM網絡

  1、什麼是LSTM框架

  2、LSTM框架函數

三、RNN分析學習

 

RNN

一、什麼是RNN

  • RNN能夠處理序列的信息(即前面的輸入對後面是有關係的)

 

  下面經過一個訂票系統的例子去說明什麼是RNN:spa

  1)、目標:假設咱們如今作這麼一個事情,說下面一句話,系統會自動知道Taipei是目的地,November是時間3d

 

            

    

    2)、若是沒有把這句話當作一個序列,那麼用前饋神經網絡方法的話,這樣是沒有考慮到上下文的。blog

 

                 

 

 

   3)、所以要解決這個問題,模型須要有memory,這就引出了RNNip

    

 

      RNN具體是怎麼作到記憶的呢get

   

                       

 

 

     再看看RNN是如何解決Slot Filling的問題:

  •   注意的是,下面不是三個神經網絡,而是同一個神經網絡 

                  

 

 

    4)RNN種類

     雙向神經網絡:在產生Y{t+1}的時候,你的network不僅是看過xtx{t+1}全部的input,它也看了從句尾到x{t+1}的input

 

           

 

二、LSTM

  1、什麼是LSTM

  •    左圖中,LSTM是四輸入一輸出,其中有三個gate,每一個gate打開仍是關閉,都是學出來的
  •         右圖中,Z,Zi,Z0都是數值輸入,三個gate使用的激活函數是sigmoid,因而把各個輸入輸出就能夠用式子表示出來

                    

 

         舉個栗子說明:

      輸入:三維vector[x1,x2,x3]

      輸出:一維vector y

      下圖從左到右表示更新過程,藍色表明memory

     

    代入LSTM中訓練:(假設要訓練的bias-10和weight100都已知)

 

                                       

 

 

 

                                                   

 

 

                                       

 

 

  2、LSTM框架

  •    LSTM的參數是普通神經網絡的四倍

 

              

 

    進一步揭開LSTM面紗

  •      輸入Xt先通過線性轉化爲4個vector組成的Z

                     

 

 

      多層的LSTM感覺一下

  •   C是memory的vector
  •        h是上一個LSTM神經元隱層的輸出

 

                    

 

三、RNN分析

   1、RNN會出現「懸崖」(梯度消失或爆炸)問題

 

  Total Loss對於參數的偏導的曲面是很不平整的,有不少斷崖,所以會出現好幾種狀況:

  • 第一種:1→2→3跳躍到懸崖上
  • 第二種:1→2→4踩到牆腳
  • 第三種:1→2→4→5加大學習率後直接飛出去

  用clipping方法(當gradient大於某一個threshold的時候,不要讓它超過那個threshold),當gradient大於15時,讓gradient等於15結束

 

                    

 

   爲何RNN會有這樣的特性?是否是由於sigmoid函數會形成梯度消失?換成ReLU會不會解決這個問題?
  答案是:sigmoid函數不是形成不平整的緣由,且ReLU在RNN上表現並不如sigmoid。因此activation function並非這裏的關鍵點。

 

    2、懸崖問題分析

    如今w是咱們要學習的參數,咱們須要知道它的gradient,只要稍微改變w 的值,看看對output有多大的影響。

  

 

 

 

    3、問題解決方案

    面試題:LSTM爲何能夠解決RNN的梯度消失問題? 

   

    LSTM和RNN在處理memory cell裏面的值的方式不同:
      RNN每次都把新的值存到memory cell裏面,舊的值被替換;
      LSTM則用了input gate的計算結果與輸入相乘後的值累加到memory cell裏面。


    思想

  •       RNN每次都替換舊的值,舊的值沒有辦法對最後的值有所影響;
  •       LSTM則採用累加策略,舊的值的還在memory cell裏面,也就意味舊的值還持續影響最後輸出;
  •      也就是說在LSTM裏面,一旦對memory形成影響,那影響一直會被留着(除非forget gate要把memory的值洗掉),否則memory一旦有改變,只會把新的東西加進來,不會把原來的值洗掉,因此它不會有gradient vanishing的問題

 

     其實LSTM的第一個版本其實就是爲了解決gradient vanishing的問題,因此它是沒有forget gate,forget gate是後來才加上去的。甚至,如今有個傳言是:你在訓練LSTM的時候,你要給forget gate特別大的bias,你要確保forget gate在多數的狀況下都是開啓的,只要少數的狀況是關閉的

 

   

相關文章
相關標籤/搜索