RNN-Recurrent Neural Networks
本文結(jié)構(gòu):
什么是 Recurrent Neural Networks ?
Recurrent Neural Networks 的優(yōu)點(diǎn)和應(yīng)用?
訓(xùn)練 Recurrent Neural Networks 的問(wèn)題?
如何解決?
何時(shí)用 RNN 何時(shí)用前饋網(wǎng)絡(luò)呢?
什么是 Recurrent Neural Networks ?
普通的前饋神經(jīng)網(wǎng)絡(luò)模型,它的結(jié)構(gòu)是信號(hào)以一個(gè)方向從輸入走到輸出,一次走一層。

在 RNN 中,前一時(shí)刻的輸出會(huì)和下一時(shí)刻的輸入一起傳遞下去。
可以把這個(gè)過(guò)程看成是一個(gè)隨著時(shí)間推移的流。
在這里顯示的是四個(gè)時(shí)間點(diǎn),在t=1的時(shí)候,網(wǎng)絡(luò)取到t=0的時(shí)候的輸出,并且將它和下一個(gè)輸入一起發(fā)送回給網(wǎng)絡(luò)。

Recurrent Neural Networks 的優(yōu)點(diǎn)和應(yīng)用?
和前饋神經(jīng)網(wǎng)絡(luò)不同,RNN 可以接收一系列的數(shù)據(jù)作為輸入,而且也可以返回一系列的值作為輸出。這種可以處理序列化數(shù)據(jù)的功能,使得這個(gè)網(wǎng)絡(luò)得以非常廣泛的應(yīng)用。
當(dāng)輸入是一個(gè)的時(shí)候,輸出是一個(gè)序列的時(shí)候,這可以用于 image captioning (讓計(jì)算機(jī)用一句話來(lái)描述這張圖片)。

輸入是一個(gè)序列,輸出是1個(gè)數(shù)據(jù)的時(shí)候,這個(gè)模型可以被用來(lái)分類。

當(dāng)輸入是一個(gè)序列,輸出也是一個(gè)序列的時(shí)候,可以用來(lái)對(duì)視頻一幀一幀的分類。

當(dāng)引入時(shí)間延遲的時(shí)候,就可以用于供應(yīng)鏈計(jì)劃里的需求預(yù)測(cè)。

當(dāng)把幾個(gè)RNN堆起來(lái)時(shí),得到的這個(gè)新的網(wǎng)絡(luò)就可以輸出比單獨(dú)一個(gè)RNN更為復(fù)雜的結(jié)果。

訓(xùn)練 Recurrent Neural Networks 的問(wèn)題?
RNN 是很難被訓(xùn)練的,訓(xùn)練的時(shí)候也使用 Back Propagation,所以這也存在著梯度消失的問(wèn)題,而且這個(gè)梯度消失的問(wèn)題會(huì)是指數(shù)級(jí)別的。
原因就是,RNN的每個(gè)時(shí)間點(diǎn),就相當(dāng)于一個(gè)前饋神經(jīng)網(wǎng)絡(luò)的整個(gè)層,
所以訓(xùn)練100步的模型就相當(dāng)于訓(xùn)練一個(gè)100層的前饋網(wǎng)絡(luò)。
這就造成了隨著時(shí)間的推移,梯度會(huì)以指數(shù)級(jí)的速度減小,進(jìn)而造成信息的衰變。

如何解決?
有很多方式可以解決這個(gè)問(wèn)題,其中之一就是 Gating。
這個(gè)技術(shù)的好處就是它可以決定,什么時(shí)候需要忘記當(dāng)前的輸入,什么時(shí)候需要記住它,以便將來(lái)的步驟里會(huì)用到它。
今天最流行的 Gating 就是 LSTM 和 GRU。
當(dāng)然也有一些其他的方法 Gradient clipping, Better optimizer, Steeper Gates。

訓(xùn)練神經(jīng)網(wǎng)絡(luò)的時(shí)候用 GPU 要比用 CPU 好。
研究表明,用 GPU 訓(xùn)練會(huì)比 CPU 訓(xùn)練快250倍。(現(xiàn)在可能更快了)
這就是一天和八個(gè)月的區(qū)別。
何時(shí)用 RNN 何時(shí)用前饋網(wǎng)絡(luò)呢?
前饋神經(jīng)網(wǎng)絡(luò),它會(huì)輸出一個(gè)數(shù)據(jù),可以用來(lái)做分類或者回歸。
RNN 適合時(shí)間序列的數(shù)據(jù),它的輸出可以是一個(gè)序列值或者一序列的值。
所以說(shuō),如果要做分類或者回歸的話,可以用前饋是神經(jīng)網(wǎng)絡(luò),如果要預(yù)測(cè)的話,可以用循環(huán)神經(jīng)網(wǎng)絡(luò)。
我是 不會(huì)停的蝸牛 Alice
85后全職主婦
喜歡人工智能,行動(dòng)派
創(chuàng)造力,思考力,學(xué)習(xí)力提升修煉進(jìn)行中
歡迎您的喜歡,關(guān)注和評(píng)論!