Python(強化学習の試し16_迷路10_迷路サンプル3得点50の経路)
■最大の得点(50)を取るような設計ができるかの試し。
下のルートのような得点50になる経路を導けるか検討した。

ChatGPTと何度かやり取りをして最終的に下の設定にした。
・学習率:0.3
・割引率:0.99
・探索率:下のコードのepsilon
epsilon = []
eps = 1.0
for episode in range(5000):
if episode % 1000 == 0:
eps = 0.3 # 少し戻す
else:
eps = max(0.01, eps * 0.995)
epsilon.append(eps)
・報酬設定
通路(0):-2
壁(1):-10
得点マス(2):+150 (得点は10)
ゴール(3):50点でゴールの場合+100。それ以外の場合は(得点-150)。例えば、得点10でゴールした場合は-140。
ゴール時に50点以外では抑制的になる報酬設計が重要そう。あと、得点マスの報酬の方がゴールマスの報酬より大きくした方が、ゴールに行くより得点マスを探索する動機づけになる。
10回ほど繰り返したうちの2回は、下のような50点を取る経路にたどり着いた。
5000 : [[1, 1], [2, 1], [3, 1], [4, 1], [5, 1], [6, 1], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [6, 5], [5, 5], [4, 5], [3, 5], [2, 5], [1, 5], [1, 6], [1, 7], [2, 7], [3, 7], [4, 7], [5, 7], [6, 7], [7, 7]]
5000 : [[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 7], [3, 7], [4, 7], [5, 7], [5, 6], [5, 5], [5, 4], [5, 3], [5, 2], [5, 1], [6, 1], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7]]
1つ目を図示すると下の経路になる。50点を取るための理想的な経路となっている。

10回のうちの他は、数千から数万歩で迷路内をうろうろするような経路になった。この辺りはもう少し改善することができるかもしれない。
上の設定はChatGPTに改善点を聞きつつ実行しつつ作った設定。これ以上では、Q表に得点のマスを通ったかの情報を入れたり、Q表の状態モニターツールを使ったりといった提案が出てきたので、学習率や割引率、探索率、各報酬設定の中でやれることはやったのではと思う。
これで迷路のサンプルは一端区切りにする。