做者 | 琥珀
web
出品 | AI科技大本營(id:rgznai100)編程
如下爲譯文:微信
基於深度神經網絡進行語音合成、音樂風格遷移,正成爲很多致力於「讓人人成爲音樂家」的研究人員所追求的事情。像此前咱們報道的微軟小冰做詞又做曲,AI幫清華博士寫說唱歌詞晉級,甚至不久前中央音樂學院招音樂AI方向博士生。不久前,爲了記念著名做曲家巴赫誕辰,Google 根據巴赫合唱和聲訓練而成的機器學習模式 Coconet 吸引了很多人前來圍觀。網絡
最近,OpenAI 最新研發的 MuseNet 的深度神經網絡,能夠製做 4 分鐘時長的音樂做品,其中涵蓋 10 種不一樣的樂器(如鋼琴、鼓、貝斯、吉他),甚至還能將諸如鄉村風格、莫扎特風格、甲殼蟲樂隊風格的音樂融合起來。機器學習
首先須要說明的是,MuseNet 並無根據人類輸入的對音樂理解進行顯式編程,而是經過學習預測成千上萬個 MIDI 文件的下一個 token 來發現和絃、節奏和風格的模式。MuseNet 採用了無監督神經網絡語言模型 GPT2.0(是的,就是此前被譽爲能夠 BERT 媲美的 NLP 模型 GPT2.0,廣泛觀點是,通過預訓練能夠預測上下文,不管是音頻仍是文本。)工具
據悉,5 月 12 日將正式開放 MuseNet 語言生成工具的試用版本。學習
傳送門:測試
https://openai.com/blog/musenet/優化
過程原理
編碼
在簡單模式(默認顯示)中,用戶會聽到預設生成的隨機未切割樣本;而後選擇某做曲家或風格下的著名做品片斷,便可生成各類風格的音樂。
在高級模式下,用戶可直接與模型交互。這個過程須要完成的時間會更長,但用戶能夠建立一個全新的做品。
注意:MuseNet 經過計算全部可能的音符和樂器的機率來生成每一個音符,模型會傾向採用你選擇的樂器,但也可能會選擇逼得樂器;一樣,MuseNet 也會搭配不一樣風格的樂器,若是用戶自行選擇最接近做家或樂隊經常使用分風格或樂器,產生的音樂會更天然。
研究人員還建立了做曲家和樂器的 token,以便更好地控制 MuseNet 生成的樣本類型。訓練期間,這些做曲家和樂器 token 將預先添加到每一個樣本中,所以模型將學習利用該信息進行音符預測。生成音樂時,能夠調整模型,如拉赫瑪尼諾夫的鋼琴曲爲前提,以建立選定風格的音樂。
研究人員還將 MuseNet 中的嵌入進行可視化,以深刻了解模型所學到的內容。他們採用了 t-SNE 建立各類風格嵌入的餘弦類似性。(以下 2D 圖像所示,可查看某個特定做曲家或風格之間的關係。)
利用 Sparse Transformer 記住長期結構
MuseNet 使用 Sparse Transformer 的重算和優化內核來訓練一個具備 24 個注意力頭的 72 層網絡,並將所有注意力放在 4096 個 token 的上下文中。這個長文本的目的是可以記住一個片斷中的長期結構。或者,它還能夠建立音樂旋律結構。
音樂生成是測試 Sparse Transformer 的一個有用域,由於它位於文本和圖像的中間位置。它具備文本的 token 結構。在圖形中,你能夠查看 N 個 token,而在音樂中,查看以前的起點沒有固定數。此外,還能夠很容易聽到該模型是否在按照成百上千個 token 順序來獲取長期結構。
數據集
研究人員收集了不一樣來源的 MuseNet 訓練數據(ClassicalArchives、BitMidi、MAESTRO ),涵蓋爵士樂、流行樂,以及非洲、印度和阿拉伯等不一樣風格的音樂。
首先,研究人員採用 transformer 在序列數據上進行訓練:給定一組音符,要求它預測其餘即將出現的音符。在嘗試了幾種不一樣方法後將 MIDI 文件編碼爲適用於此任務的 token。
在這種其中,他們採用和絃方法,將每次聽到的音符組合視爲單獨的 「和絃」,併爲每一個和絃指定一個 token。而後,經過僅關注音符開頭壓縮音樂模式,並嘗試使用字節對編碼方案進行近一步壓縮。
研究人員還嘗試了標記時間推移的兩種不一樣方法:一是根據音樂節奏進行縮放的 token,表明節拍或節拍的一小部分;二是以絕對時間爲單位來標記 token。他們採用了一種結合了表現力和簡潔性的編碼方式:將音高、音量以及樂器信息組合稱一個 token。
在訓練中,
經過提升和下降音高來調換音符。(以後的訓練中,減小了調換數量,使得每一個樂器都有生成的音符。)
提升音量,調高或下降不一樣樣本的總體音量。
增長時間,當使用以秒爲單位的絕對時間編碼時,可有效稍微減緩或加速片斷。
在 token 嵌入空間中使用 mixup。
研究人員還建立了一個內部評測,在訓練中,經過模型預測給定的樣本是否來自數據集仍是以前生成的樣本,進行評判。
嵌入
爲了給模型提供更加結構化的上下文,研究人員還添加幾種不一樣類型的嵌入。
除了標準位置嵌入外,還有學習到的嵌入,可在給定的樣本中追蹤時間推移;而後,他們還在每一個和絃中的音符添加了嵌入;最後,他們添加了兩個結構化嵌入,該嵌入可代表模型既定的音樂樣本在較大音樂片斷中的位置。
【END】
推薦閱讀
關於圖書
《深度學習之TensorFlow:入門、原理與進階實戰》和《Python帶我起飛——入門、進階、商業實戰》兩本圖書是代碼醫生團隊精心編著的 AI入門與提升的精品圖書。配套資源豐富:配套視頻、QQ讀者羣、實例源碼、 配套論壇:http://bbs.aianaconda.com 。更多請見:https://www.aianaconda.com
點擊「閱讀原文」圖書配套資源
本文分享自微信公衆號 - 相約機器人(xiangyuejiqiren)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。