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

郑州专门做网站柳州网站建设11

郑州专门做网站,柳州网站建设11,做外贸无网站如何做,个人主页的设计文章目录 摘要一、DQN核心原理1. Q-learning回顾2. 用深度网络逼近Q函数3. 经验回放(Experience Replay)4. 目标网络(Target Network)5. 损失函数6. ε-贪心策略(ε-greedy) 二、算法流程与伪代码三、典型实…

文章目录

    • 摘要
    • 一、DQN核心原理
      • 1. Q-learning回顾
      • 2. 用深度网络逼近Q函数
      • 3. 经验回放(Experience Replay)
      • 4. 目标网络(Target Network)
      • 5. 损失函数
      • 6. ε-贪心策略(ε-greedy)
    • 二、算法流程与伪代码
    • 三、典型实现步骤
    • 四、Python示例(PyTorch)

摘要

Deep Q-Network(DQN)将经典的Q-learning与深度神经网络相结合,使用卷积网络或多层感知机对动作价值函数进行逼近,并通过经验回放(Experience Replay)和目标网络(Target Network)两项关键技术稳定训练,从而在高维状态空间(如像素)下实现近乎人类水平的控制能力。DQN自2015年被DeepMind团队首次提出以来,已成为深度强化学习领域的基石算法之一,被广泛应用于游戏、机器人等场景。

一、DQN核心原理

1. Q-learning回顾

Q-learning是一种无模型、离线的值迭代算法,通过不断更新Q值

Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + 1 + γ max ⁡ a ′ Q ( s t + 1 , a ′ ) − Q ( s t , a t ) ] Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha\bigl[r_{t+1} + \gamma\max_{a'}Q(s_{t+1},a') - Q(s_t,a_t)\bigr] Q(st,at)Q(st,at)+α[rt+1+γamaxQ(st+1,a)Q(st,at)]

来逼近最优动作价值函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)

2. 用深度网络逼近Q函数

DQN使用深度神经网络 Q ( s , a ; θ ) Q(s,a;\theta) Q(s,a;θ) 来近似离散系统中每对状态-动作的Q值,大幅提高了算法在高维、连续状态空间中的适用性。

3. 经验回放(Experience Replay)

训练过程中,将每次交互得到的 ( s t , a t , r t + 1 , s t + 1 ) (s_t,a_t,r_{t+1},s_{t+1}) (st,at,rt+1,st+1) 存入回放池(replay buffer),每次更新时随机抽样小批量数据,打破数据间的时序相关性,提升数据利用效率并降低方差。

4. 目标网络(Target Network)

原始Q网络的参数 θ \theta θ 会导致目标值频繁变化,DQN引入一个参数延迟更新的目标网络 Q ( s , a ; θ − ) Q(s,a;\theta^-) Q(s,a;θ),在固定步数 C C C 后将主网络参数复制给目标网络,以稳定训练过程。

5. 损失函数

DQN的目标是最小化均方贝尔曼误差(Mean Squared Bellman Error):

L ( θ ) = E ( s , a , r , s ′ ) ∼ D [ ( r + γ max ⁡ a ′ Q ( s ′ , a ′ ; θ − ) − Q ( s , a ; θ ) ) 2 ] . \mathcal{L}(\theta) = \mathbb{E}_{(s,a,r,s')\sim \mathcal{D}}\Bigl[\bigl(r + \gamma \max_{a'}Q(s',a';\theta^-) - Q(s,a;\theta)\bigr)^2\Bigr]. L(θ)=E(s,a,r,s)D[(r+γamaxQ(s,a;θ)Q(s,a;θ))2].

梯度通过反向传播计算并更新网络参数。

6. ε-贪心策略(ε-greedy)

为了兼顾探索与利用,DQN在每一步按概率 ε 随机选取动作,否则选择价值最大的动作 a = arg ⁡ max ⁡ a Q ( s , a ; θ ) a=\arg\max_a Q(s,a;\theta) a=argmaxaQ(s,a;θ),并随训练进程线性或指数衰减 ε。


二、算法流程与伪代码

输入:环境 Env,Q网络 Q(s,a;θ),目标网络 Q(s,a;θ⁻),回放池 D,折扣因子 γ,探索率 ε
1. 初始化 θ⁻ ← θ,D 为空
2. 对于每一集episode:a. 重置环境,获得初始状态 sb. 重复直到终止:i. 以 ε-贪心策略从 Q(s,a;θ) 选择 aii. 执行动作 a,获得 (r, s')iii. 将 (s,a,r,s') 存入 Div. 从 D 中随机抽样小批量 (s_j,a_j,r_j,s'_j)v. 计算目标 y_j = r_j + γ max_{a'} Q(s'_j,a';θ⁻)vi. 以梯度下降最小化 (y_j - Q(s_j,a_j;θ))²,更新 θvii. 每 K 步将 θ 复制到 θ⁻c. 终止或更新 ε
3. 返回训练后的 Q 网络 θ

三、典型实现步骤

  1. 环境与依赖

    • 安装 Gym 或 Gymnasium,用于构建测试环境(如 CartPole-v1、Atari)。
    • 选择深度学习框架(PyTorch、TensorFlow)并导入相应模块。
  2. 定义Q网络

    • 对低维状态:使用全连接网络(MLP);对高维图像:使用卷积神经网络(CNN)。
    • 输出维度等于动作数;前向计算返回所有动作的Q值。
  3. 实现Replay Buffer

    • 环形队列或列表存储固定容量的过渡;实现 push(state, action, reward, next_state, done)sample(batch_size) 方法。
  4. 训练循环

    • 动作选择:ε-贪心策略;
    • 存储转移:将当前交互存入回放池;
    • 批量更新:当回放池样本数 ≥ 批量大小时,抽样并计算损失、反向传播更新主网络;
    • 目标网络更新:每隔固定步数同步主网络参数到目标网络;
    • ε衰减:逐步降低探索率至最小值。
  5. 超参数设置

    • 回放池大小(如 10 5 10^5 105)、批量大小(如 32–128)、γ(如 0.99)、学习率(如 1e-4)、ε初始/最小值及衰减策略、目标网络更新频率 K(如 1000 步)。
  6. 训练与评估

    • 多个随机种子、多轮训练,记录平均回报与方差;
    • 根据训练曲线判断收敛性,适时调整超参数。

四、Python示例(PyTorch)

import random, numpy as np
import torch, torch.nn as nn, torch.optim as optim
from collections import dequeclass DQN(nn.Module):def __init__(self, state_dim, action_dim):super().__init__()self.net = 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.net(x)# 初始化
env = gym.make('CartPole-v1')
state_dim = env.observation_space.shape[0]
action_dim = env.action_space.n
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=1e-4)
replay_buffer = deque(maxlen=100000)# 训练循环
for episode in range(1000):state = env.reset()done = Falsewhile not done:if random.random() < epsilon:action = env.action_space.sample()else:with torch.no_grad():action = policy_net(torch.FloatTensor(state)).argmax().item()next_state, reward, done, _ = env.step(action)replay_buffer.append((state, action, reward, next_state, done))state = next_stateif len(replay_buffer) >= batch_size:batch = random.sample(replay_buffer, batch_size)states, actions, rewards, next_states, dones = map(lambda x: torch.FloatTensor(x), zip(*batch))q_values = policy_net(states).gather(1, actions.long().unsqueeze(1))next_q = target_net(next_states).max(1)[0].detach()target = rewards + gamma * next_q * (1 - dones)loss = nn.MSELoss()(q_values.squeeze(), target)optimizer.zero_grad(); loss.backward(); optimizer.step()# 同步目标网络if total_steps % target_update == 0:target_net.load_state_dict(policy_net.state_dict())total_steps += 1# ε衰减epsilon = max(epsilon_min, epsilon * epsilon_decay)
http://www.dtcms.com/a/505372.html

相关文章:

  • 快速上手大模型:机器学习4(特征缩放、学习率选择)
  • 做网站费用 优帮云linux wordpress是什么意思
  • 网站建设推广兼职福建银瑞建设工程有限公司网站
  • 微商的自己做网站叫什么软件下载中秋节网页制作素材
  • 谷歌网站地图生成大连seo建站
  • 人像摄影作品网站做照片书的模板下载网站
  • 佛山哪里有网站开发南京列表网免费发布信息
  • 哈尔滨手机网站建设农产品网站管理员怎么做
  • 婚庆网站建设需求分析100款软件免费下载大全
  • 济南网站建设流程网站开发销售合同
  • 做网站 php asp.net jsp建设网点查询
  • 松原手机网站开发公司电话物流发货平台
  • 【LibreCAD】 CMakeLists.txt 分析
  • 我是做网站的WordPress修改数据库地址
  • 网站代运营 如何纳税专业的网页制作公司
  • 网站死链怎么办跨境电商平台有哪些
  • dede网站改成自适应成都网站平台建设
  • 网站基础建设巴巴商友圈asp网站后台无法编辑
  • 微信公众号手机网站美食网站开发意义
  • 网站建设简称什么石家庄开发区网站建设
  • 网站后台发布了但看不见正能量网站建设
  • 网站首页页面设计如何安装网站模板文件
  • 苏州市城乡建设局网站学做网站制作
  • 如何做网站推广页面智能建站模板
  • 山西长治做网站公司怎么开发手机页面
  • 网站建设找实体还是淘宝网络营销是学什么的
  • 深圳网站建设公司首选丹东网站建设平台
  • 网站建设的基本特点手机兼职赚钱正规平台怎么找
  • 做网站上饶南京刚刚发生的大事
  • 网站例子网站重复