今天我們來聊聊生成對抗網路 (Generative Adversarial Network, GAN) ,發音為幹
。
GAN是Ian Goodfellow在2014所提出,在GAN問世之後,因為大幅突破了以往神經網路的的學習,因此大大引起了高度的關注與討論,此外,飽受爭議的Deepfake更是讓Gan好好的曝光了一番,有興趣的朋友可以自行Google一下Deepfake到底在做什麼,但建議不要在上班時間 (NSFW~~~~)。
到底GAN是什麼,而其中又有什麼特別的特質呢?
首先我們先來介紹GAN裡面的兩個主要元素: Generator 與 Discriminator
Generator 與 Discriminator 兩個都是個別的神經網路,Generator的功用是用來創作,而Discriminator的功用則是用來檢驗Generator創作出來的成品。
舉例來說,今天我們有一位新手畫家 (Generator),由於是新手,所以它很隨意的照著自己心之所向隨意創作。而它畫完的作品則是送給他一位好朋友新手鑑賞師 (Discriminator) 來鑑定,但由於鑑賞師也是新手,所以它也還沒有能力準確的評斷新手畫家畫的作品是否是好的,在這個時候我們的新手畫家與新手鑑賞師,簡單來說就是
因此我們先針對新手鑑賞師做訓練,對於Discriminator,我們會給他一系列的畫並且告訴他這些畫是來自真實世界的(是好的畫),而新手鑑賞家手上則有另一部分來自新手畫家創作出來的畫,於是慢慢的,新手鑑賞家對於分辨畫的好壞的能力越來越強,與此同時,他也將這些資訊回饋給他的好朋友新手畫家,並告訴新手畫家你畫的東西根本狗屁不通,請針對某些項目去做強化。
而新手畫家得到這些回饋之後也會隨之作出調整,慢慢的,新手畫家與新手鑑賞家在這過程之中彼此扶持教學香腸
最後新手畫家已經進步到可以畫出幾可亂真的畫作而騙過新手鑑賞家的鑑定。
透過這樣的模式,我們可以訓練出各種不同的Generator來達成不同目的,例如上面提到的作畫、影像生成以及音樂創作等等。
一些GAN的應用範例:
那麼回到我們的主軸 - 如何透過這樣的機制來實現作曲呢?
首先跟上面的作畫一樣,我們讓新手作曲家 (Generator) 隨興的創造他喜歡的旋律,與此同時我們開始訓練新手音樂評論家 (Discriminator) ,而這個時候我們必須選擇要教導Discriminator什麼樣的音樂風格,他才能依此訓練自己的評鑑能力進一步引導Generator做出相對應風格的樂曲。
例如,我們每次告訴新手音樂評論家好的音樂片段都是來自莫札特的作品,長久訓練下,新手音樂評論家就能夠分辨出新手作曲家的音樂與莫札特的音樂,進一步的教導新手作曲家要如何做出莫札特的音樂。
最後我們總結一下這幾天介紹的幾個神經網路作曲:
循環神經網路 RNN 能夠有效的處理音樂片段並以此預測接下來的音符來實現作曲的目的,然而缺點是缺乏長期記憶因此無法準確的判斷出音樂的曲式與結構;
長短期記憶 LSTM 則進一步改良RNN的缺點,利用控制閥與記憶的特性,有效的將重要的資訊存入長期記憶裡;
生成對抗網路 GAN 則是針對創作與評鑑分別作訓練,透過輸入特定風格的音樂片段,進一步引導Generator創作出相近風格的音樂。
那麼,介紹AI方法作曲的部分我們就到這邊畫下尾聲,明天開始我們一起來看看現在市面上有哪些已經成熟且方便使用的AI作曲應用。