簡介
在深度RNN中,由于多hidden layer响逢,存在梯度爆炸和梯度消失的問題。而停止學(xué)習(xí)棕孙,RNN會(huì)忘記在長序列中學(xué)習(xí)到的東西舔亭,僅擁有短期記憶。
長短期記憶網(wǎng)絡(luò)能夠?qū)W習(xí)長期依賴關(guān)系蟀俊,并可保留誤差钦铺,在沿時(shí)間和層進(jìn)行反向傳遞時(shí),可以將誤差保持在更加恒定的水平欧漱,讓遞歸網(wǎng)絡(luò)能夠進(jìn)行多個(gè)時(shí)間步的學(xué)習(xí)职抡,從而簡歷遠(yuǎn)距離因果聯(lián)系。他在許多問題上效果非常好误甚,現(xiàn)在被廣泛應(yīng)用缚甩。
長短期記憶網(wǎng)絡(luò)將信息存放在遞歸網(wǎng)絡(luò)正常信息流之外的門控單元中谱净,這些單元可以存儲(chǔ)、寫入或讀取信息擅威,就像計(jì)算機(jī)內(nèi)存中的數(shù)據(jù)一樣壕探。但愿通過門的開關(guān)判定存儲(chǔ)哪些信息,何時(shí)允許讀取郊丛、寫入或清除信息李请。這些門是模擬的,包含輸出范圍全部在0~1之間的Sigmoid函數(shù)的逐元素相乘操作厉熟。這些門依據(jù)接收到的信號開關(guān)导盅,而且會(huì)用自身的權(quán)重集對信息進(jìn)行篩選,根據(jù)強(qiáng)度和輸入內(nèi)容決定是否允許信息通過揍瑟。這些權(quán)重會(huì)通過遞歸網(wǎng)絡(luò)的學(xué)習(xí)過程進(jìn)行調(diào)整白翻。
h(t): 為當(dāng)前時(shí)刻隱藏層的輸出,c(t): 為當(dāng)前時(shí)刻網(wǎng)絡(luò)的的總輸出绢片。
詳細(xì)闡述
單元狀態(tài)(cell state):(類似隱狀態(tài)滤馍,但不是隱狀態(tài)。在LSTM中新加入)
首先底循,單元狀態(tài)逐點(diǎn)乘以遺忘向量(遺忘門輸出)巢株,如果他與接近0的值相乘,就可能在單元狀態(tài)中得到低值熙涤。然后阁苞,從輸入門讀取上一步輸出,并逐點(diǎn)相加灭袁,將單元狀態(tài)更新到神經(jīng)網(wǎng)絡(luò)認(rèn)為相關(guān)的新值猬错,就得到了新的單元狀態(tài)。
三個(gè)門:
輸入門(input gate):更新單元狀態(tài)
首先茸歧,我們將前面得隱狀態(tài)(h t-1)和當(dāng)前輸入(xt)傳遞給一個(gè)sigmoid函數(shù)倦炒,它通過將值轉(zhuǎn)化為0到1來決定更新哪些值。還可以將隱狀態(tài)和當(dāng)前輸入傳遞給tanh函數(shù)软瞎,將值變?yōu)?1到1之間的值逢唤,以幫助調(diào)節(jié)神經(jīng)網(wǎng)絡(luò)。然后將tanh輸出和sigmoid輸出相乘涤浇,sigmoid輸出將決定保留tanh輸出的重要信息鳖藕。
遺忘門(forget gate):遺忘或保存
決定哪些信息應(yīng)該被丟棄或者保存。在遺忘門鐘只锭,來自先前隱狀態(tài)的信息和當(dāng)前輸入的信息傳遞到sigmoid函數(shù)著恩,并將值壓縮到0和1之間。越接近0則意味著丟棄,越接近1意味著保留喉誊。
輸出門(output gate):決定下一個(gè)隱藏狀態(tài)
記住邀摆,隱藏狀態(tài)把包含先前輸入的信息,隱藏狀態(tài)也用于預(yù)測伍茄。
首先我們將前面的隱狀態(tài)和當(dāng)前輸入傳遞給一個(gè)sigmoid函數(shù)栋盹。然后我們將新修改的單元狀態(tài)(ct)傳遞給tanh函數(shù)。我們將tanh輸出與sigmoid輸出相乘敷矫,以確定隱狀態(tài)應(yīng)該包含的信息例获。新的單元狀態(tài)(ct)和新的隱藏狀態(tài)(ht)隨后被轉(zhuǎn)移到下一步中。
t時(shí)刻的隱狀態(tài)ht乘以一個(gè)輸出層的權(quán)值矩陣曹仗,就會(huì)得到模型輸出yt榨汤。
示例:
hidden_size = 4, Wi, Wf, Wc, Wo ∈ R6*4(4*6),偏置項(xiàng)為0.
將隱狀態(tài)矩陣與輸出矩陣拼接一起后整葡,與權(quán)值矩陣相乘, 再經(jīng)過sigmoid函數(shù)加權(quán)求和之后件余,得到一個(gè)各元素為0-1之間的矩陣,即遺忘門的輸出遭居。即
Xt(1*6) * h(t-1)(6*4) = (1*4)? ?/ (4*1)? ?-->sigmoid(4*1) = (4*1)
輸入門:
1. 先經(jīng)過一個(gè) 隱狀態(tài)和當(dāng)前輸入拼接結(jié)果,與權(quán)值矩陣相乘旬渠,并經(jīng)過sigmoid函數(shù)俱萍。如上一步操作。
2. 然后告丢,隱狀態(tài)與當(dāng)前輸入拼接結(jié)果枪蘑,再與一個(gè)權(quán)值矩陣相乘,并經(jīng)過tanh函數(shù)岖免,得到一個(gè)矩陣岳颇。
3. 最后將兩個(gè)輸出矩陣相乘才會(huì)得到輸入門的結(jié)果。
單元狀態(tài)更新:
遺忘門輸出矩陣 * 原始單元狀態(tài) + 輸入門輸出矩陣 = t時(shí)刻的單元狀態(tài)
輸出門:
1. 將拼接矩陣與權(quán)值矩陣相乘結(jié)果經(jīng)過一個(gè)sigmoid函數(shù)颅湘,與t時(shí)刻的單元狀態(tài)矩陣經(jīng)過一個(gè)tanh函數(shù)话侧。兩結(jié)果相乘,得到ht闯参。
即X(2*1) ——>y(2*1)