# RL-Duet: Online Music Accompaniment Generation Using Deep Reinforcement Learning Paper Link : https://arxiv.org/abs/2002.03082 Project Link : https://labsites.rochester.edu/air/projects/RLDuet.html 為甚麼要有音樂伴奏 * 增強旋律 * 增添多樣性 * 提供節奏 音樂伴奏的行為 * 形成和諧的背景 * 呼應主旋律或突顯特定的情感。例如,橋段部分可能加入新的樂器或提高音量,創造出音樂上的高潮。 * 和弦的即興變化 * 伴奏與主旋律之間通常存在互動,這種互動可以通過和弦變化、回應主旋律的旋律動態等方式實現。 ## Abstract & Introduction Comprehensive musicianship : including perception and composition 感知主旋律 然後進行伴奏的創作 Long-term temporal structure * 長時間範圍內的結構或組織 * 也包括: 主題, 情感, 節奏, 對比 Inter-part harmonization * 不同樂器、聲部或音樂元素之間的和諧關係 * 和聲的變換 ## Related Work some are directly generate audio signals RNN -> LSTM -> GRU 演進 連貫合唱 產生具有改善的長期一致性的音樂 MLE的基本思想是找到最大化可能性函數的參數值 ## RL-Duet Mismatch between training and testing conditions * 模型訓練時通常使用人類創作的音樂來進行預測,所以較難發生問題 * 但在測試時是根據之前的預測進行預測,所以如果有一次的失誤預測,就會導致失誤持續惡化並累積 Mismatch between training criterion and generation objectives * MLE會選擇機率最大的token * 不考慮對未來生成token的長期影響 * Offline的狀況下可以用beam search去解決 ``` 束搜索的主要優勢在於它能夠考慮多個可能的序列,而不僅僅是單一的最可能序列。這有助於避免陷入局部極值,提高模型生成合理序列的能力。然而,束搜索也有一些缺點,例如它傾向於生成重複的片段,可能降低生成的多樣性。 ``` cross-entropy 用意是在觀測預測的機率分佈與實際機率分布的誤差範圍 ![image](https://hackmd.io/_uploads/BysUF-frp.png) ![image](https://hackmd.io/_uploads/HJnU-KMSa.png) ## 講稿 ppt : https://docs.google.com/presentation/d/1hrmBTRl5_UZQ1VMuWLjlTmiq36wGTA7g/edit?usp=sharing&ouid=114714054792570400141&rtpof=true&sd=true ``` 我們要報告的論文是RL-Duet --- 總共分為六個Outline --- 那接下來進入介紹的章節 ---Abstract 首先 這篇論文主要介紹了一個深度強化學習的演算法,用於生成音樂伴奏 並且這個伴奏是即時realtime去生成的,所以可以把它視為improvisation 也就是即興創作 那下面可以看到簡易的流程圖,第一步驟 是訓練出一個RL agent,然後生成伴奏,最後就能與人類一起演奏音樂,達成人機互動的效果 ---Introduction 接下來進入introduction 那因為現有的研究大多都專注在非realtime的音樂生成,所以作者就有撰寫這篇論文的motivation 再來介紹Online music accompaniment 也就是線上音樂伴奏 由於是realtime 所以必須進行快速的決策 不能有太高的延遲 第二點就是要感知主旋律,然後創作出合理的伴奏 最後是為甚麼要用RL? 因為RL可以考慮到"長時間範圍內的結構或組織,包括說: 風格, 主題, 氣氛, 節奏, 對比 這些..." 並且也考慮到"不同樂器、聲部或音樂元素之間的和諧關係 與 和聲的變換" ---Deep Learning Music Gen 這頁主要是講解有關深度學習的音樂生成研究 標題的Symbolic是指說生成音符,也有一些研究是直接生成音樂,但大部分都是生成音符居多 過往的研究通常是用RNN或是RNN的改進版本,如LSTM或GRU 也有人使用GAN去生成,但在訊練過程中會有不穩定的情形發生 這些研究中最具代表性的是2017年的DeepBach 它使用gibbs 是一種類似於蒙地卡羅的採樣法 透過這種sampling去不斷地迭代修改生成的音樂片段 最後訓練出來的模型就可以生成出巴赫風格的音樂 但這種方法是offline的,與我們這篇論文的需求是違背的 ---Interactive Music Gen 這頁主要是講解有關互動式的音樂生成 互動式除了伴奏之外,還有這種call and response,也就是人類演奏一段,然後機器演奏一段,不斷重複輪流 第一個是這種基於基因遺傳演算法的機制,但這種方法重度依賴於音樂相關的知識 第二個是前面有提到的GAN,但也是offline生成 第三個是google在2019提出的music transformer,這種方法因為有self-attention的機制 所以生成出來的音樂就具有風格一致性,不會一下子是風格A 接著又變成風格B ---RL Music Gen 這頁就是跟本文最相關的related work,強化學習音樂生成 首先要介紹的是MLE,這是一種統計學的估測方法,估測出模型的最佳參數 第一個是ORGAN它是結合了RL跟GAN這兩種技術的方法 第二個是SequenceTutor,它採用RNN+MLE的方式,那這篇文最大的缺陷就在於它依賴於數十條手工製作的音樂規則 在後面的Experiment章節就會用這個模型來跟RL-Duet進行比較 ---RL-Duet Motivation 接下來進入RL-Duet的介紹 根據前面提到的relate work,之前的研究是用RNN+MLE的方式,它的概念其實就是把過去所有的 (也包括自己生成的那些)token 作為輸入,學習下一個token的機率分布,那這種方法會有幾個缺點 第一點是 因為模型在訓練時都是使用人類創作的音樂去預測,所以這時候都看不出問題 但是到了測試階段時,假設某次的預測失誤了,因為輸入也會包含機器之前生成的資料,所以就導致失誤持續惡化 累積 第二點是 基本上MLE是會直接選擇機率最大的token,不會去考慮生成現在這個token對未來的長期影響 可以看下圖中的第二排樂譜,MLE生成的伴奏有許多重複音,而我們的RL-Duet就有很高的多樣性 這種問題在offline的情形下可以用beam search去解決,但在我們的realtime狀況下就不適用 最後來介紹一下使用RL的優勢 第一個就是前面提到的長期規劃,因為RL可以讓reward延續到後續的回合,所以就有了長遠影響的效果 第二點是說 使用RL去訓練 也就不需要額外的設定或規則,就像前面提到的seqencetutor RL-Duet可以完全從資料集中學習出reward model ---RL-Duet Representation 這頁會介紹怎麼樣把音樂資訊進行encoding 把每個音高的時間分為十六分音符的時段,較長的音會用hold表示持續 在實驗時,會用以下兩種的音高表示去測試,也就是multi-hold與single-hold 這兩個的差異在於multi-hold針對所有音高都使用不同個hold,single-hold則反之 最終的結果是表明multi-hold可以造成較大的音樂多樣性 音符的資訊除了音高之外 還有節拍,作者在這邊也是把節拍時間切割成十六音符的時間 然後加上beat index 1~4,也就是說最終的list看起來就像1 2 3 4不斷重複 最後來講解這個model concept,Human用h表示 Machine用m表示 輸入到agent的state就是由human part + machine part,但是會限縮在sliding window的大小之內 要預測的機率就是在state t的狀況下machine生成這個token的機率 ---RL-Duet RL Framework (1) 接下來這頁會介紹到本文所使用的強化學習框架 RL-Duet使用的演算法是policy gradient中的一種方法,叫做廣義優勢估計GAE 那我們在下一頁會介紹到,訓練目標就是讓這個長期reward可以最大化 訓練共分為兩個階段,第一階段是用一般的generation agent去生成樂譜 輸入state_t生成action_t,第二階段會用reward agent去檢視前面生成的樂譜,也就是根據action計算出reward 最終再將訓練成果更新到generation agent,這兩個phase不斷重複去運作,最終就可以完成訓練 ---RL-Duet RL Framework (2) 那這頁主要就是放上GAE的策略梯度更新公式,我會大概講解重要的部分 首先我們有action policy pi與value function V跟優勢函數 At 優勢函數就是評估當前策略相對於預期的好壞,使用的就是TD error的機制 然後還有一個lambda的參數,這個參數用於控制長期優勢的加權。 lambda越接近1,越強調長期的優勢,lambda越接近0,越強調即時的優勢。 ... ---RL-Duet Reward Model (1) 接下這兩頁會介紹RL-Duet的reward model是怎麼設計的 作者有提到,為了避免生成的不好的片段,例如很無聊啦或者是過於奇怪的音樂 所以採用了多個reward model,這樣做同時也可以增加模型的robust程度 作者在設計時有考慮到以下的這兩點,但因為這些都是音樂相關的術語,我就大概的講一下 水平時間一致性就是關乎到音符與音符之間的流暢度,好的音樂盡量不會有太大的音高跳動 垂直和諧關係就是同時有多個響起的音符,那這些音符必須要是互相和諧的搭配,也就是說主旋律與伴奏不會聽起來像是兩首音樂 ---RL-Duet Reward Model (2) 那這頁就是在介紹RL-Duet提出的四種reward model 這頁中的黃色區塊都代表model的輸入,藍色區塊代表要預測的範圍 那人類與機器都有參與輸入就代表joint,沒有joint就是像下面這兩種view,只有人類或只有機器 以a來說就是對這次生成的token去評估,那b就對以前的一些token做評估 那c這個reward model就是為了讓前面說的水平時間更加一致性,也就更流暢 d這個reward model就是為了讓前面說的垂直和諧關係更加良好,伴奏也就更不突兀 ``` AI中文翻譯論文 : https://drive.google.com/file/d/1E0XyJrA3bvrMEXk-fiaRb4C37HliRc5Z/view?usp=sharing