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
230
PythonとKerasによるディープラーニング読書会_8章まとめ
shinebalance
0
170
PythonとKerasによるディープラーニング読書会_5章まとめ
shinebalance
1
400
Other Decks in Programming
See All in Programming
Jakarta EE Meets AI
ivargrimstad
0
630
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
700
AIに安心して任せるためにTypeScriptで一意な型を作ろう
arfes0e2b3c
0
340
#QiitaBash TDDで(自分の)開発がどう変わったか
ryosukedtomita
1
360
MCPで実現できる、Webサービス利用体験について
syumai
7
2.5k
iOS開発スターターキットの作り方
akidon0000
0
240
Infer入門
riru
4
1.3k
AIのメモリー
watany
13
1.4k
大規模FlutterプロジェクトのCI実行時間を約8割削減した話
teamlab
PRO
0
450
React 使いじゃなくても知っておきたい教養としての React
oukayuka
18
5.5k
PHPカンファレンス関西2025 基調講演
sugimotokei
6
1.1k
Flutter로 Gemini와 MCP를 활용한 Agentic App 만들기 - 박제창 2025 I/O Extended Seoul
itsmedreamwalker
0
130
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
A better future with KSS
kneath
239
17k
Bash Introduction
62gerente
614
210k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Navigating Team Friction
lara
188
15k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Into the Great Unknown - MozCon
thekraken
40
2k
Designing Experiences People Love
moore
142
24k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Documentation Writing (for coders)
carmenintech
73
5k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
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 (作曲する)