$$ \def\bra#1{\mathinner{\left\langle{#1}\right|}} \def\ket#1{\mathinner{\left|{#1}\right\rangle}} \def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}} $$

◇◇UTTT008:強化学習編⓪:ボードゲームの強化学習◇◇


ボードゲームの強化学習は難しい(個人的な感想)ので、実装する前に理論的な部分を自分用に少し整理しておくことにした。

〇 交差エントロピー誤差

今回、教師あり学習では交差エントロピー誤差を損失として用いている。交差エントロピー誤差は $$E = -\sum_k t_k\log{y_k}$$ で表される量であり、ここで$y_k$は$k$番目の選択肢に対するネットワークの出力であり、$t_k$は$k$番目の選択肢に対する、目標とする出力の値である。これは分類問題においては一般に正解ラベル$a$に対して$t_k = \delta_{ka}$であるから \begin{align*} E &= -\sum_k \delta_{ka}\log{y_k} \\ &= -\log{y_a} \end{align*} となる。$N$データ単位のミニバッチ学習であれば、バッチに含まれる訓練データに対する損失の平均値 \begin{align*} E &= -\frac1N\sum_n\sum_kt_{nk}\log{y_{nk}} \\ &= -\frac1N\sum_n \log{y_{na_n}} \end{align*} を損失の値とする。

ネットワークのパラメータを更新する際には、ネットワークのパラメータ$\rho$に対して \begin{align*} \rho &\leftarrow \rho - \alpha \frac{\partial E(\rho)}{\partial \rho} \\ &= \rho + \frac\alpha N \sum_n \frac{\partial}{\partial \rho}\log{y_{na_n}(\rho)} \end{align*} のように更新する。ここで、$\alpha$は学習率である。

〇 方策勾配法

教師あり学習編ではMCTS10000の出力を教師データとしてUTTTを分類問題として解いていたので、ネットワークは「MCTS10000がその手をどれだけ指しそうか」を出力していた(合計が1ではないので確率ではない)。強化学習編ではこのネットワークを初期値として、新たにポリシーネットワークとして学習を行うので、出力は「強化学習エージェント自身がその手を指す確率(方策)$\pi_\rho$」であり(softmax関数で実際に確率に変換し、その通りに手を指す)、これは期待収益$J(\rho)$を最大化するような方策を目指して学習する。

パラメータの更新は $$\rho \leftarrow \rho + \alpha\frac{\partial J(\rho)}{\partial \rho}$$ のように行うが、期待収益は $$J(\rho) = \sum_a \pi_\rho(a|s)Q(s, a)$$ と表せるから、 更新幅は \begin{align*} \frac{\partial J(\rho)}{\partial \rho} &= \frac{\partial}{\partial \rho} \sum_a \pi_\rho(a|s)Q(s, a) \\ &= \sum_a \frac{\partial}{\partial \rho}\pi_\rho(a|s)Q(s, a) \\ &= \sum_a \pi_\rho(a|s)\frac{\frac{\partial}{\partial\rho}\pi_\rho(a|s)}{\pi_\rho(a|s)}Q(s, a) \\ &= \sum_a \pi_\rho(a|s)\frac{\partial}{\partial \rho}\log{\pi_\rho(a|s)}Q(s, a) \\ &= E\left[ \frac{\partial}{\partial \rho}\log{\pi_\rho(a|s)}Q(s, a) \right] \end{align*} と変形できる。ここで、$Q(s, a)$は状態$s$でアクション$a$を選択する場合の行動価値である。

〇 REINFORCEアルゴリズム

上で求めた更新幅は1アクションごとのものであるが、1ゲームに$T$手のアクションがあるようなゲームを$N$回繰り返したとき、$N$が充分大きいならば \begin{align*} \frac{\partial J(\rho)}{\partial \rho} &= E\left[ \frac{\partial}{\partial \rho}\log{\pi_\rho(a|s)}Q(s, a) \right] \\ &\simeq \frac1N\sum_n\frac1{T_n}\sum_t\frac{\partial}{\partial\rho} \log{\pi_\rho(a_t^n|s_t^n)}Q(s_t^n, a_t^n) \end{align*} と近似できるはずである。

さらに方策勾配法の派生として、行動価値$Q(s, a)$を実際に得られた報酬$z$で近似する方法があるが、囲碁やUTTTのようなゲームではスコアという概念はなく、一般に報酬は勝敗として対局の最後にしか与えられないため、勝ちなら報酬を$+1$, 負けなら$-1$として試合中に指したすべての手に平等に報酬を振り分けるという方法がある(ベースラインという量を用いて各手ごとに報酬を変化させる方法もある)。つまり $$\frac{\partial J(\rho)}{\partial \rho} \simeq \frac1N\sum_n\frac{z_{T_n}^i}{T_n}\sum_t\frac{\partial}{\partial\rho} \log{\pi_\rho(a_t^n|s_t^n)}$$ となる。

〇 実装

総合すると、UTTTの強化学習を行うとき、パラメータの更新は $$\rho \leftarrow \rho + \frac\alpha N\sum_n\frac{z_{T_n}^i}{T_n}\sum_t\frac{\partial}{\partial\rho} \log{\pi_\rho(a_t^n|s_t^n)}$$ とすればよいことがわかった。ここで、$\frac1{T_n}\sum_t\frac{\partial}{\partial\rho} \log{\pi_\rho(a_t^n|s_t^n)}$の部分が交差エントロピー誤差の形になっていることに注目すると、1対局を1ミニバッチとすれば$N=1$となり、学習率を $$\alpha' = \frac{\alpha z^i_{T_n}}{T_n}$$ とすることで交差エントロピー誤差をそのまま使って学習できることがわかる。

〇参考文献
戻る