1. 程式人生 > >莫煩python|Tensorflow筆記--什麼是迴圈神經網路RNN

莫煩python|Tensorflow筆記--什麼是迴圈神經網路RNN

我們在想象現在有一組資料序列,Data0,Data1,Data2,Data3,預測Results0的時候基於Data0,同意在預測其他結果的時候也是基於其他的數字。每次使用的神經網路都是同一個NN。如果這些資料是有關聯順序的,那麼就要遵從它們之間的順序,否則就串位了。但是普通的神經網路結構並不能讓NN瞭解這些資料之間的關聯。

那麼我們如何讓資料間的關聯也被NN加以分析呢?想想人類是怎麼樣分析各種事物的關聯吧。最基本的方式就是記住之前發生的事情,那我們也讓神經網路具備記住這些之前發生事情的能力。在分析Data0的時候,我們把分析結果存入記憶,然後當分析Data1的時候NN會產生新的記憶,但是新的記憶和老的記憶並沒有關聯,我們就簡單的把老的記憶呼叫過來一起分析,如果繼續分析更多的資料,NN就會把之前的記憶都累計起來一起分析。

我們再重複一遍剛才的流程,不過這一次加了一些數學方面的東西。現在的NN變成了我們所說的RNN迴圈神經網路,每次RNN運算完以後都會產生一個對當前狀態的描述state,用簡寫S(t)來表示。然後RNN開始分析x在t+1的時刻,它們會根據x(t+1)產生s(t+1),不過此時Y(t+1)是由s(t)和s(t+1)共同創造的。所以我們通常看到的RNN也就可以表達成圖中看到的樣子。

RNN的形式不單單隻有這樣一種,它的結構形態很自由。如果用於分類的問題,如果說有個人說了一句話,這句話帶有的感情色彩是積極的還是消極的。那我們就可以用只有最後一個時間點輸出判斷結果的RNN,又或者這是用於圖片描述的RNN,我們只需要一個X來代替輸入的圖片,然後生成對圖片描述的一段話或者是語言翻譯的RNN,給出一段英文然後將其翻譯成中文。有了這些不同形式的RNN,RNN就變成了越來越強大,已經有很多有趣的RNN應用。比如說之前提到的讓RNN來描述照片,讓RNN來寫學術論文,讓RNN來寫程式指令碼,讓RNN來作曲,我們一般人甚至不能分辨這到底是不是機器寫出來的。