Python(強化学習の試し13_迷路08_迷路サンプル3_強化学習)
■普通の強化学習を試す。
前回のコードから、報酬部分(2)を下のように置いて、強化学習を試した。左上をスタートとして、右下をゴールにするため、ぱっとみ右上か左下を経由してゴールに向かうのが最短でそれなりに報酬も得られる。

下のように迂回したルートを取れば報酬は最大になるけど、最終結果がこのルートをとるような学習はできるものか疑問。

下の条件で1000回の強化学習を行い、10度試してみる。1度の試行に対しては10秒もあれば結果が出た。
学習率 α = 0.01
割引率 γ = 0.2
線形 np.linspace(start=1.0, stop=0.0, num=1000)
それぞれの強化学習が終わった後、1000回目のルートの結果が下の通り([縦, 横])。
1000 : [[1, 1], [2, 1], [3, 1], [4, 1], [5, 1], [6, 1], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7]]
1000 : [[1, 1], [2, 1], [3, 1], [4, 1], [5, 1], [6, 1], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7]]
1000 : [[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 7], [3, 7], [4, 7], [5, 7], [6, 7], [7, 7]]
1000 : [[1, 1], [2, 1], [3, 1], [4, 1], [5, 1], [6, 1], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7]]
1000 : [[1, 1], [2, 1], [3, 1], [4, 1], [5, 1], [6, 1], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7]]
1000 : [[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [2, 5], [3, 5], [3, 6], [3, 7], [4, 7], [5, 7], [6, 7], [7, 7]]
1000 : [[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 7], [3, 7], [4, 7], [5, 7], [6, 7], [7, 7]]
1000 : [[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [2, 5], [3, 5], [3, 6], [3, 7], [4, 7], [5, 7], [6, 7], [7, 7]]
1000 : [[1, 1], [2, 1], [3, 1], [4, 1], [5, 1], [6, 1], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7]]
1000 : [[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 7], [3, 7], [4, 7], [5, 7], [6, 7], [7, 7]]
通ったルートを図にした。左下を通るのが5回、右上が3回、右上の途中で曲がるものが2回。

単純に報酬が多い方を選ぶなら、左下に収束していきそうなものだけど、右上を通るものもそれなりに多い。この辺りは学習率や割引率を変えると結果が変わるのかな。あるいは強化学習の試行を1000回より増やすとか。
この辺をもう少し見てみたい。