Taylor Swift和人工智慧 - 誰的歌詞寫得更好?

內容來自數問社區:Taylor Swift vs 人工智慧:誰更強?

文章最後有RNN演算法的具體教程

要說8月下旬兩件爆炸性的新聞,除了22日超級日食橫穿美國,吸引了6600萬網友和創造了2.4億次話題討論量以外,就輪到霉霉發布的TS6《Reputation》!那首讓人費解而又極具魔力的《Look What You Made Me Do》釋出一周左右就以洪荒之力席捲各大榜單,目前Youtube上已達1.81億次觀看量。目前暗黑風又酷又帥的二單《Ready For It》也已公布。Taylor勢必創造一股「後日食」之力讓全球為之瘋狂。

Taylor憑藉她的音樂天賦寫出了《Reputation》這張專輯。在人工智慧的時代,machine learning是否也能寫出音樂專輯呢?如果machine learning也能寫一張《Reputation》,與Taylor的相比,哪張更強更受歡迎呢?

從小我就是Taylor Swift的粉絲。還在上中學的時候,我的Ipod Nano里播的最多的歌就是來自 Speak Now 這張專輯。到現在我都還記得,大二的時候,當父母都熟睡以後,一個人窩在電腦前找 Red 這張專輯的資源,因為我買不起實體盤。

就這樣,上周晚上我也睡得很晚,正熱切期待Taylor新專輯 Reputationthe 的試聽版。但當我看到 「Look What You Made Me Do」 這首歌 打破了Youtube記錄 的時候,說實話,其實我是有點失望的。不要誤會?,?這首歌我至少聽了不下20遍。但是Taylor那強力的歌詞和抓人的旋律到底怎麼了?我感覺有點陌生,為什麼這首歌充滿了恨和復仇?

過去的一個周末里,我想試試用機器學習能不能為Taylor寫出更好的歌詞。於是我把Taylor所有的歌詞都輸入到一個遞歸神經網路(RNN)中,並採集了一些新歌詞作為樣本。這是我得到的結果:

訓練結果1

訓練結果2

兩份不同的樣本,每個大約900個字元


讀完演算法生成的這些歌詞後,我得出的結論是,Taylor自己寫的歌詞無疑是最適合她自身音樂風格的。然而,這些演算法生成的歌詞中,雖然很多歌詞語法奇怪、不少單詞拼寫錯誤,並且大部分的句子並不通順,甚至很多時候引號和括弧不全。但是,?我著實被RNN的神力給驚艷到了!

在提供sample以後,它能夠自動學會書寫歌詞的結構,包括標點符號的使用、每句歌詞的長度,以及換行的時機!


讓我再來嘗試一個有趣的深度學習,這次的創作對象是「歌名「。我用同一個RNN進行訓練,以下是根據Reputation這張專輯所產生的歌名:

Go won』t hit me there

Your love through all

We said to be better

Walls if miles

No conversation

I should ever say that

I don』t wanna see the way

I don』t leave you here

You want to me

And we say how I just

Anything a good taft

Love there on more

就像歌詞的創作結果那樣,這些深度學習生成的歌名有些不盡人意,例如「Anything a good taft」聽起來就怪怪的,不太make sense。但我還是驚訝地發現當中不乏極具「Taylor精神」的歌名:比如「Your love through all」和「I don』t wanna see the way」。


技術細節:

我從TensorFlow上fork了一個Andrej Karpathy的char-RNN 應用。我發現了一個很棒的 .txt file ,當中包含了所有Taylor Swift 的歌詞。Code對應的模型用的是長短期記憶(LSTM),一共有3層,hidden state的大小是12,採用了dropout的方法。我沒有做任何的超參調優(hyperparameter testing),所以肯定還有改進空間。

下面開始為教程部分

Github 鏈接:github.com/shreyashanka

本著實踐是檢驗真理的唯一標準,數問也親自試驗了一把char-RNN,效果還不錯,特此把這次實驗流程作為教程送給大家!

實驗過程非常簡單,請跟著我的節奏來!

1. 首先你需要安裝python以及python的一些科學計算包,這裡推薦Anaconda進行集成化安裝;

2. 安裝TensorFlow,在Terminal(Windows是cmd)里輸入

pip install tensorflown

即可安裝大名鼎鼎深度學習包,TensorFlow;

3. 到GitHub上clone或者下載這個repository。如果是下載,下載後需要先解壓文件,clone的話就不需要;

4. 在Terminal里,輸入命令行

cd /Users/apple/Documents/n

文件所在目錄

5. 接下來再輸入

python train.pyn

就開始通過char-RNN演算法來訓練這個數據集。train.py里默認的是抓取data文件夾下一個叫tinyshakespeare的莎士比亞劇本作為訓練集;

6. 訓練的過程如下:

7. …….過了大約20-30分鐘,訓練完畢;

8. 這時候輸入命令行python sample.py即可查看生成的結果了

(結果從Home try. Romeo開始)


怎麼樣?過了把深度學習的癮,爽不爽!當然啦,這遠不是最優的模型,你可以通過train.py參數調整來指定其他數據集,卷積層數和深度,來達到更好的訓練效果。

如果你訓練出了更加優美,甚至媲美Reputation這張專輯的歌詞,請第一時間給小管家我說哦!

———

更多數據分析乾貨請關注數問專欄 | 數問社區: dataquestion.com

medium.com/towards-data

推薦閱讀:

[22] Python函數(三)
新加坡國立和南洋理工讀本科哪個更好?
【估算】計算機對兩個簡單自然數做相乘運算需要多少時間?
進入計算機領域學習的學生已經太多了嗎?
編寫一個iOS小程序的完整流程是什麼?

TAG:人工智能 | 计算机科学 | 数据挖掘 |