騰訊 PCG ARC 實驗室 投稿
量子位 | 公衆号 QbitAI
能處理音樂的多模态大模型,終于出現了!
隻見它準确分析出音樂的旋律、節奏,還有使用的樂器,甚至其中的意境也能解讀。
而且它不僅會聽,隻要給它一段文字和圖片,它就會在理解圖片意境之後,結合文字要求來創作:
甚至是給靜默的視頻配上聲音:
現有的音樂它也能編輯,比如從一段音樂中去除鼓的聲音
以上的這些效果,都出自騰訊 PCG ARC 實驗室新推出的基于多模态模型的音樂理解與生成框架M2UGen。
它可以進行音樂理解、音樂編輯以及多模态音樂生成(文本 / 圖像 / 視頻到音樂生成)。
研究團隊在模型的五種能力上分别和現有模型進行了一一對比,并在多模态音樂生成的三個子任務上(文本 / 圖像 / 視頻到音樂生成)做了主觀評測實驗,發現 M2UGen 模型性能均優于現有模型。
此外,由于沒有很多合适數據集用于模型訓練,研究團隊還研發了一套數據生成方法,制作了 MUCaps、MUEdit、MUImage、MUVideo 四個數據集并發布。
目前團隊已将模型代碼庫在 Github 開源,并在 Huggingface 上開放了模型權重和訓練所需數據集(需申請)。
那麽,M2UGen 究竟是怎樣實現的呢?
模型共分四個模塊
M2UGen 模型分爲四個模塊區域,分别是多模态特征編碼器、多模态理解适配器、橋接 LLM 以及音樂理解與生成模塊。
下圖展示了 M2UGen 模型的整體框架:
多模态特征編碼器
爲了實現多模态音樂理解與生成,模型需要處理多模态輸入。
基于此,研究團隊應用了一些現有的模态編碼器,如音樂編碼器 MERT、圖像編碼器 ViT 和視頻編碼器 ViViT。
ViT 和 ViViT 是視覺領域常用的兩個基于 Transformer 的編碼器,在現有的一些 LLM 相關工作中經常涉及,因此開發者選用這兩個分别作爲圖像和視頻編碼器。
對于音樂輸入,前序工作 MU-LLaMA 證明了 MERT 模型顯著優于其他比較的音頻 / 音樂編碼器,因此在 M2UGen 中研究團隊選用 MERT 作爲音樂輸入的編碼器。
多模态理解适配器
該模塊的主要作用是将編碼器輸出的特征向量進行信息整合,輸入到後續的 LLM 中和文本輸入一起控制 LLM 的輸出。
如下圖所示,該模塊主要由 1D 卷積層、線性映射層和一個稠密網絡模塊(Dense Network)組成。
最後的稠密網絡模塊如下圖:
該模塊由三個子模塊組成,包含正則化層(Nomarlization)、線性層(Linear)、激活函數(SiLU)等組件。
該過程可由下式表示:
其中 Xi 表示第 i 個子模塊之後的輸出嵌入向量,Lj,i 表示第 i 個子模塊的第 j 層線性層,Ni 表示第 i 個子模塊内的正則化層,SiLU 是激活函數。
該稠密網絡設計延續自團隊的前序工作 MU-LLaMA。
在稠密網絡之後,輸出 4096 維的嵌入向量,提供給下遊的 LLM 使用。
橋接 LLM
爲了将多模态上下文信息引入 LLM,研究者将來自相鄰上遊多模态理解适配器的輸出接入到 LLM 的指定層。
研究者采用了 Meta 研發的 LLaMA 2 模型作爲底座 LLM,如下圖所示。
這裏選用的模型版本是 LLaMA 2 7B 模型,包含 N=32 個隐層。
從該模型的頂層算起,每 L 層(L=6)引入一個模态信息,從上至下依次引入音樂、圖像和視頻模态信息,并使用零初始值注意力模塊,底部的 ( N-3L-1 ) 層則采用原始的注意力模塊。
LLM 的文本指令從底層,也即第一層輸入。利用該技術,LLM 被賦予了通過其他模态信息來引導 LLM 輸出的能力。
音樂理解與生成模塊
受 NExT-GPT 工作啓發,本模型引入了特定的音頻标記 [ AUD ] ,用來區分音樂問答和生成任務。
在模型訓練階段,對于以音樂作爲輸出(即音樂生成任務)的訓練樣本對(如文本指令 - 音樂對),這些音頻标記會添加在 LLM 輸出的末尾,用于指示下遊的音樂輸出。
在模型推理階段,假如用戶輸入的指令和音樂生成有關,比如 Generate a music using flute(用笛子生成一段音樂),則 LLM 的輸出會包含音頻标記,從而下遊的音樂解碼器會接收該指令并生成以笛子作爲演奏樂器的音樂;
反之如果 LLM 的輸出沒有音頻标記,則表明用戶期望的是音樂理解任務,此時由 LLM 直接回應用戶提問。
研究人員嘗試了兩種音樂解碼器—— AudioLDM 2 和 MusicGen,其中 MusicGen 的音樂生成表現相較 AudioLDM 2 更好。
提出新數據集,訓練分三階段
訓練數據集
如本文研究貢獻所述,本研究構造了四組數據集 MUCaps、MUEdit、MUImage 和 MUVideo,數據樣本示例如下圖所示。
MUCaps 數據集:
約 1200 小時來自 AudioSet 和一些網站的公開音樂;
利用 MU-LLaMA 模型對搜集的音樂文件生成音樂注解組成音樂 - 文本對。
MUEdit 數據集:
從 AudioSet 構建音樂池(音樂池和 MUCaps 不同),并篩選出約 60 小時相似的音樂 - 音樂對;
篩選條件包括速度(tempo)、beats(節拍)等,從而得到大體相似,但有一定區别的音樂 - 音樂對(比如使用的樂器不同);
将音樂 - 音樂對看作是源 - 目标對,将源音樂的注解文本輸入給 MPT-7B [ 14 ] 模型得到人類端對話,目标音樂的注解文本輸入給 MPT-7B 模型得到模型端對話,也即源音樂和目标音樂都得到對應指令用于模型訓練。
MUImage/MUVideo 數據集:
從 AudioSet 再另外采樣一些圖像 / 視頻 - 音樂對(和 MUCaps/MUEdit 中的音樂均不同,最小化音樂重複),用 BLIP/VideoMAE 模型對圖像 / 視頻做圖像 / 視頻注解;
将圖像 / 視頻 + 音樂的注解文本輸入到 MPT-7B 模型,分别得到人類端和模型端對話。
以上數據集構造腳本可參見:
https://github.com/shansongliu/M2UGen/tree/main/Datasets
而 M2UGen 模型的訓練參考了 NExT-GPT 的訓練方式,分爲三個階段,分别是編碼端訓練、解碼端訓練和編解碼聯合訓練。
階段 1:編碼端訓練
該階段凍結多模态編碼器和 LLM,隻訓練多模态理解适配器;
利用來自 MUCaps/COCO/MUVideo 的音樂 / 圖像 / 視頻 - 文本對做階段 1 訓練;
訓練損失爲交叉熵損失,即比較 LLM 的輸出和目标注解文本。
階段 2:解碼端訓練
這一階段不考慮編碼測(模态編碼器和适配器),凍結 LLM,訓練輸出映射模塊;
此階段旨在訓練 LLM 生成指示下遊音樂解碼器輸出音樂的指令,或直接根據輸入指令對輸入的音樂做問答或注解;
需要對齊的是音樂解碼器(AudioLDM 2/MusicGen)的文本編碼器輸出和 M2UGen 模型輸出映射模塊産生的條件嵌入向量,即對輸出端進行對齊;
此階段在訓練時,通過添加特定的音頻标記 [ AUD ] 來指示是否生成音樂。如果 LLM 的輸出中包含 [ AUD ] ,則同時生成文本 + 音樂(音樂生成),如果不包含,則隻生成文本(音樂問答);
損失函數采用交叉熵和均方誤差,其中交叉熵是比較 LLM 輸出的音頻标記和真值音頻标記,均方誤差是比較 M2UGen 模型輸出映射模塊産生的條件嵌入向量和音樂解碼器的文本編碼器的輸出文本嵌入向量。
階段 3:編解碼聯合訓練
該階段凍結多模态編碼器和 LLM,訓練多模态理解适配器和輸出映射模塊,以及 LLM 中的 LoRA 參數;
此階段訓練時訓練數據有 Alpaca(通用知識)、MusicQA、MUImage、MUVideo 和 MUEdit;
爲了使模型可以同時生成音樂和文本, MUImage、MUVideo 和 MUEdit 三個數據集在階段 3 訓練時 LLM 輸出端添加了特定的音頻标記(和階段 2 訓練類似)。
未來,研究團隊的工作重點是進一步提升模型的細粒度音樂理解能力,并改善生成音樂與輸入指令之間的相關性,也使音樂編輯能力更加精确。
論文地址:https://arxiv.org/pdf/2311.11255.pdf
— 完 —
點這裏關注我,記得标星哦~
一鍵三連「分享」、「點贊」和「在看」
科技前沿進展日日相見 ~