当前位置: 首页 > news >正文

增强学习(Reinforcement Learning)简介

增强学习(Reinforcement Learning)简介
增强学习是机器学习的一种范式,其核心目标是让智能体(Agent)通过与环境的交互,基于试错机制和延迟奖励反馈,学习如何选择最优动作以最大化长期累积回报。其核心要素包括:
• 状态(State):描述环境的当前信息(如棋盘布局、机器人传感器数据)。

• 动作(Action):智能体在特定状态下可执行的操作(如移动、下棋)。

• 奖励(Reward):环境对动作的即时反馈信号(如得分增加或惩罚)。

• 策略(Policy):从状态到动作的映射规则(如基于Q值选择动作)。

• 价值函数(Value Function):预测某状态或动作的长期回报(如Q-Learning中的Q表)。

与监督学习不同,增强学习无需标注数据,而是通过探索-利用权衡(Exploration vs Exploitation)自主学习。


使用PyTorch实现深度Q网络(DQN)演示
以下以CartPole-v0(平衡杆环境)为例,展示完整代码及解释:

  1. 环境与依赖库
import gym
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
from collections import deque
import random# 初始化环境
env = gym.make('CartPole-v1')
state_dim = env.observation_space.shape[0]
action_dim = env.action_space.n
  1. 定义DQN网络
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, 64),nn.ReLU(),nn.Linear(64, action_dim))def forward(self, x):return self.fc(x)
  1. 经验回放缓冲区(Replay Buffer)
class ReplayBuffer:def __init__(self, capacity):self.buffer = deque(maxlen=capacity)def push(self, state, action, reward, next_state, done):self.buffer.append((state, action, reward, next_state, done))def sample(self, batch_size):batch = random.sample(self.buffer, batch_size)states, actions, rewards, next_states, dones = zip(*batch)return (torch.FloatTensor(states),torch.LongTensor(actions),torch.FloatTensor(rewards),torch.FloatTensor(next_states),torch.FloatTensor(dones))
  1. 训练参数与初始化
# 超参数
batch_size = 64
gamma = 0.99        # 折扣因子
epsilon_start = 1.0
epsilon_decay = 0.995
epsilon_min = 0.01
target_update = 10  # 目标网络更新频率# 初始化网络与优化器
policy_net = DQN(state_dim, action_dim)
target_net = DQN(state_dim, action_dim)
target_net.load_state_dict(policy_net.state_dict())
optimizer = optim.Adam(policy_net.parameters(), lr=0.001)
buffer = ReplayBuffer(10000)
epsilon = epsilon_start
  1. 训练循环
num_episodes = 500
for episode in range(num_episodes):state = env.reset()total_reward = 0while True:# ε-贪婪策略选择动作if random.random() < epsilon:action = env.action_space.sample()else:with torch.no_grad():q_values = policy_net(torch.FloatTensor(state))action = q_values.argmax().item()# 执行动作并存储经验next_state, reward, done, _ = env.step(action)buffer.push(state, action, reward, next_state, done)state = next_statetotal_reward += reward# 经验回放与网络更新if len(buffer.buffer) >= batch_size:states, actions, rewards, next_states, dones = buffer.sample(batch_size)# 计算目标Q值with torch.no_grad():next_q = target_net(next_states).max(1)[0]target_q = rewards + gamma * next_q * (1 - dones)# 计算当前Q值current_q = policy_net(states).gather(1, actions.unsqueeze(1))# 均方误差损失loss = nn.MSELoss()(current_q, target_q.unsqueeze(1))# 反向传播optimizer.zero_grad()loss.backward()optimizer.step()if done:break# 更新目标网络与εif episode % target_update == 0:target_net.load_state_dict(policy_net.state_dict())epsilon = max(epsilon_min, epsilon * epsilon_decay)print(f"Episode {episode}, Reward: {total_reward}, Epsilon: {epsilon:.2f}")

关键点解释

  1. 经验回放(Replay Buffer):通过存储历史经验并随机采样,打破数据相关性,提升训练稳定性。
  2. 目标网络(Target Network):固定目标Q值计算网络,缓解训练震荡问题。
  3. ε-贪婪策略:平衡探索(随机动作)与利用(最优动作),逐步降低探索率。

结果与优化方向
• 预期效果:经过约200轮训练,智能体可稳定保持平衡超过195步(CartPole-v1的胜利条件)。

• 优化方法:

• 使用Double DQN或Dueling DQN改进Q值估计。

• 调整网络结构(如增加卷积层处理图像输入)。

• 引入优先级经验回放(Prioritized Experience Replay)。

完整代码及更多改进可参考PyTorch官方文档或强化学习框架(如Stable Baselines3)。

相关文章:

  • 机械臂柔顺控制:阻抗控制、导纳控制和力位混合控制
  • 户用/工商业/高压系统防逆流装置选型指南‌
  • Docker的基础操作
  • SIGIR 2025端到端生成式推荐ETEGRec
  • vue3源代码装包,启动服务
  • 支付宝 SEO 优化:提升小程序曝光与流量的完整指南
  • Go语言的宕机恢复,如何防止程序奔溃
  • 污水处理厂逆袭:Ethernet/IP 转 CANopen 开启“智净”时代
  • 从 JMS 到 ActiveMQ:API 设计与扩展机制分析(一)
  • Uniapp app 安卓手机(红米)自定义基座进行真机调试
  • 什么是供应链关键业务指标体系,如何利用指标驱动管理闭环
  • 解决osx-arm64平台上conda默认源没有提供 python=3.7 的官方编译版本的问题
  • 数据库插入数据时自动生成
  • 智能排产破解制造业效率困局
  • React 中 useMemo 和 useEffect 的区别(计算与监听方面)
  • (三)毛子整洁架构(Infrastructure层/DapperHelper/乐观锁)
  • 分布式处理架构
  • 地图、图表的制作要领
  • 明远智睿SSD2351开发板:仪器仪表与智慧农业的创新利器
  • Unity基础学习(九)输入系统全解析:鼠标、键盘与轴控制
  • 新华时评:直播间里“家人”成“韭菜”,得好好管!
  • 吉林市马拉松5月18日开赛,奖牌、参赛服公布
  • 叙利亚政权领导人首访西方国家,与法国总统讨论叙局势
  • 国务院安委会办公室印发通知:坚决防范遏制重特大事故发生
  • 三大交易所多举措支持科创债再扩容,约160亿证券公司科创债有望近期落地
  • 外交部回应中美经贸高层会谈:这次会谈是应美方请求举行的