PyTorch 强化学习(Reinforcement Learning) 详细介绍

发布于:2025-05-08 ⋅ 阅读:(11) ⋅ 点赞:(0)

一、强化学习简介

强化学习(Reinforcement Learning, RL) 是一种通过智能体(Agent)与环境(Environment)交互来学习最优策略的机器学习方法。其核心目标是最大化累积奖励(Cumulative Reward)。

核心要素

在这里插入图片描述

核心问题

  • 探索(Exploration) vs 利用(Exploitation):平衡尝试新动作和选择已知最优动作。

  • 延迟奖励(Delayed Reward):如何将短期奖励与长期目标关联。

二、强化学习经典算法

以下是 PyTorch 中常见的强化学习算法:

  1. 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()
  1. 深度 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

网站公告

今日签到

点亮在社区的每一天
去签到