さて、今日は音楽講師になって、かわいい三人の人工知能の生徒たちに、音楽指導をしてみようと思います。
どんな作品が上がって来るでしょうか。。。。。。
[授業をはじめる!!]
「さあ、今日の授業は、メロディを続けて作ってみよう!!です。
まずメロディの一部を挙げるので、そこから曲の続きを作ってみよう。
課題曲は、どらえもんのテーマ曲!
『あんなこといいな〜できたらいいな〜、あんな夢こんな夢いっぱいあるけど〜』
のお馴染みの曲です。
その最初の部分「あんなこといいな」(ソードドーミラーミソー)を参考に、そこから曲の続きを作ってみましょう。」
---------------0.01秒後----------------
「おお、もうできたのね、さすが人工知能たちは、作曲が早い。
こんだけ早いと、コーヒーを飲む暇もない。」
まずは生徒Aの作品から聞いてみよう。
「うーん、なんだこりゃ、まるでまとまりがないじゃないか。
『あんなこといいな』から先はまるで酔っ払いの千鳥足だ。」
生徒Bの作品
「ふむ。まあだいぶ良くはなっているな、『あんなこといいな』の繰り返しが増えて、メロディが覚えやすい。
ただ、少しシンプルすぎる感じがありますねえ。」
生徒Cの作品
「おお、かなりよくなっているね、エンディングの感じも出ているし!!!これを0.01秒で作ってしまうとは!さすが君は優秀な生徒だ!!」
[メロディのコツは繰り返し]
さて、というわけで、後の方の生徒になると、それぞれ、曲の「それっぽさ」がしっかりしてきたのがわかるでしょうか。
ですが、果たして、その違いはなんでしょう。。。??
音楽が得意な人ならもう気づいたかもしれません。この違いはざっくりといえば、「繰り返し」の扱いの違いになります
課題曲として与えられたドラえもんのテーマ曲の「あんなこといいな」の部分。
この部分はのリズムは付点8分音符でスキップする様にはねており、それが、「あんーな」、「こーと」、「いーな」と3つ繰り返すことで、「フレーズらしさ」、を作り出しています。
このリズムや、音形をいかに上手に繰り返し使うかが、メロディ作りのコツなのです。
その観点でいうと、生徒Aはフレーズにどうも統一性がなく、全く印象に残りません。
生徒Bは繰り返しが多く使われることで、かなり統一性が出てきましたね。
ただ、短い組み合わせすぎるので、ちょっと単純に感じるかもしれませんね。
(テクノミュージックなどにはむいているかも?)
生徒Cは一回「あんなこといいな」が入った後、そのリズムを受けて「EDECAG」と旋律が入り、その後また「あんなこといいな」の旋律に戻っています。
これは実際の人間の作曲でも非常によくみられるパターンです。
[3つのニューラルネットワークのモデルの違い]
今回の実験はgoogle magenta/tensorflowの提唱する Basic RNN, Loopback RNN, Attention RNNという3つのニューラルネットワークのモデルを使いました。
エンジニア方面からより詳しく知りたい方はこちらにソースコードがあります。(オープンソース)
それぞれのモデルは生徒A・B・Cに対応しています。
この3つは「繰り返し」の扱いが違うところが、キモになっています。
Basic RNN -- 生徒A
一番最初の生徒AはLSTM(Long short-term memory)を使った最もシンプルなモデルで基本となるものです。LSTMは主に自然言語解析の分野なんかでよく使われる、再帰型ニューラルネットワークの一部になります。
(たとえば、自然言語の世界では、「私は音楽が好きです」の文の様に「私」の後には「は」が来る可能性が高いですよね。同様に、「私が」と来る可能性も高いですね。でも、「私にゃ」、「私ば」なんていう文はほとんどないですよね。そういったことを予測するのに使用されます。)
繰り返しなどは考慮していない、あくまでもシンプルなモデル。
Lookback RNN -- (生徒B)
小節の単位の中でのメロディパターンとある音の小節の中での「相対的な位置」を理解しながら、それを繰り返すかどうかを学習していく。通常のニューラルネットワークの場合は、それぞれのセルの中に学習した情報を格納していくのですが、それとは別に、1、ないし、2小節前の情報をインプットしていきます。
Attention RNN -- 生徒C
Lookback RNNと同じく繰り返しを重要視しますが、1,2小節ではなく、より大きなまとまりで繰り返しを捉え、メロディを生成していく方法。
とこのようにそれぞれのモデルには特徴があります。
後の方に行くに従って、「繰り返し」の要素が、変わっていきそれらしさが変わって行くのです。
(LoopbackとAttentionのどっちが効果的かはケースバイケースでしょう)
[より音楽らしくなるためには]
繰り返しが入ったことで、随分と音楽らしくなりました。
あとは、コード進行やコード進行とは別の起承転結も考慮に入れたいところ。
音楽に精通した方なら、うなずけるところと思いますが、コードなどは、昔のAI(ルールベース)のAIなどで描くとシンプルに表すことができます。
そのため、ディープラーニングに適した分野かどうかは実は疑問が付くと思っています。
アートの分野では、ある程度、ディープラーニングとルールベースの組み合わせが必要になって来るのでしょうか、なんて思ってます。
(そもそもコード進行が音楽に必要か?なんて話もありますが)