0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度學(xué)習(xí)制作音樂時(shí)存在某些邏輯上的問題

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-09-24 09:48 ? 次閱讀

編者按:本文來自數(shù)據(jù)科學(xué)家Haebichan Jung,他發(fā)現(xiàn)用深度學(xué)習(xí)制作音樂時(shí)存在某些邏輯上的問題,并用數(shù)據(jù)方法創(chuàng)建自己的模型解決了這一問題。本文分為四部分:

問題定位:我是如何發(fā)現(xiàn)在利用深度學(xué)習(xí)技術(shù)生成流行音樂時(shí)會有問題的。

解決方法:我如何創(chuàng)建了一個(gè)原始的音樂生成機(jī)器,只需要簡單方法就能與深度學(xué)習(xí)相媲美。

結(jié)果評估:我是如何建立一套評估體系,用數(shù)學(xué)方法證明“我的音樂比深度學(xué)習(xí)生成的方法聽起來更像流行音樂”的。

泛化:如何發(fā)現(xiàn)生成自己模型的方法,將其應(yīng)用到場景而不是音樂生成上。

以下是論智帶來的編譯:

我創(chuàng)建了一個(gè)簡單的概率模型,可以生成流行音樂。有了客觀評判尺度之后,我認(rèn)為模型生成的音樂聽起來更接近流行音樂的風(fēng)格。我是如何做到的呢?其中最主要的原因是我關(guān)注到了流行音樂的核心:主旋律(melody)和和聲(harmony)之間的數(shù)據(jù)關(guān)系。

主旋律是人聲部分,是曲調(diào)。和聲是伴奏、和弦。在鋼琴曲中,主旋律由右手演奏,左手負(fù)責(zé)和弦

問題所在

在研究二者的關(guān)系之前,讓我們首先對這一問題下個(gè)定義。我最初開始這個(gè)項(xiàng)目時(shí),只是單純想用深度學(xué)習(xí)生成流行音樂。然后我就接觸到了LSTMs,這是一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò),是用于文本和音樂生成的流行工具。

另一位數(shù)據(jù)科學(xué)家Sigureur Skúli曾寫過一篇教程,講述了如何用LSTM神經(jīng)網(wǎng)絡(luò)和Keras生成音樂。地址:towardsdatascience.com/how-to-generate-music-using-a-lstm-neural-network-in-keras-68786834d4c5

但是我深入了解后,對使用RNN和各種變體生成流行音樂的方法背后的邏輯產(chǎn)生了懷疑。這種邏輯看起來是建立在多種有關(guān)流行音樂內(nèi)部結(jié)構(gòu)的假設(shè)上,但我并不完全認(rèn)可。

其中一個(gè)具體的假設(shè)是主旋律和和聲彼此獨(dú)立的關(guān)系。

例如,2017年,多倫多大學(xué)的研究人員Hang Chu等人曾發(fā)表文章:Song From Pi: A Musically Plausible Network for Pop Music Generation。其中作者認(rèn)為:“假設(shè)和弦是獨(dú)立于給定的旋律的……”基于這一論斷,作者搭建了一個(gè)復(fù)雜多層的RNN模型,主旋律在它所在的層中可以生成音符,而在和弦層中音符是自動生成的。除了彼此獨(dú)立,該模型是依靠主旋律生成和弦的,這就意味著和弦的音符生成是取決于主旋律的。

Hang Chu等人的RNN模型,每一層用于生成歌曲的不同部分

我覺得這種模型很奇怪,因?yàn)樗]有模仿人類創(chuàng)作歌曲的方法。我本人曾學(xué)過鋼琴,就個(gè)人而言,我是不會在創(chuàng)作主旋律音符時(shí)不考慮和弦的。因?yàn)楹拖乙舴榷x了旋律,也對旋律有所限制。西方流行音樂有一個(gè)很重要的特質(zhì):和弦是決定主旋律的關(guān)鍵。用數(shù)據(jù)科學(xué)語言表達(dá),我們可以說某一有條件的概率控制了主旋律和和聲之間的數(shù)據(jù)關(guān)系。

解決方法

首先,我研究了控制不同類型音符之間關(guān)系的預(yù)定概率。其中一個(gè)例子就是上文中提到的旋律與和聲之間的“垂直”關(guān)系。

處理數(shù)據(jù)

關(guān)于數(shù)據(jù),我將20首流行音樂轉(zhuǎn)換成midi格式,完整歌單可以點(diǎn)擊:www.popmusicmaker.com/

利用一個(gè)名為music21的Python庫,主要通過馬爾科夫過程處理了midi文件,提取出作為輸入的不同類型的音符之間的數(shù)據(jù)關(guān)系。具體來說,我會計(jì)算我的音符之間的轉(zhuǎn)移概率(transition probability)。這表示,當(dāng)音符從前一個(gè)過渡到下一個(gè)時(shí),我們可以計(jì)算其中的概率(下文會繼續(xù)深入講解)。

midi格式:一首歌的數(shù)字化版本

首先,我會提取旋律音符和和弦音符之間“垂直”的轉(zhuǎn)移概率。同時(shí)我也會根據(jù)數(shù)據(jù)集計(jì)算旋律與和弦音符之間“水平”的轉(zhuǎn)移概率。下表就是三種不同類型的音符所計(jì)算出的不同轉(zhuǎn)移概率矩陣:

由上至下分別是三種不同的過渡概率:旋律和和弦音符之間的概率;旋律音符之間的概率;和弦音符之間的概率

模型

利用這三種概率矩陣,我的模型可以遵循以下步驟運(yùn)行:

1.從數(shù)據(jù)中隨機(jī)選擇可用的和弦音符。

2.用上表中第一種概率矩陣,基于和弦音符選擇旋律音符。

3.用上表中第二種概率矩陣,基于旋律音符選擇和弦音符。

4.重復(fù)步驟3,直至結(jié)尾。

步驟1~4

5.用上表中第三種概率矩陣,基于此前的和弦音符選擇新的和弦音符。

6.重復(fù)步驟1~4,直至結(jié)尾。

步驟5~6

為了詳細(xì)解釋這一過程,我們用具體例子代替。

1.機(jī)器隨機(jī)選擇了伴奏音符F。

2.音符F可以選擇四個(gè)旋律音符。利用第一種轉(zhuǎn)移概率矩陣,它可能會選擇旋律音符C(因?yàn)橛?4.5%的概率可能被選到)。

3.之后,旋律音符C會進(jìn)入第二種概率矩陣,選擇下一個(gè)旋律音符,它可能會選A(概率有88%)。

4.第三步會繼續(xù)生成新的旋律音符,直至結(jié)尾。

5.和弦音符F會轉(zhuǎn)入第三個(gè)矩陣,選擇下一個(gè)和弦音符。根據(jù)表中的概率,它可能會選擇和弦音符F或和弦音符C。

6.重復(fù)步驟1~4。

結(jié)果評估

接著就是最難的部分了——如何對不同模型進(jìn)行評估。在文章開頭,我曾說這個(gè)簡單的概率模型能超越神經(jīng)網(wǎng)絡(luò),但如何將我的模型和來自神經(jīng)網(wǎng)絡(luò)的模型進(jìn)行比較呢?如何用客觀事實(shí)說明我生成的音樂的確更接近流行風(fēng)格呢?

為了回答這個(gè)問題,我們首先要明確流行音樂的定義。我是從數(shù)據(jù)角度出發(fā)的,但是流行音樂還有另一個(gè)重要的決定因素,即要看在一首歌曲中,開頭、中間和結(jié)尾部分(前奏、主歌、副歌、橋段、尾奏等各個(gè)部分)都是如何重復(fù)的。

例如迪士尼電影《冰雪奇緣》的主題曲《Let it go》中的“Let it go, let it go, can’t hold it back anymore…”就是處于整首歌的中間部分而不是開頭或結(jié)尾,并且這一部分在整首歌里重復(fù)了三次。

知道了這一點(diǎn),我們可以使用一種名為“自相似性矩陣”的工具,它可以通過數(shù)學(xué)方法將歌曲的前奏、中間主歌和尾奏進(jìn)行可視化。下方是電影《曾經(jīng)(Once)》的歌曲《Falling Slowly》的自相似性矩陣。

每個(gè)小方塊表示每個(gè)音符在四個(gè)節(jié)拍中演奏的可視化

在上方動圖中,第一個(gè)藍(lán)色的大方塊表示歌曲的開頭部分,第二個(gè)黃色方塊表示歌曲的另一個(gè)片段。第一和第三個(gè)方塊都是藍(lán)色,是因?yàn)樗鼈冇邢嗤淖韵嗨菩浴5诙偷谒囊彩侨绱恕?/p>

接著,我對數(shù)據(jù)庫中的20首歌曲全部進(jìn)行了可視化處理。

結(jié)果

結(jié)果非常有說服力。在引入自相似性矩陣之前,我的模型生成的樂曲沒有內(nèi)部的重復(fù)結(jié)構(gòu)。但是將輸入數(shù)據(jù)的結(jié)構(gòu)進(jìn)行復(fù)制,你可以看到生成的音樂出現(xiàn)了對應(yīng)的模塊。

多倫多大學(xué)提出的神經(jīng)網(wǎng)絡(luò)模型生成的音樂可視化后是這樣的:

對比如下:

泛化

最后我想解決的是泛化的問題。我們?nèi)绾伟堰@個(gè)由數(shù)據(jù)驅(qū)動的模型用于除生成流行音樂以外的其他場景呢?換句話說,有沒有其他的模型和我的流行音樂生成模型結(jié)構(gòu)相同?

經(jīng)過我的思考,我發(fā)現(xiàn)另一種創(chuàng)作確實(shí)有這種結(jié)構(gòu),即流行歌詞!

以Edward McCain的《I’ll be》為例,其中一段是這樣的:

I’ll be your cryin’ shoulder

I’ll be love suicide

I’ll be better when I’m older

I’ll be the greatest fan of your life

讓我們把這段歌詞分解,用同樣的機(jī)器學(xué)習(xí)泛化語境。我們可能會將“I’ll be”作為語言模型的第一個(gè)輸入,這一二元模型會生成“your”、“crying”和“shoulder”。

之后就是重要的問題:開頭短語“I’ll be”是否和結(jié)尾的“shoulder”彼此獨(dú)立呢?換句話說,第一句話的最后一個(gè)單詞和第二句話的開頭單詞是否有關(guān)?

我覺得沒有關(guān)系。雖然以“shoulder”結(jié)尾,但開頭的“I’ll be”是基于前幾句話的規(guī)律,它們形成了重復(fù),說明這幾句話之間的開頭都有相似的關(guān)系。

我覺得這一發(fā)現(xiàn)很奇妙!流行音樂和流行歌詞都有相似的結(jié)構(gòu),即內(nèi)部都能用數(shù)據(jù)表示。你可以瀏覽我的網(wǎng)站:www.popmusicmaker.com試試創(chuàng)造自己的音樂。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:論作曲的能力,深度學(xué)習(xí)打不過簡單的概率方法

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Nanopi深度學(xué)習(xí)之路(1)深度學(xué)習(xí)框架分析

    學(xué)習(xí),也就是現(xiàn)在最流行的深度學(xué)習(xí)領(lǐng)域,關(guān)注論壇的朋友應(yīng)該看到了,開發(fā)板試用活動中有【NanoPi K1 Plus試用】的申請,介紹中NanopiK1plus的高大優(yōu)點(diǎn)之一就是“可運(yùn)行
    發(fā)表于 06-04 22:32

    深度學(xué)習(xí)存在哪些問題?

    深度學(xué)習(xí)常用模型有哪些?深度學(xué)習(xí)常用軟件工具及平臺有哪些?深度學(xué)習(xí)
    發(fā)表于 10-14 08:20

    深度學(xué)習(xí)模型是如何創(chuàng)建的?

    嵌入式系統(tǒng)已被證明可以降低成本并增加各個(gè)行業(yè)的收入,包括制造工廠,供應(yīng)鏈管理,醫(yī)療保健等等。本文將介紹有關(guān)深度學(xué)習(xí)嵌入式系統(tǒng)的信息。深度學(xué)習(xí)模型是如何創(chuàng)建的?創(chuàng)建
    發(fā)表于 10-27 06:34

    什么是深度學(xué)習(xí)?使用FPGA進(jìn)行深度學(xué)習(xí)的好處?

    ) 來解決更復(fù)雜的問題,深度神經(jīng)網(wǎng)絡(luò)是一種將這些問題多層連接起來的更深層網(wǎng)絡(luò)。這稱為深度學(xué)習(xí)。目前,深度學(xué)習(xí)被用于現(xiàn)實(shí)世界中的各種場景,例如
    發(fā)表于 02-17 16:56

    深度學(xué)習(xí)和機(jī)器學(xué)習(xí)深度的不同之處 淺談深度學(xué)習(xí)的訓(xùn)練和調(diào)參

    近年來,深度學(xué)習(xí)作為機(jī)器學(xué)習(xí)中比較火的一種方法出現(xiàn)在我們面前,但是和非深度學(xué)習(xí)的機(jī)器學(xué)習(xí)相比(我
    發(fā)表于 05-02 10:30 ?4341次閱讀

    利用獨(dú)創(chuàng)的深度學(xué)習(xí)模型,通過對大量音樂數(shù)據(jù)的學(xué)習(xí)及訓(xùn)練寫出音樂作品

    具體來說,他們的技術(shù)核心是層次化深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)和生成式對抗學(xué)習(xí)方式,特點(diǎn)是可以讓生成的樂曲賦有多樣性、悅耳性及可自定義性。由此,他們可以讓即使沒有任何音樂基礎(chǔ)的用戶都能通過簡單地選擇
    的頭像 發(fā)表于 08-15 09:09 ?3801次閱讀

    無線音樂門鈴的電路制作

    無線音樂門鈴的制作在許多電子類報(bào)刊、雜志都有介紹,很多配的音樂芯片為多曲可選,在我們實(shí)際指導(dǎo)的制作中,很多初學(xué)者由于沒有接觸過電子焊接,結(jié)
    的頭像 發(fā)表于 02-11 15:09 ?1.2w次閱讀
    無線<b class='flag-5'>音樂</b>門鈴的電路<b class='flag-5'>制作</b>

    深度學(xué)習(xí)在嵌入式設(shè)備的應(yīng)用

    下面來探討一下深度學(xué)習(xí)在嵌入式設(shè)備的應(yīng)用,具體如下:1、深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,包含多個(gè)隱層的多層感知器(MLP) 是一種原
    發(fā)表于 10-20 17:51 ?1次下載
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>在嵌入式設(shè)備<b class='flag-5'>上</b>的應(yīng)用

    如何用Arduino制作音樂

    電子發(fā)燒友網(wǎng)站提供《如何用Arduino制作音樂.zip》資料免費(fèi)下載
    發(fā)表于 10-26 15:28 ?0次下載
    如何用Arduino<b class='flag-5'>制作</b><b class='flag-5'>音樂</b>

    ESP32深度強(qiáng)化學(xué)習(xí)

    電子發(fā)燒友網(wǎng)站提供《ESP32深度強(qiáng)化學(xué)習(xí).zip》資料免費(fèi)下載
    發(fā)表于 12-27 10:31 ?0次下載
    ESP32<b class='flag-5'>上</b>的<b class='flag-5'>深度</b>強(qiáng)化<b class='flag-5'>學(xué)習(xí)</b>

    使用Arduino制作基于音樂的項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《使用Arduino制作基于音樂的項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 01-05 10:54 ?0次下載
    使用Arduino<b class='flag-5'>制作</b>基于<b class='flag-5'>音樂</b>的項(xiàng)目

    使用深度學(xué)習(xí)方法對音樂流派進(jìn)行分類

    電子發(fā)燒友網(wǎng)站提供《使用深度學(xué)習(xí)方法對音樂流派進(jìn)行分類.zip》資料免費(fèi)下載
    發(fā)表于 02-08 10:02 ?1次下載
    使用<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>方法對<b class='flag-5'>音樂</b>流派進(jìn)行分類

    什么是深度學(xué)習(xí)算法?深度學(xué)習(xí)算法的應(yīng)用

    。 在深度學(xué)習(xí)中,使用了一些快速的算法,比如卷積神經(jīng)網(wǎng)絡(luò)以及深度神經(jīng)網(wǎng)絡(luò),這些算法在大量數(shù)據(jù)處理和圖像識別上面有著非常重要的作用。 深度學(xué)習(xí)
    的頭像 發(fā)表于 08-17 16:03 ?2207次閱讀

    深度學(xué)習(xí)框架是什么?深度學(xué)習(xí)框架有哪些?

    高模型的精度和性能。隨著人工智能和機(jī)器學(xué)習(xí)的迅猛發(fā)展,深度學(xué)習(xí)框架已成為了研究和開發(fā)人員們必備的工具之一。 目前,市場上存在許多深度
    的頭像 發(fā)表于 08-17 16:03 ?2821次閱讀

    計(jì)算機(jī)視覺中的九種深度學(xué)習(xí)技術(shù)

    計(jì)算機(jī)視覺中仍有許多具有挑戰(zhàn)性的問題需要解決。然而,深度學(xué)習(xí)方法正在針對某些特定問題取得最新成果。 在最基本的問題上,最有趣的不僅僅是深度學(xué)習(xí)
    發(fā)表于 08-21 09:56 ?644次閱讀
    計(jì)算機(jī)視覺中的九種<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>技術(shù)