强化学习4:DQN 算法

看这篇文章之前,建议先了解一下:Q-Learning 算法。

1. 算法介绍

DQN 算法全称为 Deep Q-Network,即深度Q网络。它将 Q-Learning 与 Deep Learning 结合在了一起。

1.1 Q-Network

Q-Learning 是使用 Q-table 才存储决策信息的,那么这就要求 state、action 必须是离散的。但是大部分情况,state 和 action 并不离散,或者不方便例举出所有的可能性。比如说用来打游戏,这时 Q-Learning 就无法使用。
为了应对 state 和 action 是连续的情况,我们可以使用 Q 函数来替代 Q-table,Q 函数依然可以记为 Q(s,a),这样对于任意的 state 和 action,只需要通过函数计算我们就可以得到其所对应的 Q-value 了。
但是强化学习可应用的情况可能非常复杂,比如打游戏,我们知道当前的所有敌人的情况 state 和我们下一步想做的操作 action,我们也是没办法设想一个合理的函数来作为 Q-value 的。
神经网络只要构建的足够大,理论上可以模拟任何函数,那么我们就可以使用神经网络来充当 Q 函数。w是神经网络的参数,那么我们的 Q 函数可以记为 Q(s,a;w)。这个网络也就被成为 Q-Network。
在这里插入图片描述

1.2 网络的输入与输出

神经网络的输入输出是什么呢?
输入肯定就是状态的每一项。输出可以有两种选择。一种是让网络输出当前 state 对应每一种 action 的 Q-value,另一种是直接让网络输出最优 action。
在这里插入图片描述

两种各有优劣。对第一种来说,由于我们是替代 Q-table 的,那么如果网络输出是 Q-value,我们就可以使用 Q-Learning 或 SARSA 所使用的 Q-value 更新策略来更新网络。但是这样我们就需要列举出所有可行的 action,这样 action 仍需要是离散的,那么之前所说的使用 Q-Network 的初衷就有一部分没能得到满足。相比之下,第二种就允许 action 是连续的,但也就不方便使用 TD 策略来更新网络。

1.3 参数更新

一般我们可以选择第一种方式,因为方便设计网络更新算法。如果我们选择第一种方式的话,如何更新网络呢?

  1. 首先需要前向传播,得到每个可行的 action 对应的 Q-value,获得一个输出 a = argmax(Q(s,a;w)),同时我们可以观察到下一个 s’,并获得奖励 r。
  2. 计算 TD Target:y = r + γ max{Q(s’,a’;w)};
  3. 计算损失函数:loss = 1/2[y - Q(s,a;w)]^2。
    这样我们就得到了损失函数,然后就可以使用梯度下降来更新网络中的参数w。
    在这里插入图片描述

2. 优化

2.1 目标网络

训练过程中将网络复制为两部分 netA 和 netB。每一次训练过程,使用 netA 去做决策,只更新 netB 的参数。等到一轮训练完毕后,将 netB 的参数复制给 netA。
称 netA 为目标网络(target network),在每一轮训练过程中,它的参数是固定死的。

2.2 探索

如果一开始,某个 action 得到了正向的奖励,那么后面就可能会一直采取这个 action。但其实可能别的 action 会比这个要好很多。为了不会陷入局部优化,算法需要具有一定的探索性。
常用的解决方法有两种:ε 贪心(epsilon greedy)和玻尔兹曼探索(Boltzmann exploration)。ε 贪心更常用。

  • ε 贪心
    其中 ε 为探索率,其值为 0-1 之间。算法会以 ε 的概率选择随机 action,以 1-ε 的概率使用 Q-Network 选择 action。
    在这里插入图片描述

  • 玻尔兹曼探索
    玻尔兹曼探索策略是基于玻尔兹曼分布(Boltzmann Distribution)的概念。在每一步中,智能体会根据每个动作的价值函数估计值和一个称为“温度”的参数 τ 来计算选择该动作的概率。
    在这里插入图片描述

    温度参数 τ 控制了探索和利用之间的平衡:当 τ 较高时,智能体更倾向于探索;当 τ 较低时,智能体更倾向于利用已知信息选择最优动作。

2.3 经验回放

经验回放(Experience Replay)是一种用于存储和回放过去经验(即状态转换)的策略。
该策略需要创建一个经验池(Experience Replay Buffer),通常是一个循环队列或固定大小的列表。每当 agent 选择一个 action 并与环境进行交互时,就会生成一个新的经验(或称为转换),该经验包含当前state、所选 action、获得的 reward 以及下一个state。这个经验会被存储到经验池中。当经验池中的经验数量达到一定的阈值时,算法每次训练会从经验池中随机抽取一批经验作为训练数据。
好处:

  • 打破数据相关性:在强化学习中,相邻状态之间通常存在高度相关性。直接使用连续的经验进行训练可能会导致模型对最近的经验产生过度拟合,从而降低其泛化能力。通过经验回放,算法可以从历史经验中随机抽取数据进行训练,从而打破数据之间的相关性,提高模型的泛化能力。
  • 提高数据利用效率:在强化学习中,数据的收集往往是非常昂贵的。通过经验回放,算法可以反复利用存储在经验池中的历史经验进行训练,从而提高数据的利用效率。
  • 提高训练稳定性:由于经验回放可以打破数据之间的相关性并提高数据利用效率,因此它可以使DQN的训练过程更加稳定。此外,通过随机抽取经验进行训练,算法可以更好地应对非平稳分布的问题,因为历史经验中可能包含不同分布的数据。

2.4 总结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/17672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI推文神器,绘唐ai,文刻创作出品,sdmj二合一虹猫

AI推文神器,绘唐ai,文刻创作出品,sdmj二合一虹猫 https://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encfhttps://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encf AI推文神器是一种基于人工智能技术的工具,旨在帮助用户快速生成优质的推文。它通过分…

iPhone“已删除”照片被恢复,苹果到底有没有后门?

继微软本周推出的Windows“回忆”功能引发隐私焦虑,遭马斯克和安全大咖们猛烈抨击后,苹果iPhone手机近日也曝出了类似的“记忆门”。 删除十几年的iPhone照片被恢复 近日,有苹果手机用户更新了苹果上周发布的iOS 17.5系统后,意外…

2024最新版本激活Typora,1.8.10.0版本可用

​实测可用日期为:2024-05-28 目前最新版本 1.8.10.0 也是可以实现激活的 注:免修改注册表、不用修改时间,更不需要破解补丁 01、下载&安装 Typora 文件 从官网下载最新版本的 Typora,并安装 或者阿里云盘: htt…

Pytorch深度学习实践笔记12(b站刘二大人)

🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:pytorch深度学习 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

数据集008:吸烟、抽烟检测数据集(含数据集下载链接)

数据集简介 两个数据集 一个是783张图片对应的xml文件 一个是2482张图片对应的xml文件 如下图所示: 部分代码: # 测试数据读取 def test_data_loader(datadir, batch_size 10, test_image_size608, modetest):"""加载测试用的图片…

大学生选择算法向还是嵌入式向?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 由于嵌入式的薪资待遇和…

品牌建设不迷路:系统化方法让品牌成长更高效

很多创始人才创业过程中都会发现: 企业越大,遇到的系统性的底层品牌问题就会越多,品牌的系统化建设底层根基如果不稳,后续的增长也会摇摇欲坠。 所以在当今竞争激烈的市场环境中,品牌的成功不仅仅依靠一个响亮的名字…

【Linux】Linux的权限_1

文章目录 三、权限1. shell外壳2. Linux的用户3. Linux权限管理文件访问者的分类文件类型和访问权限 未完待续 三、权限 1. shell外壳 为什么要使用shell外壳 由于用户不擅长直接与操作系统直接接触和操作系统的易用程度、安全性考虑,用户不能直接访问操作系统。 什…

文件IO(一)

文件IO(一) 文件IO文件的分类在文件IO下,文件分类按存储的内容分按照操作分 标准IO和文件IO的区别系统调用和库函数的区别 文件IO 把程序暂存在内存的数据,存储到本地外存上 文件的分类 在Linux系统下,文件共分为7类…

AI答题项目,无门槛答题一小时收益30+

朋友们,今天我想和大家探讨一个令人兴奋的副业机遇。你是否曾感觉到日常工作的枯燥乏味,而又渴望找到一种轻松的赚钱方式来增加你的收入?今天我将和你分享的这个项目正是你所期待的。 项目的核心是利用AI技术来回答网上付费用户的问题&…

重生之我要精通JAVA--第六周笔记

File 路径 相对路径 路径1:“a.txt” 路径2:“abc\\a.txt” 绝对路径 路径1:“c:\\a.txt” 路径2:“c:\\abc\\a.txt” File对象就表示一个路径,可以是文件的路径、也可以是文件夹的路径这个路径可以是存在的&…

linux线程,线程控制与线程相关概念

线程概念 线程这个词或多或少大家都听过,今天我们正式的来谈一下线程; 在我一开始的概念中线程就是进程的一部分,一个进程中有很多个线程,这个想法基本是正确的,但细节部分呢我们需要细细讲解一下; 什么…

“揭秘:为什么羊驼Ollama成为计算机运行大型语言模型的最佳拍档?“

最近,AIM 评测了在计算机上本地运行大语言模型(LLM)的最佳工具,Ollama 脱颖而出,成为最高效的解决方案,提供了无与伦比的灵活性。Ollama 是 Jeffrey Morgan 开发的一款开源工具,它正在彻底改变爱…

我被恐吓了,对方扬言要压测我的网站

大家好我是聪,昨天真是水逆,在技术群里交流问题,竟然被人身攻击了!骂的话太难听具体就不加讨论了,人身攻击我可以接受,我接受不了他竟然说要刷我接口!!!!这下…

【NumPy】掌握NumPy的histogram函数:数据直方图的生成与应用详解

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

速度百倍提升,高性能 Python 编译器 Codon 火了

引言 在当下的编程世界里,Python由于其易用性和强大的库支持在数据科学、人工智能和网页开发等多个领域占据着举足轻重的地位。然而,Python的执行速度往往成为开发者的一大痛点。 针对 这一问题,Codon项目正试图提供一个高效的解决方案。Codo…

小识MFC,一套设计优雅与不优雅并存的类库----小话MFC(2)

Q1: CPoint继承于POINT,这样有什么好处? A: 继承的一个最基本的好处当然就是减少代码量。CPoint和POINT内部数据一样,只是一个提供了更多的方法来操作对象。 typedef struct tagPOINT {LONG x;LONG y; } POINT, *P…

SpringMvc-restful设计风格

Restful 1、入门1.1 简介1.2 实例 1、入门 1.1 简介 RESTFul是什么 RESTFul是WEB服务接口的一种设计风格。 RESTFul定义了一组约束条件和规范&#xff0c;可以让WEB服务接口更加简洁、易于理解、易于扩展、安全可靠。 1.2 实例 web.xml <?xml version"1.0"…

5、xss-labs之level6

一、level6-----大小写绕过 1、测试分析 测试了之前用过的payload&#xff0c;发现都不行&#xff0c;并且level4使用的Java伪协议也不行&#xff0c;可以得出<>、script、onclick都被过滤 2、构造payload 因为href被过滤&#xff0c;可以试一下大写HREF 初试payload…

没人愿意和我们最好的工程师一起工作

几年前&#xff0c;有一位技术非常好的工程师&#xff08;我们叫他“乔恩”&#xff09;为我工作。 他的代码写得很好&#xff0c;代码审查&#xff08;PRs&#xff09;也完成得很快。从技术角度来看&#xff0c;他是个出色的工程师。 但是我们从其他工程师那里得到了一些关于…