自学教程 学编程从这里开始

强化学习基本框架

强化学习(Reinforcement Learning,RL)不同于监督学习、无监督学习,它是智能体(Agent)在环境中不断交互试错,通过累积奖励学习最优策略的学习范式。

1. 五大核心组件

  • 智能体 Agent:学习者、决策者,负责输出动作
  • 环境 Environment:智能体所处的外部世界,接收动作、返回新状态与奖励
  • 状态 State (S):环境当前的观测信息,描述当下局面
  • 动作 Action (A):智能体可以执行的行为
  • 奖励 Reward (R):环境给智能体的反馈,正数代表正向激励,负数代表惩罚

交互循环:

St→AtRt+1,St+1S_t \xrightarrow{A_t} R_{t+1}, S_{t+1}

2. 策略 Policy

策略 π\pi 是智能体的决策规则:给定状态,输出动作。

  • 确定性策略:π(s)=a\pi(s)=a,一个状态固定输出一个动作
  • 随机性策略:π(a∣s)\pi(a|s),输出动作的概率分布

强化学习最终目标:找到最优策略,让长期累积回报最大,而不是单步奖励最大。

3. 回报(Return)与折扣因子 γ\gamma

总回报:从当前时刻开始,后续所有奖励加权求和

Gt=Rt+1+γRt+2+γ2Rt+3+...G_t = R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+…

  • γ∈[0,1]\gamma \in [0,1]:折扣因子
  • γ\gamma 接近1:看重远期未来奖励
  • γ\gamma 接近0:只在乎眼前即时奖励

4. 值函数 Value Function

值函数用来评估状态或者状态-动作对能拿到多少预期回报

  • 状态值函数 (V(s))(V(s)):在状态ss下,按策略π\pi执行,能获得的期望累积回报
  • 动作值函数 (Q(s,a))(Q(s,a)):在状态ss执行动作aa之后,后续能获得的期望累积回报(Q值)

5. 两大经典分类

  • 基于值(Value-based):学习Q值,通过Q值选择动作,代表算法:Q-Learning、DQN
  • 基于策略(Policy-based):直接学习优化策略,代表算法:REINFORCE

还有Actor-Critic,同时学习策略和值函数,结合两者优势

6. 优缺点

✅ 优点

  • 不需要预先标注样本,靠交互收集数据
  • 适合序列决策、连续交互场景
  • 可以处理动态环境,在线持续学习

❌ 缺点

  • 训练不稳定、调参难度大
  • 奖励函数设计非常关键,奖励设置不对会学出奇怪策略(奖励陷阱)
  • 试错成本高,真实环境交互有风险,一般先仿真训练

7. Python 极简示例(Q-Learning 示意)

import numpy as np
import matplotlib.pyplot as plt

# 字体配置,解决 DejaVu Sans 中文缺失警告
plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False

# 简单格子环境,4个状态,2个动作:0左,1右
np.random.seed(42)
n_states = 4
n_actions = 2
Q = np.zeros((n_states, n_actions))

alpha = 0.1    # 学习率
gamma = 0.9    # 折扣因子
epsilon = 0.1  # epsilon-greedy探索

def choose_action(s):
    if np.random.random() < epsilon:
        return np.random.randint(n_actions)
    else:
        return np.argmax(Q[s])

# 迭代训练
for episode in range(200):
    s = 0
    while s != 3:
        a = choose_action(s)
        if a == 1 and s < 3:
            s_next = s + 1
            r = 1 if s_next == 3 else 0
        else:
            s_next = s
            r = 0
        # Q更新
        Q[s,a] = Q[s,a] + alpha * (r + gamma * np.max(Q[s_next]) - Q[s,a])
        s = s_next

print("Q表:")
print(Q)
plt.imshow(Q, cmap="coolwarm")
plt.xlabel("Action")
plt.ylabel("State")
plt.title("Q Table")
plt.show()

运行结果:

8. 适用场景

  • 游戏AI、机器人控制、自动驾驶决策
  • 推荐系统动态排序、资源调度
  • 博弈、时序序列决策任务

9. 常见误区

  1. 奖励越高越好:智能体会钻奖励函数漏洞,出现投机行为
  2. 强化学习和监督学习一样:监督学习用标签,强化学习只有延迟奖励
  3. 折扣因子 γ\gamma 越大收敛越快:γ\gamma 太大容易震荡,过小短视

思考题

  1. 即时奖励和长期回报的区别是什么?折扣因子 γ\gamma 起到什么作用?
  2. Epsilon-Greedy 策略里,探索(exploration)和利用(exploitation)是什么意思?

0 条笔记