【what is this】強化学習における「状態価値関数」をとりあげてきましたが、今回もその続編です。理論と手法の詳細は参考文献[1]を熟読戴くことにして、ここでは、「レンタカーショップ問題」と呼ばれる複雑な問題がこれに基づいて解けることを楽しみたいと思います。
■レンタカーショップ問題(Jack's Car Rental)この問題は著名なSuttonの著作[2]にありますが、簡潔に1ページに纏められており、そこから自分でプログラムを作るのは難しそうです。しかし、中井悦司著[2]では、実に丁寧にこの問題の設定と具体的な解法(Pythonプログラム付き)が解説されており、非常に有用です。このブログ記事は、それにしたがって学んだ結果を小生なりにまとめたものです。
この問題を解くためのベースとなる状態遷移を図3のように定めます。ある時点の状態は、店Aと店Bに現在残っている車の台数のペアとします。営業終了時(午前中は貸出しのみ、午後は返却のみ)の状態をSとします。それに対するアクションa(行動a)は、夜間に店Aから店Bへ|a|台の車を移動させることを意味します。逆向きの移動ではaの値は負値になります。その行動が終わり、さらに翌日の営業が終了した時点の状態をS'とします。つまり、状態Sにアクションaを適用した結果の状態がS'です。
この方法は(詳細はここには書けませんが)、行動-状態価値関数計算とGreedyポリシーの更新と状態価値関数の更新をセットとして、全ての可能な状態(店Aと店Bに残っている台数のあらゆる組合せ)について行います。それを、すべての状態について変動がなくなるまで反復します。反復一回あたり計算量(可能なあらゆる台数についての確率計算を含む)は相当に大きくなりますが、種々の効率化手法がとられます。最終的には、比較的少ない反復回数(数十回程度)で収束解(最適解)が得られるようです。図4は、収束の途中の解(行動ポリシー)を示しています。
冒頭に述べた中井悦司著[1]は、全体で5章の構成、本文全276頁です。今回の話題は、そのうちに第3章(全体の約6割)までの集大成と言えます。つまり、状態遷移を表す条件付き確率が全て計算できる「環境が分かっている」場合の基本的な強化学習理論の結論であると言えましょう。
[2] Richard S. Sutton and Andrew G. Barto, "Reinforcement Learning : An Introduction", second edition, The MIT Press, 2018.