Facebook上月末發(fā)表了一篇名為“A Universal Music Translation Network”的文章(原文鏈接在文末),詳細(xì)闡述了如何利用非監(jiān)督學(xué)習(xí)實(shí)現(xiàn)了不同音樂間的樂器、體裁和風(fēng)格間的轉(zhuǎn)換。相信小伙伴們或多或少地了解過這篇論文。
但是如果從音樂家的角度來看這個(gè)過程是如何進(jìn)行的呢?本文將從四個(gè)不同的層次帶領(lǐng)我們更深入地理解這篇論文中所描述的方法,看看到底是什么神奇的魔力將長(zhǎng)笛的悠揚(yáng)轉(zhuǎn)換為了鋼琴的動(dòng)聽的。
level-0:新手
對(duì)于新手來說想要快速實(shí)現(xiàn)風(fēng)格轉(zhuǎn)換,傅里葉變換將是一個(gè)不錯(cuò)的手段。利用頻譜分析將會(huì)迅速的找出對(duì)應(yīng)的和弦和音符并在新的樂器上演奏出來。事實(shí)上傳統(tǒng)的處理方法提供了一系列這樣的手段:通過解碼器與基于本征樂器的樂器歸一化方法或者復(fù)調(diào)方法來實(shí)現(xiàn)。每一種樂器都有獨(dú)特的音符集和時(shí)域瞬態(tài)特征,但困難的是即使對(duì)于單一樂器來說,其頻譜包絡(luò)在不同的音高下并不服從同峰值模式。同時(shí)還有不同的泛音和諧頻需要處理。所有的這些使得音樂在不同樂器間的風(fēng)格轉(zhuǎn)換十分困難。
level-1:深度學(xué)習(xí)專業(yè)的同學(xué)
如果擁有一點(diǎn)樂理基礎(chǔ)的話,可以使用CNN模型通過MIDI格式的音樂生成的label來學(xué)習(xí)音樂的表達(dá)和轉(zhuǎn)錄。MIDI是一種在合成器中常用的數(shù)字音樂,每一個(gè)鍵被按下或者抬起都意味著一次事件的觸發(fā)??梢酝ㄟ^如MAPS一樣的數(shù)據(jù)集來實(shí)現(xiàn)復(fù)調(diào)鋼琴音樂的轉(zhuǎn)錄問題。
level-2:NLP學(xué)者將如何處理呢?
NLP學(xué)者最有可能使用的方法應(yīng)該是sequence to sequence模型了,但這種方法需要同時(shí)追蹤原始樂器和目標(biāo)樂器的發(fā)音序列。
level-3:直接學(xué)習(xí)轉(zhuǎn)換和鄰域歸一化
對(duì)于十分優(yōu)秀的音樂家來說,他們會(huì)明白每一種樂器之間的細(xì)微差別是MIDI所不能捕捉到的,而這個(gè)問題就是facebook文章中的創(chuàng)新所在。研究人員借鑒了wavenet的自回歸架構(gòu)并充分利用它將這一問題轉(zhuǎn)換為了“下一個(gè)音符是什么”的類似問題,從而將其變成了一個(gè)非監(jiān)督問題來解決。
wavenet本質(zhì)上使用隨學(xué)習(xí)過程不斷擴(kuò)大的卷積得到了增加的感受野,從而可以得到更好的預(yù)測(cè)結(jié)果和包含更為豐富特征的隱含空間。這些特征抓住了人類聲音和樂器聲音的本質(zhì),就像cnn中抽取的圖像特征一樣。此時(shí)如果你想要通過學(xué)習(xí)一個(gè)自回歸模型來預(yù)測(cè)鋼琴的下一個(gè)音調(diào),你只需要簡(jiǎn)單的學(xué)習(xí)一對(duì)兒wavenet編碼器和解碼器。編碼器將把原始的音樂序列投射到隱含空間中,而解碼器將盡力理解隱含空間的中的數(shù)值并解碼成下序列的下一個(gè)值。
是不是很奇妙?如果一個(gè)模型可以編碼鋼琴但解碼成其他樂器是不是就可以實(shí)現(xiàn)音樂在不同樂器間的轉(zhuǎn)換啦?這就是FacebookAI研究人員的努力。他們利用一個(gè)相同的編碼器對(duì)多種樂器進(jìn)行編碼,而后利用不同的解碼器實(shí)現(xiàn)不同樂器的解碼,實(shí)現(xiàn)了多種樂器之間的風(fēng)格互轉(zhuǎn)。那么它是如何工作的呢?下面讓我我們來具體看一看。
多個(gè)樂器間共享同一個(gè)解碼器會(huì)迫使這個(gè)解碼器去學(xué)習(xí)音樂間的相同特征。但對(duì)于解碼器來說,我們需要告訴它這到底是什么樂器,需要解碼的目標(biāo)域是什么。這就需要對(duì)于不同樂器的域訓(xùn)練特殊的解碼器來實(shí)現(xiàn)。論文中使用了對(duì)抗的方法來實(shí)現(xiàn)這一目標(biāo)。由于通用的潛在空間希望去尋找通用的特征而忽略了每種樂器的特殊性,而混淆矩陣則希望分割共同特征中不同的表達(dá)并盡可能的實(shí)現(xiàn)不同的類別特征。通過特殊與一般之間的對(duì)抗得到了兩個(gè)性能強(qiáng)大的編碼和解碼模型。值得注意的是要想同時(shí)獲得兩個(gè)性能優(yōu)異的編解碼模型,需要仔細(xì)地選擇正則化系數(shù)來實(shí)現(xiàn)。
讓我們來看看這個(gè)模型的損失函數(shù)。具體的訓(xùn)練過程是這樣的,首先在不同樂器的域中選取一個(gè)樣本sj,隨后利用隨機(jī)變調(diào)來避免模型無腦地對(duì)數(shù)據(jù)進(jìn)行記憶。論文中對(duì)0.25-0.5s長(zhǎng)的樣本使用了-0.5-0.5的半步變調(diào),可以用O(sj,r)來表示,其中r是隨機(jī)種子。你也許會(huì)對(duì)這一步感到疑惑,但使用過谷歌magenta模型或者瞬時(shí)生成模型的人都會(huì)有這樣的經(jīng)歷,有的時(shí)候模型會(huì)像鸚鵡學(xué)舌一樣簡(jiǎn)單的重復(fù)記憶下的序列,簡(jiǎn)直是公然的過擬合了。而這就是數(shù)據(jù)增強(qiáng)和偏移過程的關(guān)鍵所在,也是訓(xùn)練多種樂器的編碼器關(guān)鍵所在。
隨后增強(qiáng)數(shù)據(jù)通過wavenet編碼器中擴(kuò)大的卷積層轉(zhuǎn)換到了隱含空間中,并通過對(duì)應(yīng)的解碼器Dj還原到了其對(duì)應(yīng)的樂器空間中并預(yù)測(cè)出了下一個(gè)音符輸出。研究人員通過交叉熵比較實(shí)際的下一個(gè)輸出和預(yù)測(cè)的下一個(gè)輸出來計(jì)算損失函數(shù)。其中第一項(xiàng)代表重建誤差要盡可能的小,而第二項(xiàng)領(lǐng)域分類的誤差則用于盡可能的分開不同域的特征,這也是網(wǎng)絡(luò)進(jìn)行對(duì)抗訓(xùn)練的表現(xiàn)。作為一個(gè)對(duì)抗模型,一個(gè)監(jiān)督的正則項(xiàng)通過后編碼的特征矢量用于預(yù)測(cè)不同的域。它被稱為域混淆網(wǎng)絡(luò)(Domain Confusion Network)。
網(wǎng)絡(luò)在實(shí)際工作過程中,輸入的一個(gè)交響樂片段會(huì)被轉(zhuǎn)換和翻譯為一種特殊的樂器,但這個(gè)模型最令人驚嘆的能力還不止于此。當(dāng)輸入一種模型從未見過的樂器時(shí),通過自動(dòng)編碼和解碼過程它依然可以完美的工作!這證明了模型中的編碼器確實(shí)可以提取出音樂中的一般化特征并在隱含空間中表示出來,及時(shí)沒有見過這個(gè)樂器。這是很多生成算法的核心概念,像GANs和變分自編碼都利用這一思想創(chuàng)造了很多迷人的工作。
-
Facebook
+關(guān)注
關(guān)注
3文章
1432瀏覽量
56761 -
傅里葉變換
+關(guān)注
關(guān)注
6文章
443瀏覽量
43151 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5561瀏覽量
122795
原文標(biāo)題:深度解析Facebook的音樂轉(zhuǎn)換AI模型
文章出處:【微信號(hào):thejiangmen,微信公眾號(hào):將門創(chuàng)投】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
使用MATLAB進(jìn)行無監(jiān)督學(xué)習(xí)

深非監(jiān)督學(xué)習(xí)-Hierarchical clustering 層次聚類python的實(shí)現(xiàn)
如何用卷積神經(jīng)網(wǎng)絡(luò)方法去解決機(jī)器監(jiān)督學(xué)習(xí)下面的分類問題?
基于半監(jiān)督學(xué)習(xí)的跌倒檢測(cè)系統(tǒng)設(shè)計(jì)_李仲年
基于半監(jiān)督學(xué)習(xí)框架的識(shí)別算法
英偉達(dá)通過利用GAN及無監(jiān)督學(xué)習(xí),實(shí)現(xiàn)了場(chǎng)景間的四季轉(zhuǎn)換
你想要的機(jī)器學(xué)習(xí)課程筆記在這:主要討論監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)
如何用Python進(jìn)行無監(jiān)督學(xué)習(xí)
機(jī)器學(xué)習(xí)算法中有監(jiān)督和無監(jiān)督學(xué)習(xí)的區(qū)別
最基礎(chǔ)的半監(jiān)督學(xué)習(xí)
半監(jiān)督學(xué)習(xí)最基礎(chǔ)的3個(gè)概念

為什么半監(jiān)督學(xué)習(xí)是機(jī)器學(xué)習(xí)的未來?
半監(jiān)督學(xué)習(xí):比監(jiān)督學(xué)習(xí)做的更好
機(jī)器學(xué)習(xí)中的無監(jiān)督學(xué)習(xí)應(yīng)用在哪些領(lǐng)域

自監(jiān)督學(xué)習(xí)的一些思考

評(píng)論