論文《Symbolic Music Genre Transfer with CycleGAN》閱讀筆記

一、背景

這篇論文主要是實現不同類型的音樂轉換,文中主要使用了爵士、古典、流行音樂的轉換,並且一個模型只能實現從一個域到另一個域的轉換,網絡結構作者仿照了Cycle-GAN,但引入了新的loss使得生成的音樂質量更佳。

二、數據形式

文中使用的音樂數據爲MIDI文件,並按照文中的數據預處理方式,主要是捨棄具有音軌或聲音較多的MIDI文件(如交響樂等),然後捨棄鼓的音軌,之後將所有的音軌上的音符合並在一個音軌上。然後將通過上述方式篩選後的MIDI文件處理成[batchsize,64,84,1],並將每個音高的值歸一化爲[0,1],然後將該矩陣用於模型訓練。其中,64指的是對連續的4個bars分別進行16 time steps的採樣。84是指音高範圍,由於MIDI文件的音高範圍爲0-127,但C1以下的音符和C8以上的音符很少,故舍棄,剩餘音符的音高範圍只有84個。

三、網絡結構與loss設置

在域遷移或風格轉換中一方面需要改變風格,另一方面需要保持內容的不變,這就需要兩個loss。風格loss:用於風格轉換;內容loss:維持內容一致;內容loss在Cycle-GAN中一般是循環一致損失,使用L1範數。Cycle-GAN通過兩個生成器和判別器實現了兩個域中隱含的特定特徵的有效提取,併成功的實現風格的轉換。
本論文在Cycle-GAN的基礎上進行音樂類型轉換,也是需要通過內容和風格的損失實現不同流派的音樂轉換。
網絡結構

3.1 生成器loss

在這裏插入圖片描述

3.1.1 循環一致loss:

在這裏插入圖片描述

3.1.2 對抗loss:

在這裏插入圖片描述

3.2 判別器總loss:

在這裏插入圖片描述

3.2.1通用的判別器loss

在這裏插入圖片描述

3.2.2 判別生成的音樂是否屬於源域域目標域的並集

loss\color{#FF3030}{作者額外引入了兩個loss,這是這篇文章的重點}
爲了有效的騙過判別器,生成器需要學到兩個類型的特徵。然而兩個類型的音樂之間肯定有一些區別性很高的特徵或模式,這會導致生成器只學到這部分特徵而成功騙過判別器,但此時生成的音樂質量會很差,爲了解決這個問題,文中引入了另外的兩個判別器,目的是判斷生成的音樂類型是否是屬於M域(這兩個音樂域的並集),其loss:
在這裏插入圖片描述
其實就是將生成器生成的音樂限制在M域內,有約束的訓練模型提高訓練效率和音樂質量

四、總結

在訓練的時候,需要分別最小化總的生成器loss和總的判別器loss。以判別器A爲例,在最小化判別器總loss時,LDA的理想值爲0,即判別器A能準確判別生成的數據爲假(輸出0),原始數據爲真(輸出1)。但生成器的目標是希望判別器A能將生成的數據判別爲真,這實現了一個對抗,然後不斷訓練生成器與判別器,使其最終達到平衡。

注:對於文中不同域的音樂轉換後的質量,作者單獨訓練了一個音樂類型分類器來檢測原始的真實數據音樂以及生成的音樂數據。根據該分類器在原始的真實音樂類型的檢測準確率即可得到該音樂分類器分類音樂的置信度,然後用於分類生成的音樂。

Reference

論文
代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章