當前位置:
首頁 > 知識 > 私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

隨著生活水平的極大提高,人們在很多情況下都會邊聽音樂邊做一些事情,比如在健身房、出行路上等,越來越多的人也開始慢慢走在Hifi發燒友的這一條不歸路上,頻繁地換耳機、換功放等,小編在這裡勸一下大家不要向某米公司的為發燒而生,要學習某米公司的高性價比,發燒永無止境,適可而止就好。那大家有沒有關注一些音樂APP呢,國內做的好的音樂APP有網易雲、蝦米音樂及QQ音樂等,我們會發現這些APP中都會有兩個類似的功能——我喜歡的音樂及每日歌曲推薦,其中我喜歡的音樂這個功能會記錄你喜歡的音樂,而每日歌曲推薦是根據你喜歡的音樂風格來推薦給你一些你未曾聽過的音樂,看起來是不是很黑科技呢?其實這種技術早就存在,被稱作推薦演算法,在生活中隨處可見。根據百度百科的定義:推薦演算法是計算機專業中的一種演算法,通過一些數學演算法,推測出用戶可能喜歡的東西,目前應用推薦演算法比較好的地方主要是網路中。所謂推薦演算法就是利用用戶的一些行為,通過一些數學演算法,推測出用戶可能喜歡的東西。比如淘寶購物、頁面定位廣告等。

隨著大數據時代的到來,我們的個人數據會被巨頭公司以各種方式獲取,獲取的數據越多,對我們的分析也就越清楚,推薦得也更加準確,有時候甚至演算法做出的推薦選擇比我們自己都更加清楚自己內心想法,這點在婚戀交友網站上可能會有大的突破,分析彼此的性格,比如說分析兩個男人的條件,最後推薦最適合你的對象。未來的世界裡,數據就是上帝,你我都避免不了自己的數據被人收集,只能說利用好巨頭公司提供的各種服務吧。

言歸正傳,本文將利用深度學習向讀者展示一個音樂推薦系統的搭建,感興趣的讀者可以動手嘗試下。國外的音樂獲取沒有國內這麼便利及免費,這也說明國外的月亮一定比國內圓,國內的有些服務確實比國外做的方便。本文作者(後續將以「我」代替)最近幾年已經在junodownload網站花了很多錢,主要是購買購買mp3音樂,該網站是一個主要用於DJ數字下載網站,並且是一個巨大的銷售與跟蹤平台。

私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

從圖上看該網站是一個豐富的音樂資源分享網站,他們為每一首出售的歌曲提供慷慨的2分鐘試聽MP3文件(國內還是良心)。唯一遇到的問題是當在該網站上尋找一個不是最新的或目前不在銷售排行榜的音樂真的很難。

該網站主要側重於推廣新的內容,並認為新的音樂會產生最多的收益,但對於網站上的99%其他銷售能全部跟蹤嗎?

音樂推薦

私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

該網站目前已經有了一些跟蹤建議。在主頁上還有銷售列表、新發布的歌單和由人員及DJ策劃的大量的推薦列表。

最重要的是,在每個單獨的跟蹤/單網頁,窗口的右側會

「引薦

買了這首歌曲的也會買那首歌(類似於亞馬遜網站賣電子書籍)」、「藝術家的其他版本」和「其他版本的家唱片公司」,這些也是有用的。

但對於這樣一個大型的音樂資料庫,我覺得還是缺少根據用戶目前正在聽一的歌曲推薦一些可能也會喜歡歌曲的、建議一些類似的歌曲類型,這也會增加到購物車中的機會等。

如果你能發現音樂是幾年前發布的,並且類似於你喜歡的一個新的歌曲,會不會很酷?當然,Juno網站錯過了不提供這種類型的推薦帶來的潛在銷售的。

受到最近閱讀的一篇博客的啟發,對自己的音樂庫中的歌曲進行音樂流派的分類,我決定嘗試用類似的方法來建立一個音樂推薦系統。

實現過程

實現這一目標需要採集大量數據、處理和模型訓練等步驟。下面是所有涉及的步驟:

下載MP3文件

首先要做的第一件事就是下載大量樣本的MP3文件。

該網站上有超過400000的音樂文件可供銷售,隨意挑選了9種不同的音樂流派,然後從每種流派中都隨機選擇1000首。

9種流派:

  • 碎拍

  • 舞廳

  • 慢搖

  • 鼓與貝斯

  • 經典電音

  • 嘻哈/ RB

  • 微聲舞曲

  • 搖滾/獨立音樂

  • 迷幻舞曲

在接下來的幾天日子裡,我下載了這些流派總共9000個MP3文件。

轉換音頻頻譜圖

一個音頻文件包含的數據太多,所以在這部分的整個過程中的很大一部分本質上是試圖將信息從音樂中濃縮、提取主要特徵並消除所有的「噪音」。它本質上是一個降維的預處理,這第一階段是將音頻轉換成圖像格式。

利用離散傅里葉變換將音頻信號轉換到頻域上,處理收集的9000個MP3音頻文件,每首歌保存為光譜圖像。光譜圖是一種表示聲音的頻譜隨時間變化的可視化,圖片上顏色的強度代表該頻率的聲音振幅。

本文選擇創建成單色光譜圖,如下圖所示:

私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

上圖是20秒左右的嘻哈音樂產生的聲音。X軸表示時間,Y軸表示聲音的頻率。

分割圖像為256×256

為了對這些數據訓練一個模型,需要將所有的圖像統一為相同的尺寸,所以將所有的光譜圖分割為256×256大小。

私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

切割完圖片後,總共得到185000多張圖片,每一張圖像都標記與它所代表的音樂流派的標籤。

下面將數據集分為訓練集120000張、驗證集45000張和測試集20000張。

訓練一個卷積神經網路

利用上部分中的圖像數據訓練一個卷積神經網路,該網路要學習不同類型的音樂對應的頻譜圖像,所以使用類型標籤並訓練該網路能從圖像中識別出音樂的類型。

私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

上圖是本文搭建的卷積神經網路模型,可以看到,左上邊的光譜圖像將圖像轉換成一個表示每個像素的顏色的數字矩陣;之後數據經過卷積層、池化層以及全連接層等處理後送入到右下角的softmax分類器,分類器給出一個9位數的矢量,其中每位分別對應著9種音樂流派的概率,最後選擇其中最大概率位置的流派為最終識別流派。

卷積神經網路的表現如何呢?

本文搭建的卷積神經網路模型能夠以75%的精度分類出歌曲的音樂流派,我個人認為結果還是比較好(後續可以調參及調整網路模型提高識別精度),這是音樂是主觀的,一首歌曲常常會有一個及以上的類型。

下面是每種類型歌曲的分類精度的詳細情況:

  • 迷幻舞曲:91%

  • 鼓與貝斯:90%

  • 舞廳:79%

  • 碎拍:78%

  • 經典電音:71 %

  • 慢搖:71 %

  • 搖滾/獨立音樂:70%

  • 微聲舞曲:63%

  • 嘻哈/ RB:61 %

從結果中可以看到在分類迷幻電音時候表現優異,而分類嘻哈/ RB音樂時效果不是很好,可能的原因是數據集之間有一些交叉可能導致分類精度較低,比如嘻哈、碎拍和舞廳比較類似。而迷幻電音完全不同於其他8個類型的音樂,這可能是其表現優於的原因吧。

關於音樂推薦系統

現在有了訓練好的神經網路,該網路能夠「看清」音樂的頻譜圖,因此我們不再需要softmax分類器,所以移除模型中的全連接層。

每個圖像代表超過5秒的音頻信息,而每個MP3文件大約有2分鐘時長,因此每個音樂文件大約對應著23張圖像,即獲得23個特徵向量;然後計算這23個特徵向量的均值向量,總共得到9000的特徵向量;每個特徵向量對應著之前下載的9000首歌曲。

回顧整個過程–開始收集9000個音頻文件,並將其轉化為9000個頻譜圖,然後將頻譜圖分成185000個更小的頻譜圖,並利用這些圖像訓練搭建的卷積神經網路。最後從所有這些圖像中提取185000個特徵向量並計算其均值得到9000個對應原始音頻文件的平均向量。

基於已經從音樂文件中提取的128個特徵,這些特徵能夠確定音樂所屬的類型。為了創建有著類似特徵的推薦歌曲,所以需要找到最相似的向量。為此,計算出9000個向量之間的餘弦相似性。

推薦例子

最後一步是隨意選擇一首歌,然後訓練好的模型從9000首歌曲集中推薦一首與之最類似的音樂(最大的餘弦相似性)。

下圖是推薦的幾個例子,播放的第一首歌是隨機選擇的,第3個例子獲得了最類似的推薦。由於網路受限,播放需要通過外網,圖片下面對應著播放鏈接。

私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

(https://youtu.be/H1cN4uzxZZw)

私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

(https://youtu.be/cPHpr_u62ZM)

私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

(https://youtu.be/cizXW9vvoRA)

私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

(https://youtu.be/VDuOu4BMDz8)

私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

(https://youtu.be/7M5_TKOOGBg)

私人定製——使用深度學習Keras和TensorFlow打造一款音樂推薦系統

(https://youtu.be/PnK8pX8f9A4)

整個過程完全是無監督的,這點是很厲害的。想像一下,如果聽完這9000首歌后並評估這些歌曲的不同的特徵和類別需要花多少時間。類似的工作也在潘多拉進行,已經開始嘗試這種「音樂基因工程」。根據這篇文章,25個音樂分析師聽完並對10000首歌進行分類所花的時間是一個月,而本文的整個項目從開始到完成僅花費三個星期,並提取了多達450個不同的音樂特徵。該模型的表現與人類的表現類似,並且在查找歌曲時不需要任何人預先聽段音頻,此外花費極少的時間。

總的來說,本系統上手不太複雜,收集音樂並對音樂文件進行預處理需要花費一些時間,感興趣的讀者可以按照這個思路動手實現一些其他類似的推薦系統,也可以製作成一款APP哦,相比國內的音樂APP而言,國外的是不是弱爆了?趕緊開發一款在海外市場發行吧。

相關代碼

https://github.com/mattmurray/juno_crawler

https://github.com/mattmurray/music_recommender

作者信息

Matthew Murray:數據科學家和分析師

個人主頁:http://mattmurray.net/

Linkedin:https://www.linkedin.com/in/mattsrm/

Github: https://github.com/mattmurray

本文由北郵@愛可可-愛生活老師推薦,阿里云云棲社區組織翻譯。


文章原標題《Building a Music Recommender with Deep Learning》,作者:Matthew Murray,譯者:海棠

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲棲社區 的精彩文章:

分散式HTAP資料庫PetaData——OLTP與OLAP一站式解決方案
全面連接困何處,卷積網路見解深(深度學習入門系列之九)
獨家:阿里巴巴DevOps落地實踐玩法及思路解析
阿里雲高性能時序資料庫 HiTSDB 啟動公測,為物聯網而生的資料庫!
雲戰略下的安全思維轉型與新認知

TAG:雲棲社區 |

您可能感興趣

Converse 打造全新 Pro Leather 致敬 Michael Jordan
sacai 與 Chrome Hearts 為 Dover Street Market Ginza 打造全新獨佔單品
Vans 打造《Girls Skate India》創意短片
atmos 攜手 adidas Originals 打造日本限定 EQT 聯名配色
Jordan Brand 或將再度攜手 Converse 打造聯名鞋款
球鞋設計師 Jake Danklefs 打造「New Balenciaga」定製鞋款
電影工作室 emaygee FILMWORKS 攜手 Converse 打造 One Star 聯名鞋款
《Fucking Young!》打造「Resistance」造型特輯
Virgil Abloh 攜手村上隆和 Gagosian Gallery 打造跨界聯名企劃
Mozilla推出Firefox Rocket 首款為安卓用戶打造的極簡瀏覽器
adidas聯手Damian Lillard和BAPE打造潮流戰靴 | Xsneaker
Beatport收購Pulselocker,打造下一代DJ流媒體服務
用AI 打造遊戲,Unity 機器學習 Agent——ml-agents
Toy Story x Converse矚目登場 Palace x Reebok打造全新Workout系列
Open Platform欲打造去中心化PayPal
《Fucking Young!》打造「Your private playground」造型特輯
#Xsneaker新聞#Jordan Brand 或將再度攜手 Converse 打造聯名鞋款
Fear of God 打造 Union 獨佔鞋款
Kering 聯手倫敦時裝學院打造「Fashion and Sustainability」教育企劃
The Shoe Surgeon 打造 Virgil Abloh x Air Jordan 1 白色版定製設計