【強化学習】softmax行動選択

概要(3行で)

  • 代表的な行動選択手法
  • \(\epsilon\)-greedyと同様に強化学習でよく用いられる手法
  • Q値に応じて各行動の選択確率が変化する

softmax行動選択とは

\(\epsilon\)-greedy と同様によく用いられる「softmax行動選択」についてご紹介します。
この手法は期待報酬値が高い選択肢の選択確率が高くなるように選択確率を決定します。

具体的には、softmax関数を用いて以下の式によって各選択肢の選択確率を決めます。

$$
\begin{eqnarray}
\pi(a) = \frac{\mathrm{e}^{Q(a)/T}}{{\displaystyle \sum_{b \in A }}\mathrm{e}^{Q(b)/T}}
\end{eqnarray}
$$

ここで、\(\pi(a)\) は行動\(a\)の選択確率、
\(Q(a)\) は行動\(a\)の期待報酬値、
\(A\) は選択肢(行動)の集合を表します、
\(T\) は温度と呼ばれ、T=0の場合ランダム選択となり、 \(\epsilon\)-greedy行動選択の\(\epsilon\) と意味合いは近いです。

具体例

下記の図を使って説明してみます。
エージェントには3つの選択肢(赤r、青b、緑g)があり、
すでに複数回試行錯誤を行っており、各選択肢の期待報酬値が求められてるとします。

f:id:ttt242242:20190322095342j:plain:w350

この時の赤い四角を選択する確率\(\pi(r)\)を計算してみます。
また、簡略化するために、T=1の時について考えます。

$$
\begin{eqnarray}
\pi(r) &=& \frac{\mathrm{e}^{Q(r)}}{\mathrm{e}^{Q(r)}+\mathrm{e}^{Q(b)}+\mathrm{e}^{Q(g)}} \\
&=& \frac{\mathrm{e}^{0.3}}{\mathrm{e}^{0.3}+\mathrm{e}^{1.0}+\mathrm{e}^{0.5}} \\
&\approx& \frac{1.34}{1.34+2.71+1.64} \\
&\approx& 0.23
\end{eqnarray}
$$

小数点第3位以降は切り捨ているので近似値になります。
赤い四角を選択する確率は0.2になります。

逆に青い四角を選択する確率\(\pi(b)\)は同様に計算すると

$$
\begin{eqnarray}
\pi(b) &=& \frac{\mathrm{e}^{Q(b)}}{\mathrm{e}^{Q(r)}+\mathrm{e}^{Q(b)}+\mathrm{e}^{Q(g)}} \\
&=& \frac{\mathrm{e}^{1.0}}{\mathrm{e}^{0.3}+\mathrm{e}^{1.0}+\mathrm{e}^{0.5}} \\
&\approx& \frac{2.71}{1.34+2.71+1.64} \\
&\approx& 0.47
\end{eqnarray}
$$

青い四角を選択する確率は0.47と赤い四角を選択する確率(0.23)より大きくなります。

つまり、期待報酬値の大きい選択肢を多く選択するように選択確率を決定できます。

実装

上記の具体例を簡単に実装しました。
コードを以下に示します。

上述したコードは、
softmax行動選択により1000回行動選択した結果をプロットするスクリプトになります。

ちなみに上記のスクリプトを実行すると以下のようにヒストグラムを出力します。

f:id:ttt242242:20190717125716j:plain

真ん中の行動の期待値が最も大きいため、多く選択していることがわかります。

参考文献(教科書)

1.最も古典的な強化学習の教科書です。

強化学習強化学習

2.最近出版された強化学習の教科書です。

強化学習アルゴリズム入門 「平均」からはじめる基礎と応用

3.最近の強化学習の研究等を紹介しています。 教科書としては微妙かもしれませんが、様々な強化学習の発展分野について紹介しています。

これからの強化学習

コメント

  1. […] 方策$pi(s, a)$は行動が離散値であり、softmax行動選択を行動選択手法とする場合には、行動優先度 $p(s, […]

  2. […] εグリーディ行動選択とは、εの確率でランダムに行動選択、それ以外の確率(1-ε) で最も期待値の高い行動を選択する手法です。強化学習などではsoftmax行動選択手法と同様によく使われます。 […]

タイトルとURLをコピーしました