强化学习(Reinforcement Learning, RL)是一种机器学习方法,通过**智能体(Agent)在环境(Environment)中不断尝试不同的动作(Action),并根据环境给予的奖励(Reward)**来学习最优策略(Policy),从而最大化长期回报(Return)。
强化学习的核心思想:试错学习(Trial and Error)+ 奖励驱动(Reward-driven)。
强化学习主要由以下几个关键组成部分:
术语 | 解释 |
---|---|
智能体(Agent) | 需要学习策略并与环境交互的主体,例如机器人、游戏 AI。 |
环境(Environment) | 智能体所在的世界,负责反馈状态和奖励,例如游戏世界、物理环境。 |
状态(State, s) | 环境的当前情况,Agent 需要根据状态做决策。 |
动作(Action, a) | Agent 可执行的操作,例如移动方向、调整参数。 |
奖励(Reward, r) | 执行动作后获得的反馈,决定策略优化方向。 |
策略(Policy, π) | Agent 选择动作的策略,可表示为 a = π ( s ) a = \pi(s) a=π(s)。 |
回报(Return, G) | 累积的奖励,一般使用折扣因子计算: G t = ∑ k = 0 ∞ γ k r t + k G_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k} Gt=∑k=0∞γkrt+k。 |
值函数(Value Function, V) | 预测在某状态下未来可能获得的回报。 |
动作值函数(Q 值函数, Q) | 预测在某状态执行某动作后可能获得的回报。 |
强化学习的目标是找到最优策略,使得长期回报最大化。
强化学习可以用**马尔可夫决策过程(Markov Decision Process, MDP)**建模:
M D P = ( S , A , P , R , γ ) MDP = (S, A, P, R, \gamma) MDP=(S,A,P,R,γ)
MDP 假设:
未来状态 s ′ s' s′ 只依赖于当前状态 s s s 和动作 a a a,而与过去的状态无关,即满足马尔可夫性(Markov Property)。
强化学习主要有三种方法:
Q-learning 更新公式:
Q ( s , a ) ← Q ( s , a ) + α ( r + γ max a ′ Q ( 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) Q(s,a)←Q(s,a)+α(r+γa′maxQ(s′,a′)−Q(s,a))
策略梯度(Policy Gradient)方法:
∇ J ( θ ) = E [ ∇ θ log π θ ( a ∣ s ) G t ] \nabla J(\theta) = \mathbb{E} \Big[ \nabla_\theta \log \pi_\theta(a|s) G_t \Big] ∇J(θ)=E[∇θlogπθ(a∣s)Gt]
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
import random
class DQN(nn.Module):
def __init__(self, state_dim, action_dim):
super(DQN, self).__init__()
self.fc = nn.Sequential(
nn.Linear(state_dim, 128),
nn.ReLU(),
nn.Linear(128, 128),
nn.ReLU(),
nn.Linear(128, action_dim)
)
def forward(self, x):
return self.fc(x)
# 训练超参数
learning_rate = 0.001
state_dim = 4 # 例如 CartPole 环境
action_dim = 2
# 初始化 DQN 网络和优化器
q_network = DQN(state_dim, action_dim)
optimizer = optim.Adam(q_network.parameters(), lr=learning_rate)
✅ 强化学习是一种通过奖励和试错学习最优策略的方法。
✅ MDP 是强化学习的数学基础,包括状态、动作、奖励等要素。
✅ 主要方法包括 Q-learning(基于值)、Policy Gradient(基于策略)和 Actor-Critic(结合两者)。
✅ 广泛应用于游戏 AI、机器人控制、金融交易等领域。
✅ PyTorch 可用于实现 DQN、PPO 等强化学习算法。