狠狠撸
Submit Search
人工知能に音楽はつくれるのか? ? Google Magentaプロジェクトに見る人工知能による作曲方法について ?
?
6 likes
?
3,865 views
T
Tadaichiro Nakano
Follow
Google Magentaを用いた作曲 およびそれを踏まえて作成したNNの話
Read less
Read more
1 of 54
Download now
Downloaded 23 times
More Related Content
人工知能に音楽はつくれるのか? ? Google Magentaプロジェクトに見る人工知能による作曲方法について ?
1.
?人?工知能に?音楽はつくれるのか? ?~ Google ?Magentaプロジェクトに?見見る?人?工知能による作曲?方法について
?~
2.
2 ?目次: 1. Motivation 2. Google
?Magentaプロジェクト 3. 独?自?音楽作成NN検証 4. まとめ
3.
3 ?目次: 1. Motivation 2. Google
?Magentaプロジェクト 3. 独?自?音楽作成NN検証 4. まとめ
4.
4 好きなミュージシャン っていますか?
5.
5 My iTunes上で再生回数Top4 削除
6.
6 My iTunes上で再生回数Top4 2001 ?–
2015 活動休?止 2013 解散 2009 ジョン脱退 削除
7.
7 彼らの新曲は聞けなくても 似たものを ?人?工知能のちからで 作れないのか?
8.
8 本研究の目的 ü? ?人?工知能による作曲?方法の現状を把握する ü? そのうち著名な?一つであるGoogle
?Magentaを調査する ü? 調査を踏まえて、?自らDeep ?Learningを?用い作曲してみる ü? 上記を踏まえ「クリエティブ領領域」という?人?工知能がまだ 得意でない領領域の知?見見を深める
9.
9 ?目次: 1. Motivation 2. Google
?Magentaプロジェクト 3. 独?自?音楽作成NN検証 4. まとめ
10.
10 Google Magentaプロジェクトとは ü? 機械学習を?用いて『アート』を?生み出すことを試すプロジェクト ü?
現在はディープラーニングを?用いて?音楽を作成することがメイン ü? Tensorflowで実装され、コードはgithubで公開されている
11.
11 例: Magentaで作成した音楽 https://www.youtube.com/watch?v=QlVoR1jQrPk
12.
12 独自のデータセットでも作成可能 midi tfrecords sequence example tensorflow program 学習済み モデル 学習プロセス 学習済み モデル tensorflow program 短い ?音楽 ?自動?生成された ?音楽 ?生成プロセス
13.
13 独自のデータセットでも作成可能 midi tfrecords sequence example tensorflow program 学習済み モデル 学習プロセス 学習済み モデル tensorflow program 短い ?音楽 ?自動?生成された ?音楽 ?生成プロセス melody_rnn_create_dataset -?‐-?‐config=<name
?of ?neural ?network> ? -?‐-?‐input=(tfrecords file ?path) -?‐-?‐output_dir=(seq file ?path) melody_rnn_train -?‐-?‐config=(name ?of ?neural ?network) ? -?‐-?‐run_dir=(model ?output ?dir) -?‐-?‐sequence_example_file=(seq file ?path) convert_dir_to_note_sequences -?‐-?‐input_dir=$INPUT_DIRECTORY ? -?‐-?‐output_file=$SEQUENCES
14.
14 独自のデータセットでも作成可能 midi tfrecords sequence example tensorflow program 学習済み モデル 学習プロセス 学習済み モデル tensorflow program 短い ?音楽 ?自動?生成された ?音楽 ?生成プロセス melody_rnn_generate -?‐-?‐config=(name
?of ?neural ?network) ? -?‐-?‐run_dir=(model ?file ?path) -?‐-?‐output_dir=(midi ?output ?dir) https://github.com/tensorflow/magenta/tree/master/magenta/models/melody_rnn
15.
15 せっかくなので やってみた
16.
16 有名ベーシストの楽曲を学習、生成してみた なぜベース??? ü? ?一?音で構成され、かつ単純な?音の流流れなので分かりやすい ü? 個?人的にベースなら知識識はありチューニングできそう ü?
ただし、単純なベースは?面?白くないので、「変態的」なベ ーシストの楽曲を学習
17.
17 ü?ロックベーシストの中でNo.1と表される内の?一?人 ü?弦を叩いたり、引っ張ったりして?音を出す「スラップ奏 法」をロックに持ち込んだ、技術的な変態性 ü??非常に有名なロックフェスにおいてずっと全裸裸で演奏し 続けた、?見見た?目の変態性 この変態をGoogleは学習できるのか? 某F?氏
18.
18 学習データ概要 曲数(Input ?data) 約30曲 epoch(学習回数)
約500回 NN(LSTM)構造 2層 128ユニット ?生成時楽曲 ある曲の冒頭
19.
19 生成結果(1)
20.
20 削除 生成結果(2) Input ?Data ?生成データ 同?一構成 ü?
似た構成は出現しており、?一定の学習は出来ている ü? リズムを刻みビート(ノリ)を作り出すというベースの役割からす ると違和感のあるリズムになっている ü? ベースの"ノリ"を作りだすための改善案を後述で提案する 評価
21.
21 ニューラルネットワークは3つ用意されている ü?Basic ?RNN ü?Lookback ?RNN ü?Attention
?RNN ü? Recurrent ?Neural ?Network(LSTM)というDeepLearningの?一種 ü? ?音楽の流流れを捉えるために過去データをどう組み?入れるかで?工夫 ü? Basic ?RNNを拡張したのがLookbackとAttention ü? LookbackとAttentionはどちらが優位ということはない 概要
22.
22 ニューラルネットワークは3つ用意されている ü?Basic ?RNN ü?Lookback ?RNN ü?Attention
?RNN
23.
23 BasicRNN – Recurrent
Neural Network ü? 3つのニューラルネットワーク全ての基礎 ü? Recurrent ?Neural ?Network(LSTM)という時系列列を扱うDeepLearning ü? 前の状態(State)を保持し、これを記憶/忘却する ü? 時系列列を学習することにより、次の?音を予測することを可能にする ü? メジャーなDLFwでは実装されており容易易に使?用可能 概要 https://magenta.tensorflow.org/2016/06/10/recurrent-?neural-?network-?generation-?tutorial/
24.
24 BasicRNN – Inputデータ(One-hot
vector) ü? インプットデータはOne-‐??hot ?Vectorという形式投?入 ü? 数値であれば1と1.5は似ているが、この形式であれば隣隣のBitは全く別 物として学習される ü? これにより前述の不不協和?音のような学習を防ぐ 概要 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 消 音 何 も し な い ド レ ミ フ ァ ソ ラ シ ド レ ミ フ ァ ソ ラ シ 例例: ??一番低いラの?音を鳴らす
25.
25 ニューラルネットワークは3つ用意されている ü?Basic ?RNN ü?Lookback ?RNN ü?Attention
?RNN
26.
26 Lookback RNN –
Inputデータの工夫 ü? 学習データを変更更して、?音楽の流流れを掴もうという取り組み ü? インプットデータに1?小節前、2?小節前の情報を付与 ü? 「?音楽は繰り返しが多い」という特性を活かすための?工夫 概要 ?音が鳴り終わる(note-?‐off) 1?小節前の?音(note-?‐on) 各?音が鳴る(note-?‐on) 何もしない(no) 2?小節前の?音(note-?‐on) 前の?小節の繰り返しか 拍数(4/4拍?子のみ?) Basic ?RNN Lookback ?RNN +
27.
27 ニューラルネットワークは3つ用意されている ü?Basic ?RNN ü?Lookback ?RNN ü?Attention
?RNN
28.
28 Attention RNN –
ニューラルネットの工夫 ü? ネットワークを変更更して、?音楽の流流れを掴もうという取り組み ü? Attentionと呼ばれる領領域を追加し、過去の情報を予測結果に加える ü? これによる繰り返しを捉える試み 概要 ?" = ?% ?' " ?) ? = ?どれだけ注意するか * ? 過去(i)の出?力力
29.
29 ?目次: 1. Motivation 2. Google
?Magentaプロジェクト 3. 独?自?音楽作成NN検証 4. まとめ
30.
30 magenta作成の音楽に何故微妙な違和感があったのか? ü? 原曲は全てシャッフル(スウィング)という"跳ねた"リズムで刻む ü? ?人?工知能版はシャッフルとそうでない箇所が混在しているためリズムに 奇妙なズレが発?生している 原曲のリズム magenta作成曲のリズム shuffle
?on shuffle ?off
31.
31 リズムを うまく捉えられるよう ちょっと変えてみる
32.
32 仮説 - リズムと音(ピッチ)が依存していないか ü?
Inputデータ内にリズムと?音(ピッチ)の?高低が含まれている ü? そのため?音とリズムに不不必要な依存関係が?生まれて学習に?支障がでてい るのではないか ?音が鳴り終わる(note-?‐off) 各?音が鳴る(note-?‐on) 何もしない(no) Basic ?RNN リズム リズム リズム + ??音
33.
33 検証(PoC) - リズムと音(ピッチ)でNNを分ける リズム用LSTM 音程用LSTM ü?
LSTMを2段に分割し、それぞれで学習/アウトプットを作成?統合する ü? 本来は時刻t毎に各LSTMをつなげるべきだがPoCということで割愛 テキストで出?力力さ れるので?手?入?力力で スコアに変換 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 インプットデータ インプットデータ
34.
34 SONG ?FROM ?PI:
?A ?MUSICALLY ?PLAUSIBLE ?NETWORK ?FOR ?POP ?MUSIC ?GENERATION ? (Hang ?Chu, ?Raquel ?Urtasun, ?Sanja Fidler 2016) (参考論論?文)
35.
35 検証(PoC) - インプットデータ ü?
インプットは?一?音毎のone ?hot ?vectorを?一?小節毎にまとめた?行行列列 ü? 前?小節を学習データ、当?小節を教師データとして学習させる ü? ?音程?用のインプットは4弦ベースが取りうる4オクターブ + ?休符の数を範囲と するベクトル ü? リズム?用は全/2分/4分/8分/16分/32分/64分の7つを範囲とするベクトル ü? 三連符や符点付きなどは今回対象外(近似に置き換え) 概要 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 ??? 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 ??? 学習データ 教師データ
36.
36 検証(PoC) - アウトプットデータ ü?
LSTMのアウトプットは各one ?hotが取りうる確率率率のようなものが出?力力される ü? リズム?用LSTMは、この確率率率がもっと?高いものを採?用 ü? ?音程?用LSTMは、確率率率に従ってランダムに取得し採?用 ü? リズムに関しては揺らぎがでるとあまり良良くないが、?音程はある程度度揺らぎが ある?方が気持ちいいための処理理 概要 ド レ ミ 60% 30% 10% 確率率率に従い "ドレミ"のい ずれかを選択 全 2 4 60% 30% 10% "全?音符"を 選択 ?音程?用LSTM リズム?用LSTM
37.
37 class ?RNN(Chain): ?
? ? ? def _?_?init_?_?(self): super(RNN,self)._?_?init_?_?( ? ? ? ? ? ? ? ? ? ? ? ? embed=L.EmbedID(num_?of_?input_?nodes, ?n_?units), ? ? ? l1=L.LSTM(n_?units, ?n_?units), l2=L.LSTM(n_?units, ?n_?units), ? ? ? ? ? ? ? ? ? ? ? ? fc=L.Linear(n_?units, ?num_?of_?input_?nodes), ) ? def reset_?state(self): self.l1.reset_?state() self.l2.reset_?state ? ? ? def _?_?call_?_?(self, ?input_?vector): ? ? ? ? ? ? ? ? h0 ?= ?self.embed(input_?vector) ? h1 ?= ?self.l1(h0) h2 ?= ?self.l2(h1) y ?= ?self.fc(h2) return ?y 参考:ニューラルネット定義部 ü? chainerで実装 ü? 20?行行程度度で記述できる?非常にベーシックなLSTM
38.
38 PoC結果の検証
39.
39 学習データ概要 曲数(Input ?data) 約30曲
– F?氏 epoch(学習回数) 約300回 NN(LSTM)構造 2層 15ユニット 以下の内容で学習、?生成してみる. ?なおモデルは2つ作ってみた 約20曲 – B.S?氏
40.
40 結果1: ベーシックなベースライン(F モデル) ü?
全て同じリズムで刻まれていて、かつ休符も同じタイミングで出現しており、 リズムキープがされている ü? 曲を通じてキーが同?一 ü? 同じ展開で?一?音だけずれるなど割りとありがちなベースラインも出ている ü? 全体的にベースラインとしては完成度度が?高い 感想
41.
41 結果2: ベーシックなベースライン(B.S モデル) ü?
Fと?比較してHR/HMは同じ?音を刻むことが多く、その特徴が現れている ü? ?赤枠は全てE(ミ)の?音であり、オクターブ違いのE(ミ)をうまく使っている ことが?見見受けられる ü? キーはほぼE、終わりだけD-‐??>Eっぽいが違和感はまったくない 感想
42.
42 結果3: XXX曲風作曲(F モデル) ü?
リズム、キーに関しては他と同様悪くない ü? ただしスラップできる原曲のはずが、スラップっぽい譜?面にはなっていない 感想 削除
43.
43 結果4: 速弾き作曲(B.S. モデル) ü?
リズム、キーに関しては他と同様悪くない ü? 速弾きも悪くはないが、譜?面上5弦ベースでない物理理的に弾けない(4弦ベースし か学習していないのに) 感想 削除
44.
44 欠点: リズムがほぼ複製... ü? どんなリズムを投?入しても、同じリズムが返ってくるだけ ü?
ベースの特性上、仕?方がないことではあるが、、、 ü? なんらかのノイズ、もしくは確率率率をSoftmaxではなく偏りを?大きくするものを 採?用し、リズムは崩れないがちょっと変化するようにする必要はある 感想 インプット ?生成リズム 同じリズムが 複製されるだ け??
45.
45 ?目次: 1. Motivation 2. Google
?Magentaプロジェクト 3. 独?自?音楽作成NN検証 4. まとめ
46.
46 ? 現時点において?音楽?人?工知能分野はまだ発展中 ? 完全に?人?工知能に任せるより、ある程度度?音楽理理論論を 踏まえた上でNNを構築したほうが良良さそう ?
階層型で役割の違うLSTM構築も効果あり ? 数値の特性をもっても誤検知が許されない場合は one ?hot ?vectorは効果的 まとめ
47.
47 (補足) magentaの新しいNN(1) :
Drums RNN リズムを司る RNN
48.
48 (補足) magentaの新しいNN(2) :
imporv RNN コード進?行行を 司るRNN
49.
49 (補足) magentaの新しいNN(3) :
Rl Tuner 強化学習
50.
50 (補足) : 発展系
Wavenet https://deepmind.com/blog/wavenet-?generative-?model-?raw-?audio/
51.
51 (補足) : 発展系
Wavenet https://deepmind.com/blog/wavenet-?generative-?model-?raw-?audio/ CD?音質だと1秒作るのに数?十分かかるらしい。。。
52.
52 ? リズムの揺らぎ ? リズムと?音の同期(??長さが異異なった場合への対応) ?
アルゴリズム?高速化(QRNNへの変更更?) ? Midiまで?自動作成 ? magenta ?のDrums ?RNNとの連携 ? アプリ作成 => ?リズムジェネレータとしてリリースできれば?小銭儲かりそう! (と いうか個?人的に欲しい!) 今後のアプリ改善点
53.
53 可能性はありそうなので 引き続きこっそりやってみます
54.
54 ご清聴ありがとうございました
Download