循環神經網絡
-
RNN :循環神經網絡,處理的是後續的輸出與之前的內容有關聯的任務。
-
RNN引入“記憶”的概念
-
“循環”2字來源於其每個源於都執行相同的任務,但是輸出依賴於輸入和“記憶”。NMT: neural machine translation
一.場景與多種應用:模仿生成論文(生成序列)
二.層級結構
- 是時間處 的輸入
- 是時間處的“記憶”,, 可以是等
- 是時間處的輸出,如果是預測下個詞的話,可能是輸出的屬於每個候選詞的概率,
和是參數的矩陣
- 參數複用:每個時間點上用的,,都是同一個參數
- 只與有關係
結構細節: - 1.可以把因狀態視作“記憶體”,捕捉了之前時間點上的信息;
- 2.輸出由當前時間及之前所有的“記憶”共同計算得到;
- 3.實際應用中,並不能捕捉和保留之前所有的信息;
- 4.不同於CNN,這裏的RNN其實整個神經網絡都共享一組參數(,,),極大減小了需要訓練和預估的參數量;
- 5.圖中的在有些任務下是不存在的,比如文本情感分析,其實只需要最後的output結果就行。
三.多種RNN
雙向RNN:1.有些情況下,當前的輸出不只依賴於之前的序列元素,還可能依賴之後的序列元素。比如從一段話踢掉部分詞,讓你補全。
直觀理解:雙向RNN疊加
深層雙向RNN和雙向RNN的區別是每一步/每個時間點我們設定多層結構
4.BPTT算法
MLP(DNN)與CNN用BP算法求偏導
BPTT和BP是一個思路,不過既然有step,就和時間t有關係
1:16:12處
5.生成模型與圖像描述
LSTM
1.長時依賴問題
(Long short-term Memory)
LSTM 是RNN的一種,大體結構幾乎一樣,區別是:1.它的“記憶細胞”被改造過;2.該記的信息會一直傳遞,不該記的會被“門”截斷。
LSTM關鍵:“細胞狀態”
細胞狀態類似於傳送帶。直接在整個鏈上運行,只有一些少量的線性交互。信息在上面流傳保持不變會很容易
LSTM怎麼控制“細胞狀態”
通過“門”讓信息選擇性通過,來去除或者增加信息到細胞狀態
包含一個sigmoid神經網絡曾和一個pointwise乘法操作
sigmoid層輸出0到1之間的概率值,描述每個部分有多少量可以通過。0代表“不允許任何量通過”,1就指“允許任何量通過”
LSTM的幾個關鍵“門”與操作
第一步:決定從“細胞狀態”中丟棄什麼信息 “忘記門”
第二步:決定放什麼新信息到“細胞狀態”中
層決定什麼值需要更新
層創建一個新的候選值向量
上述2步是爲狀態更新做準備
第三步:更新“細胞狀態”
1.更新爲
2.把舊狀態與 相乘,丟棄掉我們確定需要丟棄的信息
3.加上 。這就是新的候選值,根據我們決定更新每個狀態的程度進行變化
第四步:基於“細胞狀態”得到輸出
1.首先運行一個sigmoid層來確定細胞狀態的哪個部分得到輸出
2.接着用tanh處理細胞狀態(得到一個在-1到1之間的值),再將它和sigmoid門的輸出相乘,輸出我們確定要輸出的那部分。
3.比如我們可能需要單複數信息來確定輸出“他”還是“他們”。
LSTM相較於RNN會較少豬隊友的影響,本質是前者求導是加法方式,後者是乘法方式。
變種1:
- 增加“peephole connection”
- 讓門層也會接受細胞狀態的輸入
變種2:
- 通過使用coupled忘記和輸入門
- 之前是分開確定需要忘記和添加的信息,這裏是一同做出決定。
四.GRU(Gated Recurrent Unit)
- 將忘記門和輸入門合成來一個單一的更新門
- 同樣還混合來細胞狀態和隱藏狀態,和其他一些改動
- 比標準LSTM簡單