當前位置:
首頁 > 最新 > RNN-生成古詩

RNN-生成古詩

01

RNN

循環神經網路(Recurrent neural Network,RNN)出現於20世紀80年代,在其發展早期,應用不是特別豐富。最近幾年,由於神經網路結構的進步和GPU上深度學習訓練效率的突破,RNN變得越來越流行。RNN對時間序列數據非常有效,其每個神經元可通過內部組件保存之前輸入的信息。

樣本序列性:樣本間存在順序關係,每個樣本和它之前的樣本存在關聯。比如說,在文本中,一個詞和它前面的詞是有關聯的;在氣象數據中,一天的氣溫和前幾天的氣溫是有關聯的。

傳統的神經網路不能實現這個功能,例如CNN雖然可以對圖像進行分類,但是可能無法對視頻中每一幀圖像發生的事情進行關聯分析,我們無法利用前一幀圖像的信息,而RNN則可以解決這個問題。RNN的結構如下圖:

Recurrent Neural Networks have loops.

循環可以使得信息可以從當前步傳遞到下一步。這些循環使得 RNN 看起來非常神秘。然而,如果你仔細想想,這樣也不比一個正常的神經網路難於理解。RNN 可以被看做是同一神經網路的多次賦值,每個神經網路模塊會把消息傳遞給下一個。所以,我們可以將這個循環展開成一個串聯的結構:

An unrolled recurrent neural network.

在過去幾年中,應用 RNN 在語音識別,語言建模,翻譯,圖片描述等問題上已經取得一定成功,並且這個列表還在增長。而這些成功應用的關鍵之處就是 LSTM 的使用,這是一種特別的 RNN,比標準的 RNN 在很多的任務上都表現得更好。幾乎所有的令人振奮的關於 RNN 的結果都是通過 LSTM 達到的。

02

LSTM

RNN雖然被設計成可以處理整個時間序列信息,但是其記憶最深的還是最後輸入的一些信號。而更早之前的信號的強度則越來越低,最後只能起到一點輔助的作用,即決定RNN輸出的還是最後輸入的一些信號。

對於某些簡單的問題,可能只需要最後的輸入的少量時序信息即可解決。但對某些複雜問題,可能需要更早的一些信息,甚至是時間序列開頭的信息,但間隔太遠的輸入信息,RNN是難以記憶的,因此長程依賴(Long-term Dependencies)是傳統RNN的致命傷。

Long Short Term Memory, LSTM ——是一種 RNN 特殊的類型,可以學習長期依賴信息。LSTM 由 Hochreiter & Schmidhuber (1997) 提出,並在近期被 Alex Graves 進行了改良和推廣。在很多問題,LSTM 都取得相當巨大的成功,並得到了廣泛的使用。

The repeating module in an LSTM contains four interacting layers.

LSTM的內部結構相比RNN更複雜,其包含了4層神經網路,其中小圓圈是point-wise的操作,比如向量加法、點乘等,而小矩形則代表一層可學習參數的神經網路。LSTM單元上面的那條直線代表了LSTM的state,它會貫穿所有串聯在一起的LSTM單元,從第一個LSTM單元一直流向最後一個LSTM單元,其中只有少量的線性干預和改變。狀態state在這條隧道中傳遞時,LSTM單元可以對其添加和刪除信息,這些對信息流的修改操作又LSTM中的Gates控制。http://colah.github.io/posts/2015-08-Understanding-LSTMs/

03

生成古詩

RNN生成古詩,你給它輸入一堆古詩詞,它會學著生成和前面相關聯的字詞。如果你給它輸入一堆姓名,它會學著生成姓名;給它輸入一堆古典樂/歌詞,它會學著生成古典樂/歌詞,甚至可以給它輸入源代碼讓它寫程序。

這裡基於詞頻,取前多少個常用字,每個字映射為一個數字,把詩轉換為向量形式。構建LSTM,隱含層節點數為128,batch_size設為64,訓練100個epoch。生成的古詩,效果如下:

面鎖樓香風滿斜,椒花松去玉霄宮。

朝登月落還不曙,槍旗折盡如柳映。

大甲供池柳滿城,草青喬木下新煙。

海沂斜殺魏春生,莫令繁華二十邦。

春山足病不知量,月洗上人為我知。

暖江芳草蘚層樓,猶有前朝送一帆。

花前早晚有親思,何事當年把酒醒。

開河鵲沼滿銀船,隱得朱城堤拂衢。

可以看出來詩的大概結構已經出來了,但內容不足,而且不押韻。可以加語料,改變詞向量的處理方式,增加訓練次數。

暗中觀察

GIF

默默關注


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 十萬寶貝 的精彩文章:

卷積神經網路
Deep Learning-風格遷移

TAG:十萬寶貝 |