以前に方策が決定論的にならないようにするために、損失にエントロピー正則化項を加えることを書いたが、誤差逆伝播する際の微分の式が誤っていたので訂正する。
方策がソフトマックス関数の場合のエントロピーの微分
エントロピーは以下の式で与えられる。
がソフトマックス関数の場合、ロジットをとすると、エントロピーの偏微分は、以下の通りシンプルな式になる。
この式は、以下の論文に記載されていた。
[1701.06548] Regularizing Neural Networks by Penalizing Confident Output Distributions
式の導出
以下、この式の導出について記載する。
上記の式は、Σと偏微分がうまく消えていてすっきりした形になっている。
論文には式の展開が記載されていないため、すぐにはどのように導出したのかわからなかった。
しかし、微分の連鎖則、積の微分公式、ソフトマックスの微分、エントロピーの定義と確率の合計が1になることを使うと導出できる(ネットを検索してもこの式について書かれている情報がなかったので自分で導出したが、思いつくのに1日くらいかかった)。
は、がソフトマックス関数なので、ソフトマックス関数の微分から、
となる。
したがって、式(4)のΣの中は、
となる。
これを式(4)のΣに戻すと、とをまとめられるため、
となる。
ここで、確率の合計は1になるためとなり、エントロピーの定義から、となるため、
となり、式(2)が導出できた。
この式を使うと、エントロピー正則化項の誤差逆伝播が効率よく計算できる。
ただ、この式を使わなくても、ディープラーニングフレームワークの計算グラフを使えば、
loss = policy_loss + beta * F.mean(F.sum(F.softmax(z) * F.log_softmax(z), axis=1))
のように記述すれば、多少効率は落ちるがフレームワークがよろしくやってくれるので中身の式は気にする必要はない。