DeepComposerのCompositionで自己回帰CNN(畳み込みニューラルネットワーク)モデルが選択できるようになりました

2020.06.05

どーもsutoです。

2020/6/3にDeepComposerでComposition(作曲)する際、CNN(畳み込みニューラルネットワーク)を利用した学習モデルを選択できるようになりました。

サービスリリースからこれまではGenerative Adversarial Network(GAN)によるモデル生成とConpositionのみでしたが、新たな学習アルゴリズムとモデルによる学習能力を試すことができます。

CNN(畳み込みニューラルネットワーク)とは

CNNは深層学習(ディープラーニング)のネットワークモデルの1種で、主に画像認識の分野で成果をあげています。このネットワークは中間層に「畳み込み層」や「プーリング層」などの幾つかの特徴的な機能を持った層を積み上げることで構成されています。

仕組みや特徴をおおまかに知りたい方は以下のリンクを参考にしてみると良いでしょう。

数学的なモデルの仕組みについてより詳しく知りたい方はこちらの論文をご参照してみてかいかがでしょうか。(英語)

実際に使ってみた

インプットに使う曲はサンプルの「Ode to Joy」とします。DeepComposerメニューのMusic studioの画面から

  • Generative AI technique:Autoregressive
  • Model:AutoregressiveCNN Batch

を選択し4つのハイパーパラメータを決定し「Enhance input melody」ボタンを押します。

  • Maximum input notes to remove
  • Maximum notes to add
  • Sampling iterations
  • Creative risk

検証と結果

4つのハイパーパラメータを以下表の数値で生成し、違いを比較してみます。

パラメータ/モデル名 CNN-test1 CNN-test2 CNN-test3 CNN-test4
Maximum input notes to remove 100 100 50 100
Maximum notes to add 350 400 400 800
Sampling iterations 100 100 100 100
Creative risk 1 5 1 1

結果はこちら

すべてのパラメータをデフォルト値で生成したものです。GANでは追加のメロディーにおいて生成モデルごとに別の楽器を当ててアレンジしましたが、CNNでは原本のピアノメロディーに追加するかたちとなっていました。(よってMIDIファイルのみダウンロード可でした)

Creative riskを上げることで本来のメロディーとは違ったリズムやメロディを掛け合わせる部分が多くなりました。サブメロディーとしてうまく噛み合ってくれたのかな。

8秒子以下の演奏部分が減りました。どちらかというと伴奏側にアレンジを加えたような結果となりました。

ピアノ単体のため判りにくいですが、他の3曲と比べると和音数が増えています。

まとめ

生成されたメロディは各ハイパーパラメータの名前どおりの特徴が現れた結果でしたね。これなら機械学習のパラメータ調整に関して知識やチューニング技術を熟知していなくても直感で調整していける代物になっていそう。まさにこのサービスの狙いがよく出ていますね。

エンジニアとしてはSagemakerで作成したモデルをDeepcomposerで使えるようになると盛り上がってくるでしょうから、その時がくる可能性を信じて自分もさらに機械学習の勉強を頑張っていくつもりです。