AIの音楽データ学習結果を視覚化 200回学習の生成曲と20万回学習の生成曲を聴き比べてみました

自動作曲のためAIに音楽を学習させた内容をグラフ化

自動作曲に限らず、AI(機械学習やディープラーニング)で何かを行う際はまずデータを学習させます。
その学習がどの様なプロセスで行われるのか?を見ることはあまりないと思うのですが、Tensorflow(googleのディープラーニングフレームワーク)を使用したプログラムであれば簡単にグラフにして表示できます。

下図をご覧ください。
これは200回音楽データを学習させた時の流れをグラフ化したものです。

Tensorflowは、式と値とをどの様な流れでどう取り扱い実行するのかをひとまとめにした計算グラフの様な構造になっています。

そしてこの計算グラフを視覚的にグラフ化し表示するという便利な機能を持っています。
ですのでこのグラフが何を表しているのかというと各ノード(計算式や値)をどの順番で行なっているかという事を表しているのです。
(Tensorflowの基礎もcanplayで学べます)

音楽ファイルであるTFrecord(音楽データをTensorflowのデータに変換したもの)から各値の流れ、使用されているsum関数やsoftmax関数、出力値などが見つけられますね。
その他各計算式や値がどう定義されているかは各該当プログラムを追いかけていく事によって調べる事ができます。

これらTensorflowの一連の動作を簡単に説明すると下図の様なイメージです。

丸はノードで処理や値、矢印はエッジで入力と出力です。
入力はa,bのノードにそれぞれ定数と変数が入れられます。
黄色のaddでそれぞれを足し合わせます。
ピンクノードにはassignという関数が使用され赤のmulという関数でcからの入力を乗算します。
という様な処理の流れです。


200回の学習データと200000回の学習データを比較

今回はこの記事のために簡単な比較実験を行いました。

AIで生成した8小節のMIDIファイルを500曲、200回だけ学習させたモデルと20万回学習させたモデルとの生成曲の比較です。

本来は単に学習の流れをグラフ表示するために200回だけ学習させて終わりの予定だったのですが、流石に200回では生成曲の精度が納得いかず、20万回でやり直しました。
そこでその2つの結果があるので比較したものを皆様にお聞かせしようかと思った所存です。

200回は、、、、音楽生成を行うには(データ数も少ないですが)回数はあまりにも短いです。

普段は数万~数十万回くらいでしょうか。

何日も連続稼働で学習させることもあります。

良い生成を行うためには、良いデータを大量に何度も学習させる必要があります。
20万回学習させたモデルと比較して聴き比べてみましょう。

シンプルな8小節の単音メロディーです。



いかがでしょうか。

やはり20万回の方が音楽的になっていますね。

モデル作成はAI音楽生成において非常に重要であるだけでなく作業としても楽しい作業です。

好きな音楽ジャンルだけのモデルや特定のアーティストだけを学習させたモデルなども作れますね。