Q-Learning 是一种无监督的学习算法,广泛应用于强化学习领域。它通过学习状态与动作之间的最优策略,使智能体在环境中做出最优决策。

什么是 Q-Learning?

Q-Learning 是一种基于值函数的强化学习算法。它通过估计每个状态-动作对的 Q 值(即在该状态下采取该动作的期望回报),来学习最优策略。

Q-Learning 工作原理

  1. 初始化 Q 表:Q 表是一个二维数组,其中每个元素表示一个状态-动作对。初始时,所有 Q 值都被设置为 0。
  2. 选择动作:在某个状态下,智能体根据 ε-贪婪策略选择动作。ε-贪婪策略是指以一定概率随机选择动作,以探索未知动作。
  3. 更新 Q 表:根据智能体执行的动作和得到的奖励,更新 Q 表中对应状态-动作对的 Q 值。
  4. 重复步骤 2 和 3:重复以上步骤,直到达到停止条件(如达到最大步数或智能体达到目标状态)。

Q-Learning 示例

假设有一个简单的环境,其中智能体可以选择向上、向下、向左或向右移动。智能体的目标是到达终点并获得奖励。

# 示例代码(Python)
import random

# 初始化 Q 表
Q = [[0, 0, 0, 0] for _ in range(5)]

# 定义动作和奖励
actions = ['up', 'down', 'left', 'right']
rewards = {'end': 10, 'hit_wall': -1}

# Q-Learning 算法
def q_learning(Q, actions, rewards, episodes=1000):
    for episode in range(episodes):
        state = 0
        while True:
            action = choose_action(Q, state, actions)
            next_state, reward = step(state, action, rewards)
            Q[state][action] = Q[state][action] + 0.1 * (reward + 0.9 * max(Q[next_state]) - Q[state][action])
            state = next_state
            if state == 4:
                break

# 选择动作
def choose_action(Q, state, actions):
    if random.random() < 0.1:
        return random.choice(actions)
    else:
        return max(range(len(Q[state])), key=lambda i: Q[state][i])

# 执行动作
def step(state, action, rewards):
    if action == 'up':
        next_state = state - 1
    elif action == 'down':
        next_state = state + 1
    elif action == 'left':
        next_state = state - 1
    elif action == 'right':
        next_state = state + 1
    else:
        next_state = state
    if next_state < 0 or next_state >= len(Q):
        next_state = state
        reward = rewards['hit_wall']
    else:
        reward = rewards['end']
    return next_state, reward

# 运行 Q-Learning 算法
q_learning(Q, actions, rewards)

扩展阅读

更多关于 Q-Learning 的内容,您可以参考以下链接:

希望这份教程能帮助您更好地理解 Q-Learning。😊