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

この演習はコースの一部です
Pythonで学ぶGymnasiumによるReinforcement Learning
演習の手順
- 与えられた状態と行動の組に対する現在のQ値を取得します。
actionsに含まれるすべての可能な行動に対して、次の状態の最大Q値を求めます。- Q-learning の数式を用いて、現在の状態・行動のQ値を更新します。
- エージェントが状態
0で行動0を取り、報酬5を受け取り、状態1に遷移したときの前提で、Q-tableQを更新します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
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)