始める無料で始める

Q-learning の更新則を実装する

Q-learning は強化学習(RL)のオフポリシーなアルゴリズムで、現在の状態で取るべき最良の行動を見つけることを目的とします。実際に次に取った行動を考慮する SARSA と異なり、Q-learning は実際の行動に関わらず将来の最大全報酬(最大Q値)を用いてQ値を更新します。この違いにより、Q-learning は探索的なポリシーやランダムなポリシーに従いながらも最適ポリシーを学習できます。ここでは、Q-learning の規則に基づいて Q-table を更新する関数を実装します。以下に Q-learning の更新則を示します。これに基づいて Q-table を更新する関数を実装してください。

NumPy ライブラリは np としてインポート済みです。

Image showing the mathematical formula of the Q-learning update rule.

この演習はコースの一部です

Pythonで学ぶGymnasiumによるReinforcement Learning

コースを見る

演習の手順

  • 与えられた状態と行動の組に対する現在のQ値を取得します。
  • actions に含まれるすべての可能な行動に対して、次の状態の最大Q値を求めます。
  • Q-learning の数式を用いて、現在の状態・行動のQ値を更新します。
  • エージェントが状態 0 で行動 0 を取り、報酬 5 を受け取り、状態 1 に遷移したときの前提で、Q-table Q を更新します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

actions = ['action1', 'action2'] 
def update_q_table(state, action, reward, next_state):
  	# Get the old value of the current state-action pair
    old_value = ____
    # Determine the maximum Q-value for the next state
    next_max = ____
    # Compute the new value of the current state-action pair
    Q[state, action] = ____

alpha = 0.1
gamma = 0.95
Q = np.array([[10, 8], [20, 15]], dtype='float32')
# Update the Q-table
____
print(Q)
コードを編集して実行