【生成Deap Learning 第2版】11.3~11.4

>100 Views

June 19, 25

スライド概要

profile-image

AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

2025年度前期輪読会 #9 (2025/06/17)【生成Deep Learning】 第11章 音楽生成 (11.3~11.4) 京都大学 大学院工学研究科 M1 河田 賢斗

2.

アジェンダ ■ 11.3 MuseGAN • • • • 11.3.1 バッハ合唱曲データセット 11.3.2 MuseGAN 生成器 11.3.3 MuseGAN 評価器 11.3.4 MuseGAN の分析 ■ 11.4 まとめ

3.

11.3 MuseGAN n  画像生成問題として音楽生成を考える  GAN の適用が可能では?  「MuseGAN」と命名  2017年に 論文「MuseGAN: Multi-Track Sequential Generative Adversarial Network for Symbolic Music Generation and Accompaniment」 で紹介される  複数小節の音楽を生成可能となる  高レベルな音楽的な特徴をきめ細かく制御すること 図1. ピアノロール が可能となる 3

4.

11.3.1 バッハ合唱曲データセット  MuseGAN の訓練のために必要なMIDIファイルをダウンロードする  バッハの4声合唱229曲のデータセットを活用  下図2のコードによりデータセットをダウンロードする • 時間ステップごとの4声各々の音程のMIDIノート番号(4つの数字)からなる配列 • 4分音符4拍分(1小節) が16時間ステップ⇒1時間ステップは4分音符1/4拍分 • train, valid, testのセットに分割されている⇒trainのデータセットを使用する 図2. データセットのダウンロード 4

5.

11.3.1 バッハ合唱曲データセット  GANに適した形状に修正する  各曲の出だし2小節を抽出→2小節の音楽を生成  1小節=4分音符4拍分=16時間ステップ・4声を通して84段階の音程がある  データの形状は以下の通り [BATCH_SIZE, N_BARS, N_STEPS_PER_BAR, N_PITCHES, N_TRACKS] ここで、 • BATCH_SIZE = 64 (64曲一括処理) • N_BARS = 2 (2小節分) • N_STEPS_PER_BAR = 16 (1小節=16時間ステップ⇒16分音符ベース) • N_PITCHES = 84 (音高はMIDIノート番号で84種類)  音程の番号をone-hot エンコーディングして⾧さ84のベクトルにする • N_TRACKS = 4 (4声部) 5

6.

11.3.1 バッハ合唱曲データセット(参考) ←図3. 2小節分の生データを処理し、GAN を訓練するピアノロールデータに変換する 6

7.

11.3.2 MuseGAN 生成器  MuseGANの構成  生成器と評価器から成る • 生成器の入力 : 単一のノイズベクトル(従来のGAN) , 4つの異なる入力(MuseGAN) 4つの入力 ① 和音 ② スタイル ③ 旋律 ④ グルーブ  4つの入力を独立に扱うことで生成 される音楽の属性の変更が可能  和音と旋律はテンポラルネット ワークに渡される  全トラックの各小節が連結され、 楽譜が生成される ↑図4. 生成器の高レベルの図 7

8.

11.3.2 MuseGAN 生成器  テンポラルネットワーク  入力は2小節のため、32時間ステップに相当する⇒入力の⾧さは32(=Z_DIM) (図5.①)  2次元転置畳み込み演算の適用のため、32チャネルの 1×1 テンソルに変形(図5.②)  Conv2DTranspose層(畳み込み層)を通じて、テンソルのサイズを1つの軸(時間軸)に拡 張し、⾧さをN_BARS とする(図5.③)  Reshape 層で不要な次元を削除する(図5.④) 畳み込み演算を用いる理由 ① 小節の一貫性をネットワークに学 習させるため ② 音楽が小節をまたいでどのように 流れるのかを学習する機会を持たせ るため → 図5. テンポラルネットワークのコード 8

9.

11.3.2 MuseGAN 生成器  和音、スタイル、旋律、グルーブ  和音 • 入力 : ⾧さはZ_DIM • 目的 : トラック全体で共有される、時間とともに変化する音楽の一般的な進行を制 御すること • 特徴 : TemporalNetworkを用いて単一のベクトルを、小節ごとに異なった潜在ベク トルに変換する  スタイル • 入力 : ⾧さはZ_DIM • 目的 : 曲の全体的なスタイルを制御する • 特徴 : すべての小節とトラックを通して同じであり、変換されることはない 9

10.

11.3.2 MuseGAN 生成器  旋律 • 入力 : [N_TRACKS, Z_DIM] の形状の配列であり、各トラック用の⾧さZ_DIMのラ • ンダムなノイズベクトルが渡される 出力 : 各トラックに特化したTemporalNetwork に入力ベクトルが渡され、小節ご とに⾧さZ_DIMのベクトルとなる  グルーブ • • 入力 : [N_TRACKS, Z_DIM] の形状の配列であり、各トラック用の⾧さZ_DIMのラ ンダムなノイズベクトルが渡される 特徴 : 入力ベクトルはテンポラルネットワークに渡されず、直接そのまま次に渡さ れる 表1. MuseGAN生成器の要素 → 小節ごとに 出力が違うか トラックごとに 出力が違うか スタイル × × グルーブ × 〇 和音 〇 × 旋律 〇 〇 10

11.

11.3.2 MuseGAN 生成器  小節生成器 結合 4つの潜在ベクトル 小節生成器 入力ベクトル (⾧さ : 4×Z_DIM) ピアノロール表現 (単一トラック・一小節)  転置畳み込み層を用いて時間と音程の次元を拡張するニューラルネットワーク  4つの潜在ベクトル(和音、スタイル、旋律、グルーブ : 入力)  ピアノロール表現(出力結果) • 形状 : [1, N_STEPS_PER_BAR, N_PITCHES,1] のテンソル 11

12.

11.3.2 MuseGAN 生成器  小節生成器を作成するKeras のプログラム ↑→ 図6. Kerasのプログラム ① 入力は⾧さZ_DIM×4のベクトル ② Dense層でテンソルに変形 ③ 時間ステップを拡張 ④ 音高方向に拡張 ⑤ Tanh活性化関数を使用 ⑥ 小節連結の準備として、サイズ1 の次元を追加 12

13.

11.3.2 MuseGAN 生成器  MuseGAN生成器を作成する 図7.↑→ MuseGAN生成器を作成するKerasコード ① 生成器への入力を定義 ② 和音・旋律の入力をテンポ ラルネットワークに渡す ③ トラックごとに独立の小節 生成器ネットワークを構築 ④ トラックと小節の組み合わ せで小節を生成しながら ループ ⑤ 4つのテンソル(入力)から 複数トラック、小節に渡る 楽譜を出力する 13

14.

11.3.3 MuseGAN 評価器  MuseGAN 評価器  目的 : 生成器が作成した楽譜を、本物の合唱曲集と見分ける 図8. ↑→ MuseGAN評価器を作成 するKerasプログラム ① 複数トラック・複数小節 の楽譜の配列 ② 小節の軸に沿ってテンソ ルを縮退させる ③ 音程の軸に沿ってテン ソルを縮退させる ④ 時間ステップの軸に 沿ってテンソルを縮退 させる ④ ノードを1つ持つDense 層 14

15.

11.3.4 MuseGAN の分析  入力パラメータの影響分析  MuseGANの特徴 • 生成器からの出力にて、84音程の全ての中で最大値を持つ音符を選択 • 閾値0と設定するのではなく、単純な最大値を取る  モデルの生成例  入力パラメータが、生 成された音楽の系列 データの高レベルな特 徴に直接影響を与える →図9. MuseGANが生成した 楽譜の例 15

16.

11.4 まとめ  音楽生成  逐次的なアプローチが必ずしも必要ではない  楽譜を画像として扱う⇒畳み込み⇒複数トラックの楽譜を生成 • 4つの入力ノイズベクトルを編成し、音楽の高レベルな特徴を完全に制御出来るよう に • 完璧な再現は難しいが、幅広い問題に適用可能なGANの力を際立たせるもの 16