
來源:機(jī)器學(xué)習(xí)算法與Python實(shí)戰(zhàn)本文約800字,建議閱讀4分鐘
本文為你總結(jié)RNN模型結(jié)構(gòu)的優(yōu)缺點(diǎn)。
標(biāo)簽:神經(jīng)網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的載體,而神經(jīng)網(wǎng)絡(luò)模型中,最經(jīng)典非RNN模型所屬,盡管它不完美,但它具有學(xué)習(xí)歷史信息的能力。后面不管是encode-decode 框架,還是注意力模型,以及自注意力模型,以及更加強(qiáng)大的Bert模型家族,都是站在RNN的肩上,不斷演化、變強(qiáng)的。
這篇文章,闡述了RNN的方方面面,包括模型結(jié)構(gòu),優(yōu)缺點(diǎn),RNN模型的幾種應(yīng)用,RNN常使用的激活函數(shù),RNN的缺陷,以及GRU,LSTM是如何試圖解決這些問題,RNN變體等。這篇文章最大特點(diǎn)是圖解版本,其次語言簡練,總結(jié)全面。概述
傳統(tǒng)RNN的體系結(jié)構(gòu)。Recurrent neural networks,也稱為RNNs,是一類允許先前的輸出用作輸入,同時(shí)具有隱藏狀態(tài)的神經(jīng)網(wǎng)絡(luò)。它們通常如下所示:對(duì)于每一時(shí)間步t,激活函數(shù)
輸出
被表達(dá)為:
這里
是時(shí)間維度網(wǎng)絡(luò)的共享權(quán)重系數(shù),
是激活函數(shù)。下表總結(jié)了典型RNN架構(gòu)的優(yōu)缺點(diǎn):

RNN模型主要應(yīng)用于自然語言處理和語音識(shí)別領(lǐng)域。下表總結(jié)了不同的應(yīng)用:
對(duì)于RNN網(wǎng)絡(luò),所有時(shí)間步的損失函數(shù)L是根據(jù)每個(gè)時(shí)間步的損失定義的,如下所示:
在每個(gè)時(shí)間點(diǎn)進(jìn)行反向傳播。在時(shí)間T,損失L相對(duì)于權(quán)重矩陣W的偏導(dǎo)數(shù)表示如下:
處理長短依賴

在RNN中經(jīng)常遇到梯度消失和爆炸現(xiàn)象。之所以會(huì)發(fā)生這種情況,是因?yàn)楹茈y捕捉到長期的依賴關(guān)系,因?yàn)槌朔ㄌ荻瓤梢噪S著層的數(shù)量呈指數(shù)遞減/遞增。梯度修剪是一種技術(shù),用于執(zhí)行反向傳播時(shí),有時(shí)遇到的梯度爆炸問題。通過限制梯度的最大值,這種現(xiàn)象在實(shí)踐中得以控制。為了解決消失梯度問題,在某些類型的RNN中使用特定的門,并且通常有明確的目的。它們通常標(biāo)注為
,等于:
其中,W,U,b是特定于門的系數(shù),
是sigmoid函數(shù)。主要內(nèi)容總結(jié)如下表:
Gated Recurrent Unit(GRU)和長-短期記憶單元(LSTM)處理傳統(tǒng)RNNs遇到的消失梯度問題,LSTM是GRU的推廣。下表總結(jié)了每種結(jié)構(gòu)的特征方程:注:符號(hào)*表示兩個(gè)向量之間按元素相乘。

https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-recurrent-neural-networks