で見て理解するアルゴリズム
Powered by
ThothChildren
Main
Info
項目を検索中...
項目を検索中...
項目を検索中...
タイトルを検索中...
Q-Learningの動きのイメージ
Q-Learningでの強化学習のイメージを持てるような例を紹介します.

これだけ知っとく! : Q-Learning概要
Points!
  • 目標:状態\(s\)における行動\(a\)の価値\(Q[s][a]\)を試行錯誤しながら算出
  • 未知:報酬関数, 遷移確率
  • 与えられた回数、エピソードを経験.各エピソードではゲームを学びながら高い報酬を得られる行動を選択.
  • 報酬や遷移確率が未知なため、手探りに良い手段を探索. 行動選択時に数割ランダムに選択して残りは知識から最善手を選択.(\(\varepsilon-greedy\)法の場合)
  • 更新式:
    \(Q[s_t][a] \leftarrow Q[s_t][a] + \alpha (r_{t+1} + \gamma \displaystyle \max_a (Q[s_{t+1}][a]) - Q[s_t][a]) \\ = (1-\alpha)Q[s_t][a] + \alpha(r_{t+1} + \gamma \displaystyle \max_a (Q[s_{t+1}][a]))\)
前置き! : 状況設定
下記の可視化は以下のようなルールに基づいたゲームです.このゲームでは今いるマスが「状態\(s\)」です.
  • よくある2Dを移動して高い報酬を目指すゲーム
  • スタートのマスからゴールのマスに移動できればOK
  • ダメージがあるマスとゲームオーバーになるマスあり
  • 歩くと少しずつ減点されるので最短でゴールを目指すと報酬が高くなります
  • マスをクリックすることでマスの状態を変更可能
  • パラメータを変更することで学習のされ方/可視化を変更可能
  • 「Random」はランダムに選択された行動できたことを示す表示
  • 番号は移動してきた順番
  • 赤や緑の色はQ値の具合を表現
  • Game Startボタン : 迷路を解きます.
  • Game Start Slowボタン : 1エピソードを体験して止まるを繰り返し迷路を解きます.
可視化! : スタートからゴールまで行くGame
S
G
もうちょっと知っとく! : Q-Learningの処理概要
Q-Learningは、ValueIterationやPolicyIterationのときとは違い、事前にどこでどういう報酬がもらえるかが不明です.
そのため、自分で報酬が期待できるかわからない行動も試しながら学習しつつよい行動を見つける必要があります.
Q-Learningでは、状態(\(s\))における行動(\(a\))の価値をQ値(\(Q[s][a]\))として持ちます.
決めた回数のエピソードを経験して、その経験の中で学びながらQ値(\(Q[s][a]\))を更新していきます.
行動選択が\(\varepsilon - greedy\)法の場合,エピソード中は一定割合でランダムな行動を選択して、それ以外はQ値が最も高い行動を選択します.
離散的な状態と離散的な行動でしかQ-Learningは適用できません.

Q-Learning手順
  1. Q値(\(Q[s][a]\))を初期化
  2. 指定された回数、下記3.~7.のループでゲームをプレイ
  3. ゲームを初期化. \(t=0\)
  4. 一定割合でランダムな行動\(a\)を選択. 残りの割合でQ値\(Q[s_t][a]\)の最も高い行動\(a\)を選択.
  5. 行動\(a\)を実行し、ゲームから報酬\(r\)と次の状態\(s_{t+1}\)を得る.
  6. \(Q[s_t][a] \leftarrow Q[s_t][a] + \alpha (r_{t+1} + \gamma max_a (Q[s_{t+1}][a]) - Q[s_t][a]) \\ = (1-\alpha)Q[s_t][a] + \alpha(r_{t+1} + \gamma \displaystyle \max_a (Q[s_{t+1}][a]))\)
  7. ゲームが終了していれば、3.へ. していなければ4.へ.


Q-Learning : 価値の更新
Q値の更新は

$$Q[s][a]:状態sで行動aの価値$$ $$r_{t+1}:状態s_tから状態s_{t+1}へ遷移したときの報酬$$ $$\alpha:学習率$$ $$\gamma : 報酬の割引$$
$$Q[s_t][a] \leftarrow Q[s_t][a] + \alpha (r_{t+1} + \gamma \displaystyle \max_a (Q[s_{t+1}][a]) - Q[s_t][a]) \\ = (1-\alpha)Q[s_t][a] + \alpha(r_{t+1} + \gamma \displaystyle \max_a (Q[s_{t+1}][a]))$$

で行われます.
Q値は行動を実行した結果に基づいて一つ前の状態を更新します.その際、 これまで持っているQ値\(Q[s_t][a]\)と新しいQ値\((r_{t+1}+\gamma \displaystyle \max_a (Q[s_{t+1}][a]))\)を比率\(\alpha\)で更新されます.
学習しているとき、次の状態\(s_{t+1}\)では最大のQ値の行動を取ることを前提に見積もりを行なっていることが、SARSAとの違いになります.
Facebookシェア Twitterツイート LINEで送る