讓深度學習幫你創作爵士樂
歡迎大家參與在留言區交流
本周送書活動新鮮出爐~
AI 研習社兩大福利就在文末!
不可錯過~
【雷鋒字幕組】招募進行時
數學與音樂有著內在的聯繫。
用演算法作曲的歷史,可以追溯到計算機科學出現的初期。翻譯模型可以把一張圖片轉譯為音樂。這都是基於規則的:如果圖片里有一條水平的線,就會把它譯為持續的高音;反之,一條垂直的線會表示為上升的音階。
第一次嘗試使用計算機作曲的是伊利諾伊大學厄巴納 - 香檳分校的兩位美國教授,Hiller 和 Issacson。他們通過在學校的 Iliac 計算機上編程來作曲,輸入隨機數字來制定音高,並利用古典對位法測試這套程序。因此如果音高不適合這個作品,就會生成另一個音符。這還依賴於通過馬爾可夫鏈利用過去的概率預測未來的概率。
這台計算機在 1957 年創作出第一首樂曲,叫做 「Iliac 弦樂四重奏組曲」,雖然登上了《Scientific American》的頭條,但許多音樂界的權威對此並無善意,他們認為這會逐漸削弱人類的創造力。直到 Hiller 去世後,才把這件新聞刊登在音樂界的主流期刊上。
現如今,有許多神奇的生成軟體可以幫助作曲家們作曲。接下來,我們要學慣用 Keras 建立一個能生成爵士樂的模型。
1. 獲取數據
我們將會輸入一段 MIDI 格式的鋼琴曲。MIDI 是樂器數字介面,它就像表示音樂的數字字母表,裡面包含許多信息。因為這些信息是一個序列,所以我們會把遞歸網路用做序列學習模型。
我們將會抽取每一個 MIDI 文件中旋律與和聲的節點流,和聲的和弦伴隨著旋律的單音,然後通過節拍的數量將它們分類使每個節拍都有它自己的一組和弦,這種節拍和弦對就是我們所說的抽象文法( abstract grammars)。
我們將把輸入內容轉化為二進位矩陣,使得輸入內容矢量化,這樣就可以將它們輸入模型中。
2. 建立 2 層 LSTM 模型
我們將會製作一個 LSTM 網路。計算圖是這樣的:
音符的矢量化序列會被輸入第一個 LSTM 單元格中,然後我們會應用 Dropout 來確保模型泛化合適。之後重複一遍剛才的步驟。
接著把數據輸入最後一個標為密集(Dense)的完全連接層,正因為前幾個圖層中的每一個神經元都連接著這層中的每個神經元,這會把所有學習過的信號混合在一起,因此我們的預測是真正地基於整個輸入序列。
最後,把結果用 softmax 激活函數轉換為輸出概率,這個結果可能就是序列中的下一個音符。
當我們建立第一個 LSTM 層時,默認返回上個矢量,而不是整個序列。所以我們要把返回序列設為 True,這樣才能返回整個序列,在這個基礎上就可以疊加另一個 LSTM 層了。
使用兩個而非一個 LSTM 層允許輸入內容有更加複雜的特徵表示,也就是更高的泛化能力,這樣我們就會獲得更好的預測。
遞歸網路RNN本質上是一系列互相聯繫的前饋網路,每個前饋網路的輸出與隱藏層會被輸入下一個網路中。
當每一層都反向傳播時梯度會呈指數級減小,因此步長也會變得非常小,這會使深度網路中較低層權重的學習速率變得十分緩慢,這就是 「梯度消失問題」。LSTM 遞歸環節可以通過保留誤差來解決這個問題,而這些誤差必須是可以通過時間和分層反向傳播的。
一個 LSTM 神經元包含三個門:輸入門,遺忘門和輸出門。這就好像一個細胞狀態,細胞狀態就像是一個傳送帶,它只允許記憶流過而且保持不變。
這些交互動作也是門,可以從被它們控制的細胞狀態中添加或清除記憶。它們可以隨意選擇是否讓記憶通過。每一個門都包含一個 sigmoid 神經網路層和一個乘法運算,sigmoid 層輸出 0 到 1 之間的數值,描述每個部分有多少可以通過。
用以下方程式表示每一個門:
w 表示每個門的權重。內部記憶改變的方式就像水流從水管里通過一樣。把記憶想像成水流,水流進管道,如果我們想要改變記憶(水流)的流向,可以通過兩個閥門控制。首先是遺忘閥,當我們關上遺忘閥,以前的記憶不再被保存;當我們打開遺忘閥,所有以前的記憶都會通過。
另一個閥門是新記憶閥。新記憶通過一個 T 形節點流入,然後與以前的記憶合併,而流入的新記憶的多少則由這個閥門控制。輸入存在於以前的記憶中,並且從遺忘閥中通過。這個過程實際上是一個乘法運算。接著以前的記憶到達 T 型接管,這是一個加法運算。新的記憶與以前的記憶通過這個運算合到一起。
總的來說,這個運算將以前的記憶更新為新的記憶。
3. 訓練模型
我們會把損失函數定義為分類交叉熵,用兩種概率分布間的交叉熵測量平均位數,需要從一系列的可能性中確定一個事件。因為數據已經輸入序列中,交叉熵就能夠測量出真正的下個音符與我們預測的下個音符之間的區別。
4. 預測序列
通過使用 rmsprop 演算法來使損失函數最小化,它是一種隨機梯度下降演算法。因此我們會一遍又一遍地預測序列中的下一個音符,直到有了一系列生成的音符。
5. 將輸出保存為 MIDI
把這些音符譯成 MIDI 格式然後寫進文件里,這樣我們就可以聽了。快去視頻中聽一下最終輸出的音樂吧!
我們可以使用 LSTM 網路,預測音符序列從而生成音樂
LSTM 網路包含三個門:輸入門,遺忘門和輸出門,我們可以把這些門看做閥門
這些閥門可以控制記憶的在網路中的儲存以解決梯度消失問題
本期雷鋒字幕組志願者
另外,「雷鋒字幕組」也在招募更多的小夥伴加入。目前組內有來自華為、騰訊等大公司的 AI 從業者及高校青年學者。加入字幕組不僅可以結識很多志趣相投的夥伴,還能獲得雷鋒網內部的獨家資源福利,包括不定期線下聚會,免費的 AI 課程等。 有點心動?不如行動。
新人福利
【超過 1000G 神經網路/AI/大數據、教程、論文!】
福利二:根據這兩天大家在評論區的反饋
社長決定本周送花書中譯本!
本周內(截止至 7 月 30 日晚 24 點)
本公眾號本周發布的所有文章
在文章底部留言評論,獲得最多贊的社友,
社長將送出花書(《深度學習》Ian Goodfellow)1 本
TensorFlow書籍的質量參差不齊,
所以社長還要挑選斟酌一段時間,稍安勿躁。
※DCU博士講解蘋果第一篇獲獎論文,不容錯過!
※看完立刻理解 GAN!初學者也沒關係
※免費送出西瓜書一本,是不是你的?
※十分鐘搞定 Tensorflow 服務
※憑什麼蘋果奪得CVPR最佳論文?看完本文你就清楚!
TAG:唯物 |
※學習讓人快樂
※這個學員隊理論學習很有創意,與北師大哲學專業學生「PK」學習感悟
※學習爵士舞有哪些技巧
※「深度學習」與工匠技藝
※邂逅深度學習
※學習率及其如何改善深度學習演算法
※創造學習法——特性學習法
※學習物理學史對培養學生學習興趣起著相當大的作用
※創意培養學習的天使
※利用深度學習幫助科學圖像分析
※孩子不喜歡學習 如何能讓他主動愛上學習
※培養學生最佳的學習態度
※什麼是深度學習?
※學習書法苦與樂
※人工智慧世界裡的機器學習與深度學習
※學習本領最好的「老師」—遊戲
※如何理解深度學習?
※研究學習法與《為什麼學生不喜歡上學》
※人工智慧與深度學習
※創建教學語境 激發學習興趣