李宏毅機器學習2016 第二十二講 循環神經網路RNN
視頻鏈接:李宏毅機器學習(2016)_演講?公開課_科技_bilibili_嗶哩嗶哩
課程資源:Hung-yi Lee
課程相關PPT已經打包命名好了:鏈接:https://pan.baidu.com/s/1c3Jyh6S 密碼:77u5
我的第二十一講筆記:李宏毅機器學習2016 第二十一講 隱馬爾可夫模型與條件隨機場
Recurrent Neural Network
本章主要介紹了循環神經網路。
1.引言
槽填充(Slot Filling)是現今比較常見的問題,例如在一個訂票系統中,用戶輸入「我想本周六去北京」,需要填充槽(slot),目的地:北京,時間:2018.1.27
如何解決這個問題,考慮使用前饋神經網路(Feedforward network)。
比較常見的是使用1-of-N encoding方法將每一個單詞表示成一個向量。
當然也有其他的改進版本。
但是問題是可能用戶輸入的是離開北京而不是去北京,這就要求北京是起點,而不是目的地。
顯然解決此類問題要求網路是要有記憶(memory)的。
2.循環神經網路(Recurrent Neural Network,RNN)
簡單思想是將隱藏層的輸出存儲在記憶中,然後將記憶也作為網路的一個輸入。
當然也可以將網路的輸出存儲在記憶中。
再者考慮多個隱藏層的結構,深度網路。如果是將隱藏層的輸出存儲在記憶中稱為Elman Network,將輸出層的輸出值存儲在記憶中就稱為Jordan Network。
雙向(Bidirectional)RNN從順逆兩個方向上考慮。
3.長短時記憶網路(Long Short-term Memory,LSTM)
長短時記憶網路(Long Short-term Memory,LSTM)指的是具有多個長的短時間記憶網路。
其網路形狀有四個輸入,一個輸出。
網路詳細情況如上圖所示,1代表的是開,0代表的是關。值得注意的是在Forget Gate中,如果值為1則表示不忘記,保持原值;值為0時則表示將記憶值清為0,忘記。(打開其實是不忘記)
在學習訓練RNN時可以用梯度下降(gradient descent)方法。
然而基於RNN的網路是不好訓練的。損失曲面要不是平的要不就是陡峭的,不易訓練。
通過LSTM可以很好的解決此問題。
這是因為與普通RNN不同的是,LSTM的記憶和輸入是相加的,而不是直接清零的。除非Forget Gate關閉時,影響才會消失。因此只要確保大多數情況下Forget Gate是開啟的,就可以解決梯度消失(gradient vanishing)的問題,不是梯度爆炸(gradient exploding)。
3.應用
循環神經網路有很多種應用情景。
①語義分析
②關鍵詞提取
③語音識別
應用廣泛。
3.總結
本章主要講解了循環神經網路(Recurrent Neural Network,RNN)的原理及應用,重點講述了LSTM。
推薦閱讀:
※通往無限層神經網路 (1):對於殘差網路(Residual Network)的一種理解方法,與深層網路的訓練
※XGBoost入門系列第一講
※機器學習原來這麼有趣!第四章:用深度學習識別人臉