初探Reforcement Learning强化学习【QLearning/Sarsa/DQN】

文章目录

      • 一、Q-learning
        • 现实理解:
        • 举例:
        • 回顾:
      • 二、Sarsa
        • 和Q-learning的区别
      • 三、Deep Q-Network
        • Deep Q-Network是如何工作的?
          • 前处理:
          • Convolution Networks
          • Experience Replay

一、Q-learning

是RL中model-free、value-based算法,Q即为Q(s,a)就是在某一时刻s (s∈S)状态下采取动作a (a∈A) 能够获得收益的期望,环境根据Agent的动作反馈相应的回报reward。将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。

Q-Tablea1a2
s1q(s1,a1)q(s1,a2)
s2q(s2,a1)q(s2,a2)
s3q(s3,a1)q(s3,a2)

也就是马尔科夫决策过程:每个格子都是一个状态 s t s_t st, π ( a ∣ s ) \pi(a|s) π(as)在s状态下选择动作a的策略。 P ( s ’ ∣ s , a ) P(s’|s,a) P(s’∣s,a) ,也可以写做 P s s ′ a P^a_{ss'} Pssa为s状态下选择动作a转换到下一状态 s ′ s' s的概率。 R ( s ’ ∣ s , a ) R(s’|s,a) R(s’∣s,a)表示这一Action转移的奖励。

在这里插入图片描述

我们的目标是最大累计奖励的策略期望:

m a x π E [ ∑ t = 0 H γ t R ( S t , A t , S t + 1 ) ∣ π ] max_π E [ ∑ _{t = 0} ^H γ^ t R ( S_t , A_t , S_t + 1 )∣π] maxπE[t=0HγtR(St,At,St+1)π]

使用了时间差分法TD能够离线学习,使用bellman方程对马尔科夫过程求最优解。

在我们探索环境(environment)之前,Q-table 会给出相同的任意的设定值(大多数情况下是 0)。随着对环境的持续探索,这个 Q-table 会通过迭代地使用Bellman方程(动态规划方程)更新 Q(s,a) 来给出越来越好的近似。

在这里插入图片描述

算法是基于贪婪的策略进行选择:

在这里插入图片描述

S t e p 4 Step 4 Step4中选择动作a并且执行动作并返回一个新的状态 s ’ s’ s和奖励r,使用Bellman方程更新 Q ( s , a ) Q(s,a) Q(s,a):

在这里插入图片描述

新 Q ( s , a ) = 老 Q ( s , a ) + α ∗ ( 现实 − 估计 ) 新Q(s,a)=老Q(s,a)+\alpha*(现实-估计) Q(s,a)=Q(s,a)+α(现实估计)

现实理解:

在状态s采取行动a到达 s ′ s' s,但是我们用于决策的Q表并没有实际采取任何行为,所以我们只能使用期望值进行下一个状态 s ′ s' s各个动作的潜在奖励评估:

  • Q-Learning的做法是看看那种行为的Q值大,把最大的 Q ( s ′ , a ′ ) Q(s', a') Q(s,a) 乘上一个衰减值 γ \gamma γ (比如是0.9) 并加上到达 s ′ s' s时所获取的奖励 R(真真实实存在的)
  • 这个值更新为现实中的新Q值
举例:
  • 一块奶酪 = +1
  • 两块奶酪 = +2
  • 一大堆奶酪 = +10(训练结束)
  • 吃到了鼠药 = -10(训练结束)

img

S t e p 1 Step 1 Step1 初始化Q表都是0(所有状态下的所有动作)

S t e p 2 Step2 Step2 重复 S t e p 3 − 5 Step3-5 Step35

S t e p 3 Step 3 Step3 选择一个动作:向右走(随机)

img

S t e p 4 Step 4 Step4 更新Q函数

在这里插入图片描述

  • 首先,我们计算 Q 值的改变量 ΔQ(start, right)。
  • 接着我们将初始的 Q 值与 ΔQ(start, right) 和学习率的积相加。
回顾:
  • Function Q(state, action) → returns expected future reward of that action at that state.
  • Before we explore the environment: Q table gives the same arbitrary fixed value → but as we explore the environment → Q gives us a better and better approximation.

二、Sarsa

State-Action-Reward-State-Action,清楚反应了学习更新函数依赖的5个值,分别是当前状态S1,当前状态选中的动作A1,获得的奖励Reward,S1状态下执行A1后取得的状态S2及S2状态下将会执行的动作A2

img

和Q-learning的区别
  • Q_learing下一步q表最大值 γ ∗ m a x a ′ Q ( s ′ , a ′ ) + r γ*max_{a'}Q(s^′,a')+r γmaxaQ(s,a)+r
  • Sarsa:具体的某一步估计q值 γ ∗ Q ( s ′ , a ′ ) + r γ*Q(s^′,a^′)+r γQ(s,a)+r

img

Q-learning更激进,当前的Q值和以后的Q都有关系,越近影响越大

  • Q_learning:取max,也就是不考虑最终走到很大负奖励的值,只考虑会不会最终获得最大奖励,如果获得了,那这条路就牛逼,所以么Q-learning更勇猛,不害怕错,更激进
  • Sarsa :是取某具体的一步,只要周围有错(很大的负奖励),那么就有机会获得这个不好的奖励,那么整条路反馈都会评分很差。之后会尽量避开。那么最终导致Sarsa会对犯错更敏感,会远离犯错的点,更保守

三、Deep Q-Network

成千上万的状态和动作,Q-Table显然不现实。使用Q-Network网络将在给定状态的情况下近似每个动作的不同 Q 值。

Image

Deep Q-Network是如何工作的?

Image

  • input: 一组 4 帧
  • 为给定状态下每个可能的动作输出一个 Q 值向量
  • output:取这个向量中最大的 Q 值来找到我们的最佳行动
前处理:

Image

  1. 对每个状态进行灰度化,降低state复杂度
  2. 裁剪帧
  3. 减小帧的大小,将四个帧堆叠在一起。堆叠?因为它可以帮助我们处理时间限制问题,产生运动的概念
Convolution Networks

使用一个具有 ELU 激活函数的全连接层和一个输出层(具有线性激活函数的全连接层),为每个动作生成 Q 值估计。

Experience Replay

problem1:

  • 权重的可变性,因为动作和状态之间存在高度相关性。
  • 将与环境交互的顺序样本提供给我们的神经网络。它往往会忘记以前的体验,因为它会被新的体验覆盖。

solution:

  • create a “replay buffer.” This stores experience tuples while interacting with the environment, and then we sample a small batch of tuple to feed our neural network.
  • 重播缓冲区视为一个文件夹,其中每个工作表都是一个体验元组。您可以通过与环境交互来喂养它。然后你随机获取一些工作表来馈送神经网络

Image

problem2:

  • 每个 action 都会影响下一个 state。这将输出一系列可以高度相关的体验元组。按顺序训练网络,我们的Agent可能会受到这种相关性的影响。

从 replay buffer中随机采样,我们可以打破这种相关性。这可以防止作值发生振荡或发散。

solution:

  • 停止学习,同时与环境互动。我们应该尝试不同的东西,随机玩一点来探索状态空间。我们可以将这些体验保存在replay buffer中
  • 回忆这些经历并从中学习。之后,返回 Play with updated value function。

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

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

相关文章

WebRTC技术EasyRTC嵌入式音视频通信SDK打造远程实时视频通话监控巡检解决方案

一、方案概述​ 在现代工业生产、基础设施维护等领域,远程监控与巡检工作至关重要。传统的监控与巡检方式存在效率低、成本高、实时性差等问题。EasyRTC作为一种先进的实时音视频通信技术,具备低延迟、高稳定性、跨平台等特性,能够有效解决这…

专题四:综合练习(括号组合算法深度解析)

以leetcode22题为例 题目分析: 给一个数字n,返回合法的所有的括号组合 算法原理分析: 你可以先考虑如何不重不漏的罗列所有的括号组合 清楚什么是有效的括号组合??? 1.所有的左括号的数量等于右括号的…

星云智控自定义物联网实时监控模板-为何成为痛点?物联网设备的多样化-优雅草卓伊凡

星云智控自定义物联网实时监控模板-为何成为痛点?物联网设备的多样化-优雅草卓伊凡 引言:物联网监控的模板革命 在万物互联的时代,设备监控已成为保障物联网系统稳定运行的核心环节。传统的标准化监控方案正面临着设备类型爆炸式增长带来的…

5.27本日总结

一、英语 复习list2list29 二、数学 学习14讲部分内容 三、408 学习计组1.2内容 四、总结 高数和计网明天结束当前章节,计网内容学完之后主要学习计组和操作系统 五、明日计划 英语:复习lsit3list28,完成07年第二篇阅读 数学&#…

几种运放典型应用电路

运算放大器简称:OP、OPA、OPAMP、运放。 一、电压跟随器 电压跟随器顾名思义运放的输入端电压与运放的输出电压相等 这个电路一般应用目的是增加电压驱动能力: 比如说有个3V电源,借一个负载,随着负载电流变大,3V就会变小说明3V电源带负载能力小,驱动能力弱,这个时候…

Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析

1. 引言 在 Android 系统中,ActivityManagerService (AMS)、WindowManagerService (WMS) 和 PackageManagerService (PMS) 是三个最核心的系统服务,它们分别管理着应用的生命周期、窗口显示和应用包管理。 但你是否知道,这些服务并不是独立…

从另一个视角理解TCP握手、挥手与可靠传输

本文将深入探讨 TCP 协议中三次握手、四次挥手的原理,以及其保证可靠传输的机制。 一、三次握手:为何是三次,而非两次? 建立 TCP 连接的过程犹如一场严谨的 “对话”,需要经过三次握手才能确保通信双方的可靠连接。 三…

将Docker compose 部署的夜莺V6版本升到V7版本的详细步骤、常见问题解答及相关镜像下载地址

环境说明 夜莺官网:首页 - 快猫星云Flashcat 夜莺安装程序下载地址:快猫星云下载中心 夜莺v7.7.2镜像(X86架构): https://download.csdn.net/download/jjk_02027/90851161 夜莺ibex v1.2.0镜像(X86架构…

JavaScript【4】数组和其他内置对象(API)

1.数组: 1.概述: js中数组可理解为一个存储数据的容器,但与java中的数组不太一样;js中的数组更像java中的集合,因为此集合在创建的时候,不需要定义数组长度,它可以实现动态扩容;js中的数组存储元素时,可以存储任意类型的元素,而java中的数组一旦创建后,就只能存储定义类型的元…

永久免费!专为 Apache Doris 打造的可视化数据管理工具 SelectDB Studio V1.1.0 重磅发布!

作为全球领先的开源实时数据仓库, Apache Doris Github Stars 已超过 13.6k,并在 5000 余家中大型企业生产环境得到广泛应用,支撑业务核心场景,成为众多企业数据分析基础设施不可或缺的重要基座。过去,Apache Doris 用…

数字万用表与指针万用表使用方法及注意事项

在电子测量领域,万用表是极为常用的工具,数字万用表和指针万用表各具特点。熟练掌握它们的使用方法与注意事项,能确保测量的准确性与安全性。下面为您详细介绍: 一 、数字万用表按钮功能 > 进入及退出手动量程模式 每 按 […

深度学习Dropout实现

深度学习中的 Dropout 技术在代码层面上的实现通常非常直接。其核心思想是在训练过程中,对于网络中的每个神经元(或者更精确地说,是每个神经元的输出),以一定的概率 p 随机将其输出置为 0。在反向传播时,这…

AtCoder AT_abc406_c [ABC406C] ~

前言 除了 A 题,唯一一道一遍过的题。 题目大意 我们定义满足以下所有条件的一个长度为 N N N 的序列 A ( A 1 , A 2 , … , A N ) A(A_1,A_2,\dots,A_N) A(A1​,A2​,…,AN​) 为波浪序列: N ≥ 4 N\ge4 N≥4(其实满足后面就必须满足这…

Java Web 应用安全响应头配置全解析:从单体到微服务网关的实践

背景:为什么安全响应头至关重要? 在 Web 安全领域,响应头(Response Headers)是防御 XSS、点击劫持、跨域数据泄露等攻击的第一道防线。通过合理配置响应头,可强制浏览器遵循安全策略,限制恶意行…

如何停止终端呢?ctrl+c不管用,其他有什么方法呢?

如果你在终端中运行了一个程序(比如 Python GUI tkinter 应用),按下 Ctrl C 没有作用,一般是因为该程序: 运行了主事件循环(例如 tkinter.mainloop()) 或 在子线程中运行,而 Ctrl …

深入解析 React 的 useEffect:从入门到实战

文章目录 前言一、为什么需要 useEffect?核心作用: 二、useEffect 的基础用法1. 基本语法2. 依赖项数组的作用 三、依赖项数组演示1. 空数组 []:2.无依赖项(空)3.有依赖项 四、清理副作用函数实战案例演示1. 清除定时器…

Ubuntu 更改 Nginx 版本

将 1.25 降为 1.18 先卸载干净 # 1. 完全卸载当前Nginx sudo apt purge nginx nginx-common nginx-core# 2. 清理残留配置 sudo apt autoremove sudo rm -rf /etc/apt/sources.list.d/nginx*.list修改仓库地址 # 添加仓库(通用稳定版仓库) codename$(…

如何在 Windows 10 或 11 中安装 PowerShellGet 模块?

PowerShell 是微软在其 Windows 操作系统上提供的强大脚本语言,可用于通过命令行界面自动化各种任务,适用于 Windows 桌面或服务器环境。而 PowerShellGet 是 PowerShell 中的一个模块,提供了用于从各种来源发现、安装、更新和发布模块的 cmdlet。 本文将介绍如何在 PowerS…

NBA足球赛事直播源码体育直播M33模板赛事源码

源码名称:体育直播赛事扁平自适应M33直播模板源码 开发环境:帝国cms7.5 空间支持:phpmysql 带软件采集,可以挂着自动采集发布,无需人工操作! 演示地址:NBA足球赛事直播源码体育直播M33模板赛事…

【Python】魔法方法是真的魔法! (第二期)

还不清楚魔术方法? 可以看看本系列开篇:【Python】小子!是魔术方法!-CSDN博客 【Python】魔法方法是真的魔法! (第一期)-CSDN博客 在 Python 中,如何自定义数据结构的比较逻辑&…