57 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)【動(dòng)手學(xué)深度學(xué)習(xí)v2】

長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)
- 長(zhǎng)期以來,隱變量模型存在著長(zhǎng)期信息保存和短期輸入缺失的問題,解決這個(gè)問題最早的方法之一就是 LSTM
- 發(fā)明于90年代
- 使用的效果和 GRU 相差不大,但是使用的東西更加復(fù)雜
門
- 長(zhǎng)短期記憶網(wǎng)絡(luò)的設(shè)計(jì)靈感來自于計(jì)算機(jī)的邏輯門
- 長(zhǎng)短期記憶網(wǎng)絡(luò)引入了記憶元(memory cell),或簡(jiǎn)稱為單元(cell)(有些文獻(xiàn)認(rèn)為記憶元是隱狀態(tài)的一種特殊類型,它們與隱狀態(tài)具有相同的形狀,其設(shè)計(jì)目的是用于記錄附加的信息)
- 長(zhǎng)短期記憶網(wǎng)絡(luò)有三個(gè)門:忘記門(重置單元的內(nèi)容,通過專用機(jī)制決定什么時(shí)候記憶或忽略隱狀態(tài)中的輸入)、輸入門(決定何時(shí)將數(shù)據(jù)讀入單元)、輸出門(從單元中輸出條目),門的計(jì)算和 GRU 中相同,但是命名不同
- 忘記門(forget gate):將值朝 0 減少
- 輸入門(input gate):決定是否忽略掉輸入數(shù)據(jù)
- 輸出門(output gate):決定是否使用隱狀態(tài)

- 類似于門控循環(huán)單元,當(dāng)前時(shí)間步的輸入和前一個(gè)時(shí)間步的隱狀態(tài)作為數(shù)據(jù)送入長(zhǎng)短期記憶網(wǎng)絡(luò)的門中,由三個(gè)具有 sigmoid 激活函數(shù)的全連接層處理,以計(jì)算輸入門、遺忘門和輸出門的值(這三個(gè)門的值都在 0~1 的范圍內(nèi))
候選記憶單元(candidate memory cell)

- 候選記憶元的計(jì)算與輸入門、遺忘門、輸出門的計(jì)算類似,但是使用了 tanh 函數(shù)作為激活函數(shù),函數(shù)的值在 -1~1 之間
記憶單元

- 在長(zhǎng)短期記憶網(wǎng)絡(luò)中,通過輸入門和遺忘門來控制輸入和遺忘(或跳過):輸入門 It 控制采用多少來自 Ct tilde 的新數(shù)據(jù),而遺忘門 Ft 控制保留多少過去的記憶元 C(t-1) 的內(nèi)容
- 如果遺忘門始終為 1 且輸入門始終為 0 ,則過去的記憶元 C(t-1) 將隨時(shí)間被保存并傳遞到當(dāng)前時(shí)間步(引入這種設(shè)計(jì)是為了緩解梯度消失的問題,并更好地捕獲序列中的長(zhǎng)距離依賴關(guān)系)
- 上一時(shí)刻的記憶單元會(huì)作為狀態(tài)輸入到模型中
- LSTM 和 RNN/GRU 的不同之處在于: LSTM 中的狀態(tài)有兩個(gè), C 和 H
- ?長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM) P1 - 04:18?
隱狀態(tài)

- 在長(zhǎng)短期記憶網(wǎng)絡(luò)中,隱狀態(tài) Ht 僅僅是記憶元 Ct 的 tanh 的門控版本,因此確保了 Ht 的值始終在 -1~1 之間
- tanh 的作用:將 Ct 的值限制在 -1 和 1 之間
- Ot 控制是否輸出, Ot 接近 1 ,則能有效地將所有記憶信息傳遞給預(yù)測(cè)部分; Ot 接近 0 ,表示丟棄當(dāng)前的 Xt 和過去所有的信息,只保留記憶元內(nèi)的所有信息,而不需要更新隱狀態(tài)
總結(jié)


1 LSTM 和 GRU 所想要實(shí)現(xiàn)的效果是差不多的,但是結(jié)構(gòu)更加復(fù)雜
- C :一個(gè)數(shù)值可能比較大的輔助記憶單元
- C 中包含兩項(xiàng): 當(dāng)前的 Xt 和過去的狀態(tài)(在 GRU 中只能二選一,這里可以實(shí)現(xiàn)兩個(gè)都選)
2 長(zhǎng)短期記憶網(wǎng)絡(luò)包含三種類型的門:輸入門、遺忘門和輸出門
3 長(zhǎng)短期記憶網(wǎng)絡(luò)的隱藏層輸出包括“隱狀態(tài)”和“記憶元”。只有隱狀態(tài)會(huì)傳遞到輸出層,而記憶元完全屬于內(nèi)部信息
4 長(zhǎng)短期記憶網(wǎng)絡(luò)可以緩解梯度消失和梯度爆炸
5 長(zhǎng)短期記憶網(wǎng)絡(luò)是典型的具有重要狀態(tài)控制的隱變量自回歸模型。多年來已經(jīng)提出了其他許多變體,例如,多層、殘差連接、不同類型的正則化。但是由于序列的長(zhǎng)距離依賴性,訓(xùn)練長(zhǎng)短期記憶網(wǎng)絡(luò)和其他序列模型(如門控循環(huán)單元)的成本較高
Q&A
- 1 請(qǐng)問 LSTM 如果不要 C ,把公式中的 C(t-1) 換成 H(t-1) ,好像可以實(shí)現(xiàn)讓隱含狀態(tài)往下傳遞?
- ?QA P3 - 00:00?
- 2 老師,請(qǐng)問一下, I F O C_tilde 都初始化為 0 嗎,還是有什么說法?
- ?QA P3 - 01:03?
- 3 老師,請(qǐng)問如何計(jì)算一個(gè)模型占用的顯存,以及一個(gè) batch 占用的顯存?
- ?QA P3 - 01:39?
- 4 老師,我們講的 nn.GRU 輸出第一個(gè)參數(shù)是輸出 Y ,第二個(gè)參數(shù)是 state .我們的圖和公式里都只有 state 的計(jì)算,請(qǐng)問輸出 Y 是怎么計(jì)算的?
- ?QA P3 - 02:37?
----end----
其他參考:
1 <動(dòng)手學(xué)深度學(xué)習(xí)>,PPT,https://courses.d2l.ai/zh-v2/assets/pdfs/part-3_5.pdf
2 <動(dòng)手學(xué)深度學(xué)習(xí)>,教材,https://zh-v2.d2l.ai/chapter_recurrent-modern/lstm.html
標(biāo)簽: