ML 学习站
跳到正文

强化学习是什么

智能体、环境、奖励、策略与价值。

25 分钟1 / 52,531
加载中...

强化学习(RL)是机器学习的一个独立分支,专注于智能体如何在环境中通过试错学习最优策略。与监督学习依赖标准答案不同,RL仅通过奖励信号指导学习。RL的核心概念包括智能体、环境、状态、动作和奖励。智能体通过与环境交互,观察状态,执行动作并接收奖励,从而优化策略以最大化长期累计奖励。RL与监督学习的核心区别在于反馈来源、数据特性和探索需求。RL的研究方向主要分为基于价值和基于策略两类,前者关注状态或动作的价值估计,后者直接学习策略函数,Actor-Critic方法则结合了两者优势。RL在游戏AI、机器人控制、推荐系统和大规模模型训练中已有成功应用。然而,RL面临奖励稀疏、探索与利用平衡、样本效率低和训练不稳定等挑战。通过学习RL,读者能够理解智能体与环境交互的基本原理,掌握RL的基本算法和应用场景,并能够评估RL在特定问题中的适用性。

强化学习是什么

强化学习(RL)是机器学习的第三大类——和监督学习、无监督学习并列。它研究的是智能体如何在环境中通过试错学会最优策略

三大范式对比

范式数据目标典型算法
监督学习(输入, 标签) 对学输入到标签的映射神经网络、SVM
无监督学习只有输入发现数据结构K-Means、PCA
强化学习(状态, 动作, 奖励) 序列最大化长期奖励Q-Learning、DQN、PPO

核心直觉:训练小狗

你想训练小狗学会"坐下"。

监督学习式:你演示 1000 次"坐下",狗模仿。这需要大量演示数据。

强化学习式:狗自己乱试——它做了某个动作,如果接近"坐下"就给零食(奖励),否则不奖励。几次下来,狗自己发现"坐下"能拿最多零食。

强化学习就是这个思想:不告诉它正确答案,只给奖励信号,让它自己探索。

5 个核心元素

任何 RL 问题都可以抽象成 5 个元素:

1. 智能体(Agent)

学习者 + 决策者。它观察环境,选择动作,根据反馈改进策略。

  • 例:AlphaGo 的"棋手"、机器人、推荐系统的"决策器"

2. 环境(Environment)

智能体之外的一切。它接收动作,返回新状态和奖励

  • 例:棋盘、物理世界、用户群体

3. 状态(State, s)

对环境的完整描述(马尔可夫性:给定当前状态,未来与过去无关)。

  • 例:围棋棋盘、机器人关节角度、用户历史行为

4. 动作(Action, a)

智能体可以做的操作

  • 例:落子位置、关节力矩、推荐什么商品

5. 奖励(Reward, r)

环境对智能体动作的即时反馈。RL 的目标是最大化长期累计奖励

  • 例:+1 赢棋, -1 输棋, 0 中间步骤

一个具体例子:CartPole

平衡车(经典入门环境):

  • 状态:小车位置、速度、杆子角度、角速度(4 维向量)
  • 动作:向左推(0) / 向右推(1)
  • 奖励:每保持平衡 1 步 +1
  • 终止:杆倒了 / 小车跑出界

目标:让杆子尽量久不倒。

与监督学习的核心区别

# 监督学习
for x, y in dataset:
    loss = model(x) - y  # 跟"标准答案"比
    loss.backward()

# 强化学习
for episode in env:
    state = env.reset()
    while not done:
        action = policy(state)       # 自己选动作
        next_state, reward, done = env.step(action)  # 看反馈
        policy.update(state, action, reward)  # 学:这个动作好不好

关键差异:

维度监督学习强化学习
反馈来源有标准答案只有奖励信号(可能很稀疏)
数据iid 样本时间相关的轨迹
探索不需要必须探索未知动作
评估loss 下降 = 学到累计奖励上升 = 学到

两大研究方向

基于价值(Value-based)

每个状态/动作的"价值"——从这里出发未来能拿多少奖励。

  • 价值最大的动作就是最优动作
  • 代表:Q-Learning、DQN

基于策略(Policy-based)

直接学策略本身(从状态到动作的映射),不经过价值中转。

  • 适合连续动作(机器人关节)
  • 代表:REINFORCE、PPO

Actor-Critic:两者结合

  • Actor(策略网络):选动作
  • Critic(价值网络):评价这个动作好不好
  • 代表:A2C、A3C、PPO

经典应用

强化学习的挑战

RL 很难,比监督学习难得多。几个核心挑战:

  1. 奖励稀疏:很多场景里 99% 的动作奖励都是 0,只有少数关键动作有奖励(比如下棋几百步才分胜负)
  2. 探索 vs 利用:该选已知最好的动作(exploit),还是试试没选过的动作(explore)?
  3. 样本效率低:需要大量试错,真实环境跑不动(撞墙、烧钱)
  4. 训练不稳定:同一个种子,两次训练结果可能差很多

一个最简单的 RL 例子:多臂老虎机

我们用最简单的"老虎机"问题来感受 RL:

import numpy as np

# 3 台老虎机, 每台有未知的胜率
true_probs = [0.3, 0.5, 0.7]  # 实际只有我们知道

# 维护对每台胜率的估计
estimates = [0.5, 0.5, 0.5]
counts = [0, 0, 0]

def pull(i):
    """拉第 i 台老虎机, 返回 1(赢) 或 0(输)"""
    return 1 if np.random.random() < true_probs[i] else 0

# ε-贪心策略
for step in range(1000):
    epsilon = 0.1
    if np.random.random() < epsilon:
        # 探索: 随机选
        i = np.random.randint(3)
    else:
        # 利用: 选当前估计最优
        i = np.argmax(estimates)

    reward = pull(i)
    counts[i] += 1
    # 增量更新估计
    estimates[i] += (reward - estimates[i]) / counts[i]

print(f"最终估计: {estimates}")
print(f"真实胜率: {true_probs}")

关键点:

  • 探索(选 0.1 概率的随机)让算法发现最优
  • 利用(选 0.9 概率的当前最优)让算法收敛到最优
  • 怎么平衡这两个,是 RL 的核心问题

小结

  • RL = 智能体 + 环境 + 状态 + 动作 + 奖励
  • 没有标准答案,只有奖励信号
  • 必须探索才能发现好策略
  • 两大方向:Value-based 和 Policy-based
  • 难度比监督学习高,但能解决监督学习搞不定的问题

练习思考

  1. 监督学习能解决 RL 问题吗?比如自动驾驶——为什么不直接收集"正确动作"的数据集?
  2. 现实里哪些问题适合用 RL?哪些不适合?
  3. 跑一下上面那个多臂老虎机代码,试试不同的 epsilon 值,观察收敛速度和最终胜率。

章末小测验

检验你对《强化学习是什么》的掌握程度。

1

以下关于强化学习与监督学习的区别,正确的是哪些?

2

以下哪些元素是强化学习问题中必不可少的组成部分?

3

以下关于强化学习核心概念的描述,正确的是哪些?

4

以下哪些是强化学习的两大研究方向?

5

以下关于强化学习挑战的描述,正确的是哪些?

讨论区(0)

加载评论中...