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 鏈接:https://github.com/shreyashankar/char-rnn-tensorflow
本著實踐是檢驗真理的唯一標準,數問也親自試驗了一把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
https://medium.com/towards-data-science/https-medium-com-sh-reya-taylor-swift-or-artificial-intelligence-19f2989ab7a4
推薦閱讀:
※[22] Python函數(三)
※新加坡國立和南洋理工讀本科哪個更好?
※【估算】計算機對兩個簡單自然數做相乘運算需要多少時間?
※進入計算機領域學習的學生已經太多了嗎?
※編寫一個iOS小程序的完整流程是什麼?