黃澄宇,汪鐳,康琦,吳啟迪
運(yùn)用遺傳算法進(jìn)行智能音樂(lè)作曲研究
黃澄宇,汪鐳,康琦,吳啟迪
采用遺傳算法進(jìn)行算法作曲,主要利用遺傳算法的全局最優(yōu)性,并且相對(duì)簡(jiǎn)單有效的特點(diǎn)。利用簡(jiǎn)潔的編碼方式對(duì)基因進(jìn)行編碼,有效地表達(dá)了樂(lè)曲的主要信息,方便了適應(yīng)度函數(shù)的計(jì)算和相關(guān)遺傳操作的進(jìn)行。針對(duì)音樂(lè)質(zhì)量評(píng)估問(wèn)題,提出了將相關(guān)音樂(lè)知識(shí)的規(guī)則和人機(jī)交互相結(jié)合的模式,共同對(duì)所創(chuàng)作音樂(lè)進(jìn)行合理評(píng)價(jià)。不僅提高了評(píng)價(jià)的準(zhǔn)確性,而且大大降低了人的工作量,產(chǎn)生了良好的音樂(lè)工程效果。
遺傳算法;算法作曲;適應(yīng)度函數(shù)
算法作曲時(shí)試圖應(yīng)用某個(gè)形式化的過(guò)程,使人利用計(jì)算機(jī)進(jìn)行音樂(lè)創(chuàng)作時(shí)介入程度達(dá)到最小的研究[1]。對(duì)于算法作曲的研究,有了一定的發(fā)展,不同研究者利用不同的方法進(jìn)行算法作曲,主要算法有:Markov 鏈、隨機(jī)過(guò)程、知識(shí)庫(kù)系統(tǒng)、音樂(lè)文法、人工神經(jīng)網(wǎng)絡(luò)以及遺傳算法。當(dāng)今,對(duì)算法作曲的研究主要面臨4個(gè)問(wèn)題,分別是:音樂(lè)知識(shí)的表達(dá)問(wèn)題、創(chuàng)造性和人機(jī)交互問(wèn)題、音樂(lè)創(chuàng)作風(fēng)格問(wèn)題和系統(tǒng)生成的作品質(zhì)量問(wèn)題。
遺 傳 算 法 (genetic algorithms)是 一 種 使 用 適 應(yīng) 函 數(shù)(fitness function)來(lái)演化候選者(染色體)的全局優(yōu)化算法。在使用遺傳算法進(jìn)行音樂(lè)創(chuàng)作的工作中,主要是構(gòu)造適應(yīng)函數(shù),以此來(lái)評(píng)估及選擇系統(tǒng)生成的旋律問(wèn)題。作曲系統(tǒng)可以通過(guò)建立適應(yīng)函數(shù)的計(jì)算模型來(lái)演化旋律(染色體)或連接旋律的和聲結(jié)構(gòu)。由于在自動(dòng)作曲過(guò)程中,適應(yīng)函數(shù)很難準(zhǔn)確定義,研究者提出交互式遺傳算法。主要包括:Biles 構(gòu)造的“GenJam”交互式即興演奏系統(tǒng),Unemi 用模擬繁殖的方法開(kāi)發(fā)的一個(gè)音樂(lè)工具 SBEAT 等[2]。
本文提出一種相對(duì)簡(jiǎn)潔方便的編碼方式,采用一些綜合基本樂(lè)理知識(shí)和相關(guān)規(guī)則建立的應(yīng)適度函數(shù)的同時(shí),同時(shí)輔助人的評(píng)價(jià)來(lái)創(chuàng)作出好的音樂(lè)作品,從而提高了系統(tǒng)的性能,如圖1所示:
圖1 遺傳算法流程圖
遺傳算法是一種建立在自然選擇和遺傳變異等生物進(jìn)化特征基礎(chǔ)之上的全局最優(yōu)的算法,具有良好的普適性和可規(guī)劃性,在形式上簡(jiǎn)單明了,與其他算法綜合使用很方便。一段優(yōu)秀樂(lè)曲的產(chǎn)生主要依靠音樂(lè)家的“天賦”和“努力”,針對(duì)前者,其中的奧妙是難以完全理解的;而對(duì)于后者,遺傳算法就可以深刻模擬音樂(lè)家“努力”創(chuàng)作音樂(lè)的過(guò)程。如遺傳操作中的選擇操作,就可以模擬音樂(lè)家根據(jù)自己的知識(shí)和經(jīng)驗(yàn)選擇用于后續(xù)創(chuàng)作的種子;交叉操作可以模擬音樂(lè)家綜合不同樂(lè)曲的長(zhǎng)處,來(lái)產(chǎn)出新的更好的樂(lè)曲;突變操作則可以模擬音樂(lè)家在創(chuàng)作樂(lè)曲過(guò)程中靈感。
1.1 遺傳算法進(jìn)行作曲基本步驟。
1. 選擇編碼策略,即將樂(lè)曲的集合轉(zhuǎn)化為位串的結(jié)構(gòu)空間。
2.定義適應(yīng)度函數(shù)。
3. 確定進(jìn)化的策略:包括選擇種群的大小,選擇、交叉和變異的方法和概率。
4.隨機(jī)初始化群體。
5. 計(jì)算群體適應(yīng)度函數(shù)。
6. 按照之前確定的進(jìn)化策略,運(yùn)用相應(yīng)的算子作用于種群,從而生成下一代種群。
1.2 編碼
1.2.1 音級(jí)的編碼
音級(jí)就是樂(lè)音體系中的各音。音級(jí)有基本音級(jí)和變化音級(jí)兩種。樂(lè)音體系中,7個(gè)具有獨(dú)立名稱的音級(jí)叫做基本音級(jí)?;疽艏?jí)的名稱是用字母和唱名兩種方式來(lái)標(biāo)記的。兩個(gè)相鄰的具有同樣名稱的音叫做8度。升高或降低基本音級(jí)而得來(lái)的音,叫做變化音級(jí)。
將低音 1 編碼為 11,中音 1 編碼為 12,高音 1 編碼為12,隨著音級(jí)從低到高依次增加 10。為了簡(jiǎn)單起見(jiàn),本文中通過(guò)遺傳算法產(chǎn)生的樂(lè)曲曲調(diào)都為 C調(diào)。下表表示部分音級(jí)的編碼,偏移半音數(shù)是指偏移中音1的半音個(gè)數(shù),部分音級(jí)編碼如表1所示:
表1 部分音級(jí)編碼表
1.2.2 時(shí)值的編碼
音符的時(shí)值有十六分之一,八分之一,八分之一等多種類(lèi)型。我們將以 16 分音符為標(biāo)準(zhǔn),記為 0,其他音符的編碼是自身音符時(shí)值與 16 分音符時(shí)值的比值加 1,如表2 所示:
表2 時(shí)值編碼表
1.2.3 音符的編碼
采用3位十進(jìn)制編碼方式,前兩位表示音級(jí),第三位表示時(shí)值。
例如下面《得民心者得天下》中一小節(jié)的簡(jiǎn)譜:
4 33 6
則由前面的論述可知,編碼為; 423,320,320,615
1.3 適應(yīng)度函數(shù)
智能音樂(lè)研究遇到的一個(gè)大問(wèn)題就是生成作品的質(zhì)量評(píng)估的問(wèn)題。而使用遺傳算法進(jìn)行創(chuàng)作的時(shí)候,這個(gè)問(wèn)題變的更加突出。因?yàn)槊看蔚蟮姆N群都將面臨選擇或淘汰的問(wèn)題。這個(gè)過(guò)程,適應(yīng)度函數(shù)發(fā)揮了重大的作用[4]。
1.3.1 概述
適應(yīng)度函數(shù)的定義分為兩部分,一部分是基于音樂(lè)原理和規(guī)則的定義,另一部分是利用聽(tīng)眾的評(píng)價(jià)作為適應(yīng)度函數(shù),對(duì)創(chuàng)作出的樂(lè)曲進(jìn)行評(píng)價(jià)。而且,隨著迭代次數(shù)的增加,聽(tīng)眾喜愛(ài)程度將占據(jù)更為重要的比重。即公式(1):
其中 F(X)是總體的適應(yīng)度函數(shù), F1(X)為基于音樂(lè)原理和規(guī)則定義的適應(yīng)度函數(shù), F2(X)為聽(tīng)眾對(duì)音樂(lè)的評(píng)價(jià),n為迭代次數(shù),X為個(gè)體即染色體。
下面將詳細(xì)介紹這兩個(gè)適應(yīng)度函數(shù)的構(gòu)成。
1.3.2 基于樂(lè)理知識(shí)的評(píng)價(jià)。
基于樂(lè)理知識(shí)的評(píng)價(jià)標(biāo)準(zhǔn),我們將分為十個(gè)客觀方面(i=1~10)。即公式(2):
①.兩個(gè)相鄰的音符之前的音程差如果大于八度音階的話將被記為 0,反之則記為則是每個(gè)個(gè)體的平均值。即:若一個(gè)個(gè)體有a組相鄰音符的音程差大于八度音階,剩余的 b 組小于等于八度音階。則公式(3):
③.時(shí)值是指時(shí)間的長(zhǎng)短或者一個(gè)特定長(zhǎng)度的音程。由于兩個(gè)連續(xù)音符劇烈的時(shí)值變化將會(huì)給聽(tīng)眾煩躁不安,因此,如果出現(xiàn)超過(guò)4的時(shí)值變化,我們就將此記為 0,反之則為 1。如同一樣,也表示一個(gè)個(gè)體的平均值。所以說(shuō)這個(gè)參數(shù)是為了懲罰那些連續(xù)音符之間有劇烈變化的音符。
⑤.對(duì)于音樂(lè)來(lái)說(shuō),音調(diào)一直上升或者一直下降都不會(huì)是好的音樂(lè)。所以,我們用來(lái)評(píng)價(jià)一個(gè)樂(lè)曲的整體輪廓。定義如公式(4):
⑥.如果一個(gè)樂(lè)曲持續(xù)在一個(gè)音高或時(shí)值上,聽(tīng)眾將會(huì)很快煩躁不安的。因此,我們用來(lái)阻止這種情況的發(fā)生。如果一個(gè)樂(lè)曲中,超過(guò)四個(gè)音符在同一音高和時(shí)值上連續(xù)出現(xiàn),那么這個(gè)參數(shù)將被記為 0,反之,則為 1.
⑧.眾所周知,一般情況下,合唱的平均音高要比獨(dú)唱要高。用評(píng)估這種情況,如公式(6)
⑨.另外,對(duì)于合唱而言,她的音高的升降變化要相對(duì)快一些,如公式(7):
⑩.通常情況下,一段樂(lè)曲將會(huì)以一個(gè)長(zhǎng)音來(lái)結(jié)尾。因此,我們用來(lái)描述樂(lè)曲是否以超過(guò)一拍的長(zhǎng)音來(lái)結(jié)尾,若是的話則為 1,反之為 0。
1.3.3 交互式系統(tǒng)
單純的樂(lè)理知識(shí)和相關(guān)規(guī)則的適應(yīng)度函數(shù)完全滿足聽(tīng)眾娛樂(lè)的需求,在由系統(tǒng)產(chǎn)生適應(yīng)度函數(shù)之后,引入聽(tīng)眾的因素,成為一個(gè)交互式的系統(tǒng),由每一個(gè)聽(tīng)眾對(duì)樂(lè)曲進(jìn)行打分。
系統(tǒng)會(huì)產(chǎn)生大量的樂(lè)曲,聽(tīng)眾的時(shí)間總是有限的,不可能鑒賞所有的音樂(lè),應(yīng)用相關(guān)樂(lè)理知識(shí)對(duì)大量樂(lè)曲進(jìn)行初選也是必須和必要的。聽(tīng)眾的打分是在 0.1~1 分的區(qū)間。另外,隨著迭代的進(jìn)行,聽(tīng)眾打分所占的權(quán)重將會(huì)越來(lái)越高,從而更加有利于該方法的收斂速度。
1.3.4 遺傳操作
1) 復(fù)制對(duì)象的選擇。
根據(jù)上述適應(yīng)度函數(shù)的公式,計(jì)算每代個(gè)體的適應(yīng)度。為了減小系統(tǒng)壓力,根據(jù)適應(yīng)度函數(shù),選擇其中的一些個(gè)體來(lái)進(jìn)行下一代的復(fù)制和變異。選擇的策略是:
2) 交叉規(guī)則。
交叉操作可以分為音符之間的交叉和小節(jié)之間的交叉,先進(jìn)行音符之間的交叉,再進(jìn)行小節(jié)之間的交叉。
音符之間交叉:編碼是由三位數(shù)字組成,包含了音級(jí)和時(shí)值信息。因此,交叉操作是會(huì)發(fā)生音級(jí)或者是時(shí)值的交叉變換。而交換的方式有三種,分別是:音級(jí)的交叉,時(shí)值的交叉和二者同時(shí)交叉。對(duì)于音級(jí)的交叉,只會(huì)發(fā)生在前兩位。對(duì)于時(shí)值的交叉,只會(huì)發(fā)生在最后一位。而如果二者同時(shí)發(fā)生,則整體交叉。對(duì)于交叉的概率,一般是取 0.25~0.75,本文對(duì)于不同的交叉方式,選取不同的交叉率。其中,音級(jí)的交叉率是 0.6,時(shí)值和二者同時(shí)交叉的交叉率是 0.5。
小節(jié)之間的交叉:設(shè)定小節(jié)的交叉率是 0.6。
3) 變異規(guī)則。
一般情況下,變異發(fā)生的概率較小,因此,本文選擇的突變率是 0.02。
對(duì)于變異來(lái)說(shuō),都發(fā)生在音符上,而哪個(gè)音符突變,是隨機(jī)發(fā)生的。對(duì)于變異,可以進(jìn)行音級(jí)變異,可以進(jìn)行時(shí)值變異,也可以將二者同時(shí)變異。在此不考慮相鄰兩音符的音程一般不超過(guò) 8度的約束規(guī)則,這個(gè)規(guī)則在適應(yīng)度函數(shù)中進(jìn)行定義,可以防止發(fā)生這種情況的個(gè)體進(jìn)入到下一代的遺傳操作中。
4) 時(shí)值的修正。
在遺傳操作的過(guò)程中,發(fā)生了音符的交叉和變異的情況。此時(shí),有些小節(jié)內(nèi)時(shí)值已經(jīng)不符合拍號(hào)的要求。一般情況下,一段樂(lè)曲的拍號(hào)都是一定的,這就要求每個(gè)小節(jié)中各音符的時(shí)值之和是固定的。但是在交叉和變異的過(guò)程中,都伴隨著音符時(shí)值的改變。這樣就可能出現(xiàn)小節(jié)內(nèi)時(shí)值和不符合要求的情況,因此,就要對(duì)這種情況進(jìn)行修正。相應(yīng)方案為:
①計(jì)算各小節(jié)內(nèi)音符時(shí)值之和,即編碼中第三位數(shù)字。
②若每小節(jié)規(guī)定的總拍數(shù)為 PH,而新一代的個(gè)體總拍數(shù)是PH’。比較二者大小。若相等,則不需要修正。
a.若 PH>PH’,則需要增加時(shí)值,增加的音符為小節(jié)中最后一個(gè)音符,增加的時(shí)值為 PH-PH’。
b.若 PH<PH’,則需要減少時(shí)值。設(shè) a 為需要減少的時(shí)值,則 a=PH’-PH。若最后一個(gè)音符的時(shí)值 b>a,則將該音符的時(shí)值變?yōu)?b-a;反之,則將該音符刪除,再比較上一個(gè)音符,直到該小節(jié)滿足時(shí)值要求。
2.1 確定相關(guān)參數(shù):
調(diào)號(hào):C
拍號(hào):4/4
小節(jié)數(shù):3
2.2 進(jìn)行遺傳算法進(jìn)行作曲。
系統(tǒng)根據(jù)輸入的參數(shù)隨機(jī)生成初始種群。
相關(guān)遺傳操作按照前章論述的方法和相應(yīng)概率進(jìn)行。
首先有系統(tǒng)根據(jù)樂(lè)理知識(shí)和規(guī)則確定的適應(yīng)度函數(shù)進(jìn)行評(píng)價(jià)。根據(jù)研究發(fā)現(xiàn),當(dāng)采用這種方法進(jìn)行了 1000~2000代之后,系統(tǒng)的平均適應(yīng)度函數(shù)趨于穩(wěn)定,再進(jìn)行迭代下去對(duì)樂(lè)曲的優(yōu)化意義不大,并且此時(shí)的子代數(shù)量也相對(duì)大大減少。因此,引入人的鑒賞作為評(píng)價(jià)因素,對(duì)樂(lè)曲進(jìn)行評(píng)價(jià),經(jīng)過(guò)10次迭代之后,產(chǎn)生樂(lè)曲片段。如圖2所示:
圖2 樂(lè)曲片段
本文采用遺傳算法進(jìn)行算法作曲研究。
首先根據(jù)音樂(lè)的基本特點(diǎn),采用簡(jiǎn)潔的編碼方式,準(zhǔn)確的表述了音級(jí)和時(shí)值兩個(gè)音樂(lè)特征,為后續(xù)適應(yīng)度函數(shù)的計(jì)算以及相關(guān)基因操作提供了極大的方便。提出了基于基本樂(lè)理知識(shí)的適應(yīng)度函數(shù),為后續(xù)進(jìn)行人機(jī)交互評(píng)價(jià)打下了堅(jiān)實(shí)的基礎(chǔ)并且大大降低了人的工作量,達(dá)到了良好的效果。將遺傳算法成功的應(yīng)用到算法作曲當(dāng)中,雖然還遠(yuǎn)不能作曲家創(chuàng)作的樂(lè)曲相提并論。但是把該方法應(yīng)用到小片段當(dāng)中已經(jīng)取得了良好的效果。
[1]J.A. Biles, “GenJam: a genetic algorithm for generation Jazz solos.” [J]Proceedings of Computer Music Conference(ICMC’ 94), 1994, pp. 131-137.
[2]G. Papadopoulos and G. Wiggins. “A genetic algorithm for the generation of jazz melodies.” [J]Proceedings of SteP 98, Finland,1998.
[3]Y.Maeda and Y.Kajihara , “Automatic Generation Method of Twelve Tone Row for Musical Composition Used Genetic Algorithm.” [J]Proc of the IEEE International Conference on Fuzzy System(FUZZ-IEEE 2009),pp.963-968 (2009)
[4]Minjun Jiang and Changle Zhou, “Automated Composition System based on GA”. [J]Intelligent Systems and Knowledge Engineering, 2010 International Conference on, pp.380-383(2010).
Algorithm Composition By Genetic Algorithm
Huang Chengyu, Wang Lei, Kang Qi, Wu Qidi
(College of Electronic and Information Engineering, Tongji University, Shanghai201804, China)
Genetic Algorithm is one of global optimality algorithms and it’s relatively simple and effective ,so we use it to do algorithmic composition.In this paper,encoding genes encode effectively to express the main information of the music, and to facilitate the calculation of the fitness function and the associated genetic manipulation.According to the basic music knowledge and rules,fitness function is designed.At the same time , this paper also use interaction between computer and human to evaluate the music.This strategy not only improves the accuracy of the evaluation, but also greatly reduces the human wordload.So this system can produce good result.
Genetic Algorithm; Algorithm Composition; Fitness Function.
TP391
A
1007-757X(2014)03-0001-04
2014.02.28)
教育部博士點(diǎn)基金(20100072110038),國(guó)家自然科學(xué)基金項(xiàng)目(70871091,61075064,61034004,61005090),教育部新世紀(jì)人才計(jì)劃項(xiàng)目(NECT-10-0633)上海市信息化專項(xiàng)基金項(xiàng)目。
黃澄宇(1988-)男,同濟(jì)大學(xué),碩士研究生,研究方向:智能控制,上海,201804.汪 鐳 (1970-)男,同濟(jì)大學(xué)電子與信息工程學(xué)院,教授,博士生導(dǎo)師,研究方向:智能控制、智能計(jì)算、CIMS 和系統(tǒng)工程方面的研究,上海,200092康琦(1980-)男,同濟(jì)大學(xué)電子與信息工程學(xué)院,副教授,碩士生導(dǎo)師,研究方向:智能控制、智能計(jì)算和系統(tǒng)工程方面的研究,上海,200092吳啟迪(1947-)女,同濟(jì)大學(xué)電子與信息工程學(xué)院,教授,博士生導(dǎo)師,研究方向:智能控制、智能計(jì)算、CIMS 和管理科學(xué)方面的研究,上海,200092