图解强化学习 |手算DQN

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 摘要:本文系统介绍了深度Q网络(DQN)算法及其改进方案。DQN通过神经网络替代Q表解决高维状态问题,采用经验回放和目标网络提升稳定性,但仍存在Q值高估等局限性。文章详细解析了DQN网络结构(4维输入→2维动作Q值输出)、基于时序差分的更新流程(含经验回放采样与双网络协同机制),并通过矩阵示例演示MSELoss计算过程。进一步探讨两种改进算法:DoubleDQN通过解耦动作选择与价值评估缓解过估计问题;DuelingDQN则创新性地拆分状态价值V与动作优势A分支,提升学习效率。二者均保持DQN基础框架,分别

 DQN算法的基础认识

                                                                        深度 Q 网络

DQN是基于价值、离线、无模型的深度强化学习算法,用神经网络替代Q表拟合动作价值,解决Q

表爆炸问题,可处理高维状态。采用ε-贪心策略选动作,借助时序差分更新网络;引入经验回放、

目标网络提升训练稳定性。但仍不适用于连续动作场景。

image.gif


DQN算法的网络结构

                            假设状态有4个维度,有2个动作

输入:状态 s 【1*4】

输出:当前状态下所有离散动作对应的 Q 值  【1*2】

作用:评估每个动作的长期价值,依据最大 Q 值选择最优动作

image.gif


DQN算法的更新过程

DQN 算法的更新过程

1. 智能体根据状态s,经当前Q网络输出各动作Q值,用贪心选动作a,执行后得到奖励r、下一状

s'

2. 将样本(s,a,r,s')存入经验回放池。

3. 从回放池随机采样批量样本,利用目标Q网络计算s'对应的最大Q值,结合折扣因子算出目

标Q值。

4. 计算预测Q值与目标Q值的损失,反向传播更新当前Q网络参数。

5. 固定步数间隔,将当前Q网络参数同步至目标Q网络,循环迭代。

更新公式

Q 估计

我们通过 NN 预测出Q(s2, a1) 和 Q(s2,a2) 的值, 这就是 Q 估计.

Q现实

      然后我们选取 Q 估计中最大值的动作来换取环境中的奖励 reward. 并进入了下一个状态S‘

然后再把这个新的状态输入到网络中。 最后得到目标值。【第一项是环境给出的,第二项是网络

给出的】。

image.gif

均方误差损失函数 (MSE Loss)


image.gif


手算过程

                                               假设我们现在有3个状态

当前网络输出 Q (s,a)

[
 [2.5, 8.7],   # S2
 [3.1, 1.2],   # S4
 [4.0, 5.0]    # S1
]

image.gif

使用动作取出对应 Q 值(gather)

curr_Q = [
 [8.7],   # 动作1
 [3.1],   # 动作0
 [5.0]    # 动作1
]

image.gif

目标网络输出 next_Q

next_Q = [
 [1.5, 9.0],
 [2.0, 1.8],
 [6.0, 8.0]
]

image.gif

取每一行最大值

max_next_Q = [9.0, 2.0, 8.0]

image.gif

计算 目标 Q 值 expected_Q

expected_Q = [
 [9.91],
 [2.98],
 [-1.0]
]

image.gif

计算 loss(均方误差)

curr_Q     = [8.7,   3.1,   5.0]
expected_Q = [9.91, 2.98, -1.0]

image.gif

image.gif


DQN算法的改进

Double DQN

Double DQN 是传统 DQN 的改进版本,主要解决原生 DQN Q 值过估计问题。

原生 DQN 使用同一目标网络既选最大动作、又评估 Q 值,容易高估动作价值;

Double DQN 拆分两步:用当前网络选最优动作,再用目标网络计算该动作的 Q 值,估计更精

准、训练更稳定。

它保留 DQN 全部结构:神经网络、经验回放、双网络架构,仅修改目标 Q 值计算逻辑。

image.gif

Dueling DQN

                                           把Q要拆分 V 和 A

Dueling DQN(对决网络 DQN)是 DQN 的网络结构改进版本,不改变训练流程、经验回放、双

网络机制。

它将单个 Q 值输出拆分为状态价值和动作优势两个分支:

状态价值 (V(s)):描述当前状态本身能获得的整体收益,和动作无关;

动作优势 (A(s,a)):描述某个动作相对平均水平的优劣,体现动作差异。

然后再通过这两个分支的输出,最后得到最终的结果

优势:能区分 “状态好坏” 与 “动作好坏”,对动作不敏感的状态拟合更精准,训练收敛更快、鲁棒

性更强。

image.gif

image.gif

状态价值 V(Value 支路)

value = tensor([
    [10.0],   # 第1个状态
    [ 2.0]    # 第2个状态
])

image.gif

动作优势 A(Advantage 支路)

advantage = tensor([
    [4.0, 8.0],  # 第1个状态:动作0=4,动作1=8
    [7.0, -1.0]  # 第2个状态:动作0=7,动作1=-1
])

image.gif

第一步:计算每个状态的 Advantage 均值

mean_A = tensor([
    [6.0],
    [3.0]
])

image.gif

第二步:优势去中心化(A - 均值)

centered_A = tensor([
    [-2.0,  2.0],
    [ 4.0, -4.0]
])

image.gif

第三步:加上状态价值 V → 得到最终 Q

Q = tensor([
    [ 8.0, 12.0],   # 状态1:选动作1
    [ 6.0, -2.0]    # 状态2:选动作0
])

image.gif

image.gif


目录
相关文章
|
安全 应用服务中间件 nginx
Nginx限制IP访问只允许特定域名访问
为了我们的服务器安全,我们需要禁止直接使用 IP 访问我们的服务器,我们可以借助 Nginx 完成
2550 1
Nginx限制IP访问只允许特定域名访问
|
14天前
|
人工智能 前端开发 JavaScript
免费可商用 PHP 管理后台 CatchAdmin V5.3.1 发布 后台打包直降 5s 内
CatchAdmin V5.3.1 是免费可商用的 Laravel 13 + Vue 3 后台框架,开箱即用、模块解耦、权限完备(菜单/按钮/数据三级控制)。本次升级至 Tailwind CSS v4 & Vite 8,打包提速至 5s 内,并强化 AI 开发支持(Skills/AGENTS.md/MCP),助你极速构建企业级后台。(239字)
461 131
|
1月前
|
人工智能 自然语言处理 安全
OpenClaw 小龙虾 AI 智能体 Windows 部署完整教程(2026 最新)
OpenClaw(小龙虾)是2026年爆火的开源AI智能体,GitHub星标超28万。支持本地运行、零代码配置、自动任务处理,专为新手设计——一键部署包+全程可视化操作,10分钟即可在Win10/11上搭建专属数字员工,解放重复办公!
|
14天前
|
机器学习/深度学习 数据采集 人工智能
田间杂草检测数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含4000张真实农田图像(小麦/玉米/水稻田),YOLO格式标注杂草目标,覆盖多天气、光照与视角,适用于YOLO系列等目标检测模型训练,助力智能除草与精准农业研究。(239字)
310 16
|
14天前
|
人工智能 运维 监控
OpenClaw是什么能干什么 新版OpenClaw完整入门教程 核心功能与阿里云部署实操指南
在AI智能体全面普及的2026年,各类自动化代理工具层出不穷,OpenClaw凭借开源免费、私有化部署、多平台适配、强大任务执行能力迅速走红,成为个人办公、团队协作、开发运维、消息自动交互的热门选择。很多新手初次接触OpenClaw时,都不清楚它到底是什么、具备哪些核心能力、适合什么场景,也不知道如何在阿里云服务器上快速完成部署配置。
299 3
|
14天前
|
运维 网络安全 数据安全/隐私保护
Docker 部署 GitLab CE 完整版教程
GitLab Community Edition(简称GITLAB-CE)是一款开源的DevOps平台,集成了代码仓库管理、版本控制、 issue 跟踪、CI/CD 流水线、Wiki 和容器仓库等功能,为软件开发团队提供一站式的协作解决方案。通过Docker容器化部署GITLAB-CE,可大幅简化安装流程、提高环境一致性,并便于快速扩展和迁移。本文将详细介绍如何通过Docker快速部署GITLAB-CE,并提供生产环境优化建议及故障排查方案。
389 0
Docker 部署 GitLab CE 完整版教程
|
14天前
|
人工智能 机器人 芯片
人工智能|YOLOv8实战
本内容为安全帽检测实战项目,基于YOLOv8模型,涵盖Kaggle数据获取、自定义yaml配置、模型训练(yolo_train.py)与测试(yolo_test.py),并提供服务器(FastAPI+Docker)、边缘(Jetson+TensorRT)及国产嵌入式(RK3588+RKNN)三类部署方案,支持工业场景实时智能识别。(239字)
237 1
|
14天前
|
机器学习/深度学习 算法 关系型数据库
图解强化学习 |手算PG算法
PG(Policy Gradient)策略梯度算法直接优化策略网络,输出动作概率而非价值,适用于离散/连续动作空间。需整回合采样后计算折扣回报Gₜ,以-logπ·G为损失函数更新参数,提升高回报动作概率。可引入基线(如平均回报)构建优势函数,提升训练稳定性与效率。(239字)
2616 1
|
14天前
|
人工智能 安全 测试技术
Claude Opus从4.7到4.8迭代升级 Claude大模型Agent能力深度评测
2026年大模型行业竞争进入白热化阶段,各大厂商持续快速迭代版本,GPT、Codex等模型不断更新升级,持续抢占市场份额。在此背景下,Anthropic仅间隔六周时间,火速推出Claude Opus 4.8版本,从发布节奏就能看出厂商的紧迫感。
352 0
|
14天前
|
SQL 存储 人工智能
Claude Code Harness工程实战 数仓AI开发落地完整方案详解
随着AI编程工具在数据仓库研发领域全面普及,Claude Code已经成为绝大多数数仓开发团队的日常标配工具,在SQL编写、模型设计、需求拆解、脚本生成等场景大幅提升研发效率。但在大规模真实数仓项目落地过程中,开发者普遍遇到几大无法回避的痛点:AI对话上下文压缩后关键约束失忆、开发规范依赖模型记忆执行率低、复杂任务上下文快速膨胀导致推理失真,严重影响交付质量与研发效率。
315 0