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
280
PyTorchによる発展DeepLearning 第5章まとめ資料
shinebalance
0
230
PythonとKerasによるディープラーニング読書会_8章まとめ
shinebalance
0
170
PythonとKerasによるディープラーニング読書会_5章まとめ
shinebalance
1
400
Other Decks in Programming
See All in Programming
MCPでVibe Working。そして、結局はContext Eng(略)/ Working with Vibe on MCP And Context Eng
rkaga
5
2.3k
アセットのコンパイルについて
ojun9
0
120
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
520
GitHubとGitLabとAWS CodePipelineでCI/CDを組み比べてみた
satoshi256kbyte
4
230
プロパティベーステストによるUIテスト: LLMによるプロパティ定義生成でエッジケースを捉える
tetta_pdnt
0
330
MCPとデザインシステムに立脚したデザインと実装の融合
yukukotani
4
1.4k
AI時代のUIはどこへ行く?
yusukebe
18
8.9k
@Environment(\.keyPath)那么好我不允许你们不知道! / atEnvironment keyPath is so good and you should know it!
lovee
0
120
もうちょっといいRubyプロファイラを作りたい (2025)
osyoyu
1
430
go test -json そして testing.T.Attr / Kyoto.go #63
utgwkk
3
300
今から始めるClaude Code入門〜AIコーディングエージェントの歴史と導入〜
nokomoro3
0
150
Navigating Dependency Injection with Metro
zacsweers
3
260
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Automating Front-end Workflow
addyosmani
1370
200k
Building Applications with DynamoDB
mza
96
6.6k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Typedesign – Prime Four
hannesfritz
42
2.8k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
840
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Producing Creativity
orderedlist
PRO
347
40k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
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 (作曲する)