2021年8月2日月曜日

Scratchプログラミングで強化学習の基礎(2)

 【what is this】前回の「Scratchで強化学習」の続編です。伊藤真著[1]にある、レベル2の例題を検討します。前回のレベル1では、「行動、報酬」だけでしたが、今回は「状態、行動、報酬」を扱う本格的な強化学習の仕組みが入っています。そこにおいて、各状態での行動に対する予測報酬(=行動価値Q)の計算を観察します。
[->続編はこちら]

■ レベル2例題:月面でダイヤ集めゲーム
 このレベル2例題は、図1に示すように、状態1〜状態3、および最終状態を持ちます。状態1から開始して、左右のどちらかを選択して次の状態へ達します。さらにその状態からふたたび左右のどちらかを選んで最終状態に達します。そこまでを1つのエピソードと呼びます。エピソードのなかで左右を選ぶ毎に、ある確率(報酬確率)でダイヤが出ます。ダイヤが出ると報酬1を、出ないと報酬0を得ます。例えば、50回のエピソードで、できるだけダイヤをたくさん集めて報酬の総計を大きくせよ、という問題です。

 場所によって報酬確率は異なります。図1の中の赤字の数値がそれです。もちろん、それらの確率は、プレイヤーには知らされていません。最も運が良ければ、1エピソードで得られる報酬は最大で2となります。


■ 「強化学習」プレイヤーの戦略
 今回の強化学習の戦略ですが、実は、状態2か、または状態3にいる場合は、前回のレベル1での戦略と同等です。しかし、状態1(開始状態)にいる場合には、左右どちらを選択した場合も、それによって直接得られる報酬に加えて、さらにその先の行動で得られる報酬も考慮する必要があります。例えば図1の場合、状態1においては、直接の報酬については、左が0.2で右が0.3なので右側の報酬確率が高いのですが、その先で得られる報酬の合計を考えると、逆に左側を選んだ方が得になります。

 このような判断を行うために、各状態において、各行動(右選択か左選択か)に対して、行動価値、すなわちQ(状態、行動)と呼ばれる値を学習によって求めることがキーポイントになります。この学習則についての詳細は、参考文献[1]を参照して下さい。このQ(状態、行動)は、その状態においてある行動を取った場合に、最終的にどれだけの総報酬が期待できるかという、期待値を計算するものです。したがって、このQの値が正確な値に近ければ、その状態で取るべき行動の指針となります。

Q(状態, 行動)の計算を観察する
 以下では、このQ(状態、行動)の計算がどのように進行するのかを観察します。図1の底辺部分から始めます。まず、図2aは、状態2における行動価値Qの推移(エピソードの進行にともなう)を示しています。50エピソード時点でみると、Q(状態2, 左)=0.25、Q(状態2, 右)=0.86が得られています。状態2における実際の報酬確率は、左=0.20、右=0.90ですから、Qの計算結果はかなり正解に近いと言えます。素晴らしい、使える!という気になります。


 次の図2bは、状態3に対するものですが、上記と同様に、Qの計算結果はほぼ、実際の報酬確率に近いことが分かります。


 次の図2cは、状態1に対するものです。この図では、Qの値が、報酬確率とかなり離れているように見えますが、これで良いのです。というのは、冒頭で述べたとおり、状態1でのQの計算は、直後の報酬だけでなく、その先で得られる報酬の総和の期待値になっているからです。


 結論として言えることは、以下のように行動することが最善のようです。(もちろん、ゲーム毎に報酬確率の設定が異なりますので、図1のケースにおいてです。)

 状態1→左側選択→状態2→右側選択

 ただし、もしも、エピソード10が終わった時点で判断すると、図3cからも分かるように、状態1で右側を選んでしまうでしょう。そうすると、最終的に高い総報酬報酬は得られないはずです。どのくらい(エピソード数)学習させるべきかについては、十分な注意が必要でしょう。

■ 感想
 このレベル2の例題は、Q(状態、行動)とはどんなもの?という疑問に答えてくれと思います。そして、強化学習の入り口へ案内してくれるように感じます。
 なお、上のグラフですが、Scratchのリストはテキストファイルとして簡単に取り出せますので、それをExcelに与えて描画させました。

謝辞
著者の伊藤真氏からのご指摘で、記事の途中から「エピソード」が、誤って「エポック」になっていたことに気づき、訂正しました。

参考資料
[1] 伊藤 真:ScratchでAIを学ぼう- ゲームプログラミングで強化学習を体験、日経BP、2020年8月11日第1版

0 件のコメント:

コメントを投稿