Upgrade to Pro — share decks privately, control downloads, hide ads and more …

生成Deep Learning 7章「作曲する」 勉強会補足資料

生成Deep Learning 7章「作曲する」 勉強会補足資料

【オンライン開催!】『生成Deep Learning』読書会#7 にて使用。
https://soleildatadojo.connpass.com/event/199819/

9c72ba7ae1c85c90ef043a651c448838?s=128

shinebalance

January 12, 2021
Tweet

Transcript

  1. Chapt7. Compose ( 作曲する) Chapt7. Compose ( 作曲する) 2021-01-12 ⽣成Deep

    Learning 勉強会補⾜資料 Chapt7. Compose (作曲する) 
  2. 本章の⼤枠 本章の⼤枠 Intro、データとしてみた時の旋律について 実装1:LSTM with Attentionでモノフォニックな⾳楽の⽣成 実装2:Muse GANでポリフォニックな⾳楽を⽣成する TL;DR TL;DR

    ML ✕ ⾳楽というアイデアを知ることで、⽣成モデリングと対象デ ータの相性について考える (個⼈的な気付き) 旋律もまた系列データ。 NLPだけがAttentionの戦場ではない。 Chapt7. Compose (作曲する) 
  3. Intro Intro Chapt7. Compose (作曲する) 

  4. Intro Intro 「⾳楽から学習して⾳楽の時系列構造を再作成する」 旋律は時系列データということ つまり、⾃然⾔語処理と似ている 「⾳楽を聴くことから起こる興趣の多くは、アンサンブル中の様々 なリズムの相互作⽤の中にある」 ⾃然⾔語処理との違いは、複数の旋律が重なることによるアン サンブルが⼤事なこと 例えば伴奏とメロディのコードが違ったりすると気持ち

    悪いことになる わかりやすい例:https://www.youtube.com/watch? v=WABoii7hLKM Chapt7. Compose (作曲する) 
  5. データの扱い データの扱い 楽譜の電⼦データ、ということでMIDIを使う コグニティブな情報をデジタル化するという意味では本質的に 画像、テキストとやることは⼀緒 楽譜苦⼿という⽅も、⾳階の概念を理解していれば何となく分 かるはず 最後に触れるが、MIDIデータを使わないNNも少数ながら存在する Chapt7. Compose

    (作曲する) 
  6. 実装1:LSTM with 実装1:LSTM with Attention でモノフォニック Attention でモノフォニック な⾳楽の⽣成(7.2) な⾳楽の⽣成(7.2)

    Chapt7. Compose (作曲する) 
  7. 7.1 データ処理 7.1 データ処理 実際にモデルへデータを投⼊するにあたっては、以下に着⽬して MIDIデータをエンコードする。 その⾳符の⾳程(ドレミ,もといCDE) ⾳符の⻑さ(どれくらいの時間鳴るか) 上記を数値データ化しておけば、あとはEmbeddingされて処理でき る

    (疑問)⾒る限りカテゴリ変数として処理している? ⾳符の⻑さを量的な変数として考慮する必要はないのだろう か? 単旋律かつLSTMなので考慮不要? Chapt7. Compose (作曲する) 
  8. 7.2 Attention 7.2 Attention 元々、Encoder-Decoder型のModelで英語→独語の翻訳タスクを解 く際に適⽤されたもの 本書ではまさかの本章が初出 TransformerもといBertが最も著名なので、この説明の 順番は珍しい気がする Transformerでは発展型のMulti-head

    attentionを使う が、本書7章の実装はどうもSelf-Attentionのような気 がする 重要な概念なので、(発表者の⾃⾝の理解確認)も含めて、ちょっとだ けおさらい Chapt7. Compose (作曲する) 
  9. Attention is All you need… Attention is All you need…

    ざっくり⾔うと、⼊⼒データ(時系列データや画像など)に対して、 「どの部分が重要か(Pay Attention)」を返すレイヤ 重要なのは「微分可能な⽅法で”選択”ができる」こと(引⽤:ゼロつ く2) 解説記事はいっぱい有るので、”Attention is all you need”でググっ てみてください。 ビジュアライズされたものだと以下サイトと、そこで紹介され ているTensor2Tensorノートブックの「Display Attention」 が直感的で好きです 内"Display Attention"の結果セル (Colabが開きますが、実⾏しなくても⾒れます) The Illustrated Transformer Tensor2Tensor Intor Chapt7. Compose (作曲する) 
  10. 7.2.1 Attention を採⽤するモチベーショ 7.2.1 Attention を採⽤するモチベーショ ン ン 7秒くらいまでが本書の楽譜の範囲です 意外と予想できそうですよね?

    これをやろうと思うと、本書の通り「8⾳符前のネットワークの隠れ 状態に対しても特別な注意を払うモデルが欲しい」訳です J.S.バッハ 無伴奏チェロ組曲 第1番〜プレリュード〜/中⽊健⼆ Chapt7. Compose (作曲する) 
  11. 7.2.2 RNN with Attention 7.2.2 RNN with Attention 実装は書籍・コードを参照 (メモ)

    「再帰層の隠れ状態に適⽤されるAttention」が具体的に Attention Mapを持つ範囲が気になる 実装コードの可視化(7-3最後のセル)を⾒る限り、処理 が進むについれてh1,h2,h3…とAttentionの対象が増え て、RNN層のもつ上限まで⾏ったらその範囲で進む? model.summary()で⾒た時の repeat_vector_1 , permute_1, multiply_1 がAttentionの実装っぽい。着⽬ すると分かりやすい 最終的にshapeが256になってる Chapt7. Compose (作曲する) 
  12. 7.2.3 可視化されたAttention のチェック 7.2.3 可視化されたAttention のチェック こちらも書籍・コードを参照 「どの⾳符が特定のキーに属するかを、モデルが明らかに学習して いる」 夢のない⾔い⽅をすると「教師データがもつ周期特性を学習し

    た」とも⾔える 7.2.4~ 7.2.4~ Encoder-Decoder型のModelに組み込む場合のモデル構造 ポリフォニック(多声)な⾳楽については別にアイデアが必要であるこ との⽰唆 和⾳の処理は、画像処理の時の考え⽅(別チャネルの組み合わ せが意味を成す)に似ているよね、という事 Chapt7. Compose (作曲する) 
  13. 実装2:Muse GAN でポリ 実装2:Muse GAN でポリ フォニックな⾳楽を⽣成す フォニックな⾳楽を⽣成す る(7.3~7.8) る(7.3~7.8)

    Chapt7. Compose (作曲する) 
  14. 7.3 MuseGAN 擬⼈化 7.3 MuseGAN 擬⼈化 登場⼈物を整理しよう(敢えて原著の表記を採⽤) セクション 指⽰の頻度 指⽰する内容

    Style 楽曲開始時 全体の⾳楽スタイル Groove 楽曲開始時 各パート(楽器)の⾳楽スタイル Chords ⼩節毎 ⼩節毎の和⾳設定 Melody ⼩節毎 各パート(楽器)の演奏指⽰ * ここに演奏結果を軌道修正する(真偽判定をする)指揮者を追加して完成 Chapt7. Compose (作曲する) 
  15. 7.4 MuseGAN 概要 7.4 MuseGAN 概要 GANベースでポリフォニックな⾳楽⽣成を⾏うモデル 「⽣成器に⼊⼒するノイズベクトルの役割を分割することによ り、複数トラックの⾼レベルな⾳楽的特徴を制御した」 (発表者所感)GANはデータの解釈のさせ⽅で制御するタ

    イプ、モデル構造でトップダウン的に⽣成物を制御する タイプが有ると思うが、本モデルは後者っぽい Chapt7. Compose (作曲する) 
  16. 7.5 MuseGAN ⽣成器 7.5 MuseGAN ⽣成器 各セクションの役割を確認しながら図7-15を⾒ていくと理解しやす い 複雑だが、実は難解なアイデアは使われていない印象 登場⼈物の多さと「テンポラルネットワーク」とかいうわかり

    にくい名称 Temporal TableとかのTempではなく、Tempoの Tempoとして⾒たほうが良い気がする 筆者は最初ぼーっと読んでいたので気付かなかったが、実は DCGAN(W-GAN)に近い気がする Chapt7. Compose (作曲する) 
  17. ポイント? ポイント? インプットは4つのノイズ、最終的に出⼒されるのは、「複数トラッ ク(今回だと4楽器)」「複数⼩節(今回は2⼩節)」の楽譜データ 構造⾃体はオートエンコーダに近いが、4つのノイズに関係性を持た せるために、事前にノイズを指⽰頻度に合わせて加⼯した上で「⼩ 節⽣成器」へ取り込む ⼩節⽣成器はトラックごとの旋律を作る 「指⽰頻度に合わせた加⼯」は「テンポラルネットワーク」を通し て⾏う

    ⼩節を跨った転置畳み込み演算を⾏う。今回だと2⼩節分 (CNNでも初歩的な⾃然⾔語の分類が⾏える事象と同じ) Chapt7. Compose (作曲する) 
  18. 7.6 MuseGAN 評価器 7.6 MuseGAN 評価器 単純(「GANではたいていそうです」) 特筆するところがあるとしたら、W-GAN前提&Conv3Dを使 っているくらい? Chapt7.

    Compose (作曲する) 
  19. 7.7 解析&まとめ 7.7 解析&まとめ こちらも書籍・コードを参照 ノイズごとに明確に役割分担がなされているので、ツマミを弄 るように出⼒結果を揺らすことも出来る Chapt7. Compose (作曲する)

  20. 余録 余録 その他の⾳楽⽣成系のネットワーク MuseNet(9章で⾔及あり) Transformerベース、正直本章でLSTM with Attention 使った時点で「これBertで出来るんじゃないの?」と思 ったのは私だけではないはず Jukebox(OpenAI)

    正直これがかなり凄そう、MIDIベースではなく⾳声デー タ&Transformerベースで動いている模様 個⼈的には(NLPと同様)Transformer系を適⽤すれば⼀定の成果が出 てしまうような気がする https://openai.com/blog/jukebox/ OpenAIが発⾒したScaling Lawの秘密 Chapt7. Compose (作曲する) 
  21. EOF EOF Chapt7. Compose (作曲する)   