DeepBach: a Steerable Model for Bach chorales generation
ShuKumata.icon
Research institute:
The problem the authors try to solve:
1枚まとめ
https://gyazo.com/6db4bb211a57a8c81844c0fe94f8400f
1. どんなもの? 問題意識は?
バッハのコーラルのようなハーモニーを生成するDeepBachというモデルを提案している。 DeepBachを用いたMuseScoreの作曲補助pluginも提案している。
https://www.youtube.com/watch?v=QiBM7-5hA6o
2. 先行研究と比べてどこがすごい?
人間とのintaractionがしやすい
既存研究は、始めから終わりへ(左から右へ)生成することしかできない
より一般的でフレキシブル
複数の調を生成できる
ソプラノ以外を固定して生成できる
剽窃なしで生成する
gibbs sampling(もどき)のおかげ
3. 技術や手法のキモはどこ?
データの表現
Notes and Voices(音)
16分音符まで(バッハのコラールにそれ以上細い音符は存在しないので問題なし)
リズム
"_ _"の記号で音を伸ばすことを表現
Metadata
色々あるが、今回はフェルマータだけ採用
0, 1でフェルマータが存在するかどうかを表現
さらに何音目かについても表現に加えた
Chorale
4つのVoice(ソプラノ, アルト, テノール, バス)とMetadata
https://gyazo.com/4a19d70384223c709142edebd50e22f5
モデル
モデル構造
1単位時間の1つの音についてその音以外の音を元に(今回は前後8音ずつから)予測する
入力された前後それぞれの音はembeddingの後、それぞれ別のRNNに入力され、出力としてRNNの最終層の結果を得る。 選ばれた音のハーモニー部分とメタデータはNNで圧縮
これらをマージして、さらにNNとSoftmaxを通して確率ベクトルを得る。 学習
それぞれのVoiceについて(4つモデルが存在することになる?)、逆伝播で確率最大化
https://gyazo.com/5a80e2cc468fd170135042d2b58180fe
生成方法
入力としてMetadataとランダムな音のsequence4つを与え、1単位時間の1つの音について再生成することを繰り返す
メリット
ランダムな音のsequenceのうち一つ(例えばソプラノ)を与えれば、一つのメロディに対するハーモニーを生成することができる
Metadataで生成したい音楽をコントロールできる
今回はフェルマータ
4. どうやって有効だと検証した?
一つの旋律(ソプラノ)を与え、残りのハーモニーを生成した。
classicをあまり聞かない人(1)、音楽好きな人(2)、作曲を学んでいる学生やプロの音楽家(3)、の3種類の人に聴いた音楽がバッハ作曲のものかモデルによって作曲されたものかを判定してもらった。
バッハが作曲したものには及ばないものの、半分くらいがバッハが作曲したと言った。
MaxEnt, MLPよりも良い結果だった。
https://gyazo.com/f8d0568337bb5005d8d9836a507d21cd
5. 議論はある?
MLPとそんなに結果が変わらない
バッハが作曲したものと大きく差がある
これは音楽の質の差なのか、それともみんなが聴いたことあるバッハの曲だっただけなのか
6. 次に読むべき論文は?
MCMCとGibbs-samplingへの理解
その他基本的な所の理解
リンク