Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
生成Deep Learning 7章「作曲する」 勉強会補足資料
Search
shinebalance
January 12, 2021
Programming
140
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
生成Deep Learning 7章「作曲する」 勉強会補足資料
【オンライン開催!】『生成Deep Learning』読書会#7 にて使用。
https://soleildatadojo.connpass.com/event/199819/
shinebalance
January 12, 2021
More Decks by shinebalance
See All by shinebalance
GANs in Action(実践GANs) 7章まとめ資料
shinebalance
0
290
PyTorchによる発展DeepLearning 第5章まとめ資料
shinebalance
0
250
PythonとKerasによるディープラーニング読書会_8章まとめ
shinebalance
0
180
PythonとKerasによるディープラーニング読書会_5章まとめ
shinebalance
1
420
Other Decks in Programming
See All in Programming
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
710
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
820
Kotlinの15年とServer-Side Kotlin
n_takehata
1
160
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
280
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
220
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
280
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
230
Featured
See All Featured
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
550
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
30 Presentation Tips
portentint
PRO
1
430
Prompt Engineering for Job Search
mfonobong
0
520
A designer walks into a library…
pauljervisheath
211
25k
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 (作曲する)