iT邦幫忙

2021 iThome 鐵人賽

DAY 20
3
AI & Data

人工智慧在音樂領域的應用系列 第 20

Day 20: 人工智慧在音樂領域的應用 (AI作曲-基因演算法三 突變)

昨天我們講完了音樂間是如何彼此交配並生出子代,今天我們接著來講出生後的子代必須面隊的充滿挑戰的一生。
https://ithelp.ithome.com.tw/upload/images/20211003/201405563zHaB3QfhQ.jpg

突變 (Mutation)

所有經過親代交配後所生出來的子代,一出生後馬上就要被抓去做人體實驗開始進入準備突變的流程,
就跟昨天我們聊到設定個體時我們要先決定產生多少個體一樣,在實驗之前我們會先決定突變的機率 (Mutation Rate)。通常來說,如果沒有特別的需求下,突變機率會被設定成個體的長度分之一,以我們長度為八個音符的個體來說,機率就會被設定為1/8,也就是12.5%。它代意思的是在這八個音符中,期望會有其中一個產生突變而轉換成其他的音符,而發生突變的音符能轉換的則是所有可能音符的隨機一個
https://ithelp.ithome.com.tw/upload/images/20211003/20140556eXD7FQHKsN.jpg

我們一樣延續昨天的例子來做說明:
昨天我們選出來的兩位男女主角 (親代) 在經過交配之後產生了兩個子代
親代個體1 : [0, 2, 0, 9, 15, 24, 16, 10]
親代個體2 : [6, 2, 9, 17, 17, 17, 3, 17]

子代個體1 : [0, 2, 9, 17, 17, 17, 16, 10]
子代個體2 : [6, 2, 0, 9, 15, 24, 17, 3, 17]

而這兩個子代出生後,都各自有機率發生突變,而機率就是從第一個音符最後一個音符一個一個輪流用12.5% 的機率去看是否成功發生突變,如果突變成功,則從原先的音符轉換成0-24之中的任意音符(我們在Representation中設定我們的所有可能音符為中音Do [0]高兩個八度的Do [24] )。
因此以子代個體1來說,我們可以想像成我們有一顆八面骰以及一顆二十五面骰,接著我們從第個音符0開始,先骰八面骰決定是否要突變 (突變成功的機率只有1/8),如果突變成功,我們接著骰二十五面骰來決定他要從0突變成哪一個音符;接著我們再對第個音符2做同樣的骰子判斷,直到個音符都接受過了這個可能突變的過程。而所有親代交配出來的子代,都要經過這個過程,直到一百個子代都完成突變的試煉為止。

我們透過程式的亂數將子代1與子代2的突變結果產生出來,大家可以比較看看親代經過交配後產生出來的子代,以及子代再經過突變後,彼此間的相似度:
親代個體1 : [0, 2, 0, 9, 15, 24, 16, 10]
親代個體2 : [6, 2, 9, 17, 17, 17, 3, 17]

子代個體1 : [0, 2, 9, 17, 17, 17, 16, 10]
子代個體2 : [6, 2, 0, 9, 15, 24, 17, 3, 17]

子代個體1(突變後) : [0, 2, 9, 1, 17, 17, 16, 10]
子代個體2(突變後) : [6, 2, 0, 9, 15, 24, 17, 3, 22]

突變的目的

為了虐對手
https://ithelp.ithome.com.tw/upload/images/20211004/20140556KxRHjX4Etc.jpg

https://ithelp.ithome.com.tw/upload/images/20211004/20140556D9uc88ZhKd.jpg
哥吉拉大戰金剛

如果還記得前面我們在講解一些有趣的AI演算法的內容的話,裡面都有提到這些演算法都有一些機制去想辦法跳脫局部最大值 (Local Maximum),而突變在基因演算法裡扮演的就是類似的機制。
想像一下如果今天整個群體裡面的個體在經過好幾個世代的演化之後,每個個體裡面都只剩下中音Do [0], 中音Re [2] 以及 中音Mi [4] 這三個音
個體一: [0, 0, 2, 4, 0, 4, 2, 2]
個體二: [4, 0, 4, 4, 0, 2, 2, 0]
個體三: [2, 2, 2, 4, 4, 0, 2, 4]
.
.
.
個體一百: [4, 4, 0, 4, 2, 2, 0, 4]
那麼不管你讓它彼此在怎麼樣的交配 (Crossover),裡面的音符不管怎麼樣做交換,始終也無法擺脫只有這三個音的情況。而這個時候突變的機制就有機會讓已經陷入這三個音泥沼的情況做出突破,只要發生任何一次突變後有音符從這三個音之中突變成其他音符,而突變得結果又能夠比原先這三個音的組合得到更好的評價,那個這個突變後的基因就有很高的機會存活下來並繼續傳宗接代

突變率的設定

前面我們提到,突變機率通常會被設定成個體的長度分之一,原因是因為雖然突變能夠幫助個體們跳脫局部最大值 (Local Maximum) 以達到探索(Exploitation) 的目的,但是如果突變的頻率過高,則很容易導致整個演化的過程無法往最好的狀態前進,原因是因為在隨機突變的狀況下,並無法保證只要發生突變必定會往好的方向移動,太過頻繁的突變反而會容易導致已經漸入佳境的個體們偏離正軌,導致需要更長時間的演化來達到最佳解

https://ithelp.ithome.com.tw/upload/images/20211004/20140556Bl79stJDaI.png

https://ithelp.ithome.com.tw/upload/images/20211004/20140556nquyyEg9fB.png

這幾天我們詳細的解釋了基因演算法裡面的各種運作方法以及參數設定,那麼明天開始我們要來聊聊基因演算法裡面最重要的一塊:

如何評估音樂的好壞來決定演化方向

Day 21見。


上一篇
Day 19: 人工智慧在音樂領域的應用 (AI作曲-基因演算法三 音樂間的交配)
下一篇
Day 21: 人工智慧在音樂領域的應用 (AI作曲-基因演算法四 掌握生殺大權-Interactive Fitness Function)
系列文
人工智慧在音樂領域的應用30

尚未有邦友留言

立即登入留言