成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們分析了超過50萬首詩歌,教你用代碼寫詩(附代碼)

開發 前端
代碼即詩歌。這是WordPress軟件的哲學。作為一位程序員和詩人,我一直很喜歡這句話。我決定換種方式思考這句話。我想問,我能用代碼寫詩嗎?我可不可以做一個可以寫出原創詩歌的機器人?為了找出方法,我做了一個實驗。

代碼即詩歌。這是WordPress軟件的哲學。

作為一位程序員和詩人,我一直很喜歡這句話。我決定換種方式思考這句話。

我想問,我能用代碼寫詩嗎?我可不可以做一個可以寫出原創詩歌的機器人?為了找出方法,我做了一個實驗。

首先,我知道如果我的機器人想寫詩,首先要讓它讀詩。2017年,許多作者用WordPress發表了超過50萬個標簽為詩歌的帖子。我聯系了一些寫了許多詩的詩人,并問他們是否愿意和我一起進行一個有趣的實驗:他們是否允許我的機器人讀他們的作品,讓它可以從中學習出詩歌的形式和結構,從而可能學會自己寫詩?特別感謝這些為了科學而合作的很棒的作家們!

  • 邊緣之O - Robert Okaji
  • 沃爾夫的詩 - Linda J. Wolff
  • 詩歌,散文與散步 - Frank Hubeny
  • 生命的視角,宇宙和萬物 - Aurangzeb Bozdar

什么是LSTM,它如何生成文本?

我使用一種名為LSTM的神經網絡創建我的機器人,它也叫作長短期記憶網絡。神經網絡使用“層”將問題分解為許多小問題。

舉個例子,假設你正在訓練一個可以識別正方形的神經網絡。可能一個層負責識別直角,另一個層負責識別平行邊。它們同時存在時圖像才是正方形。神經網絡通過訓練數百萬張正方形圖像,從中學習到這些層。它可以學習到圖像中的哪些方面對于識別正方形是重要的,哪些是不重要的。

現在假設你用一個神經網絡預測這個序列的下一個字母:

  • th_

作為一個普通人,這個任務真是太簡單了。你會猜e,我打賭,如果你會說英文,你肯定不會猜q。因為你知道在英文中th后面不會接q。前面的字母和預測的接下來的字母關聯性非常強。LSTM可以“記住”以前的狀態并以此作出當前的決定。如果想深入了解LSTM是如何工作的,可以查看這個很贊的帖子,作者是谷歌大腦的Chris Olah。

與許多用LSTM生成文本的例子相同,機器人生成文本時每一時刻生成一個字符。想要把單詞聚集成有意義的詩句,首先它要學會如何產生單詞。為了達到這個目標,它需要數百萬個包含有效單詞的序列例子。有一件好事就是:WordPress有很多詩歌!

準備數據集

我從上面的鏈接中獲得了所有的詩歌。我使用一個很簡單的規則,通過判斷每個字符\n對應多少個單詞判斷文本是否是詩歌。如果文本有許多單詞但字符\n很少,它可能是一段或多段文字的集合。相反地,如果同樣的文本有許多行,那么它是詩歌的可能性更大。

當然,這是一個很簡單的方法,我能想出來很多好詩并不符合這樣的測試方法!但為了這個實驗的目的,我特別感興趣的是LSTM是否可以學習出如斷行和節奏等結構特點,以及詩歌中包含的押韻、諧音、頭韻等特點。所以,把訓練數據限制在有結構的詩歌中是有道理的。

如果一段文本被判斷為一首詩,我把它寫到一個文件中,用++++\n作為前綴,表示一首新詩歌的開始。最終獲得了500KB的訓練數據。通常,我嘗試訓練LSTM時都要用至少1MB的數據集,因此我需要尋找更多的詩歌!我在去年發表的標簽為詩歌的公共帖子中隨機選擇樣本作為特色詩人的補充。如果你在WordPress中點擊過詩歌這一標簽,你可能會發現你對它們很熟悉。我在每一個作者中選擇一個帖子作為詩歌。

訓練LSTM網絡

當我獲得1MB的詩歌時,我開始建立LSTM網絡。我使用Python中的keras工具建立神經網絡,keras的GitHub中有許多例子,可以幫助你學習使用幾種不同類型的神經網絡,其中有一個例子就是使用LSTM生成文本。我在這個例子后貼出了我的代碼,并開始嘗試不同的模型配置。模型的目標是生成原始的詩歌。在這個例子中,過擬合--將訓練數據學習得太好以至于模型無法概括數據的特點--會使生成的文本和輸入文本非常相似。(這就像剽竊一樣,沒有詩人喜歡這樣!)避免過擬合的一種方式是在網絡中添加dropout。它迫使在每一步驟中有隨機權重下降到0。這有點像強迫網絡“忘記”一些它剛剛學到的東西。(為了防止詩人的作品沒有被機器人復制,我增加了額外的后期檢查。)

我使用FloydHub的GPU完成訓練我的網絡這一繁重工作。這使我可以用比我的筆記本電腦快10倍的速度訓練我的網絡。我的***個網絡使用一個LSTM層,后面接入一個dropout層。這真的產生了像詩歌的文本!它有斷行和闋,幾乎所有的字符組合都是真正的單詞。有時整句話略微一致,事實上,***個迭代后產生了這句如寶石般精彩的話:

 

[[221901]]

添加LSTM層,在每一層中試驗dropout的參數,直到最終獲得了下面的模型。最終選擇使用3個LSTM層,因為再增加層數會讓訓練時間變得不合理,而且3層的結果已經很不錯了。

 

  1. model = Sequential()  
  2. model.add(LSTM(300, input_shape=(maxlen, len(chars)), return_sequences=True, dropout=  
  3. 20, recurrent_dropout=.20))  
  4. model.add(LSTM(300, return_sequences=True, dropout=.20, recurrent_dropout=.20))  
  5. model.add(LSTM(300, dropout=.20, recurrent_dropout=.20))  
  6. model.add(Dropout(.20))  
  7. model.add(Dense(len(chars)))  
  8. model.add(Activation('softmax'))  
  9. model.compile(loss='categorical_crossentropy', optimizer='adam'

這是一張圖表,對比了增加不同LSTM層的模型對應的損失曲線。

 

[[221901]]
網絡中LSTM層數越多,驗證損失下降的速率就越快。

哎呀!尖峰!表明這種情況通常發生在使用adam作為優化器時。注意到在網絡中增加LSTM層數時,模型的驗證損失下降得更多,而且下降的速率也更快。這意味著遍歷更少的epoch就可以收斂,但增加LSTM層也增加了每一個epoch的訓練時間。網絡中有一層LSTM時,訓練一個epoch需要大約600秒,全部訓練結束需要一夜。然而,3個LSTM層的網絡訓練一個epoch需要7000秒,完成訓練需要幾天。因此,驗證損失下降得更快并不意味著更快得到結果。但在我看來,即使訓練時間很長,3個LSTM層的網絡得到了***的詩歌。

生成詩歌

為了產生完全原創的文本,也需要改變生成文本的方式。在keras的例子中,這個例子從訓練數據中選擇一個隨機的字符序列作為種子,輸入到訓練好的網絡中。我要的是一個可以自己寫詩的機器人,而不是完成其他詩人的提示!因此,我在文本生成步驟中嘗試了不同的種子。因為我之前在訓練集中使用++++\n作為每首詩歌的開始,我認為它可以創作出原始的詩歌。然而結果是\n,_,.和&的無意義的組合。

經過一些嘗試和失敗之后,我發現種子序列需要與訓練序列具有相同數量的字符,這在事后看起來是顯而易見的!最終,我使用300個字符的序列,我將++++\n重復到300個字符作為種子,機器人可以通過偶爾將++++\n分開以此生成每一輪詩歌。

劇本產生新一輪詩歌后,進行了***的抄襲檢查。因此,首先在訓練集中創建了所有獨特的4-grams(包含4個詞的短語)的集合,且對機器人詩歌創建相同集。計算兩集之間的交集。為驗證實驗目的,手動檢查了4-grams,以確保在兩個集合中出現的短語為inane。通常情況下,這個交點包含如下內容:

  • 我不想要
  • 我不能夠
  • 我想成為
  • …的聲音

然后重復這個過程,使用5-grams和6-grams進行良好測量。若要使該過程自動化,可能會采取一種基頻法,排除在多個著作中常見的n-gram,認為是剽竊的情況。

詩歌!

每個時期輸出模型權重意味著我們可以在訓練期間的幾個點上加載模型快照。回顧***模型的早期時代,明顯機器人掉線很快。期望可以將其用于設計上,訓練數據最顯著的特征是每行幾個字符。下面是一個例子,訓練結束后生成的詩歌:

  • 眉頭緊皺 魔杖,一me一me
  • 你會我們穿著和咬
  • 在什么叫什么東西你所有的勇敢

它已經學到了一些實際的詞語,并且模仿了每行之間空行的慣例。從遠處看,如果你不仔細看,看起來的確像是一首詩!在單個LSTM模型的損失收斂之后,模型學習了斷節和斷行,甚至展示一些常見的詩歌性重復。

  • 和美麗的指示
  • 飛翔的方式
  • 我是言語的空間
  • 我曾看見
  • 但你的心將會看到這張臉

單一的LSTM模型的強大套裝毫無疑問是個別性的。除了標題行之外,我喜歡的另一個是:

  • 風只為我

在Inspirobot熱烈的精神之下,Demet從她最喜歡的一行詩創造了寶石:

 

[[221901]]

單一的LSTM模型不能夠精準地掌握詩歌主題,似乎在所有工作中一個共同的線索。即由單一LSTM模型生成的整個詩集詞匯云。

 

我們分析了超過50萬首詩歌,教你用代碼寫詩(附代碼)

迷人!機器人沉迷于太陽和星星。

若太陽成為訓練數據中最普遍的話題,并不令人驚訝,但事實并非如此!這里有由訓練數據生成的文字云。

 

我們分析了超過50萬首詩歌,教你用代碼寫詩(附代碼)

詩人喜歡寫愛情。

艾米莉狄金森寫了關于自然和死亡的詩歌。機器人給個人寫有關天體的詩!

添加第二個LSTM圖層后,可以開始看到其他詩歌技巧,如頭韻和韻律。

  • 可見,會發現
  • 種子微笑
  • 染紅我的一天
  • 一天之法
  • 善良終結

它也開始產生一些非常有詩意的詩歌。與之前模型訓練的單行詩歌類似,有時不知一行。例如,

  1. 黑暗之中有一部分世界
  2. 陰影縈繞

哇,那很深刻!

目前為止,已經看到了行,節,韻(內部和行結尾),重復和頭韻。不錯!但是,偶爾戲劇性的天賦,這時機器人模仿的詩歌通常是不連貫的詞匯集。廢話絕大部分都沒有語法結構。

然而發生了一些變化即增加了第三個LSTM層。這種模式更有可能產生在語法上合理的單行詩,即使仍是荒謬的。例如:

  1. 父親的光芒不是骨骼的拳

這句詩沒有任何意義,但卻正確地放置了詞性。具有一致性,名詞從句具有一般的詩意。三層LSTM模型同樣創作了這些,我認為是很穩定,詩情畫意地講:

  1. 這世界是蝴蝶島
  2. 我深覺孤獨

但三層LSTM模式的***成就正是這首完整的詩。

  1. 來自你內心的陰暗
  2. 我待著
  3. 靈魂中掙扎

這不是大段文字的摘錄。這些單行詩被牢牢地定位在兩個++++\n分隔符之間。

 

[[221902]]

哇,人們好有趣啊,我們將創造奇跡!

特別感謝我的詩人合伙人幫助我進行這個有趣的實驗!一定要訪問他們的網站,閱讀他們的作品!

  • 邊緣之O - 羅伯特Okaji
  • 沃爾夫 詩歌 - 琳達J.沃爾夫
  • 詩歌,散文與散步 - 弗蘭克·胡貝尼
  • 生命的視角,宇宙和萬物 - 奧蘭澤布茲達爾

 

責任編輯:未麗燕 來源: 雷鋒字幕組
相關推薦

2018-03-16 10:52:02

2023-10-27 11:38:09

PythonWord

2018-05-14 10:43:53

平衡數據數據分析Python

2020-03-25 14:40:45

語言編程語言Hello

2018-12-10 10:00:06

Python神經網絡編程語言

2019-10-17 21:37:28

微信飛機大戰Python

2017-10-29 21:43:25

人臉識別

2017-06-23 19:08:23

大數據PyTorch自然語言

2018-06-23 07:38:10

2020-08-25 18:10:22

Python代碼線性回歸

2021-05-18 14:42:55

PythonMySQL

2019-01-24 09:00:00

PythonAutoML機器學習

2024-07-29 13:38:06

2021-08-02 23:15:20

Pandas數據采集

2014-07-22 10:19:19

NeoBundle

2015-04-22 11:29:45

PythonPython創建瀑布圖

2025-05-08 01:44:00

RussGo調試

2020-06-17 08:35:12

數據分析Python代碼

2015-03-23 12:33:28

2014-05-30 10:23:35

SUSESUSE Studio
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品99在线 | 国产精品亚洲精品久久 | 天堂中文av | 亚洲精品中文在线观看 | 国产日韩欧美激情 | 中文字幕一区二区三区乱码图片 | 久久久久中文字幕 | 国产成人小视频 | 97免费在线视频 | 日本在线免费观看 | 成人免费观看网站 | 久久国产欧美一区二区三区精品 | 国产精品资源在线 | 最新国产福利在线 | 亚洲系列第一页 | 五月婷婷在线播放 | 亚洲精品久久久久国产 | 亚洲国产精品久久久久秋霞不卡 | 精品av | av香蕉| 国产精品3区 | www.日韩av.com| 成年网站在线观看 | 久热精品视频 | 亚洲一区亚洲二区 | 国产探花在线精品一区二区 | 羞羞在线视频 | 久久久久久久一区二区 | 午夜寂寞影院列表 | 国产激情91久久精品导航 | 91视频在线看 | 日韩欧美中文字幕在线视频 | 理论片免费在线观看 | 欧美日韩一区二区三区不卡视频 | 久久久精品一区二区 | 一区中文字幕 | 久久久夜| 九色网址| 国产亚洲成av人在线观看导航 | 久久久www成人免费无遮挡大片 | 午夜精品影院 |