2021年8月7日土曜日

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

【what is this】前回の「Scratchで強化学習(2)」の続編です。伊藤真著[1]にある、レベル3の例題を検討します。前回のレベル2では、開始状態から最終状態までの「エピソード」を扱いましたが、今回の例題は最終状態の無いゲームでの得点(報酬)を競うものです。予測報酬(=行動価値Q)の計算において、「割引率」を導入するのがひとつのポイントです。

■ レベル3例題:お化けの飛行訓練ゲーム
 このレベル3例題は、図1に示すように、4つのボタンのいずれかを押す毎に、報酬表にある報酬(-3から3までの整数値)が得られます。負数の場合は左へ、正数の場合は右へその絶対値を歩数として進みます。100回のボタン押下において、できるだけ多くの総報酬(右方向の遠くの位置)を得ようとするものです。

 ボタンnを押すという行動により現在の状態が状態nへ推移します。例えば、現在の状態(from)が状態1の時にボタン2を押すと、次の状態(to)としての状態2へ推移します。その際、報酬表(状態1, 状態2)の値(すなわち1)を報酬として得ます。報酬表の対角要素はすべて-1としてありますので、同じボタンを連続して押した場合は、いつも-1の報酬を得ます。


 報酬表の値は、ゲーム毎に変わりますが、もちろん、それらの値はプレイヤー(人間と「強化学習」)には知らされていません。

■ 「強化学習」プレイヤーの戦略
 今回の強化学習の戦略は、基本はレベル2の場合の学習則と同じです。しかし、冒頭に述べたとおり、今回は最終状態がなく、いつまでもボタン操作が続きます。状態の推移が巡回する場合もあります。(実際には、ここでは100回で打ち切りますが。)このため、得られる報酬がどんどん増大してしまい、行動価値Q(状態、行動)を従来の学習則のままで更新しようとしても収束しない恐れがあります。

 そこで、Q(状態、行動)を更新する際に、右辺のQの値に割引率γ(0.9とか0.8程度の値)を掛けて行き、遠くの報酬を少しづつ小さくします。それによって収束が期待できます。この割引率γを変更することで、遠くで得られる報酬の見積もりを(少なめに)調整することになります。あるQ(状態、行動)は、その絶対値よりも、他の(状態、行動)と比較して価値が高いかどうかが重要なので、この割引率の導入は妥当と思われます。(割引率導入の学習則の詳細は、参考文献[1]をご覧下さい。)

行動価値Q(状態, 行動)の計算を観察する
 上記の割引率付きの学習則によるQ(状態、行動)の計算結果を観察してみます。上に述べたとおおり、Q(状態、行動) Q(from-状態、to-状態)とみなすことができます。報酬は、図1に示した報酬表のとおりだとします。

 ボタン操作を100回で打ち切りますが、学習則にはランダム性が含まれているため、Q(from-状態、to-状態)の値は、一意には決まらず、無数に存在します。そのうちの2例を、図2aと図2bに示します。




 図2aと図2bの棒グラフの高さはまちまちのように見えますが、両者には共通の明確な特徴があります。すなわち、以下のような巡回があります。
  • 状態1では、最大Qはボタン2の場合であり、状態2へ。
  • 次に、状態2では、最大Qはボタン4の場合であり、状態4へ。
  • さらに、状態4では、最大Qはボタン1の場合であり、状態1へ。
 結論が出ました!学習により、次のようなボタン押下が最適だ!
ボタン1→ボタン2→ボタン4→ボタン1→ . . . 

■ 感想
 これまで、書籍[1]にあるレベル1,レベル2,レベル3の例題を実際に動かしながら、自分なりの詳細観察を行ってきました。エピソード的な場合と非エピソード的な場合の両方で、Q(状態、行動)とはどんなものかを知る上で、非常に有用と感じました。
 本書は、初心者向けに分かりやすく、との方針に基づき、著者独自のやさしい用語も用いた丁寧な説明に徹しています。しかし、第7章「まとめ」では、今後、強化学習を専門書でさらに深く学ぶ場合に備えて、それらの用語と専門用語の対応についても説明があります。これだけ親切な著書はみたことがありません!ありがとうございました。
参考資料
[1] 伊藤 真:ScratchでAIを学ぼう- ゲームプログラミングで強化学習を体験、日経BP、2020年8月11日第1版

0 件のコメント:

コメントを投稿