【强化学习笔记】二.价值学习

news2025/1/19 20:25:54

文章目录

  • Q&A
  • 1.DQN工作原理
  • 2.如何训练DQN
    • 2.1.如何更新模型参数
      • 3.2.1.完整走完流程,再更新模型参数。
      • 3.2.2.无需走完流程,即可更新模型参数。
  • 3.如何将TD算法应用到DQN网络

Q&A

问:强化学习的目标是什么?

  • 最大化累计奖励(或者说得到最多的奖励)

问:用什么办法实现最大化累计奖励?

  • 如果我们有一个最优动作价值函数 Q ⋆ ( s , a ) Q^\star(s,a) Q(s,a),就可以实现最大化累计奖励。 这个最优动作价值函数 Q ⋆ ( s , a ) Q^\star(s,a) Q(s,a) 可以告诉我们在当前状态 s s s 时,选择什么样的动作可以获得最多的奖励期望。

问:最优动作价值函数是怎么获得的?

  • 用神经网络 Q ( s , a ; w ) Q(s,a;w) Q(s,a;w) 来近似的一个最优动作价值函数 Q ⋆ ( s , a ) Q^\star(s,a) Q(s,a)

1.DQN工作原理

DQN(Deep Q-Network, DQN)的原理: 用神经网络 Q ( s , a ; w ) Q(s,a;w) Q(s,a;w) 来近似一个价值函数 Q ⋆ ( s , a ) Q^\star(s,a) Q(s,a)

在这里插入图片描述

Q ⋆ ( s , a ) Q^\star(s,a) Q(s,a) 相当于一个“先知”,他可以告诉我们“未来”的事情(注意,实际上它是告诉了价值函数的期望值)。假如我们有一个 Q ⋆ ( s , a ) Q^\star(s,a) Q(s,a) 了,做决策我们就可以根据 Q ⋆ ( s , a ) Q^\star(s,a) Q(s,a) 选择最佳的动作了,最佳的动作 a ⋆ = a r g m a x a Q ⋆ ( s , a ) a^\star=argmax_a Q^\star(s,a) a=argmaxaQ(s,a) 就是使价值函数 Q ⋆ ( s , a ) Q^\star(s,a) Q(s,a) 值最大的那个动作 a ⋆ a^\star a

在这里插入图片描述
当DQN网络训练好以后,在状态 s t s_t st 时,DQN会知道向左会得到2000分,向右会得到1000分,向上会得到3000分,因此DQN就会选择得分最大的动作,即 Q ⋆ ( s t , a ) = Q ( s t , u p ) Q^\star(s_t,a) = Q(s_t,up) Q(st,a)=Q(st,up)

在这里插入图片描述

2.如何训练DQN

TD(Temporal Difference, TD)Learning 算法来训练DQN网络。

2.1.如何更新模型参数

3.2.1.完整走完流程,再更新模型参数。

在这里插入图片描述

场景: 开车从纽约(NYC)去亚特兰大(Atlanta)。

现状: 构建了一个模型 Q ( w ) Q(w) Q(w) ,参数 w w w (注意参数 w w w 是未知的,需要学习),可以预测开车出行花费的时间。

步骤:

  • 1)获取预测值: 出发前随机做一次预测(初始化预测),模型 Q ( w ) Q(w) Q(w) 的值 q = 1000 q=1000 q=1000 分钟(预测值)。

  • 2)获取真实值: 到亚特兰大以后看一下手表,发现只用了 y = 860 y=860 y=860 分钟(真实值)。

  • 3)构建损失函数,利用梯度下降法计算 w w w 的值:

    • 3.1)损失函数公式: L = 1 2 ( 预测值 − 真实值 ) 2 = 1 2 ( q − y ) 2 L = \frac 1 2(预测值-真实值)^2=\frac 1 2(q-y)^2 L=21(预测值真实值)2=21(qy)2

    • 3.2)梯度公式: G r a d i e n t = ∂ L ∂ w = ∂ L ∂ q ⋅ ∂ q ∂ w = ( q − y ) ⋅ ∂ Q ( w ) ∂ w Gradient=\frac{\partial L}{\partial w} = \frac{\partial L}{\partial q} \cdot \frac{\partial q}{\partial w} = (q-y) \cdot \frac{\partial Q(w)}{\partial w} Gradient=wL=qLwq=(qy)wQ(w)

    • 3.3)梯度下降法更新模型参数:
      w t + 1 = w t − α ⋅ ∂ L ∂ w ∣ w = w t w_{t+1} = w_t - \alpha \cdot \frac{\partial L}{\partial w} | _{w=w_t} wt+1=wtαwLw=wt
      梯度下降法减少了损失Loss,使预测值更接近真实值。

3.2.2.无需走完流程,即可更新模型参数。

场景: 开车从纽约(NYC)去亚特兰大(Atlanta)。

步骤:

  • 1)获取预测值: 出发前随机做一次预测(初始化预测),模型 Q ( w ) Q(w) Q(w) 的值 q = 1000 q=1000 q=1000 分钟(预测值)。

  • 2)获取真实值: 现在已经从纽约到华盛顿了,看了一下手表,只花费了300分钟(真实值),同时预测从华盛顿到亚特兰大还有600分钟(预测值)。
    于是,将300分钟(真实值)+600分钟(预测值)= 900分钟作为真实值(不完全真实,但也不完全虚假,起码有真实值的成分再里面),这个特殊的值叫做 TD target 。将 TD target 作为真实值计算损失函数,利用梯度下降法求解参数 w w w

在这里插入图片描述

3.如何将TD算法应用到DQN网络

在这里插入图片描述

  • 左侧 Q ( s t , a t ; w ) Q(s_t, a_t;w) Q(st,at;w) t t t 时刻做的估计,是从 t t t 时刻开始到结束,未来奖励总和的期望,这是一个预测值(注意:期望本来就是一个预测的值
  • 右侧的 r t r_t rt t t t 时刻获得的奖励值,是真实值
  • 右侧的 Q ( s t + 1 , a t + 1 ; w ) Q(s_{t+1}, a_{t+1};w) Q(st+1,at+1;w) t + 1 t+1 t+1 时刻做的估计,是从 t + 1 t+1 t+1 时刻开始到结束,是未来奖励总和的期望,也是一个预测值。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

一次TD target算法迭代过程:
在这里插入图片描述

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

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

相关文章

Windows 的 常用指令操作

目录 1、启动方式 2、修改cmd窗口背景色和字体色 3、文件夹常用指令 4、网络相关常用指令 5、其他常用命令 1、启动方式 用户启动:winR,输入cmd,Enter。 管理员启动:winR,输入cmd,CTRLShiftEnter。 …

Dubbo架构设计与源码解析(二) 服务注册

一、Dubbo简介 Dubbo是一款典型的高扩展、高性能、高可用的RPC微服务框架,用于解决微服务架构下的服务治理与通信问题。其核心模块包含【RPC通信】和【服务治理】,其中服务治理又分为服务注册与发现、服务容错、负载均衡、流量调度等。今天…

强化学习 —— DQN 代码遇到的问题总结

No module named ‘torch‘ 在把 DQN 代码复制到 PyCharm,点击“运行”后,出现了该报错。是因为当前环境中缺少 pytorch。解决方法: pip install torch如果因为网络问题安装特别慢,可从如下源进行下载: pip install…

php宝塔搭建部署实战开源版OneNav网址导航书签系统源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套php开发的开源版OneNav网址导航书签系统源码,感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx SQLite3 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&a…

【RuoYi-Vue-Plus】学习笔记 46 - Redisson(十二)布隆过滤器 BloomFilter 简单分析

文章目录前言参考目录测试方法配置说明Demo 方法功能调用流程分析1、布隆过滤器的初始化 tryInit1.1、创建布隆过滤器1.2、初始化布隆过滤器1.2.1、计算 bit 位数1.2.2、计算 Hash 函数个数1.2.3、保存过滤器配置Redis 实际执行结果2、将待比较元素存入布隆过滤器 addRedis 实际…

QT QMenuBra QMenu QAction 菜单栏 操作详解

本文详细的介绍了QMenuBra QMenu QAction 菜单栏的各种操作,例如操作:新建界面、加入菜单项、加入子菜单、新建二级子菜单、QAction分隔符、pMenuBar、点击信号、触发信号、设置图标、设置禁用、设置提示语 等操作 本文作者原创,未经允许禁止…

Eclipse常用设置

Eclipse 是著名的跨平台的自由集成开发环境(IDE)。最初主要用来 Java 语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如 C 和 Python 的开发工具 目录 1.解决中文乱码设置propertiew编码 2.更改字体大小 3.设置护眼颜色 4.修…

Usaco Training刷怪旅 第二层第一题:Milking Cows

usaco training 关注我持续更新usaco training内容 Three farmers rise at 5 am each morning and head for the barn to milk three cows. The first farmer begins milking his cow at time 300 (measured in seconds after 5 am) and ends at time 1000. The second farmer …

Go语言入门【09】结构体

结构体 相比于Java,在Go语言中没有类的概念,但是多了结构体。结构体与Java中的类很像,是表示一系列同一类型或不同类型的数据构成的数据集合。 例如可以将学生抽象成一个结构体,每一个学生有以下属性: Name&#xf…

基于pytorch搭建CNN 对人像是否戴口罩进行检测分类 详细教程

项目介绍 我们将使用 CNN (卷积神经网络)和机器学习分类器创建一个检测一个人是否戴着口罩的分类器。它将检测一个人是否戴着口罩。 我们将从头开始学习,我将对每一步进行解释。我需要你对机器学习和数据科学有基本的了解。我已经在本地 Windows 10 机器上实现了它,如果你…

A-Level/IB/AP不同课程体系分数可以相互转换吗?

都知道国际学校有不同的课程体系,也会有不同的考试体系。比如A-Level、IB、SAT/ACT和AP;甚至还有国内的高考体系。所以可能有同学家长会问,不同体系之间的分数是否能够进行对比呢? 严格来讲,其实不好对比,但…

wy的leetcode刷题记录_Day59

wy的leetcode刷题记录_Day59 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间:2022-12-9 前言 目录wy的leetcode刷题记录_Day59声明前言1780. 判断一个数字是否可以表示成三的幂的和题目介绍思路代码收获63. 题目题目介绍思路代码收获178…

m基于RFID和DBSCAN聚类的InSAR室内三维定位算法的matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 许多室内应用需要有关物体的空间信息。示例应用程序包括项目查找,对象级别映射和在仓库或库中管理的大型对象。然而,使用802.11,可见光或声学的基于位置的服务…

浏览器里console是异步的

console我一直以为是同步执行的,直到在一本书上看到,才了解到console本身有异步的特性。虽然在平常开发中经常使用console,但是真的没有意识到它的异步性。 下面就看下异步的实例 基础类型 该类型是我们开发中经常使用的,正是这…

01VSCode配置Anaconda 环境和调试环境

VSCode配置Anaconda 环境 Anaconda 简介 自带Python解释器Anaconda 附带了一大批常用数据科学包150 多个科学包及其依赖项Anaconda 是在 conda(一个包管理器和环境管理器)上发展出来的,包含了虚拟环境管理工具通过虚拟环境可以使不同的Pyth…

【Python深度学习】RNN循环神经网络结构讲解及序列回归问题实战(图文解释 附源码)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 循环神经网络 循环神经网络(Recurrent Neural Network,RNN)是用于对序列的非线性特征进行学习的深度神经网络。循环神经网络的输入是有前后关联关系的序列。 循环神经网络可以用来解决与序列…

python数据预处理时缺失值的不同处理方式!

在使用python做数据分析的时候,经常需要先对数据做统一化的处理,缺失值的处理是经常会使用到的。 一般情况下,缺失值的处理要么是删除缺失数据所在的行,要么就是对缺失的单元格数据进行填充。 今天介绍的是使用差补法/均值/固定…

CSS -- 08. 移动WEB开发之流式布局

文章目录移动WEB开发之流式布局1 移动端基础1.1 浏览器现状1.2 手机屏幕现状1.3 移动端调试方法2 视口2.1 布局视口 layout viewport2.2 视觉视口 visual viewport2.3 理想视口 ideal viewport2.4 meta视口标签3 二倍图3.1 物理像素&物理像素比3.2 多倍图3.3 背景缩放 back…

clickhouse-部署指南(亲测超详细)

文章目录环境要求测试环境Tar方式安装clickhouse用户授权访问控制服务配置启动连接测试TABIX webUI性能测试环境要求 ClickHouse可以在任何具有x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行 官方预构建的二进制文件通常针对x86…

prometheus+grafana对数据库mysql监控

安装 mysql docker run --name mysql-test -p MYSQL ROOT_PASSWORD123456 -p23306:3306 mysql:5.7.26启动镜像的时候 已经是把docker容器内部的3306端口 映射到本机了 直接通过navicat连上 进入mysql容器内部 docker exec -it 容器id /bin/bash, 启动 mysql. docker start d…