當前位置:
首頁 > 最新 > 人工智慧與藝術專題

人工智慧與藝術專題

來源:《中國人工智慧學會通訊》2018年第2期特約專欄

人工智慧與藝術專題

CAAI 2018年 第8卷 第2期 楊潤軒,胡昌然,吳健,胡曉林

近代 AI 作曲技術

近幾年,人工智慧(AI)尤其是深度學習在計算機視覺領域飛速發展,成果顯著。雖然音樂領域則相對顯得不那麼如火如荼,不過也頗有成就。本文旨在介紹AI作曲的發展歷程,重點介紹近幾年相關的工作,並對該領域的研究進行討論和展望。

早期工作

最早期的AI作曲可以追溯到上個世紀50年代。那時AI剛剛起步沒多久,同時又受到硬體性能等的諸多限制,AI作曲基本上完全靠手動添加複雜的規則實現[2]。這些規則主要通過兩種方式得到:其一是根據樂理制定出來,不過應用也相對狹窄,主要用在樂理教學方面;其二也可以通過統計分析已有的音樂數據得出,然後結合馬爾科夫鏈或L系統等生成模型進行創作。這類生成模式隨機性高、生成結果音樂性相對較差,所以當時的AI作曲發展較為緩慢。

隨著硬體性能的提升,人們不再滿足於僅僅依靠制定規則來生成音樂,進化演算法慢慢開始嶄露頭角。進化演算法基本上可以分為三個步驟:給出一部分初始音樂集、根據當前音樂集生成新的音樂集(稱為繁殖演算法)、對樂曲集進行評估篩選(稱為適應度函數),如此反覆。其中初始音樂集可以隨機生成,也可以是從已有的樂曲中手動選擇樣例。繁殖演算法則可以利用已有的生成模型,如馬爾科夫鏈。適應度函數通常是曲子一系列特徵的加權和,如音高和節奏的分布,也可以計算與特定樂曲集之間的距離。此外還有手動評估適應度的做法,例如召集志願者為曲子進行打分,等等。

隨著機器學習和神經網路的高速發展,近幾年的研究幾乎或多或少都利用了神經網路進行AI作曲研究。本文隨後將簡單介紹一下他們的架構和原理。

編碼

對音樂單位進行數學編碼的方式多種多樣,不過大體都有規律可循[1]。描述一個音符通常需要兩個最基本的參數:音高和起始時間。其中音高通常使用MIDI的表示方法,即一個0至127之間的值,每兩個連續的值表示兩個相鄰的半音,例如60表示中央C,往上數八度則是72。此外也有研究不滿足於MIDI使用相同的編碼來表示C?和D?,為了突出其樂理上的區別而使用了類似五線譜的表示方法。

雖然音樂的時間維度是連續的,但是音符通常都會和節拍對齊,所以很少有直接把起始時間用時間維度上的一個單一數值來表示的。最常見的做法是把一個小節用最小音符時長(如十六分音符、八分音符等)量化均分為若干份,然後用one-hot編碼來表示,每一個音符都要和其中某一個量化值對齊。也有預設好一系列時長附加在音符上,然後把音符按照時長堆積起來。極少數研究也會完全無視節拍變化,所有的音符都有相同的時長。

在將音符的音高和起始時間輸入神經網路時,比較普遍的做法是使用一個二維矩陣,音高和節拍各對應一個維度。如果在某一音高和節拍有音符播放時,其在矩陣中對應的位置為1,否則為0。這種編碼方式被稱作one-hot編碼。為了縮減編碼大小,通常會將音高限制在一個特定的範圍內。也有少部分直接將MIDI音高或其對應的頻率值(赫茲)以單個數值的方式輸入神經網路的做法,不過這樣做的問題是相鄰的音高在樂理上並不一定相似,例如兩個差半音的音符在一起並不和諧。

架構與用例

1RNN(循環神經網路)

循環神經網路在普通神經網路的基礎上增加了循環連接,即隱藏層除了會收到上一層的輸入外還會收到當前層的輸入,如圖 1所示。這樣每層既能受到當前數據也能受到歷史數據的影響,擅長訓練有時間或序列概念的數據。RNN在音樂生成中的使用方式通常是根據一些已有的音符序列生成下一段序列,然後再在下一段基礎上繼續生成,如此反覆。這種策略通常需要先用神經網路訓練通過一段音符序列得出可能性最大的下一段序列,然後在生成時先輸入一段起始序列,依次推進。

圖 1 循環神經網路

一個比較有代表性的是RNN案例是Mozer在1994年發布的CONCERT音樂生成系統[3]。他的網路層級比較淺,但是裡面的一些概念至今仍然有影響力。輸入和輸出包括了音符的音高、時長和和弦伴奏。其中在對音高進行編碼時,作者採用了Shrepard的心理學音高表示空間[4],除了我們常見的半音音階之外還增加了五度音階(即C、G、D、A以此類推)。生成時會根據已有的音符和和聲計算下一個音符的概率分布,然後根據概率分布隨機抽取音符。

CONCERT出現在深度神經網路時代之前,作為早期架構的代表作,包含了大量的手工特徵。隨著機器學習的進步,這些特徵抓取的過程正在被深度神經網路慢慢取代。

此外,Johnson的Hexahedria復調生成架構[5]結合了RNN和普通的神經網路,其中循環的部分用來表示時間,即序列中音符之間的關係;非循環的部分用來表示和聲,即相同時間下不同音高之間的關係。架構分為四層,前兩層為循環層,後兩層為非循環層,但是每層的節點之間互相有連接,如圖 2所示。其生成結果已經有相當高的音樂性,旋律連貫,和聲也鮮有錯誤,不過多小節之間的聯繫相對不大,整體走向仍然較為隨機。

圖 2 Hexahedria復調生成架構[5]

2LSTM(長短期記憶網路)

RNN在訓練時遇到的一個問題就是反向傳播中的梯度計算,其中的循環連接會導致多次相乘,很容易引起長期記憶的過度縮小或放大。Hochreiter和Schmidhuber在1997年提出的LSTM[6]很好地解決了這個問題。現代的RNN架構通常都會使用LSTM而非傳統的RNN節點。

Eck和Schmidhuber曾對使用LSTM生成藍調音樂旋律和和弦做過研究[7]。研究中使用了one-hot編碼,並將時間量化設置為八分音符。為了限制編碼大小,旋律部分的音高被限定在包括中央C以上的一個八度13個音高之內,而和弦被限定在不包括中央C以下的12個音高之內,如圖 3所示。和弦用單個音符表示,每個音符都有一個對應的和弦。

圖 3 所有候選的旋律音高和和弦[7]

該神經網路在輸入層和輸出層之間有一個隱藏層,裡面有8個LSTM塊,4個用來生成旋律,另外4個生成和弦。旋律塊會收到旋律和和弦的循環連接,而和弦只有和弦的循環連接。生成時需要一個初始音符和和弦,然後反覆進行前饋式生成。作為相對較早期的研究,該系統仍然有一部分較明顯的缺陷,例如和弦的表示方式不夠豐富,以及訓練集是手工撰寫的,等等。其生成效果旋律相對單調,和聲前後有一定的連貫性也有一些藍調的味道,不過和後期研究相比其隨機性仍然比較明顯。

也有在LSTM基礎上進行更進一步的優化改進,以增強多小節之間的長期關聯的研究,如谷歌大腦的Magenta項目[21]提出了Lookback RNN,在有重複的樂段上手動添加標註,以便網路在訓練時能更快速地找到樂段之前重複的規律;以及Attention RNN,在循環連接上添加了遮罩向量,通過控制不同歷史狀態的權重對當前生成的影響力,可以更好的讓模型注意到與當前生成相關的歷史狀態。兩者在處理樂曲重複段落的性能上有顯著提升。

此外,Wu et al.使用多層級的LSTM網路[20]生成旋律。研究把樂曲的旋律分為小節、節拍和音符三個層級,每個層級對應一個LSTM網路。其中每小節有4個節拍,而每個節拍又被量化為4個音符,即每個音符的最短時長為十六分音符。生成時使用從上至下的策略,先由小節層生成特徵值,然後用這些特徵來生成每個小節內的節拍特徵,然後用小節和節拍的特徵再生成單個音符,如圖 5所示。

圖 5 多層級LSTM旋律生成架構[20]

實驗發現多層級生成出的音樂質量明顯優於單層級的生成結果,尤其表現在節奏之間的關聯和樂句的完整度。此外,由於單層級的節拍和小節關係不明顯,經常導致大量的八分音符和十六分音符堆積,而多層級也很好地解決了這個問題。在最終的音樂雙盲實驗測試中,多層級音樂的混淆度也高於單層級,達到了44.94%。

除了之前提到的LSTM用例之外,還有其他例如Sturm et al.使用凱爾特音樂作為訓練集研究出來的凱爾特旋律生成系統[9],以及Makris et al.用來生成打擊樂的節奏生成系統[10]。後者的音符沒有音高,而是用不同鼓別區分,如底鼓、軍鼓、踩鈸等。兩者都使用了one-hot編碼和前饋策略,架構也和之前提到的例子大體相同。

3自動編碼器

自動編碼器是一個特殊的神經網路,其輸入和輸出節點的數量相同,且網路中間有一個隱藏層節點數量最少,明顯少於輸入和輸出層,稱為瓶頸層,如圖 6所示。

圖 6 自動編碼器架構[1]

自動編碼器在訓練時學習的是恆等函數,即輸出層需要儘可能完整地還原輸入層的內容,使得瓶頸層儘可能地提取出訓練集最主要的特徵。這種架構的主要用途在於瓶頸層是輸入層降維後非常緊湊且高度抽象化的表現形式,非常適合用作音樂生成的種子。

一個非常典型的用例是Sun的DeepHear拉格泰姆旋律生成系統[11]。除了常見的one-hot編碼和十六分音符量化之外,DeepHear使用了共600個小節的拉格泰姆音樂作為音樂庫,每四個小節組成一段。使用的架構如圖 7所示。

圖 7 DeepHear架構[11]

自動編碼器的訓練是以逐層單獨訓練的方式完成的,即先訓練最外層,然後第二層,以此類推,類似深度神經網路的預訓練過程。每層都訓練完畢之後最終還會有一個整體的微調。生成時將一個16維的隨機向量輸入到中間的瓶頸層讓其解碼。解碼結果音樂性較高,不過多個小節之間的銜接稍顯突兀。此外還有一個明顯的缺陷是生成結果有時會重複訓練集中的某段音樂,缺乏獨創性。

自動編碼器的另一個用例是Bretan et al.的單元選取拼接旋律生成系統[12]。不同於大多數系統基於音符創作音樂,這個系統運行方式是將已有的音樂片段按照小節拼接起來,即其顆粒度是一小節而不是一個音符。訓練集涵蓋音樂類型十分廣泛,包括爵士、民謠、古典、搖滾等等共4235張樂譜17萬個小節,外加對訓練集添加所有的移調和時間變化。

訓練時首先手動制定10個樂曲特徵,例如特定音高範圍里的音符數量和節奏組合等等,組成了一個大小為9675的向量,然後用演算法提取每個訓練樣本的特徵向量值。最後用一個自動編碼器將向量壓縮至大小為500,如圖 8所示。

圖 8 特徵向量壓縮架構[12]

下一步是研究如何為某一小節選取最優的下一小節。選取時會對兩項指標進行評估:語義相關性和拼接代價,兩者均使用LSTM網路進行訓練。語義相關性會根據之前算出的大小為500的壓縮特徵向量匹配出最合適的下一小節。拼接代價評估的是當前小節最後一個音和下一小節第一個音之間轉換的和諧度。最後使用特定的排序演算法結合兩項指標進行整體評估。

這個過程可以反覆進行以生成任意長度的旋律,和之前提到的迭代前饋策略非常相似,不過仍有些細微的區別,例如最後的音樂是以小節為單位拼接而成的,樣本選取和評估方式和基於音符作曲的系統不太一樣,生成結果也更符合串燒而非作曲的定義。

4RBM(限制玻爾茲曼機)

限制玻爾茲曼機[14]是一個生成隨機神經網路,用來學習訓練集的概率分布。它只有一個可見層,同時作為輸入和輸出層;以及一個隱藏層,作用和自動編碼器中的隱藏層類似,如圖 9所示。

RBM在AI作曲的研究中也有不少用例,如Hadjeres et al.的DeepBach合唱系統[8],用來研究巴赫風格的混聲四部合唱。該架構結合了兩個前饋網路和兩個LSTM網路。與通常只考慮時間向後推移的網路不同,DeepBach會同時考慮時間上向前和向後兩個方向的信息,每個方向都由一個LSTM來處理。此外,系統還會考慮和當前音符同時播放的其他音符。最後將三者合併輸入到一個最終的前饋神經網路中,如圖 4所示。

圖 4 DeepBach架構[8]

作者認為這種做法可以模擬巴赫混聲四部合唱的作曲過程,例如為一段旋律添加和聲時,從結尾入反向推進經常會更容易。此外,作者在對音符進行編碼時使用的是樂理標記而不是MIDI音高,也就是說A?和B?是兩個不同的音。

在訓練神經網路時,網路需要能夠根據6個之前的音符、6個之後的音符和當前時間上3個其他聲部的音符來給出當前位置的最佳音符。訓練集由反覆從樂曲庫中隨機選取一個音符及其周圍所需要的音符組成。最終音樂的生成也不是根據時間反覆向前推進,而是在整個時間線上使用一個類似吉布斯採樣的過程反覆修改音符完成的。其生成結果已經能和巴赫創作的音樂有極高的混淆度。

此外還有Lattner et al.的卷積RBM約束採樣[15]在研究生成莫扎特式的奏鳴曲時,先使用了RBM來學習樂曲集中的織體等局部特徵,然後在生成過程中手動添加全局結構特徵(例如ABBA)、音調、拍號(3/3、3/4等)。生成時先隨機初始化一段樂曲,然後用約束採樣反覆進行梯度下降優化。

5GAN

近幾年GAN[16]和CNN的組合在圖像生成和處理方面突飛猛進,而Yang et al.的MidiNet流行旋律生成系統[13]將同樣的概念應用於AI作曲上。除了常見的one-hot編碼和十六分音符量化之外,訓練集為1022首流行音樂旋律,歸一化至兩個八度範圍之內並添加了所有的移調。

架構首先包含一個生成器和一個判別器,兩者都有卷基層和全連接層。生成器輸入隨機向量並輸出音樂旋律,同時判別器嘗試將生成旋律和樂曲集中的旋律區分開來。和常見的GAN不同的是,MidiNet又添加了一個帶有4個卷基層的調節器(conditioner)網路,其每層可以附加到生成器的層上面,用以限定和聲走向。調節器也引進了RNN的循環思路進行前饋,以便於生成時可以輸入幾個音符作為起始旋律。圖 10更詳細地展示了MidiNet的架構。

圖 10 MidiNet架構[13]

此外,Dong et al.的MuseGAN[17]在研究多軌序列式音樂生成和伴奏時繼承了MidiNet使用GAN和CNN生成音樂的思路,同時也發展了一些新的方向。MuseGAN先把音樂分為樂段、樂句、小節、節拍和像素五個層級,然後逐層進行生成。每個音軌之間相對獨立同時又需要互相配合,所以MuseGAN給每個音軌同時輸入了兩個雜訊向量,一個是所有音軌共有的,另一個是為每條音軌單獨生成的。同樣的方法也用在了處理小節之間的關係上。最後所有的音軌和小節作為一個樣本,和訓練集中的樣本一起被輸入判別器中進行訓練。整體架構如圖 11所示。此外,MuseGAN也使用了WGAN-GP[18][19]網路以避免生成器崩潰問題並優化訓練速度。

圖 11 MuseGAN 架構 [19]

討論

從文中提到的很多研究成果已經不難看出,當下AI作曲藉助深度神經網路已經有了飛速發展,尤其是在旋律和和聲兩個方面有很高的混淆度,如果再加一些後期混編完全可以達到上市的水準。此外,深度神經網路的潛能還遠遠沒有被人類完全挖掘出來,或許幾十年甚至幾年後的AI作曲和現在相比將完全是另一幅光景。

不過,AI作曲距離完全自動化還有很長的一段路要走。目前的研究大多數仍然僅限於處理音高、節奏,以及每個音符的時長和音符之間的休止。而完成一首成品還有大量的後期編排工作,如鋼琴曲則還需要力度、速度、踏板以及音色、混響等,流行樂曲則需要多音軌、多樂器、後期混排、以及歌詞、人聲等等,這些仍需要人為完成。此外,旋律和和聲的部分也不能說是盡善盡美,目前的研究仍然只針對相對較短的樂句或樂段進行生成,時間一長很容易顯得單調、隨機,難以被應用在故事性強的樂曲需求上。

另外,由於深度神經網路作曲原理相當於在一組樂曲集上進行黑箱操作後生成出來的,很難保證生成結果不會過擬合到訓練集中已有的音樂,這類侵權風險也是AI作曲今後需要解決的問題之一。

或許不久的將來,AI作曲會被應用在各種烘托氣氛的場景上,例如遊戲或視頻背景音樂,屆時只需要調整幾個需求參數便可完成定製。而專註於音樂本身、對音樂性有極高要求的場景,如演唱會、唱片專輯等,AI作曲最終能否完全取代人類作曲家仍然值得懷疑,不過接下來很長一段時間內發生的可能性很小。AI作曲將會是人類改變音樂市場秩序的工具之一,而音樂的終極靈感將仍舊掌握在人類自己手中。

參考文獻

[1]Jean-Pierre Briot, Ga?tan Hadjeres, and Fran?ois Pachet. Deep Learning Techniques for Music Generation - A Survey, Sep 2017. arXiv:1709.01620.

[2]Jose David Fernandez and Francisco Vico. AI Methods in Algorithmic Composition: A Comprehensive Survey, Feb 2014. arXiv:1402.0585.

[3]Michael C. Mozer. Neural network composition by prediction: Exploring the benefits of psychophysical constraints and multiscale processing. Connection Science, 6(2–3):247–280, 1994.

[4]Roger N. Shepard. Geometric approximations to the structure of musical pitch. Psychological Review, (89):305–333, 1982.

[5]Daniel Johnson. Composing music with recurrent neural networks, August 2015. http://www.hexahedria.com/2015/08/03/composing-music-with-recurrent-neural-networks/.

[6]Sepp Hochreiter and Jürgen Schmidhuber. Long short-term memory. Neural Computation, 9(8):1735–1780, 1997.

[7]Douglas Eck and Jürgen Schmidhuber. A first look at music composition using LSTM recurrent neural networks. Technical report, IDSIA/USI-SUPSI, Manno, Switzerland, 2002. Technical Report No. IDSIA-07-02.

[8]Ga?tan Hadjeres, Fran?ois Pachet, and Frank Nielsen. DeepBach: a steerable model for Bach chorales generation, June 2017. arXiv:1612.01010v2.

[9]Bob L. Sturm, Jo?o Felipe Santos, Oded Ben-Tal, and Iryna Korshunova. Music transcription modelling and composition using deep learning, April 2016. arXiv:1604.08723v1.

[10]Dimos Makris, Maximos Kaliakatsos-Papakostas, Ioannis Karydis, and Katia Lida Kermanidis. Combining LSTM and feed forward neural networks for conditional rhythm composition. In Giacomo Boracchi, Lazaros Iliadis, Chrisina Jayne, and Aristidis Likas, editors, Engineering Applications of Neural Networks: 18th International Conference, EANN 2017, Athens, Greece, August 25–27, 2017, Proceedings, pages 570–582. Springer, 2017.

[11]Felix Sun. DeepHear – Composing and harmonizing music with neural networks, Accessed on 13/1/2018. https://fephsun.github.io/2015/09/01/neural-music.html.

[12]Mason Bretan, Gil Weinberg, and Larry Heck. A unit selection methodology for music generation using deep neural networks, December 2016. arXiv:1612.03789v1.

[13]Li-Chia Yang, Szu-Yu Chou, and Yi-Hsuan Yang. MidiNet: A Convolutional Generative Adversarial Network for Symbolic-domain Music Generation, March 2017. arXiv:1703.10847v2.

[14]Geoffrey E. Hinton and Ruslan R. Salakhutdinov. Reducing the dimensionality of data with neural networks. Science, 313(5786):504–507, 2006.

[15]Stefan Lattner, Maarten Grachten, and Gerhard Widmer. Imposing higher-level structure in polyphonic music generation using convolutional restricted Boltzmann machines and constraints, December 2016. arXiv:1612.04742v2.

[16]Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozairy, Aaron Courville, and Yoshua Bengio. Generative adversarial nets, June 2014. arXiv:1406.2661v1.

[17]Hao-Wen Dong, Wen-Yi Hsiao, Li-Chia Yang, and Yi-Hsuan Yang. MuseGAN: Symbolic-domain Music Generation and Accompaniment with Multi-track Sequential Generative Adversarial Networks, September 2017. arXiv:1709.06298v2.

[18]Martin Arjovsky, Soumith Chintala, Léon Bottou. Wasserstein GAN, Jan 2017. arXiv:1701.07875.

[19]Ishaan Gulrajani, Faruk Ahmed, Martin Arjovsky, Vincent Dumoulin, Aaron Courville. Improved Training of Wasserstein GANs, Mar 2017. arXiv:1704.00028.

[20]Jian Wu, Changran Hu, Yulong Wang, Xiaolin Hu, and Jun Zhu. A Hierarchical Recurrent Neural Network for Symbolic Melody Generation, Dec 2017. arXiv:1712.05274.

Elliot Waite. Generating Long-Term Structure in Songs and Stories, Jul 15, 2016. https://magenta.tensorflow.org/2016/07/15/lookback-rnn-attention-rnn

作者介紹:楊潤軒

清華大學2017級計算機系研究生,研究方向為人工神經網路在藝術領域的應用。2015年麥吉爾大學計算機系本科畢業,曾在IEEEXtreme Programming Competition 6.0中獲得全加拿大第五名

作者介紹:胡昌然

清華大學2014級電子系本科生。曾獲清華大學特等獎學金入圍獎,清華大學挑戰杯特等獎。

作者介紹:吳健

清華大學2016級計算機系研究生。主要研究方向為人工神經網路在視覺與音樂上的應用。曾獲英特爾獎學金,清華大學挑戰杯特等獎。

作者介紹:胡曉林

清華大學計算機系副教授。研究領域包括人工神經網路和計算神經科學,主要興趣包括開發受腦啟發的計算模型和揭示大腦處理視聽覺信息的機制,應用方面重點是計算機視覺和音樂創作。在國際期刊和會議上發表論文70餘篇。

微信號:CAAI-MemberCenter

CAAI會員中心


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

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


請您繼續閱讀更多來自 CAAI會員中心 的精彩文章:

TAG:CAAI會員中心 |