DeepComposerの独自モデルのパラメータ値を弄って違いを比較してみた

2020.05.08

どーもsutoです。みなさんGWどのように過ごしたでしょうか。

GWも変わらず出勤していた私ですが、合間の時間にDeepComposerをいろいろ触ってみました。

今回は以下の内容をブログにまとめていきたいと思います。

  • 自分なりに触ってみた感想
  • 今後サービスに期待すること
  • 独自モデル作成にてハイパーパラメータを変化させた際の生成モデルの比較検証

概要やコンソール画面上の操作方法などについてはすでにまとめられている記事があるのでそちらを参照ください。

DeepComposer触ってみて

全体的な所感

まず一番の感想としてPCキーボード操作では録音(演奏)は難しかった

上のDeeComposerのキー配置を見てわかるとおり画面上の鍵盤に対応するキーの配置が厳しい!(なんとか音階に沿って並べようと努力している感は伝わる)

ちなみに対応キーの変更はできません、ということでPCのキーボード操作による録音作業にはけっこう苦労しました。

2020/5/7時点、外部接続が可能なのはDeepComposer用キーボードのみですね。

今後は他の外部デバイス接続にも対応していくようになるのでしょうか?

ただ、エンジニアとして「GAN(敵対的生成ネットワーク)」についてDeepComposerの仕組みを通して概要を学ぶことができました。資料の内容自体もとっつきやすい内容だったのではと思います。

私は学生自体にニューラルネットワークの勉強をしていて教師あり学習についてはよく理解しているのですが、教師なし学習のアルゴリズムについてはあまり深く知らなかったのでよい機会となりました。

今後に期待

DeepComposerはあくまで機械学習について理解を深めるためのサービスだと思いますが、私個人としては作曲支援ツールとして使えるサービスになることにも同時に期待したいですね。

  • 専用キーボード以外も外部デバイスを接続できるようになる
  • MIDIファイルのインポートが可能になる
  • 録音時のテンポや拍子が変えられるようになる
  • SageMakerで生成したカスタムモデルをDeepComposerのModelsで選択できるようになる

この辺り対応してくれるといいなぁ〜。

大昔にMusic Studio Producerというソフトを使って作曲をした経験があったのですが、ゼロからすべてのパートのフレーズを生成するのはめっちゃ大変だった思い出があります。これからは伴奏やパーカッションの部分のアレンジをAIで自動生成できる時代ですから、自分だけのモデルを生成して作曲活動とかできようになりたいですね。

【本題】ハイパーパラメータを弄ってモデル生成と比較してみた

長々と感想を垂れ流して申し訳なかったですがいいよいよここからが本題です!

ハイパーパラメータについて

  • Epochs
    • 1つのデータセットを入力として学習させた回数(つまりは学習のループ数のこと)で指定できる値は70-200
    • 繰り返し学習をすることで値を収束していく(覚えていく)わけです。反復練習のようなものですね
  • Learning rate
    • 直訳すると学習率で指定できる値は0.01-0.0001
    • AIの学習とは、1回の学習を行った結果(出力)と収束後の最適値の差を埋めるように重みを修正していくというイメージなのですが、このパラメータで修正の”幅”を設定しているようです
    • つまり学習率が高いと学習ごとに思い切ってど〜んと修正をかけ、低いと慎重な足取りで修正をかけるってイメージでしょうか
  • Update ratio
    • 学習の回数(Epochs)ごとにジェネレータが更新される回数の比率で指定できる値は1-5
    • この値がが多いほど1回の学習における修正の精度が向上(学習の質が高くなる?)ようです
    • 反面、値が大きいと学習の終了に時間がかかります

検証内容

  • モデル:MuseGAN、ターゲット:Symphonyとし、ハイパーパラメータを以下表の数値で各々生成
パラメータ/モデル名 test1 test2 test3
Epochs 100 150 170
Learning rate 0.005 0.0005 0.001
Update ratio 5 5 3
  • 生成した各モデルにサンプルミュージック「Ode to Joy」をcompositionして出来たメロディを比較

※余談ですが料金について

  • (2020/5/7時点)
    • AWS DeepComposer – トレーニング:1.26 USD/時
    • AWS DeepComposer – 推論:2.14 USD/時

ちなみに1回のモデル生成に8時間程度かかるとアナウンスされます。

ということは

  • 1.26(USD/時) × 8(時間) = 10.08USD
    • つまり1回およそ1100円。。けっこうな値段だなぁ。遊びでの乱用は控えとこ・・・
    • ただ無料トライアル枠もあるのでお試しで何回か作ってみる程度なら無料で出来そうです

結果

実際に作った3モデルでMIDIを生成して聴き比べてみましょう。

楽器によって音の入りが途切れとぎれで不協和音も目立つ感じ。

こちらは和音の数が増えたおかげでTest1より全体的にまるくなったような印象。

うーん、Test1と比べて音程外しは少ないようにに感じるが音の連続性は乏しくなったように聞こえますね。

学習の工程として以下のように学習の収束具合を可視化した結果をコンソール上で見ることも出来ます。

まとめ

以上、ハイパーパラメータの数値を変えたモデルで生成された曲を比較してみた結果でした。たった3要素のパラメータでもそれなりに違いが出るものですね。

次はU-NetのGenerative algorithmでも同じように比較検証してみたいと思います。

余談ですが、こんな出来の曲でもSoundCloudにアップした際「Classical」「Orchestral」のタグが自動でついてくれたので、そちらの判別もなかなかやるじゃん と感心しました。

それではまた!