【Deep Reinforcement Learning Hands-On Third Edition】【序】
书名:深度强化学习实践 第三版
副标题:一个实用且容易跟得上的强化学习指南,从(Q-learning和DQNs)到(PPO和RLHF)
作者:Maxim Lapan
1.书中目录
模块一:强化学习初探
- 章1: 什么是强化学习.包含RL思想和主要形式模型的介绍。
- 章2:OpenAI Gym API 和 Gymnasium.介绍了RL的实践方面,在使用开源库Gym及其新一代Gymnasium库的情况下。
- 章3:使用Pytorch进行深度学习.为您提供PyTorch库的快速概述。
- 章4:交叉熵方法.介绍了RL中最简单的方法之一,让你对RL方法和其问题有个初步印象。
模块二:基于价值的方法
- 章5:表格学习与贝尔曼方程.本章开启了模块二,致力于介绍基于价值的方法族群。
- 章6:深度Q网络.描述了DQNs,是对基于价值方法的扩展,能让我们解决复杂的环境问题。
- 章7:更高级的强化学习库.描述了PTAN库,我们将会用它来简化RL方法的实现。
- 章8:DQN扩展.详细介绍了对DQN方法的现代扩展,以提高其在复杂环境中的稳定性和收敛性
- 章9:加速强化学习的方法.提供了快速执行RL代码的方法。
- 章10:使用强化学习进行股票交易.是第一个实际可行的项目,重点是将DQN方法应用于股票交易
模块三:基于策略的方法
- 章11:策略梯度.打开了本书的模块三,并介绍了另一类基于直接策略优化的RL方法。
- 章12:Actor-Critic方法:A2C和A3C.描述了RL中最广泛使用的基于策略的方法之一
- 章13:TextWorld环境.涵盖了RL方法在互动小说游戏中的应用。
- 章14:网页导航.是另一个漫长项目,将RL应用于网页导航中,使用MiniWoB++环境。
模块四:高级强化学习
- 章15:连续动作空间.打开了本书的高级RL部分,并描述了使用连续动作空间和各种方法(广泛用于机器人技术)的环境的细节。
- 章16:信任域方法.是另一个关于连续动作空间的章节,描述了PPO、TRPO、ACKTR和SAC方法集。
- 章17:强化学习里的黑盒优化.揭示了另一种不使用显式形式的梯度方法。
- 章18:高级探索.涵盖了可以用于更好地探索环境的不同方法——RL的一个非常重要的方面。
- 章19:带有人类反馈的强化学习.介绍并实现最近的方法来指导学习过程,如通过给予人类反馈。这种方法被广泛应用于大型语言模型(llm)的训练中。在本章中,我们将从头开始实现RLHF管道,并检查其效率。
- 章20:AlphaGo Zero 和 MuZero.描述了AlphaGo Zero方法及其演变为MuZero,并将这两种方法应用到游戏Connect 4中。
- 章21:离散优化中的强化学习.描述了RL方法在离散优化领域的应用,使用魔方作为一个环境。
- 章22:多智能体强化学习.对于多智能体的情况下,介绍了RL一个相对新的方向。
2.前言
这本书是关于强化学习(RL),RL是机器学习(ML)的一个子领域;RL专注于在通用的且具备挑战性问题上最优行为的学习,这种问题往往是在复杂环境中。这种学习过程仅仅由奖励值和从环境中获取的观察结果所驱动。这个模型是非常通用,并且能够应用于许多实际场景中,从玩游戏到优化复杂制造工艺上。那么本书主要关注深度强化学习(DRL),一种利用深度学习方法的强化学习。
由于其灵活性和通用性,强化学习领域发展非常迅速,吸引了大量关注,既有试图改进现有方法或者创建新方法的学者,也包括有兴趣于以最有效率方式来解决他们所遇到问题的实践者。
为什么要写这本书
全球范围内,强化学习(RL)领域正在进行大量的研究活动。新的研究论文几乎每天都在发表,并且有大量深度学习(DL)会议,例如NIPS或者ICLR,都专注于RL方法。同时,也有几个大型研究小组专注于将 RL 方法应用于机器人、医学、多智能体系统等领域。
然而,尽管最近的研究信息广泛可用,但它过于专业化和抽象以至于不易于理解。更糟糕的是,在强化学习(RL)的实际应用方面的层面,因为从研究论文中数学描述的抽象方法如何过渡到解决实际问题的具体实现,并不总是简单容易的。
这就让一些对于该领域感兴趣的人们难以理解论文和会议演讲背后的方法和思想。
也有一些关于强化学习各个方面的非常好的博客文章,用工作示例进行了说明,但博客文章的有限格式允许作者只描述一两种方法,而不需要构建一个完整的结构化图片,也不需要系统地展示不同方法之间的相互关系。本书写作目的是尝试填补这种明显空白–关于RL方法和途径上实践与结构化信息之间的空白。
本书使用方法
本书一个重要层面是面向实践。每个方法都针对各种环境进行了实现,从非常简单的到相当复杂的。本书试图使示例简洁,这些示例是通过PyTorch的强大功能来实现。另一方面,示例的复杂性与使用要求也可以让RL爱好者们不需要使用到非常大的计算资源诸如GPUs的集群或者强大的工作站。
我相信,这将使RL领域的受众范围越来越大,而不仅仅只在研究团队或大型人工智能公司。另一方面,这仍然是属于深度强化学习,我还是强烈建议使用GPU,因为计算速度的加快将使实验更加方便(等待几个星期才能完成一次优化并不是很好玩)。书中大约一半的例子在GPU上运行将会是很好的体验。
除了RL中使用的传统中等规模环境示例,如Atari游戏或连续控制问题之外,本书还包含几个章节(10、13、14、19、20和21) 包含较大的项目,说明RL方法如何应用于更复杂的环境和任务。这些示例仍然不是完整的、且不是现实的项目(现实的项目就可以占据一整本书来描述),但也说明RL范式如何在更大的问题上超越公认基准的领域。
关于本书第1、2和3模块中的示例,还有一点需要注意的是,我试图使它们自成一体,并且完整地显示了源代码。有时这会导致重复代码片段(例如,大多数方法中的训练循环非常相似),但我相信让你自由直接进入你想学习的方法才是更重要,这样能避免一些重复部分。书中的所有示例都可以在GitHub上找到,欢迎你fork它们,做实验,还有贡献。
除了源代码之外,还有几个章节(第15、16、19和22章)配有训练模型的视频记录。所有这些记录都可以在以下YouTube播放列表中找到。
本书适合给谁看
本书适合机器学习工程师、软件工程师和数据科学家,他们希望在实践中学习和应用深度RL。它假定读者熟悉Python、微积分和ML概念。通过实际案例和高级概述,它也适合有经验的专业人士,他们希望加深对高级深度RL方法的理解并在各个行业应用,比如游戏和金融。
如何充分利用这本书
如果你使用的机器至少有32G内存,这本书肯定很合适你。虽然GPU并不是必须,但还是强烈建议使用Nvidia GPU。这个代码已经在Linux和MacOS上进行了测试。有关硬件和软件需求的更多细节,请参见第2章。
在这本书中,描述RL方法的所有章节都有相同的结构:在一开始,我们讨论了该方法的动机,它的理论基础,以及它背后的思想。然后,我们将该方法应用于不同环境的几个示例。
你可以用不同的方式使用本书
- 想要快速熟悉一个特定的方法,您只能阅读相关章节的介绍性部分。
- 想要更深入地理解该方法的实现方式,您可以阅读该代码及其附带的解释。
- 想要更深入地熟悉该方法(我相信这是最好的学习方法),您可以尝试使用所提供的源代码作为参考点来重新实现该方法并使其工作。
无论你选择什么方法,我都希望这本书会对你有用!
第三版变化
与本书第二版(2020年出版)相比,本书的内容有几个重大变化:
- 代码示例的所有依赖关系都已更新到最新版本,或者被更好的替代方案替换。例如,OpenAI Gym不再被维护了,但我们有Farama Foundation Gymnasium 可以fork。另一个情况是MiniWoB++库,它已经取代了MiniWoB和Universe环境。
- 关于RLHF的新一章,MuZero方法被添加到AlphaGo Zero的一章中。
- 有很多小的修复和改进——大多数的数据都被重新绘制,以使它们更清晰、更容易理解。
相关文章:
【Deep Reinforcement Learning Hands-On Third Edition】【序】
书名:深度强化学习实践 第三版 副标题:一个实用且容易跟得上的强化学习指南,从(Q-learning和DQNs)到(PPO和RLHF) 作者:Maxim Lapan 1.书中目录 模块一:强化学习初探 章…...
热门索尼S-Log3电影感氛围旅拍LUTS调色预设 Christian Mate Grab - Sony S-Log3 Cinematic LUTs
热门索尼S-Log3电影感氛围旅拍LUTS调色预设 Christian Mate Grab – Sony S-Log3 Cinematic LUTs 我们最好的 Film Look S-Log3 LUT 的集合,适用于索尼无反光镜相机。无论您是在户外、室内、风景还是旅行电影中拍摄,这些 LUT 都经过优化,可为…...
Hadoop/Spark 生态
Hadoop/Spark 生态是大数据处理的核心技术体系,专为解决海量数据的存储、计算和分析问题而设计。以下从底层原理到核心组件详细讲解,帮助你快速建立知识框架! 一、为什么需要 Hadoop/Spark? 传统单机瓶颈: 数据量超…...
.global
.global关键字用来让一个符号对链接器可见,可以供其他链接对象模块使用。 global是告诉编译器,其后是全局可见的名字【变量或函数名】。 .global start 让start符号成为可见的标示符,这样链接器就知道跳转到程序中的什么地方并开始执行。li…...
八股总结(Java)实时更新!
八股总结(java) ArrayList和LinkedList有什么区别 ArrayList底层是动态数组,LinkedList底层是双向链表;前者利于随机访问,后者利于头尾插入;前者内存连续分配,后者通过指针连接多块不连续的内存…...
@emotion/css + react+动态主题切换
1.下载插件 npm install --save emotion/css 2.创建ThemeContext.tsx // src/ThemeContext.tsx import React, { createContext, useContext, useState } from "react";// 定义主题类型 export type Theme "light" | "dark";// 定义主题上下…...
Python Cookbook-4.16 用字典分派方法和函数
任务 需要根据某个控制变量的值执行不同的代码片段——在其他的语言中你可能会使用case 语句。 解决方案 归功于面向对象编程的优雅的分派概念,case语句的使用大多(但不是所有)都可以被替换成其他分派形式。在Python中,字典及函数是一等(first-class)…...
亚马逊玩具品类技术驱动型选品策略:从趋势洞察到合规基建
一、全球玩具电商技术演进趋势 (技术化重构原市场背景) 数据可视化分析:通过亚马逊SP-API抓取2023年玩具品类GMV分布热力图 监管技术升级: 美国CPSC启用AI质检系统(缺陷识别准确率92.7%) 欧盟EPR合规接口…...
【jQuery】插件
目录 一、 jQuery插件 1. 瀑布流插件: jQuery 之家 http://www.htmleaf.com/ 2. 图片懒加载: jQuery 插件库 http://www.jq22.com/ 3. 全屏滚动 总结不易~ 本章节对我有很大收获,希望对你也是~~~ 一、 jQuery插件 jQuery 功能…...
MATLAB导入Excel数据
假如Excel中存在三列数据需要导入Matlab中。 保证该Excel文件与Matlab程序在同一目录下。 function [time, voltage, current] test(filename)% 读取Excel文件并提取时间、电压、电流数据% 输入参数:% filename: Excel文件名(需包含路径,如C:\data\…...
主流软件工程模型全景剖析
一、瀑布模型 阶段划分 需求分析:与用户深入沟通,全面了解软件的功能、性能、可靠性等要求,形成详细的需求规格说明书。设计阶段:包括总体设计和详细设计。总体设计确定软件的体系结构,如模块划分、模块之间的接口等&…...
python和Java的区别
Python和Java是两种流行的编程语言,它们之间有一些重要的区别: 语法:Python是一种动态类型的脚本语言,语法简洁明了,通常使用缩进来表示代码块。Java是一种静态类型的编程语言,语法更为严格,需要…...
孤码长征:破译PCL自定义点云注册机制源码迷局——踩坑实录与架构解构
在之前一个博客《一文搞懂PCL中自定义点云类型的构建与函数使用》中,清晰地介绍了在PCL中点云的定义与注册方法。我的一个读者很好奇其内部注册的原理以及机制,再加上最近工作中跟猛男开发自定义点云存储的工作,借着这些需求,我也…...
【SQL】MySQL基础2——视图,存储过程,游标,约束,触发器
文章目录 1. 视图2. 存储过程2.1 创建存储过程2.2 执行存储过程 3. 游标4. 约束4.1 主键约束4.2 外键约束4.3 唯一约束4.4 检查约束 5. 触发器 1. 视图 视图是虚拟的表,它是动态检索的部分。使用视图的原因:避免重复的SQL语句;使用表的部分而…...
Centos 7 搭建 jumpserver 堡垒机
jumpserver 的介绍 1、JumpServer 是完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合4A 的专业运维审计系统 1)身份验证 / Authentication 2)授权控制 / Authorization 3)账号管理 / Accounting 4)安全审计 / Auditing 2、JumpServer 使用 Python / Django 进行开…...
封装了一个优雅的iOS全屏侧滑返回工具
思路 添加一个全屏返回手势,UIPangesturerecognizer, 1 手势开始 在手势开始响应的时候,将navigationController的delegate代理设置为工具类,在工具类中执行代理方法,- (nullable id )navigationController:(UINavigationControll…...
HCIP-6 DHCP
HCIP-6 DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 手工配置网络参数存在的问题 灵活性差 容易出错 IP地址资源利用率低 工作量大 人员素质要求高 DHCP服务器按照如下次序为客户端选择IP地址: ①DHCP服务器的数…...
OpenCV图像拼接(8)用于实现并查集(也称为不相交集合)数据结构类cv::detail::DisjointSets
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::DisjointSets 类是OpenCV库中用于实现不相交集合(也称为并查集)数据结构的类。该数据结构常用于处理动态连接…...
opencv图像处理之指纹验证
一、简介 在当今数字化时代,生物识别技术作为一种安全、便捷的身份验证方式,正广泛应用于各个领域。指纹识别作为生物识别技术中的佼佼者,因其独特性和稳定性,成为了众多应用场景的首选。今天,我们就来深入探讨如何利…...
记一道CTF题—PHP双MD5加密+”SALT“弱碰撞绕过
通过分析源代码并找到绕过限制的方法,从而获取到flag! 部分源码: <?php $name_POST[username]; $passencode(_POST[password]); $admin_user "admin"; $admin_pw get_hash("0e260265122865008095838959784793");…...
Text2SQL推理类大模型本地部署的解决方案
大家好,我是herosunly。985院校硕士毕业,现担任算法工程师一职,获得CSDN博客之星第一名,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得多项AI顶级比赛的Top名次,其中包括阿里云、科大讯飞比赛第一名…...
机器学习的一百个概念(3)上采样
前言 本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…...
Electron应用生命周期全解析:从启动到退出的精准掌控
一、Electron生命周期的核心特征 1.1 双进程架构的生命周期差异 Electron应用的生命周期管理具有明显的双进程特征: 主进程生命周期:贯穿应用启动到退出的完整周期渲染进程生命周期:与浏览器标签页相似但具备扩展能力进程间联动周期&#…...
AI渗透测试:网络安全的“黑魔法”还是“白魔法”?
引言:AI渗透测试,安全圈的“新魔法师” 想象一下,你是个网络安全新手,手里攥着一堆工具,正准备硬着头皮上阵。这时,AI蹦出来,拍着胸脯说:“别慌,我3秒扫完漏洞࿰…...
分秒计数器设计
一、在VsCode中写代码 目录 一、在VsCode中写代码 二、在Quartus中创建工程与仿真 1、建立工程项目文件md_counter 2、打开项目文件,创建三个目录 3、打开文件trl,创建md_counter.v文件 4、打开文件tb,创建md_counter_tb.v文件 5、用VsCod…...
Flink介绍——发展历史
引入 我们整个大数据处理里面的计算模式主要可以分为以下四种: 批量计算(batch computing) MapReduce Hive Spark Flink pig流式计算(stream computing) Storm SparkStreaming/StructuredStreaming Flink Samza交互计…...
12. STL的原理
目录 1. 容器、迭代器、算法 什么是迭代器? 迭代器的作用? 迭代器的类型? 迭代器失效 迭代器的实现细节: 2. 适配器 什么是适配器? 适配器种类: 3. 仿函数 什么是仿函数? 仿函数与算法和容器的…...
OSPFv3 的 LSA 详解
一、复习: OSPFv3 运行于 IPv6 协议上,所以是基于链路,而不是基于网段,它实现了拓扑和网络的分离。另外,支持一个链路上多个进程;支持泛洪范围标记和泛洪不识别的报文(ospfv2 的行为是丢弃&…...
python 原型链污染学习
复现SU的时候遇到一道python原型链污染的题,借此机会学一下参考: 【原型链污染】Python与Jshttps://blog.abdulrah33m.com/prototype-pollution-in-python/pydash原型链污染 文章目录 基础知识对父类的污染命令执行对子类的污染pydash原型链污染打污染的…...
Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(十一)
注册表设置 GPU虚拟化标志 GpuVirtualizationFlags 注册表项用于设置半虚拟化 GPU 的行为。 密钥位于: DWORD HKLM\System\CurrentControlSet\Control\GraphicsDrivers\GpuVirtualizationFlags 定义了以下位: 位描述0x1 为所有硬件适配器强制设置…...
