AI:「周杰倫請安心帶孩子,大家聽的都是我寫的歌」
有沒有想過,未來你也可以像周杰倫、林俊傑、李宗盛一樣成為創作型的音樂人?你要的,只是感覺,其他的,人工智慧的研究人員已經幫你做好了。
如果你以為這只是一篇聳人聽聞的文章,你就大錯特錯了。這是一篇技術性非常強的文章,從歷史的源頭出發告訴你,為什麼人工智慧未來將替代作曲家。
如果你對人工智慧有一定的了解,又是一位音樂愛好者,那麼這篇文章,會讓你受益良多。
人工智慧到底是如何一步步取代了作曲家
要說到自動作曲,這個歷史可就相當久遠了。
從某種意義上說,第一個自動生成音樂來自大自然:中國的風鈴,古希臘的風琴,或日本的水樂器。
不過,從18世紀起,自動生成音樂方式開始變成了演算法。
「Musikalisches Würfelspiel」,這是一個使用骰子的系統,它可以從預先組合的紙片選項中隨機地選幾片「生成」音樂。
https://en.wikipedia.org/wiki/Musikalisches_W%C3%BCrfelspiel
點擊看一段視頻,感受感受吧。
https://youtu.be/fK2MCXpDWB4
MusikalischesWürfelspiel的例子。
二十世紀初,自動合成音樂的演算法再次升級。
彼時,馬爾科夫鏈開始正式用於建模概率系統,也可用於新音樂的合成。
它比骰子系統更隨機。
這體現在兩個方面:首先,它可以從現有內容來構建,而不需要事先進行組合好的音樂片段。其次,馬爾可夫鏈不是假定每個片段具有相等的概率,而是根據上下文編碼概率的變化來自行確定。
「Remixing Noon」 by Rev Dan Catt: 馬爾可夫鏈通過散文訓練的可能路徑的可視化
Iannis Xenakis曾在他1958年的「 Analogique 」中使用馬爾可夫鏈,並在「 程序化音樂:作曲的思想和數學 」中描述了這個過程。來看看他當時轉換矩陣的細節,正是這些矩陣定義了產生某些音符的概率。
第3章「馬可夫隨機音樂:應用」
音樂合成的演算法還在持續升級。
1981年,David Cope開始將馬爾可夫鏈和其他技術(音樂語法和組合)組合成他稱之為智能音樂的半自動系統Emmy。
https://soundcloud.com/machinelearningmusic/mazurka-after-chopin-by-david-cope
這是David Cope用Emmy合成的音樂,更多請點擊這裡
http://artsites.ucsc.edu/faculty/cope/mp3page.htm
可是,基於一定訓練集的馬爾可夫鏈只能產生存在於原始數據中的子序列,想要產生新的怎麼辦呢?
這就需要更高級的演算法了——循環神經網路(RNN),它可以產生新的、沒有在訓練集出現的序列。
1989年,由Peter M. Todd,Michael C. Mozer和其他人開發的RNN,首次使用RNN製作音樂,但受到短時依賴的限制,訓練序列不能太長。
http://www.indiana.edu/~abcwest/pmwiki/pdf/todd.compmusic.1989.pdf
來看看RNN做的音樂
https://soundcloud.com/machinelearningmusic/after-bach-by-michael-c-mozer
由Michael C.Mozer 的CONCERT系統產生的Bach風格的三個簡短的作品。
2002年,Doug Eck 從普通RNN切換到「長短時記憶網路」(LSTM)。利用這個方法,便可以簡短的音樂片段來即興創作藍調。
他曾在筆記中寫到這麼一句:「只要有人願意傾聽,LSTM就能夠以良好的節奏和正確的調式來演奏藍調。」
欣賞一下LSTM製作的音樂吧
https://soundcloud.com/machinelearningmusic/lstm-blues-improvisation-composition-4-by-doug-eck
更多不同音樂可以參考這裡
http://www.iro.umontreal.ca/~eckdoug/blues/
Doug是Google Brain Magenta團隊的帶頭人,自2016年初以來,他們一直在致力於機器學習和創造力相關的代碼開發。
Magenta團隊將基於LSTM的方法應用於鼓模式生成,旋律生成和複音音樂合成。
目前,他們已經開發了與人類表演者一起演奏即興二重奏的系統,以及能產生有表現力的音量變化和節奏感工具。
https://soundcloud.com/machinelearningmusic/performance-rnn-by-magenta
1.https://magenta.tensorflow.org/performance-rnn
2.https://tambien.github.io/deeplearnjs/demos/performance_rnn/
訓練這些系統遇到的經常性困難之一是如何設計音樂的特徵表示。
雖然為RNN設計的編碼可以把文本進行轉換,但與文字不同的是,音樂中的單一時刻可以包含多個符號:它可以是和弦,也可以是各種音的組合,還可能有長時間無音樂播放。這些差異需要通過仔細制定音樂的特徵表示,或者通過修改數據集和設計能夠學習其中所有變化的架構來解決。
以數據驅動的演算法面臨的其他重大挑戰還包括:要使用哪些數據?誰的音樂合適等?
任何自動化運行的系統都需要接受大量數據訓練,可是這樣的話,系統最後的預測結果風格往往更傾向於訓練數據。
在音樂中,這意味著會產生很多和巴赫,貝多芬和其他老歐洲男人相似風格的音樂。由於數據也由研究人員選出,他們是一個相對同質化的群體,所以也導致了音樂的同質性。
雖然LSTM比普通的RNN或馬可夫鏈能更好的處理長片段問題,但是在產生簡短音樂片段和產生完美作品之間仍然存在差距。一些不需要大量的技巧和手動調整的方法還沒有出現。不過,Jukedeck,Aiva,Amper等人的創業公司正在努力解決這個問題。
大公司也沒閑著。
來自索尼計算機科學實驗室的Fran?oisPachet,現在在Spotify,從他的Continuator到最近的Flow Machines都在一直研究演算法合成音樂。
以下為相關的音樂鏈接
https://youtu.be/ynPWOMzossI
「Continuator」(2000)由Fran?oisPachet設計,可以自動學習學習音樂家演湊的音樂。
https://youtu.be/LSHZ_b05W7o
這是在索尼CSL研究項目中,由Fran?oisPachet主導的「Daddy s Car」(2016)。這是一個能自主產生音樂或與人類藝術家合作的人工智慧系統。
IBM也在做類似嘗試。
IBM Watson團隊開發了一個名為Watson Beat系統的,可以根據旋律提示以有限數量的樣式生成完整的曲目
https://soundcloud.com/ibmresearch/fallen-star-amped
Watson團隊的其他研究人員與Alex Da Kid合作,根據社交媒體和文化挖掘的數據,為音樂提供主題和靈感。
以上介紹了三種製作音樂的演算法:骰子遊戲,馬爾科夫鏈和RNN。不過,它們可不是製作演算法音樂的唯一方法。
神經網路在音樂上的表現,最近遠超人們的想像。
隨著Andrej Karpathy的一篇非常受歡迎的文章「 循環神經網路無法解釋的驚人效果 」 發布出來,RNNs逐漸流行了起來。
Andrej Karpathy表示,一個相對簡單的神經網路(char-rnn)可以穩定重現任何類似「look and feel」這樣的文字,不管是莎士比亞文集還是C ++語言。正如骰子遊戲的流行是由於對數學興趣和音樂的完美追求。
Andrej的文章出現的同時,讓人們對神經網路的興趣開始激增。
有些人受到char-rnn的啟發,開發出專門用於音樂工作的架構。值得注意的例子是Daniel Johnson和Ji-Sung Kim、Christian Walder創造性地使用了LSTMs:他們從預先定義的節奏開始,讓神經網路預測音高。
一些愛好者甚至把char-rnn用到了極致,他們直接使用原始的音頻數據。
https://youtu.be/eusCZThnQ-U
Joseph L. Chu,在30分鐘的「 日本流行搖滾樂隊 」數據集上的訓練結果
https://youtu.be/q0ZdSAkGo48
Priya Pramesi在Joanna Newsom數據集上的訓練結果。
不幸的是,char-rnn難以抽象表達原始聲音的特徵。
在機器學習中,這與「過擬合」有關:模型可完全地擬合訓練數據,但不能有效地泛化到沒有被訓練的新樣本。
在開始訓練的時候,模型無論在訓練或測試數據上表現都不佳,經過多次迭代訓練後,兩者表現越來越好。但是如果訓練太長時間,儘管訓練誤差一直在降低,但對測試數據會變得更糟。研究人員應在達到這個平衡點之前停止訓練。但過擬合對生成音樂這類問題並不是很重要。
在2016年9月DeepMind發表了他們的WaveNet研究,據說可以為每一個樣本建立音頻的更高層次的特徵。
WaveNet架構中使用的卷積圖
在8位值的範圍內,單個樣本的概率分布
他們使用卷積網路,而不是使用循環神經網路來學習表示。卷積網路學習通過很多卷積核。它們通常用於圖像處理,但WaveNet會將時間視為空間維度。
https://soundcloud.com/machinelearningmusic/wavenet-music-samples-1-6
WaveNet經過YouTube上鋼琴音樂訓練得到的。
可以看一下作者們的背景,WaveNet有一些有趣的前輩。
Sander Dieleman是音樂音頻端到端學習(2014年)的第一作者,這是一個少見的早期例子,它使用神經網路逐個處理原始音頻用於類型分類。
A?ronvan den Oord是Pixel Recurrent Neural Networks(2016)的第一作者,介紹了逐像素生成圖像的網路。
Alex Graves,除了對語音和循環神經神經網路有長期的研究外,還在2015年3月展示了一種端到端訓練的神經網路,用於合成語音。
關於WaveNet研究,我最喜歡事之一就是Sageev Oore製作這段鋼琴曲,他當時在谷大腦里休假。
https://youtu.be/xTVwYFpK5Mo
Sageev Oore 表演WaveNet生成的音樂 「sample_3.wav」
在2017年4月,Magenta在WaveNet上創建了NSynth,這是一種分析和生成單音樂器聲音的模型。他們與谷歌創意紐約實驗室合作,一起創建了一個由nsynth驅動的「Sound Maker」實驗。
Demonstration of linear interpolation between two sounds compared to NSynth interpolation.
2017年2月,由Yoshua Bengio領導的蒙特利爾團隊發布了SampleRNN。這項研究受到來自Ishaan Gulrajani的實驗的影響,他們在原始音頻上訓練了一個分層版本的char-rnn。
SampleRNN架構的簡化圖:分較慢的時間尺度(層2和3),較快的時間尺度(層1)。均採用相同的上採樣比。
https://soundcloud.com/samplernn/samplernn-blizzard-mu-law-1
SampleRNN從一個人(Blizzard數據集)聲音數據中訓練了超過一百個小時後的結果。
https://soundcloud.com/samplernn/samplernn-music-1
SampleRNN在貝多芬的所有32首鋼琴聲中進行訓練的結果。
https://soundcloud.com/psylent-v/samplernn-tangerine-dream-1
Richard Assar以Tangerine Dream這首曲子為訓練數據,並訓練了32小時。
SampleRNN和WaveNet都花費了非常長的時間來訓練(超過一周),沒有優化(如fast-wavenet),它們比實時生成的速度慢許多倍。為了減少訓練和生成時間,研究人員使用16kHz和8位的音頻。
但是對於像Google或百度這樣的公司來說,音頻生成的主要應用就是文字轉聲音,而快速生成是必不可少的。2017年3月,Google發布了他們的Tacotron,該研究使用光譜表示作為中間輸出步驟,使用一系列字元(文本)來作為輸入生成音頻。
Tacotron架構,涉及技術包括注意力,雙向RNN和卷積
Tacotron 演示示例與WaveNet類似,具有一些小的差異。逐幀生成音頻的最後合成步驟依賴於Griffin-Lim的構建,這對於複音(單音的組合)和雜訊來說魯棒性不強,可以說這是一個缺陷。百度在Deep Voice 2研究中用到了Tacotron架構,通過添加一些特殊的結束狀態來提高音頻質量。雖然有很多與語音合成有關的其他研究,但和音樂相關的比較少。
下一個研究領域在哪裡?
目前音樂自動生成正在探索的一個領域是基於語料庫與幀級表示相結合來進行合成。
拼接合成是語音合成中常見的方法。這些技術也在紋理合成的聲音設計中用了很長一段時間。
不過這種基於語料庫的方法有個重大缺陷,它無法產生一個從來沒有出現在原始語料庫中的音頻「片段」。
比如,在基於所有巴赫音樂的語料庫訓練模型中,巴赫從來沒有寫過C小調大7和弦,那麼你將永遠不會生成C小調大七和弦,即使該模型會產生和弦中的每個音符,即使它甚至學習如何表示相應的幀,也不會進行合成這些和弦。
為了克服這個限制,也許在逐幀的細粒度建模和音頻分解的研究中,還有一些東西需要探索。
在研究方法方面,我至少看到兩個反覆出現的問題。
首先,我們應該使用什麼樣的特徵表示?
有很多種表示方式,比如直接使用聲音原始數據,還是轉換成頻譜,或者把聲音按照音高進行離散表示。我們使用哪種方式呢?構建這樣的系統我們需要多少領域專有知識?
第二,我們如何與這些系統進行交互?
因為從大量的音樂數據中學習的模型,生成的音樂會與作為訓練數據的風格相似。我們希望模型來產生和訓練語料類似的音樂,還是創新出不同風格的?對於如何構建完整的作品,還是如何即興創作。我認為這些問題不只有一個答案,我們應該擴大想像力來探索聲音特徵表示和模型交互。
未來,音樂人真的會失業嗎?
未來,當人工智慧足夠強大,強大到可以以假亂真,可以替代人類作曲家時,音樂人會不會真的失業?
研究人員通常比較傾向的說法是,他們是「不試圖取代人類」,他們只是試圖「建立新工具」,鼓勵音樂家將人工智慧及演算法視為合作者,「輔助」人類創作。
那如果有一天,在沒有任何人類的參與下,人工智慧自己創造了一個完整的曲子,這個曲子還在人群中廣為流傳,這到底是好事還是壞事呢?
如果哪一天,人工智慧強大到,只要你告訴它你想要什麼樣的感覺,他就可以照你的感覺來編輯曲子,那我們豈不是人人都能秒變作曲家?
也許到時候,再不會有周杰倫林俊傑李宗盛這些音樂天才了,因為,你,就是那個天才!
編譯 | AI科技大本營
作者 | Kyle McDonald
原文
https://medium.com/artists-and-machine-intelligence/neural-nets-for-generating-music-f46dffac21c0
烏鎮智庫 資訊盤點
※20年後機器人不如貓?;AI用於金融監管;工業機器人的發展機遇
TAG:烏鎮智庫 |