在前面我們講到了DNN,以及DNN的特例CNN的模型和前向反向傳播算法,這些算法都是前向反饋的,模型的輸出和模型本身沒(méi)有關(guān)聯(lián)關(guān)系。今天我們就討論另一類輸出和模型間有反饋的神經(jīng)網(wǎng)絡(luò):循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks ,以下簡(jiǎn)稱RNN),它廣泛的用于自然語(yǔ)言處理中的語(yǔ)音識(shí)別,手寫書別以及機(jī)器翻譯等領(lǐng)域。
1. RNN概述
在前面講到的DNN和CNN中,訓(xùn)練樣本的輸入和輸出是比較的確定的。但是有一類問(wèn)題DNN和CNN不好解決,就是訓(xùn)練樣本輸入是連續(xù)的序列,且序列的長(zhǎng)短不一,比如基于時(shí)間的序列:一段段連續(xù)的語(yǔ)音,一段段連續(xù)的手寫文字。這些序列比較長(zhǎng),且長(zhǎng)度不一,比較難直接的拆分成一個(gè)個(gè)獨(dú)立的樣本來(lái)通過(guò)DNN/CNN進(jìn)行訓(xùn)練。
而對(duì)于這類問(wèn)題,RNN則比較的擅長(zhǎng)。那么RNN是怎么做到的呢?RNN假設(shè)我們的樣本是基于序列的。比如是從序列索引1到序列索引τ