【強化学習】Q-Learningの更新式から結果考察まで。ハイパーパラメータ依存性【Part2】

テクノロジー

前回の記事

で、Q-Learningの更新式の説明を行いました。

そして、今回は、実際にQ-Learningで学習した結果をまとめたいと思います。

設定

学習する環境は、以下の通りです。

この状況下で、できるだけ多くの点が取れるように学習します。

探索方法は、ε-greedy法で行います。

コード

コードは、こちらです。

pointgameQ8_4-4-4_3D.py

コードの書き方が悪かった(探索式が悪かった)ので、εが1以下になっておらず、しかも、むしろεが小さいほど貪欲となる探索式になっています。

コードの探索方法の部分は、以下のようになっています。

def get_action(next_state, episode):
    #徐々に最適行動のみをとる、ε-greedy法

    epsilon = 10. * (1 / (episode + 1))

    if epsilon <= np.random.uniform(0, 1):
        next_action = np.argmax(q_table[next_state])
    else:
        next_action = np.random.choice([0, 1, 2, 3, 4, 5])

    return next_action

結果

学習結果を示します。

割引率 \gamma = 0.95 、学習率 \alpha = 0.2\epsilon = 10 での結果です。

横軸は学習回数(エピソード)、縦軸が得点です。

150ステップくらいから、最高得点の20000点くらいになっていることが分ります。最後まで得点以下の値があるのは、まだ探索のランダム性が残っているからです。

ε依存性

割引率 \gamma = 0.95 、学習率 \alpha = 0.2 で、\epsilon を 10, 60, 110, 160, 210 と変化させたときの学習過程をは以下のようになりました。

εが小さいほど貪欲(大きいほどランダム)なので、εが大きくなると、いつまでも迷っている形になって、高スコアに落ち着くのが遅くなっています。

学習率依存性

割引率 \gamma = 0.95\epsilon = 10 で、学習率を \alpha = 0, 0.2, 0.4, 0.6, 0.8 と変化させたときの結果はこちらです。

\alpha = 0 以外は、ほとんど差がないようです。

前回の記事から、Q-Learningの更新式は

    \[Q(s,a) \leftarrow Q(s,a)+\alpha[r'+\gamma \max_{}Q(s′,a′)-Q(s,a)]\]

でした。

\alpha = 0 の時には、この更新式より、常に前の行動価値関数の値と同じになり、Qテーブルは更新されません。

なので、 \alpha = 0 の時には学習が進まないはずですが、最初だけ少し得点が上がっています。最初のエピソードでたまたま得点をとったと考えられますが、それ以降は得点0になっているので、少しおかしいですね。Qは更新されないので、最初の値を引きずるはずです。計算誤差かもしれません。

割引率依存性

学習率 \alpha = 0.2\epsilon = 10 で、割引率を \gamma = 0 \sim 0.9 と変化させたときの結果はこちらです。

\gamma = 0.4 \sim 0.9 では問題なく学習してますが、 \gamma = 0 \sim 0.3 では学習に失敗して、最終的にはスコアが減少しています。

これについては、以下で考察します。

εと学習率

学習率 \alpha = 0.2 、 割引率を \gamma = 0 \sim 0.9 と変化させたときの結果です。 \epsilon はそれぞれ 10, 20, 30, 50 です。

εは左上が 10, 右上が 20, 左下が 30, 左下が40

\gamma = 0 \sim 0.3 について述べます。

方策により、時間が経つにつれて(エピソードが進むにつれて)最も良いQを参照するはずなので、減少するのは奇妙です。

・εが増加するにつれてランダム行動選択の時間が長くなる

・ランダム行動選択のときには良いQテーブルのデータが蓄積されていく

を念頭に置いて、これを説明します。

更新式

    \[Q(s,a) \leftarrow Q(s,a)+\alpha[r'+\gamma \max_{}Q(s′,a′)-Q(s,a)]\]

を見ると、\gamma が小さいと \max_{}Q(s′,a′) の項の影響が小さいので、その行動を(実は良い行動なのに)悪い行動(Q値)として判断してしまいます。

その結果、Greedy行動をすればするほどQテーブルが悪くなり、よい更新が行われなくなり、スコアが減少していくことになります。

それでもランダム行動が選択されれば、Qテーブルがよくなります。εが大きいほどランダム時間が長いので、εが大きくなるとスコアの現象が緩やかです。また、スコアの現象は、ランダム行動で稼いだQ値を切り崩していると解釈できます。

コメント

タイトルとURLをコピーしました