方策と状態価値関数

Pythonで学ぶGymnasiumによるReinforcement Learning

Fouad Trad

Machine Learning Engineer

方策

  • 強化学習の目的 → 有効な方策を設計
  • 各状態で収益最大化の行動を定める

大きなロードマップの画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

グリッドワールド例

  • エージェントは山を避けてダイヤに到達を目指す
  • 9 状態
  • 決定論的な移動

action_numbers_green.png

9 マスの環境。2 マスが山、1 マスがダイヤであることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

グリッドワールド例 - 報酬

  • 状態に基づく報酬:
    • ダイヤ: +10

隣接マスからダイヤへ移動すると +10 の報酬になることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

グリッドワールド例 - 報酬

  • 状態に基づく報酬:
    • ダイヤ: +10
    • 山: -2

山へ至る行動は報酬 -2 になることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

グリッドワールド例 - 報酬

  • 状態に基づく報酬:
    • ダイヤ: +10
    • 山: -2
    • その他: -1

他の移動はすべて報酬が -1 になることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

グリッドワールド例: 方策

# 0: left, 1: down, 2: right, 3: up
policy = {
    0:1, 1:2, 2:1, 
    3:1, 4:3, 5:1,
    6:2, 7:3
}

state, info = env.reset() terminated = False while not terminated: action = policy[state] state, reward, terminated, _, _ = env.step(action)

方策を矢印で状態間の移動として示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

状態価値関数

  • 状態の価値を推定
  • 状態から方策に従うときの期待収益

状態価値関数が、状態 s から方策に従った割引収益であることを示す式の画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

グリッドワールド例: 状態価値

方策を矢印で状態間の移動として示す画像。

  • 9 状態 → 9 個の状態価値
  • 割引率: $\gamma = 1$
Pythonで学ぶGymnasiumによるReinforcement Learning

目標状態の価値

目標状態にいるエージェントの画像。

  • 目標状態から開始すると移動しない
  • $V(\text{goal state}) = 0$

目標状態の価値が 0 であることを示す画像

Pythonで学ぶGymnasiumによるReinforcement Learning

状態 5 の価値

状態 5 にいるエージェントの画像。

  • 5 から開始し目標へ移動
  • $V(5) = 10$

状態 5 の価値が 10 であることを示す画像

Pythonで学ぶGymnasiumによるReinforcement Learning

状態 2 の価値

状態 2 にいるエージェントの画像。

  • 2 から開始、報酬: $-1, 10$
  • $ V(2) = (1 \times -1) + (1 \times 10) = 9$

状態 2 の価値が 9 であることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

すべての状態価値

環境の 9 状態すべての状態価値を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

ベルマン方程式

  • 再帰式
  • 状態価値を計算

ベルマン方程式: 現在状態の即時報酬と次状態の割引価値の和を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

状態価値の計算

def compute_state_value(state):

if state == terminal_state: return 0
action = policy[state]
_, next_state, reward, _ = env.unwrapped.P[state][action][0]
return reward + gamma * compute_state_value(next_state)

ベルマン方程式: 現在状態の即時報酬と次状態の割引価値の和を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

状態価値の計算

terminal_state = 8
gamma = 1

V = {state: compute_state_value(state) for state in range(num_states)}
print(V)
{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

環境の 9 状態すべての状態価値を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

方策の変更

# 0: left, 1: down, 2: right, 3: up
policy_two = {
    0:2, 1:2, 2:1,
    3:2, 4:2, 5:1,
    6:2, 7:2
}

V_2 = {state: compute_state_value(state) for state in range(num_states)} print(V_2)

方策を矢印で状態間の移動として示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

方策の比較

方策 1 の状態価値

{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

方策 1 の状態価値を示す画像。

方策 2 の状態価値

{0: 7, 1: 8, 2: 9, 
 3: 7, 4: 9, 5: 10, 
 6: 8, 7: 10, 8: 0}

方策 2 の状態価値を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

Ayo berlatih!

Pythonで学ぶGymnasiumによるReinforcement Learning

Preparing Video For Download...