機械学習、強化学習の調査録

機械学習関連のことをまとめていきます。強化学習関連が多いかもしれません

【強化学習】softmax行動選択

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}} \\\ &\fallingdotseq& \frac{1.34}{1.34+2.71+1.64} \\ &\fallingdotseq& 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}} \\ &\fallingdotseq& \frac{2.71}{1.34+2.71+1.64} \\ &\fallingdotseq& 0.47 \end{eqnarray} $$

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

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

実装

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

gist0333f56160d8e55777c284b28dc1dc7b

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

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

f:id:ttt242242:20190717125716j:plain

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

参考文献