GA将?開発日記~王理のその先へ~

ネタ勢最強を目指して絶賛開発中。

Entropy Regularizationの式の導出

 https://arxiv.org/pdf/1602.01783.pdf

 A3Cの論文にあるEntropy Regularizationの意味が(少しだけ)分かってきたので、実装の準備として微分してみる。

 まず、方策\pi(s;\theta)に対してエントロピーH(\pi(s;\theta))を考える。

 H(P)=-\sum_{A}P(a) log_2(P(a))

 \piを代入すると

 H(\pi)=-\sum_{a \in A} \pi(a|s;\theta) log_2(\pi(a|s:\theta))

 (π・その他の記号の意味は http://gasyou.is-mine.net/archive/GPW2012_P-3.pdf 参照。)

 H(\pi)=-\sum_{a \in A} \pi(a|s;\theta) log_2\left(\frac{exp(\frac{evl(s,a;\theta)}{T})}{Z}\right)
 Z=\sum_{a' \in A}exp(\frac{evl(s,a';\theta)}{T}

 ln(exp(x))=xという変形をしたいので、logの底を変換する。

 H(\pi)=-\sum_{a \in A} \pi(a|s;\theta) \frac{ln\left(\frac{exp(\frac{evl(s,a;\theta)}{T})}{Z}\right)}{ln(2)}
 H(\pi)=-\sum_{a \in A} \pi(a|s;\theta) \frac{\frac{evl(s,a;\theta)}{T} - ln(Z)}{ln(2)}

 で、ようやく微分の準備が出来たので、後はガシガシと計算。

 \nabla_\theta H(\pi)=-\sum_{a \in A} \left( \nabla_\theta \pi(a|s;\theta) \right) \frac{\frac{evl(s,a;\theta)}{T} - ln(Z)}{ln(2)} + \pi(a|s;\theta) \frac{\frac{\phi(s,a)}{T} - \nabla_\theta ln(Z)}{ln(2)}
 \nabla_\theta \pi(a|s;\theta)=\frac{\pi(a|s;\theta)}{T} \left{ \phi \left( s, a \right) - \sum_{a' \in A} \left{ \pi \left( a' | s; \theta \right) \phi \left( s, a' \right) \right} \right}
 \nabla_\theta ln(Z)=\sum_{a' \in A} \nabla_\theta exp(\frac{evl(s,a';\theta)}{T})=\sum_{a \in A} \frac{\phi \left( s, a' \right)}{T} exp(\frac{evl(s,a';\theta)}{T})

 …そうか、これをコードに落とし込まないといけないのか。大変そうだ。