- 原文地址:Representing music with Word2vec?
- 原文做者:Dorien Herremans
- 譯文出自:掘金翻譯計劃
- 本文永久連接:github.com/xitu/gold-m…
- 譯者:Minghao23
- 校對者:lsvih
機器學習算法在視覺領域和天然語言處理領域已經帶來了很大的改變。可是音樂呢?近幾年,音樂信息檢索(MIR)領域一直在飛速發展。咱們將會看到 NLP 的一些技術是如何移植到音樂領域的。在 Chuan、Agres、和 Herremans 於 2018 年發表的一篇論文中,探尋了一種使用流行的 NLP 技術 word2vec 來表示復調音樂的方法。讓咱們來探究一下這是如何作到的……前端
詞嵌入模型使咱們可以經過有意義的方式表示詞彙,這樣機器學習模型就能夠更容易地處理它們。這些詞嵌入模型讓咱們能夠用包含語義的向量來表示詞彙。Word2vec 是一個流行的詞向量嵌入模型,由 Mikolov 等人於 2013 年開發,它可以以一種十分有效的方式建立語義向量空間。android
Word2vec 的本質是一個簡單的單層神經網絡,它有兩種構造方式:1)使用連續詞袋模型(CBOW);或 2)使用 skip-gram 結構。這兩種結構都很是高效,而且能夠相對快速地進行訓練。在本研究中,咱們使用的是 skip-gram 模型,由於 Mikolov 等人在 2013 年的工做中提到,這個方法對於較小的數據集更加高效。Skip-gram 結構使用當前詞 w_t 做爲輸入(輸入層),並嘗試預測在窗口範圍內與以前後相鄰的詞(輸出層):ios
圖片來自 Chuan et al (2018). 單詞 t 和它上下文窗口的插圖。git
因爲一些在網上流傳的圖片,人們對於 skip-gram 結構的樣子存在一些疑惑。網絡的輸出層並不包含多個單詞,而是由上下文窗口中的一個單詞組成的。那麼它如何才能表示整個上下文窗口呢?當訓練網絡時,咱們實際會使用抽樣對,它由輸入單詞和一個上下文窗口中的隨機單詞組成。github
這種類型的網絡的傳統訓練目標包含一個用 softmax 函數來計算 𝑝(𝑤_{𝑡+𝑖}|𝑤_𝑡) 的過程,而它的梯度計算代價是十分大的。幸運的是,諸如噪音對比估計(Gutmann 和 Hyvärine 於 2012 發表論文)和負採樣(Mikolov 等人於 2013 年發表論文)等技術爲此提供了一個解決方案。咱們用負採樣基本地定義一個新的目標:最大化真實單詞的機率並最小化噪聲樣本的機率。一個簡單的二元邏輯迴歸能夠用來分類真實單詞和噪聲樣本。算法
當 word2vec 模型訓練好了,隱藏層上的權重基本上就能夠表示習得的、多維的嵌入結果。spring
音樂和語言是存在內在聯繫的。它們都由聽從一些語法規則的一系列有序事件組成。更重要的是,它們都會創造出預期。想象一下,若是我說:「我要去比薩店買一個……」。這句話就生成了一個明確的預期……比薩。如今想象我給你哼一段生日快樂的旋律,可是我在最後一個音符前停下了……因此就像一句話同樣,旋律生成預期,這些預期能夠經過腦電波測量到,好比大腦中的事件相關電位 N400(Besson 和 Schön 於 2002 年發表論文)。數據庫
考慮語到語言和單詞的類似性,讓咱們看看流行的語言模型是否也能夠用來對音樂作有意義的表達。爲了將一個 midi 文件轉換爲「語言」,咱們在音樂中定義「切片」(至關於語言中的單詞)。咱們數據庫中的每一個曲目都被分割成了等時長的、不重疊的、長度爲一個節拍的切片。一個節拍的時長能夠由 MIDI toolbox 獲得,且在每一個曲目中能夠是不一樣的。對於每個切片,咱們都會記錄一個包含全部音名的列表,也就是沒有八度信息的音高。後端
下圖展現了一個怎樣從 Chopin's Mazurka Op. 67 №4 的第一小節中肯定切片的例子。這裏一節拍的長度是四分音符。網絡
圖片來自 Chuan et al (2018) --- Creating words from slices of music
在語言模型中,語義分佈假設是詞向量嵌入背後的理論基礎之一。它表述爲「出如今同一上下文中的單詞趨向於含有一樣的語義」。翻譯到向量空間,這意味着這些單詞會在幾何關係上彼此接近。讓咱們看看 word2vec 模型是否在音樂上也學習到了相似的表示。
Chuan 等人使用的 MIDI 數據集 包含了 8 種不一樣音樂類型(從古典到金屬)。在總共 130,000 個音樂做品中,基於類型標籤,咱們只選擇了其中的 23,178 個。這些曲目包含了 4,076 個惟一的切片。
模型的訓練只使用了出現最多的 500 個切片(即單詞),並使用一個僞造單詞來替代全部其餘的狀況。當包含的單詞含有更多的信息(出現次數)時,這個過程提升了模型的準確性。其餘的超參數包括學習率(設爲 0.1),skip 窗口大小(設爲 4),訓練步數(設爲 1,000,000)和嵌入維度(設爲 256)。
爲了評估音樂切片的語義是否被模型捕獲,讓咱們來看看和絃。
在切片詞庫中,全部包括三和絃的切片都會被識別出來。而後用羅馬數字標註這些切片的音級(就像咱們在樂理中常常作的那樣)。好比,在C調中,C和絃爲 I,而G和絃表示爲 V。以後咱們會使用餘弦距離來計算在嵌入中不一樣音級的和絃之間有多遠。
在 n 維空間中,兩個非零向量 A 和 B 的餘弦距離 Ds(A, B) 計算以下:
D𝑐(A,B)=1-cos(𝜃)=1-D𝑠(A,B)
其中 𝜃 是 A 和 B 的夾角,Ds 是餘弦類似度:
從樂理視角看,和絃 I 和 V 之間的「音調距離」應該比和絃 I 和 III 之間的小。下圖展現了C大三和絃與其餘和絃之間的距離。
圖片來自 Chuan et al (2018) --- Cosine distance between triads and the tonic chord = C major triad.
從三和絃 I 到 V、IV 和 vi 的距離相對比較小!這與他們在樂理中被認爲的「音調接近」是一致的,同時也表示 word2vec 模型的確學習到了切片之間有意義的關係。
在 word2vec 空間下,和絃之間的餘弦距離彷佛反映出了樂理中和絃的功能做用!
經過觀察巴赫的《平均律鋼琴曲集》(WTC)的 24 首前奏曲,其中包括了所有的 24 個調(大調和小調),咱們能夠研究新的嵌入空間是否捕獲到了調的信息。
爲了擴充數據集,每一個曲子都被轉換爲其餘每一種大調或小調(基於原調),這樣每一個曲子都會有 12 個版本。每一個調的切片都會被映射到預先訓練好的向量空間裏,並使用 k-means 聚類,這樣咱們就能獲得一些中心點,把它們做爲新數據集中的曲子。經過把這些曲子變調,咱們能夠保證這些中心點之間的餘弦距離只會受到一個元素的影響:調。
下圖展現了不一樣調的中心點曲子之間的餘弦距離結果。和預期的同樣,差五度音程的調在音調上是接近的,它們被表示爲對角線旁邊較暗的區域。音調上較遠的調(好比 F 和 F#)呈橙色,這驗證了咱們的假設,即 word2vec 空間反映了調之間的音調距離關係!
圖片來自 Chuan et al (2018)--- similarity matrix based on cosine distance between pairs of preludes in different keys.
這張圖片展現了 word2vec 的一個突出的特性,它能夠在向量空間中找出相似於「國王 -> 皇后」和「男人 -> 女人」這樣的轉化關係(Mikolov 等人 於 2013 年發表論文)。這說明含義能夠經過向量轉化向前傳遞。那麼對音樂來講是否也可行呢?
咱們首先從多音切片中檢測到一些和絃,並觀察一對和絃向量,C大調到G大調(I-V)。能夠發現,不一樣的 I-V 向量對之間的夾角都很是類似(如右圖所示),甚至能夠被想成一個多維的五度圈。這再一次證實了類推的概念可能也存在於音樂 word2vec 空間上,儘管要想發現更明確的例子還須要作更多的調查研究。
圖片來自 Chuan et al (2018) --- angle between chord-pair vectors.
Chuan 等人於 2018 年簡要地研究瞭如何使用該模型替換音樂切片以造成新的音樂。他們表示這只是一個初步的實驗,可是該系統能夠做爲一個表示方法而用於更復雜的系統,例如 LSTM。在論文中能夠找到更多相關細節,但下圖可讓你對其結果有一個初步的瞭解。
圖片來自 Chuan et al (2018) --- Replacing slices with geometrically close slices.
Chuan、Agres 和 Herremans 於 2018 年建立了一種 word2vec 模型,這種模型能夠捕捉到復調音樂的音調屬性,而無需將實際的音符輸入模型。文章給出了一些使人信服的證據,說明和絃與調的信息能夠在新的嵌入中找到,因此能夠這樣回答標題中的問題:是的,咱們可以使用 word2vec 表示復調音樂!如今,將這個表示方法嵌入到其餘可以捕捉到音樂的時間信息的模型,這條道路也已經打開了。
若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。