LoginSignup
0
0

More than 1 year has passed since last update.

【強化学習】Sarsa、Q学習の弱点について

Posted at

本記事は書籍のコードを参考にしているため、全てのコードは公開致しません。
また、AI初心者が投稿している記事です。
理解不足・不正確な情報があることはご容赦ください。

目次

1.概要
2.参考書籍
3.環境構築
4.弱点と思われる箇所
5.方向の選択方法
6.一筆書き迷路
7.行動価値関数Q
8.提案

1.概要

下記の書籍を参考に、オリジナルの一筆書き迷路をAIに強化学習させてみた。
その時に、Sarsa、Q学習の弱点と思われる箇所を発見した。

2.参考書籍

・書籍名:AlphaZero 深層学習・強化学習・探索 人工知能プログラミング実践入門
・著 者:布留川 英一
・初版

3.環境構築

・Google Colaboratory(2022/01/17)

4.弱点と思われる箇所

AIの解説に「最初は答えがわからないため、模索方向をランダムにする」と良く目にする。
参考書籍にも、行動価値関数の初期値をランダムにするコードが記載されている。(p.149)
参考書籍では、学習が進むにつれ、その状態の中で最も高い行動価値関数の値(方向)を選択するようになっている。(p.149)
しかし、行動価値関数の初期値をランダムにすると不正解ルートの行動価値が高く設定されるケースが見られた。
この場合、学習が進むにつれ、不正解ルートしか辿らなくなり無限ループに陥ってしまう。(何時まで経ってもゴールできない)

5.方向の選択方法

IF=Trueの場合、ランダムで方向を選択する。
elseの場合、行動価値関数で最も高い値の方向を選択する。
変数epsilonは初期値0.5で、1エピソード完了ごとに1/2に減らしていく。
そのため、最初の方のエピソードはIF=Trueとなることもあるが、徐々に高確率でelseになる。

def get_a(s, Q, epsilon, pi_0):
    if np.random.rand() < epsilon:
        return np.random.choicekl([0, 1, 2, 3], p=pi_0[s])
    else:
        return np.nanargmax(Q[s])

0は上、1は右、2は下、3は左を意味する。
変数pi_0は、初期状態で移動できる方向を示唆している。
数値は確率である。(状態0の場合は、左0% 右50% 下50% 上0%)

変数pi_0
スクリーンショット 2022-01-20 224304.png

6.一筆書き迷路

・今回は、正解が1通りしかない。
・状態「0」が、スタート地点。
・ポイントは、状態「0」の時に下方向(状態「3」)、状態「4」では上方向(状態「1」)に行動すること。
・エピソードは、全10回とする。
スクリーンショット 2022-01-17 212119.png

7.行動価値関数Q

問題となった、ランダムによる行動価値関数Q
スクリーンショット 2022-01-17 214801.png

状態0について

<初期値>
右が「0.701」、下が「0.004」と、不正解ルート(右)が圧倒的に行動価値が高くなっている。
スクリーンショット 2022-01-19 001919.png

<エピソード7回目終了時点>
右が「0.701」、下が「0.396」と、初期値に比べ正解ルート(下)の行動価値が高くなっている。(不正解ルート右は、変化なし)
しかし、エピソード8回目からはepsilonが非常に小さなりelse(行動価値が最も高い方向=右、不正解ルート)ばかりが選択され、無限ループに陥った。
スクリーンショット 2022-01-19 002355.png

状態4について

状態0と同じ現象のため、割愛

8.提案

<提案1>
エピソード回数をもっと増やし、epsilonの減り具合ももっと緩やかにする。
例:エピソードを全100回にし、epsilonの減り方を0.9倍ずつにする。

<提案2>
行動価値関数の初期値を、ランダムにしない。
初期値は、全て同じ配分にする。
例:初期値は全て0.1、進めない方向はnanにする。
スクリーンショット 2022-01-19 004948.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0