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表の状態モニターツールを使ったりといった提案が出てきたので、学習率や割引率、探索率、各報酬設定の中でやれることはやったのではと思う。

これで迷路のサンプルは一端区切りにする。




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です