人工智能自然語(yǔ)言處理?
沒(méi)天賦別怕,NLP技術(shù)分分鐘讓你變身音樂(lè)大師全文共2760字,預(yù)計(jì)學(xué)習(xí)時(shí)長(zhǎng)6分鐘或更長(zhǎng)
圖片來(lái)源:pexels
機(jī)器學(xué)習(xí)算法變革了視覺(jué)領(lǐng)域與NLP(自然語(yǔ)言處理)領(lǐng)域,那音樂(lè)領(lǐng)域呢?近年來(lái),音樂(lè)信息檢索(MIR)發(fā)展勢(shì)頭迅猛。本文將探討如何將NLP領(lǐng)域的技術(shù)應(yīng)用到音樂(lè)領(lǐng)域。
近期, 在Chuan、Agres和 Herremans (2018)聯(lián)合發(fā)表的一篇論文中,他們論述了用Word2vec(NLP的一種常用工具)表示復(fù)調(diào)音樂(lè)的過(guò)程。下文將對(duì)該過(guò)程展開(kāi)深入探究。
Word2vec有了詞嵌入模型,就可以用代表語(yǔ)義的向量來(lái)表示詞語(yǔ),機(jī)器學(xué)習(xí)模型也能夠更輕松地對(duì)其進(jìn)行處理。而托馬斯·米科洛夫等人在2013年提出的嵌入模型Word2vec,能夠高效地創(chuàng)造語(yǔ)義向量空間(Mikolov et al., 2013)。
Word2vec模型的本質(zhì)是一個(gè)簡(jiǎn)單的單層神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)的構(gòu)建方式有兩種:1) 使用連續(xù)詞袋(CBOW);2)使用Skip-gram 模型。這兩種方式效率都很高,訓(xùn)練耗時(shí)也相對(duì)較短。此次研究用到了Skip-gram 模型,因?yàn)槊卓坡宸虻热嗽硎荆撃P驮谔幚磔^小的數(shù)據(jù)集方面更為高效。Skip-gram 模型選取當(dāng)前詞w_t作為輸入層,并在輸出層context window(上下文窗口)顯示預(yù)測(cè)的關(guān)聯(lián)詞。
數(shù)據(jù)來(lái)自Chuan et al (2018)。上圖表示的是單詞t的預(yù)測(cè)結(jié)果及它的context window。
網(wǎng)上流傳的一些圖片讓人誤以為Skip-gram網(wǎng)絡(luò)輸出的只是context window中的一個(gè)單詞,而非多個(gè)。那么怎樣讓Skip-gram表示整個(gè)context window呢?
訓(xùn)練Skip-gram網(wǎng)絡(luò)時(shí),我們使用了樣本對(duì),包括當(dāng)前輸入詞和從context window隨機(jī)選取的一個(gè)詞。Skip-gram的傳統(tǒng)訓(xùn)練目標(biāo)是使用Softmax函數(shù)計(jì)算
,但這種方法運(yùn)算量過(guò)大,成本過(guò)高。所幸,噪聲對(duì)比估計(jì) (Gutmann & Hyv?rine, 2012)以及負(fù)采樣 (Mikolov et al, 2013b)能夠解決這一問(wèn)題。先用負(fù)采樣大致定義一個(gè)新目標(biāo),即將真實(shí)詞的概率最大化,將噪聲樣本的概率最小化。之后只需要一個(gè)簡(jiǎn)單的二進(jìn)制的邏輯回歸,就能把噪聲樣本從真實(shí)詞中分離出來(lái)。
Word2vec模型經(jīng)過(guò)訓(xùn)練后,其隱層的權(quán)重主要表示經(jīng)過(guò)學(xué)習(xí)的多維嵌入。
能否用單詞形式表示音樂(lè)?音樂(lè)與語(yǔ)言本質(zhì)上是相互聯(lián)系的。二者均包含遵循一套語(yǔ)法規(guī)則的連續(xù)事件。更重要的是,二者均能使人產(chǎn)生預(yù)想。比如,如果有人說(shuō):“我要去披薩店買(mǎi)個(gè)……”,顯然,你會(huì)預(yù)想他要買(mǎi)的是披薩。而如果有人現(xiàn)在哼一句“祝你生日”,然后戛然而止……正如話語(yǔ)一樣,旋律也能引起人的預(yù)想,而這些預(yù)想能夠通過(guò)腦電圖進(jìn)行測(cè)量,比如測(cè)量大腦中事件的相關(guān)電位N400(Besson & Sch?n, 2002)。
既然語(yǔ)言與單詞間存在一定的相似度,那么語(yǔ)言表示常用模型可否有效地表示音樂(lè)呢?為了將MIDI(音序)文件轉(zhuǎn)換為“語(yǔ)言”,要對(duì)音樂(lè)“片段”進(jìn)行定義,這里的音樂(lè)片段相當(dāng)于語(yǔ)言中的單詞。將數(shù)據(jù)集中的音樂(lè)全部切分為相同長(zhǎng)度,相互間不重疊的片段,每個(gè)片段長(zhǎng)度為一個(gè)節(jié)拍。每個(gè)節(jié)拍的長(zhǎng)度由MIDI 工具箱進(jìn)行估算,不同片段的節(jié)拍長(zhǎng)度可以不同。所有片段音高的等級(jí)都會(huì)保留下來(lái),這里音高等級(jí)指的是不包含音階信息的音高。
下圖為肖邦作品67第4首,即A小調(diào)第47號(hào)瑪祖卡舞曲第一小節(jié),圖中展示了如何決定片段的長(zhǎng)度。在這里,一個(gè)節(jié)拍長(zhǎng)度為一個(gè)四分音符。
數(shù)據(jù)來(lái)自Chuan et al (2018)——通過(guò)音樂(lè)片段創(chuàng)造詞。
Word2vec學(xué)習(xí)調(diào)性——音樂(lè)的分布式語(yǔ)義假設(shè)在語(yǔ)言中,分布式語(yǔ)義假設(shè)是向量嵌入的驅(qū)動(dòng)力。根據(jù)該假設(shè),“在同一上下文中出現(xiàn)的詞往往有相同的意思(Harris, 1954) ”。這些詞轉(zhuǎn)換到向量空間后,幾何位置相近。那么Word2vec模型是否會(huì)用類似的方式表示音樂(lè)呢?
數(shù)據(jù)集
Chuan 等人用了包含八種不同音樂(lè)流派的MIDI 數(shù)據(jù)集,包含古典樂(lè)、重金屬樂(lè),他們從130,000支曲子中根據(jù)流派分類挑選出23,178首作為數(shù)據(jù)集。在挑選出的曲子中,總共分出了4,076種不同的片段。
超參數(shù)
Word2vec模型的訓(xùn)練只用到數(shù)據(jù)集中最常出現(xiàn)的500個(gè)片段(或詞),其他詞都用一個(gè)偽字代替。這一步驟提高了Word2vec模型的精確度,因?yàn)槟P蛢?nèi)的詞可以包含更多的信息。此外還有其他超參數(shù),如學(xué)習(xí)速率(設(shè)為0.1),window_size(設(shè)為4),訓(xùn)練步驟的數(shù)量(設(shè)為1,000,000),嵌入大小(設(shè)為256)。
和弦
要評(píng)價(jià)Word2vec模型是否成功地獲取了音樂(lè)片段的語(yǔ)義,還需要了解和弦。
從音樂(lè)片段構(gòu)成的詞匯表中,識(shí)別出所有包含三和弦的音樂(lè)片段。用羅馬數(shù)字標(biāo)記這些片段的音級(jí)(這在樂(lè)理中很常見(jiàn)),比如,在C調(diào)中,和弦C為I級(jí),和弦G為V級(jí)。之后,用余弦距離計(jì)算在向量空間中,不同音級(jí)和弦的相互距離。
在一個(gè)N維空間中,兩個(gè)非零向量A和B之間的余弦距離的計(jì)算方式為:
其中θ為A和B的夾角,Ds為余弦相似度:
按樂(lè)理校對(duì)來(lái)講,I級(jí)和弦和V級(jí)和弦之間的“調(diào)性”距離應(yīng)當(dāng)小于I級(jí)和弦和III級(jí)和弦之間的“調(diào)性”距離。下圖表示一個(gè)C大調(diào)三和弦與其他和弦之間的距離。
數(shù)據(jù)來(lái)自Chuan et al (2018)——三和弦與主音和弦之間的余弦距離=C大調(diào)三和弦。
顯然,I級(jí)三和弦與V級(jí)和弦, IV級(jí)和弦還有vi和弦之間的距離更小,這與音樂(lè)中這幾個(gè)和弦間“調(diào)性相近”的理論吻合。也就是說(shuō),Word2vec模型學(xué)會(huì)了表現(xiàn)音樂(lè)片段之間的關(guān)系。
Word2vec空間中和弦之間的余弦距離似乎反映了和弦在樂(lè)理中的功能!
調(diào)
巴赫的十二平均律曲集(WTC)的24首前奏曲中,每首前奏曲都包含一個(gè)調(diào),所以24首前奏曲涵蓋了包括大調(diào)和小調(diào)在內(nèi)的全部24個(gè)調(diào)。對(duì)于新的嵌入空間是否獲取了有關(guān)調(diào)的信息的問(wèn)題,可以通過(guò)研究十二平均律曲集求證。
把數(shù)據(jù)集擴(kuò)大后,十二平均律曲集的各個(gè)前奏曲都被轉(zhuǎn)換為其他大調(diào)或小調(diào)(取決于原來(lái)調(diào)的不同),導(dǎo)致每首前奏曲都出現(xiàn)了12種版本。將這些調(diào)的各個(gè)片段映射到先前訓(xùn)練的向量空間,使用K-Means進(jìn)行聚類,就得到了新數(shù)據(jù)集中不同前奏曲的質(zhì)心。將這些前奏曲轉(zhuǎn)換為調(diào),就保證了質(zhì)心之間的余弦距離僅受調(diào)的影響。
在不同調(diào)的前奏曲中,質(zhì)心之間產(chǎn)生的余弦距離如下圖所示。正如預(yù)期那樣,不同的五度和音的調(diào)性非常接近,圖中對(duì)角線旁邊較暗的區(qū)域即為證明。調(diào)性相差很大的調(diào)(例如F和F#)表現(xiàn)為橙色,說(shuō)明Word2vec空間反映了調(diào)之間的調(diào)性距離,證實(shí)猜想成立。
數(shù)據(jù)來(lái)自Chuan et al (2018)——根據(jù)不同調(diào)的前奏曲之間的余弦距離繪制的相似矩陣。
類比
關(guān)于Word2vec有一個(gè)有趣的圖像,表現(xiàn)的是向量空間中,國(guó)王→女王,男人→女人之間的轉(zhuǎn)換過(guò)程 (Mikolov et al., 2013c),這也就說(shuō)明了向量轉(zhuǎn)換能夠傳達(dá)意義。那么向量是否也能傳達(dá)音樂(lè)中的意義?
首先,我們檢測(cè)了復(fù)調(diào)片段中的和弦,查看從C大調(diào)到G大調(diào)(I-V)和弦對(duì)的向量。不同I-V向量之間的夾角非常相似(見(jiàn)右圖),甚至可以看作是五度和音構(gòu)成的多維圓。這也再次證明,類比的概念可能存在于音樂(lè)領(lǐng)域的Word2vec空間中,但要得到更清楚的例子,還需要更多調(diào)查研究。
數(shù)據(jù)來(lái)自Chuan et al (2018)——和弦對(duì)向量之間的夾角。
其他應(yīng)用-Word2vec能否生成樂(lè)曲?Chuan 等人 (2018) 簡(jiǎn)單探討了Word2vec模型通過(guò)替代音樂(lè)片段來(lái)生成新的音樂(lè)的過(guò)程。他們表示,這只是一個(gè)初步測(cè)試,該系統(tǒng)可作為一種表示方法用于更綜合的系統(tǒng)中,如LSTM。論文中還有更多細(xì)節(jié)描述,在此不作贅述。下圖為研究結(jié)果。
數(shù)據(jù)來(lái)自Chuan et al (2018)——用幾何位置相近的片段進(jìn)行替換。
結(jié)論
Chuan、Agres與Herremans (2018)建立了一個(gè)Word2vec模型,可以捕捉復(fù)調(diào)音樂(lè)的音調(diào)屬性,而無(wú)需將實(shí)際音符輸入模型之中。他們的論文有力地證明了,在詞嵌入中能夠找到關(guān)于調(diào)與和弦的信息。那么可否用Word2vec表示音樂(lè)呢?答案是肯定的,可以用Word2vec表示復(fù)調(diào)音樂(lè)。這就打開(kāi)了一種新思路:還可以將這種表現(xiàn)形式嵌入其他模型中,用以捕捉音樂(lè)的時(shí)間信息。
留言 點(diǎn)贊 關(guān)注
我們一起分享AI學(xué)習(xí)與發(fā)展的干貨
歡迎關(guān)注全平臺(tái)AI垂類自媒體 “讀芯術(shù)”