概要
今更ですが、Magentaで公開されたDQNを用いた音楽生成についてまとめてます。
DQN、LSTMを知っている人向けです。
https://magenta.tensorflow.org/2016/11/09/tuning-recurrent-networks-with-reinforcement-learning/
従来の方法
LSTMを用いて行っています。
時間tでなっている音が入力、時間t+1でなっている音が出力&ラベルとなっています。
Lookback RNNやAttention RNNというものを使ってやっていたりもしますが、DQNの仕組みを学ぶ上では必要ありません。
上の2つを知りたい方はここにのってます。
DQNを用いた方法
モデルの画像は上に記載したURLで見てください。
音楽生成でDQNを用いる場合に一番気になるのは報酬だと思います(私はそうでした)。
なので、どうやって報酬を決めているのかを書きます。
報酬
現在の状態(s)と行動(a)から報酬を求めるにあたり、Music Theory RulesとReward RNNの2つを用いて行います。
Music Theory Rulesはdomain knowledgeとこの本に基づいて作成しています。
Reward RNNは、従来使っていたRNNがsにおけるaの確率を求めるものになっているのでこれを用います。
Music Theory Rulesを$r_{MT}(a,s)$と表し、Reward RNNは$p(a|s)$で表します。
そして、報酬は下記の式になります。
r_t(a,s) = \log p(a|s) + \frac{1}{c}r_{MT}(a,s)
ここでのcはどのくらいMusic Theory Rulesに重点を置くのかというハイパーパラメータになっています。
この報酬関数を用いると損失関数は
L_t(\theta_t)=(r_t(a,s)+\gamma \max_{a′}Q(s′,a′;θ_{t−1})−Q(s,a;\theta_t))^2
のようになります。
二条誤差を使っているようですね。
他にもψ LearningやK Learningも使って比較しているようです。
あとは、体験再生(experience buffer)やdeep double Q Learningを用いて学習しているそうです。
実際にこれらを使って作成した音楽も聞けるので一回きいてみてください。
最後に
MagentaがDQNを用いた音楽生成をやった!ということは聞いていたのですが、なかなか調べる機会なかったのでこの機会に調べました。
報酬に従来の方法で使っていたLSTMを使うって発想がいいですねー。
Music Theory Rulesって入れなくてもうまく学習するのでは?という疑問が最後に残ったので今度自分のPCで走らせてみます。
あ、ちなみにインターンが作ったみたいです。
コード見たけど他のモデルとかと書き方が違ってて、むむむっとなったのはインターンが作ったからみたいですねー。