一、强化学习简介
强化学习(Reinforcement Learning, RL) 是一种通过智能体(Agent)与环境(Environment)交互来学习最优策略的机器学习方法。其核心目标是最大化累积奖励(Cumulative Reward)。
核心要素
核心问题
-
探索(Exploration) vs 利用(Exploitation):平衡尝试新动作和选择已知最优动作。
-
延迟奖励(Delayed Reward):如何将短期奖励与长期目标关联。
二、强化学习经典算法
以下是 PyTorch 中常见的强化学习算法:
- Q-Learning
原理:通过更新 Q 表(状态-动作价值表)学习最优策略,使用贝尔曼方程(Bellman Equation)迭代优化。
- 公式:
- 适用场景:离散状态和动作空间(如格子世界)。
PyTorch 实现片段
import torch
import numpy as np
# 定义 Q 表(状态数 x 动作数)
n_states = 10
n_actions = 4
Q_table = torch.zeros(n_states, n_actions)
# 超参数
alpha = 0.1 # 学习率
gamma = 0.99 # 折扣因子
epsilon = 0.1 # 探索概率
# Q-Learning 更新
def update_Q(s, a, r, s_next):
max_next_Q = torch.max(Q_table[s_next])
Q_table[s][a] += alpha * (r + gamma * max_next_Q - Q_table[s][a])
# 动作选择(ε-greedy)
def choose_action(s):
if np.random.rand() < epsilon:
return np.random.choice(n_actions)
else:
return torch.argmax(Q_table[s]).item()
- 深度 Q 网络(DQN, Deep Q-Network)
-
原理:用神经网络近似 Q 函数,解决高维状态空间问题。引入经验回放(Experience Replay)和目标网络(Target Network)稳定训练。
-
关键技术:
PyTorch 实现示例
import torch
import torch.nn as nn
import torch.optim as optim
from collections import deque
import random
class DQN(nn.Module):
def __init__(self, state_dim, action_dim):
super().__init__()
self.net = nn.Sequential(
nn.Linear(state_dim, 64),
nn.ReLU(),
nn.Linear(64, 64),
nn.ReLU(),
nn.Linear(64, action_dim