1.1 强化学习概述

强化学习(Reinforcement Learning,RL)是机器学习的一个重要分支,它提供了一个序贯决策(Sequential Decision Making)问题的统一视角。其核心讨论的问题是:智能体(Agent)如何在复杂、不确定的环境(Environment)中,通过与环境的交互,最大化它能获得的累积奖励。

如图 1.1 所示,强化学习由两部分组成:智能体和环境。

强化学习基础框架图

  1. 感知(Perception):智能体在环境中获取某个状态(State),从而了解自身所处的当前情境。
  2. 决策(Decision):智能体利用该状态输出一个动作(Action)。
  3. 执行与反馈:动作在环境中被执行,环境根据智能体采取的动作,输出下一个状态以及当前动作带来的奖励(Reward)

智能体的终极目标是尽可能多地从环境中获取奖励。

1.1.1 强化学习与监督学习的本质区别

我们可以通过对比监督学习(Supervised Learning)来深入理解强化学习的独特性。

1. 数据的独立同分布假设 (i.i.d.)

2. 标签与反馈

总结:监督学习是优化模型以适应固定数据分布;强化学习是在动态环境中寻找一个策略,通过调整策略来优化数据分布,从而获得最大回报。

1.1.2 强化学习的例子

强化学习因其处理序列决策的能力,在许多领域超越了人类表现:

  1. 自然界:羚羊出生后通过试错学会站立和奔跑。
  2. 金融交易:股票交易策略根据市场反馈不断调整,以最大化收益。
  3. 游戏:DeepMind 的 AlphaGo 击败人类围棋顶尖棋手;在雅达利(Atari)的 Pong 游戏中,智能体学会了复杂的击球策略。
  4. 机器人控制:机械臂通过强化学习学会抓取不同形状的物体,甚至完成穿衣等精细操作。

1.1.3 强化学习的历史与深度强化学习

强化学习经历了从标准强化学习到深度强化学习(Deep Reinforcement Learning, DRL)的演变。


1.2 序列决策与环境交互

1.2.1 序贯决策的视角

与单轮预测任务不同,强化学习解决的是序贯决策问题。决策者的选择不仅影响即时结果,还会改变未来所处的状态,并对后续决策产生长期影响。因此,决策者必须对未来负责。

1.2.2 环境:动态随机过程

强化学习中的环境是一个动态的随机过程,这引入了双重随机性

  1. 策略的随机性:智能体选择动作可能是随机的(如 π(as)\pi(a|s))。

  2. 环境转移的随机性:环境根据当前状态和动作,依概率分布转移到下一状态:

    下一状态P(当前状态,智能体动作)\text{下一状态} \sim P(\cdot \mid \text{当前状态}, \text{智能体动作})

1.2.3 马尔可夫决策过程 (MDP) 与 POMDP

在与环境交互中,历史轨迹由观测、动作、奖励序列组成:Ht=o1,a1,r1,,ot,at,rtH_t = o_1, a_1, r_1, \dots, o_t, a_t, r_t


1.3 动作空间 (Action Space)

不同的环境决定了智能体动作的形式:

  1. 离散动作空间(Discrete Action Space):动作数量有限且可数。
    • 例子:雅达利游戏(上、下、左、右)、围棋(落子位置)。
  2. 连续动作空间(Continuous Action Space):动作是实值向量,不可数。
    • 例子:机器人关节的角度控制、自动驾驶的方向盘转角和油门力度。

1.4 智能体的三要素与类型

一个完整的强化学习智能体通常包含以下三个关键要素中的一个或多个:

1.4.1 策略 (Policy)

策略是智能体的行为模型,决定了在给定状态下采取什么动作。

1.4.2 价值函数 (Value Function)

价值函数是对未来累积奖励的预测(期望),用于评估状态的好坏。为了权衡即时与未来奖励,引入折扣因子 (Discount Factor) γ\gamma

1.4.3 模型 (Model)

模型是智能体对环境运作方式的认知,包含:

1.4.4 智能体的分类

  1. 根据学习内容分类
    • 基于价值 (Value-based):显式学习价值函数(如 Q-learning),策略通过价值函数隐式推导(如贪婪法)。
    • 基于策略 (Policy-based):直接学习策略函数(如 Policy Gradient)。
    • 演员-评论员 (Actor-Critic):同时学习策略(Actor)和价值函数(Critic)。
  2. 根据是否建立环境模型分类
    • 有模型 (Model-based):智能体在内部构建虚拟世界模型,通过“想象”和规划来寻找最优解。
    • 免模型 (Model-free):不建立环境模型,直接通过与真实环境的交互试错来学习。目前大多数深度强化学习方法(如 DQN, PPO)属于此类,泛化性较好。

1.5 学习与规划 (Learning vs. Planning)


1.6 探索与利用 (Exploration vs. Exploitation)

强化学习面临的经典窘境:探索-利用窘境 (Exploration-Exploitation Dilemma)

K-臂赌博机 (K-armed Bandit) 是研究这一问题的经典模型。


1.7 强化学习实验:OpenAI Gym

强化学习强调理论与实践结合。OpenAI 提供的 Gym 库是目前最通用的实验环境库。

1.7.1 Gym 基础使用

Gym 提供了标准化的接口(Env),包含 reset()(重置环境)、step()(执行动作)、render()(渲染画面)等方法。

安装

bash
pip install gym==0.25.2 pygame

基本交互循环代码示例

python
import gym
env = gym.make('CartPole-v0')  # 构建环境
observation = env.reset()      # 初始化状态
 
for _ in range(1000):
    env.render()               # 显示图形界面
    action = env.action_space.sample() # 随机采样动作(探索)
    # 执行动作,返回新状态、奖励、结束标志、调试信息
    observation, reward, done, info = env.step(action)
    
    if done:
        observation = env.reset() # 回合结束,重置
 
env.close()

1.7.2 案例:小车上山 (MountainCar-v0)

在 MountainCar 环境中,小车动力不足以直接冲上山顶,必须学会利用左侧山坡的势能“荡”上去。这是一个典型的需要延迟奖励和策略探索的任务。

查看环境空间

python
import gym
env = gym.make('MountainCar-v0')
print('观测空间 = {}'.format(env.observation_space)) # Box(2,):位置和速度
print('动作空间 = {}'.format(env.action_space))      # Discrete(3):左、不动、右

智能体交互逻辑:

我们可以编写一个简单的类来封装智能体的行为(decide)和学习过程(learn)。在测试阶段,智能体通过 decide 方法根据观测输出动作,并在环境中循环执行 step 直到 done 为 True。

通过 Gym 库,研究者可以快速验证算法在离散控制(如 CartPole)或连续控制(如 MuJoCo)任务上的性能。学术界通常关注 100 个回合的平均奖励来评估智能体的表现。