RLフレームワークの把握

Pythonで学ぶGymnasiumによるReinforcement Learning

Fouad Trad

Machine Learning Engineer

RLフレームワーク

エージェント要素を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

RLフレームワーク

エージェントと環境の要素を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

RLフレームワーク

  • エージェント: 学習者・意思決定者
  • 環境: 解くべき課題

エージェント、環境、状態、行動、報酬を含むすべてのRL要素を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

RLフレームワーク

  • エージェント: 学習者・意思決定者
  • 環境: 解くべき課題
  • 状態: ある時点の環境のスナップショット

環境がエージェントに状態を与えることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

RLフレームワーク

  • エージェント: 学習者・意思決定者
  • 環境: 解くべき課題
  • 状態: ある時点の環境のスナップショット
  • 行動: 状態に応じたエージェントの選択

エージェントが環境の状態に反応して行動を実行することを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

RLフレームワーク

  • エージェント: 学習者・意思決定者
  • 環境: 解くべき課題
  • 状態: ある時点の環境のスナップショット
  • 行動: 状態に応じたエージェントの選択
  • 報酬: 行動へのフィードバック

エージェントが環境の状態に反応して行動を実行し、その行動に基づき環境から報酬を受け取ることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

RLの相互作用ループ

env = create_environment()
state = env.get_initial_state()

for i in range(n_iterations): action = choose_action(state)
state, reward = env.execute(action)
update_knowledge(state, action, reward)

エージェントが環境の状態に反応して行動を実行し、その行動に基づき環境から報酬を受け取ることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

エピソード型 vs. 連続型タスク

エピソード型タスク
  • タスクはエピソードに区切られる
  • エピソードに開始と終了がある
  • : チェスを指すエージェント

チェスをする猫の画像。

連続型タスク
  • 相互作用が連続する
  • 明確なエピソードなし
  • : 信号機の最適化

カエルが自転車に乗り、信号が青になるのを待つ画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

リターン

  • 行動は長期的な影響を持つ
  • エージェントは総報酬の最大化を目指す
  • リターン: 期待報酬の総和

リターンがr_1からr_nの報酬の合計であることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

割引リターン

  • 即時報酬は将来報酬より価値が高い
  • 割引リターン: 近い将来の報酬を重視
  • 割引率 ($\gamma$): 将来報酬を割り引く

割引リターンの式(各報酬に割引率のべき乗を掛けて合計)を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

割引率

  • 0 から 1 の間
  • 近視眼と長期志向のバランス
    • 低いほど → 即時利益重視
    • 高いほど → 長期利益重視

割引率の極端な値の影響。0は即時利益のみ、1は将来報酬を無割引で重視。

Pythonで学ぶGymnasiumによるReinforcement Learning

数値例

import numpy as np
expected_rewards = np.array([1, 6, 3])

discount_factor = 0.9
discounts = np.array([discount_factor ** i for i in range(len(expected_rewards))])
print(f"Discounts: {discounts}")
Discounts: [1.   0.9  0.81]
discounted_return = np.sum(expected_rewards * discounts)
print(f"The discounted return is {discounted_return}")
The discounted return is 8.83
Pythonで学ぶGymnasiumによるReinforcement Learning

練習してみましょう!

Pythonで学ぶGymnasiumによるReinforcement Learning

Preparing Video For Download...