第十二章:强化学习(Reinforcement Learning, RL)

291 阅读4分钟

🎯 本篇目标:

本篇将介绍强化学习的基本概念、核心元素(智能体、环境、状态、动作、奖励)、经典算法(Q-learning、深度Q网络DQN),以及其在现实中的应用案例。

1. 什么是强化学习?

强化学习(Reinforcement Learning, RL)是一种机器学习方法,核心思想是:
智能体(Agent) 通过与 环境(Environment) 不断交互,在不同状态下采取动作,获得奖励或惩罚,并以此优化策略,最终学会最大化长期回报。

与监督学习不同,强化学习并没有“标准答案”;与无监督学习不同,它的目标是通过试错探索找到最优策略


2. 强化学习的核心要素

强化学习问题通常由以下几个部分组成:

  1. 状态(State, S)
    环境在某一时刻的描述,例如:棋盘局面、机器人位置。

  2. 动作(Action, A)
    智能体在某状态下可以采取的操作,例如:向左走、发射子弹、加速。

  3. 奖励(Reward, R)
    智能体采取动作后得到的反馈信号,可能为正(奖励)或负(惩罚)。

  4. 策略(Policy, π)
    智能体在状态与动作之间的映射规则,即“在某个状态下如何决策动作”。

  5. 价值函数(Value Function)
    衡量某个状态或动作在长期来看有多好,通常用于指导策略优化。

  6. 环境(Environment)
    智能体所处的外部系统,例如:游戏世界、交通场景、现实物理环境。

强化学习交互过程:

在时间步 (t),智能体在状态 (s_t) 下采取动作 (a_t),环境给出奖励 (r_t),并转移到下一个状态 (s_{t+1})。
目标是最大化长期累积奖励:

Gt=k=0γkrt+k+1G_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k+1}

其中:

  • ( \gamma \in [0,1] ):折扣因子,决定未来奖励的重要性。
  • ( r_{t+k+1} ):在未来第 (k+1) 步获得的奖励。

3. 强化学习的基本方法

3.1 策略迭代(Policy Iteration)

强化学习的基本思路是通过不断改进策略来提升长期回报。典型方法包括:

  • 值迭代(Value Iteration):基于价值函数更新策略。
  • 策略迭代(Policy Iteration):交替进行策略评估和策略改进。

3.2 Q-learning

Q-learning 是最经典的强化学习算法之一,它通过学习动作-价值函数来选择最优动作。

Q函数定义为:

Q(s,a)=E[rt+γmaxaQ(s,a)s,a]Q(s, a) = \mathbb{E}[r_t + \gamma \max_{a'} Q(s', a') \mid s, a]

其中:

  • ( s ):当前状态
  • ( a ):当前动作
  • ( s' ):下一状态
  • ( a' ):下一动作
  • ( \gamma ):折扣因子

Q-learning 的更新公式为:

Q(s,a)Q(s,a)+α[r+γmaxaQ(s,a)Q(s,a)]Q(s, a) \leftarrow Q(s, a) + \alpha \big[ r + \gamma \max_{a'} Q(s', a') - Q(s, a) \big]

其中 ( \alpha ) 为学习率。


4. 深度强化学习:DQN

随着深度学习的发展,研究人员提出了深度Q网络(Deep Q-Network, DQN),用神经网络近似Q函数,从而在高维状态空间(如像素级别的图像)中表现出强大的学习能力。

DQN的核心改进:

  1. 经验回放(Experience Replay):将历史经验存储在记忆库中,随机采样训练,减少样本间的相关性。
  2. 目标网络(Target Network):引入一个延迟更新的目标网络,保持训练稳定性。

DQN首次在Atari游戏中实现突破性成果,智能体仅通过像素输入,就学会了接近人类水平的游戏玩法。


5. 强化学习的应用场景

  1. 游戏智能体:AlphaGo、AlphaZero、Dota2 AI、星际争霸AI。
  2. 自动驾驶:通过模拟环境训练车辆的决策能力。
  3. 机器人控制:机械臂抓取、行走、避障。
  4. 推荐系统:根据用户行为长期优化推荐策略。
  5. 医疗:个性化治疗方案推荐、药物剂量控制。

6. 使用Python实现简单的Q-learning

下面是一个基于Q-learning的简化示例(格子世界环境):

import numpy as np

# 环境参数
n_states = 6  # 状态数
actions = [0, 1]  # 0: 左移, 1: 右移
epsilon = 0.9     # ε-贪婪
alpha = 0.1       # 学习率
gamma = 0.9       # 折扣因子
episodes = 20

# 初始化Q表
Q = np.zeros((n_states, len(actions)))

def choose_action(state):
    if np.random.uniform() < epsilon:
        return np.argmax(Q[state, :])  # 利用
    else:
        return np.random.choice(actions)  # 探索

def get_env_feedback(state, action):
    if action == 1:  # 向右
        if state == n_states - 2:
            return 'terminal', 1
        else:
            return state + 1, 0
    else:  # 向左
        return max(0, state - 1), 0

# Q-learning 主循环
for episode in range(episodes):
    state = 0
    while state != 'terminal':
        action = choose_action(state)
        next_state, reward = get_env_feedback(state, action)
        if next_state != 'terminal':
            Q[state, action] += alpha * (reward + gamma * np.max(Q[next_state, :]) - Q[state, action])
            state = next_state
        else:
            Q[state, action] += alpha * (reward - Q[state, action])
            break

print("训练后的Q表:\n", Q)

7. 总结

强化学习(RL)通过试错学习策略,优化智能体在环境中的行为,目标是最大化长期奖励。从Q-learning到深度Q网络(DQN),强化学习已经在游戏、机器人、自动驾驶等领域取得巨大成功。它的核心价值在于:让机器自主学习如何在复杂环境中做决策