Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
生成Deep Learning 7章「作曲する」 勉強会補足資料
Search
shinebalance
January 12, 2021
Programming
1
110
生成Deep Learning 7章「作曲する」 勉強会補足資料
【オンライン開催!】『生成Deep Learning』読書会#7 にて使用。
https://soleildatadojo.connpass.com/event/199819/
shinebalance
January 12, 2021
Tweet
Share
More Decks by shinebalance
See All by shinebalance
GANs in Action(実践GANs) 7章まとめ資料
shinebalance
0
270
PyTorchによる発展DeepLearning 第5章まとめ資料
shinebalance
0
220
PythonとKerasによるディープラーニング読書会_8章まとめ
shinebalance
0
170
PythonとKerasによるディープラーニング読書会_5章まとめ
shinebalance
1
400
Other Decks in Programming
See All in Programming
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
660
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
330
技術同人誌をMCP Serverにしてみた
74th
1
450
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
1
590
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
0
150
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
460
PicoRuby on Rails
makicamel
2
110
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
150
PipeCDのプラグイン化で目指すところ
warashi
1
230
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
2
380
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
4
1k
GoのGenericsによるslice操作との付き合い方
syumai
3
700
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
GitHub's CSS Performance
jonrohan
1031
460k
Being A Developer After 40
akosma
90
590k
Testing 201, or: Great Expectations
jmmastey
42
7.6k
What's in a price? How to price your products and services
michaelherold
246
12k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
How to train your dragon (web standard)
notwaldorf
94
6.1k
Transcript
Chapt7. Compose ( 作曲する) Chapt7. Compose ( 作曲する) 2021-01-12 ⽣成Deep
Learning 勉強会補⾜資料 Chapt7. Compose (作曲する)
本章の⼤枠 本章の⼤枠 Intro、データとしてみた時の旋律について 実装1:LSTM with Attentionでモノフォニックな⾳楽の⽣成 実装2:Muse GANでポリフォニックな⾳楽を⽣成する TL;DR TL;DR
ML ✕ ⾳楽というアイデアを知ることで、⽣成モデリングと対象デ ータの相性について考える (個⼈的な気付き) 旋律もまた系列データ。 NLPだけがAttentionの戦場ではない。 Chapt7. Compose (作曲する)
Intro Intro Chapt7. Compose (作曲する)
Intro Intro 「⾳楽から学習して⾳楽の時系列構造を再作成する」 旋律は時系列データということ つまり、⾃然⾔語処理と似ている 「⾳楽を聴くことから起こる興趣の多くは、アンサンブル中の様々 なリズムの相互作⽤の中にある」 ⾃然⾔語処理との違いは、複数の旋律が重なることによるアン サンブルが⼤事なこと 例えば伴奏とメロディのコードが違ったりすると気持ち
悪いことになる わかりやすい例:https://www.youtube.com/watch? v=WABoii7hLKM Chapt7. Compose (作曲する)
データの扱い データの扱い 楽譜の電⼦データ、ということでMIDIを使う コグニティブな情報をデジタル化するという意味では本質的に 画像、テキストとやることは⼀緒 楽譜苦⼿という⽅も、⾳階の概念を理解していれば何となく分 かるはず 最後に触れるが、MIDIデータを使わないNNも少数ながら存在する Chapt7. Compose
(作曲する)
実装1:LSTM with 実装1:LSTM with Attention でモノフォニック Attention でモノフォニック な⾳楽の⽣成(7.2) な⾳楽の⽣成(7.2)
Chapt7. Compose (作曲する)
7.1 データ処理 7.1 データ処理 実際にモデルへデータを投⼊するにあたっては、以下に着⽬して MIDIデータをエンコードする。 その⾳符の⾳程(ドレミ,もといCDE) ⾳符の⻑さ(どれくらいの時間鳴るか) 上記を数値データ化しておけば、あとはEmbeddingされて処理でき る
(疑問)⾒る限りカテゴリ変数として処理している? ⾳符の⻑さを量的な変数として考慮する必要はないのだろう か? 単旋律かつLSTMなので考慮不要? Chapt7. Compose (作曲する)
7.2 Attention 7.2 Attention 元々、Encoder-Decoder型のModelで英語→独語の翻訳タスクを解 く際に適⽤されたもの 本書ではまさかの本章が初出 TransformerもといBertが最も著名なので、この説明の 順番は珍しい気がする Transformerでは発展型のMulti-head
attentionを使う が、本書7章の実装はどうもSelf-Attentionのような気 がする 重要な概念なので、(発表者の⾃⾝の理解確認)も含めて、ちょっとだ けおさらい Chapt7. Compose (作曲する)
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 (作曲する)
7.2.1 Attention を採⽤するモチベーショ 7.2.1 Attention を採⽤するモチベーショ ン ン 7秒くらいまでが本書の楽譜の範囲です 意外と予想できそうですよね?
これをやろうと思うと、本書の通り「8⾳符前のネットワークの隠れ 状態に対しても特別な注意を払うモデルが欲しい」訳です J.S.バッハ 無伴奏チェロ組曲 第1番〜プレリュード〜/中⽊健⼆ Chapt7. Compose (作曲する)
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 (作曲する)
7.2.3 可視化されたAttention のチェック 7.2.3 可視化されたAttention のチェック こちらも書籍・コードを参照 「どの⾳符が特定のキーに属するかを、モデルが明らかに学習して いる」 夢のない⾔い⽅をすると「教師データがもつ周期特性を学習し
た」とも⾔える 7.2.4~ 7.2.4~ Encoder-Decoder型のModelに組み込む場合のモデル構造 ポリフォニック(多声)な⾳楽については別にアイデアが必要であるこ との⽰唆 和⾳の処理は、画像処理の時の考え⽅(別チャネルの組み合わ せが意味を成す)に似ているよね、という事 Chapt7. Compose (作曲する)
実装2:Muse GAN でポリ 実装2:Muse GAN でポリ フォニックな⾳楽を⽣成す フォニックな⾳楽を⽣成す る(7.3~7.8) る(7.3~7.8)
Chapt7. Compose (作曲する)
7.3 MuseGAN 擬⼈化 7.3 MuseGAN 擬⼈化 登場⼈物を整理しよう(敢えて原著の表記を採⽤) セクション 指⽰の頻度 指⽰する内容
Style 楽曲開始時 全体の⾳楽スタイル Groove 楽曲開始時 各パート(楽器)の⾳楽スタイル Chords ⼩節毎 ⼩節毎の和⾳設定 Melody ⼩節毎 各パート(楽器)の演奏指⽰ * ここに演奏結果を軌道修正する(真偽判定をする)指揮者を追加して完成 Chapt7. Compose (作曲する)
7.4 MuseGAN 概要 7.4 MuseGAN 概要 GANベースでポリフォニックな⾳楽⽣成を⾏うモデル 「⽣成器に⼊⼒するノイズベクトルの役割を分割することによ り、複数トラックの⾼レベルな⾳楽的特徴を制御した」 (発表者所感)GANはデータの解釈のさせ⽅で制御するタ
イプ、モデル構造でトップダウン的に⽣成物を制御する タイプが有ると思うが、本モデルは後者っぽい Chapt7. Compose (作曲する)
7.5 MuseGAN ⽣成器 7.5 MuseGAN ⽣成器 各セクションの役割を確認しながら図7-15を⾒ていくと理解しやす い 複雑だが、実は難解なアイデアは使われていない印象 登場⼈物の多さと「テンポラルネットワーク」とかいうわかり
にくい名称 Temporal TableとかのTempではなく、Tempoの Tempoとして⾒たほうが良い気がする 筆者は最初ぼーっと読んでいたので気付かなかったが、実は DCGAN(W-GAN)に近い気がする Chapt7. Compose (作曲する)
ポイント? ポイント? インプットは4つのノイズ、最終的に出⼒されるのは、「複数トラッ ク(今回だと4楽器)」「複数⼩節(今回は2⼩節)」の楽譜データ 構造⾃体はオートエンコーダに近いが、4つのノイズに関係性を持た せるために、事前にノイズを指⽰頻度に合わせて加⼯した上で「⼩ 節⽣成器」へ取り込む ⼩節⽣成器はトラックごとの旋律を作る 「指⽰頻度に合わせた加⼯」は「テンポラルネットワーク」を通し て⾏う
⼩節を跨った転置畳み込み演算を⾏う。今回だと2⼩節分 (CNNでも初歩的な⾃然⾔語の分類が⾏える事象と同じ) Chapt7. Compose (作曲する)
7.6 MuseGAN 評価器 7.6 MuseGAN 評価器 単純(「GANではたいていそうです」) 特筆するところがあるとしたら、W-GAN前提&Conv3Dを使 っているくらい? Chapt7.
Compose (作曲する)
7.7 解析&まとめ 7.7 解析&まとめ こちらも書籍・コードを参照 ノイズごとに明確に役割分担がなされているので、ツマミを弄 るように出⼒結果を揺らすことも出来る Chapt7. Compose (作曲する)
余録 余録 その他の⾳楽⽣成系のネットワーク MuseNet(9章で⾔及あり) Transformerベース、正直本章でLSTM with Attention 使った時点で「これBertで出来るんじゃないの?」と思 ったのは私だけではないはず Jukebox(OpenAI)
正直これがかなり凄そう、MIDIベースではなく⾳声デー タ&Transformerベースで動いている模様 個⼈的には(NLPと同様)Transformer系を適⽤すれば⼀定の成果が出 てしまうような気がする https://openai.com/blog/jukebox/ OpenAIが発⾒したScaling Lawの秘密 Chapt7. Compose (作曲する)
EOF EOF Chapt7. Compose (作曲する)