【强化学习】07——规划与学习(Dyna-Q)

news2024/10/2 14:32:22

文章目录

  • 前置知识回顾
    • 策略值函数估计(Policy Evaluation)
    • 策略提升(Policy Improvement)
  • 模型(Model)
  • 规划(Planning)
  • 规划与学习(Planning and Learning)
  • Dyna (集成规划、决策和学习)
    • Dyna的框架
    • Dyna伪代码
    • Example1:Dyna Maze
    • Example2:Blocking Maze
    • Example3:Shortcut Maze
    • 代码
    • 结果
  • 参考

前置知识回顾

详见http://t.csdnimg.cn/NHFGE

策略值函数估计(Policy Evaluation)

给定环境MDP和策略𝜋,策略值函数估计如下
V π ( s ) = E [ R ( s 0 , a 0 ) + γ R ( s 1 , a 1 ) + γ 2 R ( s 2 , a 2 ) + ⋯ ∣ s 0 = s , π ] = E a ∼ π ( s ) [ R ( s , a ) + γ ∑ s ′ ∈ S P s π ( s ) ( s ′ ) V π ( s ′ ) ] = E a ∼ π ( s ) [ Q π ( s , a ) ] Q π ( s , a ) = E [ R ( s 0 , a 0 ) + γ R ( s 1 , a 1 ) + γ 2 R ( s 2 , a 2 ) + ⋯ ∣ s 0 = s , a 0 = a , π ] = R ( s , a ) + γ ∑ s ′ ∈ S P s π ( s ) ( s ′ ) V π ( s ′ ) \begin{aligned} V^{\pi}(s)& =\mathbb{E}[R(s_{0},a_{0})+\gamma R(s_{1},a_{1})+\gamma^{2}R(s_{2},a_{2})+\cdots|s_{0}=s,\pi] \\ &=\mathbb{E}_{a\sim\pi(s)}\left[R(s,a)+\gamma\sum_{s^{\prime}\in S}P_{s\pi(s)}(s^{\prime})V^{\pi}(s^{\prime})\right] \\ &=\mathbb{E}_{a\sim\pi(s)}[Q^{\pi}(s,a)] \\ Q^{\pi}(s,a)& =\mathbb{E}[R(s_{0},a_{0})+\gamma R(s_{1},a_{1})+\gamma^{2}R(s_{2},a_{2})+\cdots|s_{0}=s,a_{0}=a,\pi] \\ &=R(s,a)+\gamma\sum_{s^{\prime}\in S}P_{s\pi(s)}(s^{\prime})V^{\pi}(s^{\prime}) \end{aligned} Vπ(s)Qπ(s,a)=E[R(s0,a0)+γR(s1,a1)+γ2R(s2,a2)+s0=s,π]=Eaπ(s)[R(s,a)+γsSPsπ(s)(s)Vπ(s)]=Eaπ(s)[Qπ(s,a)]=E[R(s0,a0)+γR(s1,a1)+γ2R(s2,a2)+s0=s,a0=a,π]=R(s,a)+γsSPsπ(s)(s)Vπ(s)

策略提升(Policy Improvement)

  • 对于两个策略𝜋,𝜋′,如果满足如下性质,𝜋′是𝜋的策略提升:
  • 对于任何状态𝑠,有 Q π ( s , π ′ ( s ) ) ≥ V π ( s ) Q^{\pi}(s,\pi^{\prime}(s))\geq V^{\pi}(s) Qπ(s,π(s))Vπ(s)
  • 进而, 𝜋和𝜋′满足:对任何状态𝑠,有 V π ′ ( s ) ≥ V π ( s ) V^{\pi^{\prime}}(s)\geq V^{\pi}(s) Vπ(s)Vπ(s)
  • 也即是 𝜋′的策略价值(期望回报)超过𝜋, 𝜋′比𝜋更加优秀。
    证明:
    v π ( s ) ≤ q π ( s , π ′ ( s ) ) = E [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s , A t = π ′ ( s ) ] = E π ′ [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s ] ≤ E π ′ [ R t + 1 + γ q π ( S t + 1 , π ′ ( S t + 1 ) ) ∣ S t = s ] = E π ′ [ R t + 1 + γ E [ R t + 2 + γ v π ( S t + 2 ) ∣ S t + 1 , A t + 1 = π ′ ( S t + 1 ) ] ∣ S t = s ] = E π ′ [ R t + 1 + γ R t + 2 + γ 2 v π ( S t + 2 ) S t = s ] ≤ E π ′ [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 v π ( S t + 3 ) ∣ S t = s ] ⋮ ≤ E π ′ [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 R t + 4 + ⋯ ∣ S t = s ] = v π ′ ( s ) . \begin{aligned} v_{\pi}(s)& \leq q_{\pi}(s,\pi'(s)) \\ &=\mathbb{E}[R_{t+1}+\gamma v_{\pi}(S_{t+1})\mid S_{t}=s,A_{t}=\pi'(s)] \\ &=\mathbb{E}_{\pi'}[R_{t+1}+\gamma v_{\pi}(S_{t+1})|S_{t}=s] \\ &\leq\mathbb{E}_{\pi'}[R_{t+1}+\gamma q_{\pi}(S_{t+1},\pi'(S_{t+1}))|S_{t}=s] \\ &=\mathbb{E}_{\pi'}[R_{t+1}+\gamma\mathbb{E}[R_{t+2}+\gamma v_{\pi}(S_{t+2})|S_{t+1},A_{t+1}=\pi'(S_{t+1})]\mid S_{t}=s] \\ &=\mathbb{E}_{\pi'}\big[\begin{matrix}R_{t+1}+\gamma R_{t+2}+\gamma^{2}v_{\pi}(S_{t+2})&S_{t}=s\big]\end{matrix} \\ &\le\mathbb{E}_{\pi'}\big[R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\gamma^3v_\pi(S_{t+3})\big|S_t=s\big] \\ &\vdots\\ &\leq\mathbb{E}_{\pi'}\big[R_{t+1}+\gamma R_{t+2}+\gamma^{2}R_{t+3}+\gamma^{3}R_{t+4}+\cdots\big|S_{t}=s\big] \\ &=v_{\pi^{\prime}}(s). \end{aligned} vπ(s)qπ(s,π(s))=E[Rt+1+γvπ(St+1)St=s,At=π(s)]=Eπ[Rt+1+γvπ(St+1)St=s]Eπ[Rt+1+γqπ(St+1,π(St+1))St=s]=Eπ[Rt+1+γE[Rt+2+γvπ(St+2)St+1,At+1=π(St+1)]St=s]=Eπ[Rt+1+γRt+2+γ2vπ(St+2)St=s]Eπ[Rt+1+γRt+2+γ2Rt+3+γ3vπ(St+3) St=s]Eπ[Rt+1+γRt+2+γ2Rt+3+γ3Rt+4+ St=s]=vπ(s).

模型(Model)

在强化学习中,无特殊说明的话,模型通常指的是环境模型,而非智能体模型。
定义:给定一个状态和动作,模型能够预测下一个状态和奖励的分布: 即 P ( s ′ , r ∣ s , a ) \mathcal P(s',r|s,a) P(s,rs,a)
模型的分类

  • 分布模型(distribution model)
    • 描述了轨迹的所有可能性及其概率
    • 相当于白盒模型
  • 样本模型(sample model)
    • 根据概率进行采样,只产生一条可能的轨迹
    • 相当于黑盒模型

模型的作用

  • 得到模拟的经验数据(simulated experiences)
    在这里插入图片描述

规划(Planning)

定义:输入一个模型,输出一个策略的搜索过程
规划的分类

  • 状态空间的规划 (state-space planning)
    • 状态空间搜索最佳策略
  • 规划空间的规划 (plan-space planning)
    • 在规划空间搜索最佳策略,包括遗传算法和偏序规划
    • 这时,一个规划就是一个动作集合以及动作顺序的约束
    • 这时的状态就是一个规划,目标状态就是能完成任务的规划

规划的通用框架

  • 通过模型采样得到模拟数据
  • 利用模拟数据更新值函数从而改进策略
    在这里插入图片描述
    规划的好处
  • 任何时间点可以被打断或者重定向
  • 在复杂问题下,进行小而且增量式的时间步规划是很有效的

规划与学习(Planning and Learning)

  • 不同点
    • 规划:利用模型产生的模拟经验
    • 学习:利用环境产生的真实经验
  • 相同点
    • 通过回溯(back-up)更新值函数的估计
    • 统一来看,学习的方法可以用在模拟经验上

在这里插入图片描述
注意:Q-learning用的是真实环境产生的经验数据,而Q-planning则是利用模型产生的模拟经验。

Dyna (集成规划、决策和学习)

在这里插入图片描述

通过于环境交互产生的经验可以有以下两种途径:

  • 用于更新模型
    • 模型学习, 或间接强化学习
    • 对经验数据的需求少
  • 用于直接更新值函数和策略
    • 直接强化学习(无模型强化学习)
    • 简单且不受模型偏差的影响

Dyna的框架

在这里插入图片描述

  • 和环境交互产生真实经验
  • 左边代表直接强化学习
    • 更新值函数和策略
  • 右下角落边代表学习模型
    使用真实经验更新模型
  • 右边代表基于模型的规划
    • 基于模型随机采样得到模拟经验
    只从以前得到的状态动作对随机采样
    • 使用模拟经验做规划更新值函数和策略

Dyna伪代码

在这里插入图片描述

Example1:Dyna Maze

在这里插入图片描述
环境
• 4个动作(上下左右)
• 碰到障碍物和边界静止
• 到达目标(𝐺),得到奖励+1
• 折扣因子 0.95
结果
• 横轴代表游戏轮数
• 纵轴代表到达 𝐺 花的时间步长
• 不同曲线代表采用不同的规划步长
规划步长越长,表现收敛越快

那么为什么Dyna算法会更快呢?
在这里插入图片描述
通过更多的sample,可以使得策略更优,更容易靠近终点。

模型不准?
原因:

  • 环境是随机的,并且只观察到了有限的样本
  • 模型使用了泛化性不好的函数估计
  • 环境改变了,并且还没有被算法检测到

Example2:Blocking Maze

在这里插入图片描述
Dyna-Q+

  • 奖励更改为 r + κ τ r+\kappa\sqrt{\tau} r+κτ
    • r r r原来的奖励
    • κ \kappa κ小的权重参数
    • τ \tau τ某个状态多久未到达过了

Example3:Shortcut Maze

在这里插入图片描述
Dyna-Q+能够发现捷径(鼓励探索)

代码

class DynaQ():
    def __init__(self, env, gamma, alpha, epsilon, numOfEpisodes, numOfTrainQLearning, numOfActions=4):
        self.env = env
        self.gamma = gamma
        self.alpha = alpha
        self.epsilon = epsilon
        self.numOfEpisodes = numOfEpisodes
        self.numOfActions = numOfActions
        # 初始化Q(s, a)表
        self.Q_table = np.zeros([self.env.nrows * self.env.ncols, numOfActions])
        # 初始化模型
        self.Model = dict()
        # Q-learning 训练次数
        self.numOfTrainQLearning = numOfTrainQLearning

    # Choose A from S using policy derived from Q (e.g., epsilon-greedy)
    def ChooseAction(self, state):
        if np.random.random() < self.epsilon:
            action = np.random.randint(self.numOfActions)
        else:
            action = np.argmax(self.Q_table[state])
        return action

    def DynaQRun(self):
        # 记录每一条序列的回报
        returnList = []
        # 显示10个进度条
        for i in range(10):
            # tqdm的进度条功能
            with tqdm(total=int(self.numOfEpisodes / 10), desc='Iteration %d' % i) as pbar:
                # 每个进度条的序列数
                for episode in range(int(self.numOfEpisodes / 10)):
                    # initialize state
                    state = self.env.Reset()
                    done = False
                    episodeReward = 0
                    # Loop for each step of episode:
                    while not done:
                        # Choose A from S using policy derived from Q (e.g., epsilon-greedy)
                        action = self.ChooseAction(state)
                        # Take action A, observe R, S'
                        stateprime, reward, done = self.env.Step(action)
                        episodeReward += reward
                        # Update
                        TD_error = reward + self.gamma * self.Q_table[stateprime].max() \
                                 - self.Q_table[state, action]
                        self.Q_table[state,action] += self.alpha * TD_error
                        # 将数据添加到模型中
                        self.Model[(state, action)] = stateprime, reward
                        # Q-planning循环
                        for i in range(self.numOfTrainQLearning):
                            # 随机选择曾经遇到过的状态动作对
                            (s, a), (s_next, r) = random.choice(list(self.Model.items()))
                            # Q-plannnig
                            TD_error = r + self.gamma * self.Q_table[s_next].max() \
                                       - self.Q_table[s, a]
                            self.Q_table[s, a] += self.alpha * TD_error
                        state = stateprime
                    returnList.append(episodeReward)
                    if (episode + 1) % 10 == 0:  # 每10条序列打印一下这10条序列的平均回报
                        pbar.set_postfix({
                            'episode':
                                '%d' % (self.numOfEpisodes / 10 * i + episode + 1),
                            'return':
                                '%.3f' % np.mean(returnList[-10:])
                        })
                    pbar.update(1)
        return returnList

结果

Q-planning训练次数为0
在这里插入图片描述
可以看到,当Dyna-Q的Q-planning训练次数为0时,Dyna-Q就退化成了Q-learning。

十次训练平均:

在这里插入图片描述

随着 Q-planning 步数的增多,Dyna-Q 算法的收敛速度也随之变快。当然,并不是在所有的环境中,都是 Q-planning 步数越大则算法收敛越快,这取决于环境是否是确定性的,以及环境模型的精度。在上述悬崖漫步环境中,状态的转移是完全确定性的,构建的环境模型的精度是最高的,所以可以通过增加 Q-planning 步数来直接降低算法的样本复杂度。

参考

[1] 伯禹AI
[2] https://www.deepmind.com/learning-resources/introduction-to-reinforcement-learning-with-david-silver
[3] 动手学强化学习
[4] Reinforcement Learning

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

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

相关文章

企业使用微信管理系统更安全更高效更智能

. 想快速处理纠纷&#xff0c;不知道员工和客户孰对孰错&#xff1f; 想提高客户满意度&#xff0c;不清楚客服沟通全过程&#xff1f; 想维护公司利益&#xff0c;不了解销售聊了哪些事&#xff1f; 想知道客户流失原因&#xff0c;不确定沟通话术是否专业&#xff1f; …

第56篇-某度旋转验证码v1分析-旋转验证码【2023-10-24】

声明&#xff1a;该专栏涉及的所有案例均为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;如有侵权&#xff0c;请私信联系本人删帖&#xff01; 一、网站分析 网址&#xff1a; aHR0cHM6Ly93YXBwYXNzLmJhaWR1Lm…

栈和队列相关的OJ题

1.栈的压入、弹出序列 题目链接 栈的压入、弹出序列_牛客题霸_牛客网 (nowcoder.com) 题目描述 题目给出两个序列&#xff0c;一个是入序列pushV&#xff0c;一个是出序列popV&#xff0c;要求判断是否匹配入栈出栈的规则顺序。 解题思路 可以用数据模拟入栈出栈&#xf…

基于樽海鞘群算法的无人机航迹规划-附代码

基于樽海鞘群算法的无人机航迹规划 文章目录 基于樽海鞘群算法的无人机航迹规划1.樽海鞘群搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用樽海鞘群算法来优化无人机航迹规划。 …

一文讲清楚检索增强生成(RAG)

文章目录 什么是检索增强生成&#xff1f;逆向工作&#xff1a;为大语言模型提供额外的知识来回答问题通过系统提示给出LLM自定义指令为LLM提供特定的知识来源将所有内容放在一起并提出问题检索步骤&#xff1a;从您的知识库中获取正确的信息什么是嵌入&#xff1f;它们与知识检…

【第四天]C++高级类和对象:运算符重载、string类和智能指针的深度解析

一、运算符重载 运算符重载 是对已有的运算符 指定新功能&#xff0c;不能创建新运算符。 运算符重载关键字operator 语法&#xff1a;operator &#xff08;表示被重载的运算符&#xff09; 思路&#xff1a; 1、弄懂 函数的参数中参数个数取决于运算符是一元还是二元…

如何高效地给视频批量添加logo水印?

如果你想给大量的视频添加图片水印&#xff0c;那么固乔剪辑助手软件是一个非常不错的选择。通过这个软件&#xff0c;你可以轻松地批量添加图片水印&#xff0c;提高视频的质量和识别度。以下是如何使用固乔剪辑助手软件给视频批量添加图片水印的步骤&#xff1a; 步骤1&#…

Qt+树莓派4B 窗口半透明效果实现

文章目录 前言一、窗口半透明&#xff0c;窗口部件不透明1、构造函数中的设置2、paintEvent3、效果4、树莓派4B配置5、最终效果 前言 在树莓派4B下&#xff0c;使用Qt开发窗口半透明而窗口部件不透明效果时,发现窗口没能正常实现半透明效果,而是显示纯黑色背景。同样的代码在wi…

PLC 学习day03 PLC软件安装 PLC软件的介绍和对应的知识

1.资料来源 链接&#xff1a;7.PLC编程学习入门视频教程全集-三菱GX-Works2编程软件安装_哔哩哔哩_bilibili 链接&#xff1a;8.三菱plc视频教程全集之编程语言及软元件介绍_哔哩哔哩_bilibili 2. PLC软件的安装 三菱的PLC软件安装视屏的链接&#xff1a; 7.PLC编程学习入门视频…

Gymnasium的基本用法

目录 1.初始化环境 2.与环境交互 3.动作和观测空间 4.修改环境 Gymnasium是一个为所有单智能体强化学习环境提供API的项目&#xff0c;包括常见环境的实现:cartpole、pendulum、mountain-car、mujoco、atari等。 该API包含四个关键功能:make、reset、step和render&#xf…

对称加密操作

#常用密码技术 ##1 密码 1.1 发送者、接收者和窃听者 请想象一个Alice向Bob发送电子邮件的场景。在这个场景中&#xff0c;发出邮件的Alice称为 发送者&#xff08;sender&#xff09;&#xff0c;而收到邮件的Bob则称为 接收者&#xff08;receiver&#xff09;。 在讲解发送…

公司只有功能测试,如何进一步提升自己?

一定要帮助想上进却又迷茫的人。 最近也听到一些做功能测试的同学的交流&#xff0c;天天做手工测试&#xff0c;想提升一下自己又不知道如何提升&#xff1f;其实还是在于这些同学对自己没有一个清晰的定位&#xff0c;没有明确的目标。做为功能测试人员来讲&#xff0c;从发…

【OpenVINO】基于 OpenVINO Python API 部署 RT-DETR 模型

基于 OpenVINO Python API 部署 RT-DETR 模型 1. RT-DETR2. OpenVINO3. 环境配置3.1 模型下载环境3.2 模型部署环境 4. 模型下载与转换4.1 PaddlePaddle模型下载4.2 IR模型转换 5. Python代码实现5.1 模型推理流程实现 6. 预测结果展示7. 总结 RT-DETR是在DETR模型基础上进行改…

JS中面向对象的程序设计

面向对象&#xff08;Object-Oriented&#xff0c;OO&#xff09;的语言有一个标志&#xff0c;那就是它们都有类的概念&#xff0c;而通过类可以创建任意多个具有相同属性和方法的对象。但在ECMAScript 中没有类的概念&#xff0c;因此它的对象也与基于类的语言中的对象有所不…

异常数据检测 | Python基于奇异谱分析时间序列插补预测

文章概述 在时间序列分析中,「奇异谱分析」(「SSA」)是一种非参数谱估计方法。它结合了经典时间序列分析、多元统计、多元几何、动力系统和信号处理的元素。 “奇异谱分析”这个名称涉及协方差矩阵的奇异值分解中的特征值谱,而不是直接涉及频域分解。 SSA 可以帮助分解时…

基于多元宇宙算法的无人机航迹规划-附代码

基于多元宇宙算法的无人机航迹规划 文章目录 基于多元宇宙算法的无人机航迹规划1.多元宇宙搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用多元宇宙算法来优化无人机航迹规划。 …

宝诗单证使用手册,并使用抽象和反射做通用抽象类,节省开发成本

单证示例 1024最适合写blog了&#xff0c;别说了&#xff0c;别说了&#xff0c;建议变成法定节假日。 宝诗单证的官网&#xff1a;宝诗官网 (宝诗团队记得给我打广告费) 宝诗单证的使用步骤 使用 抽象类 将获取字段的步骤抽象出来&#xff0c;极大的省略了代码量。节省开发…

苏州德创机器视觉工程师工作怎么样?

每一家公司都有自身特点&#xff0c;同时也每一家都有自身的bug。 苏州德创作为美国康耐视Cognex产品在华东最大的代理商&#xff0c;也是康耐视外包团队。那么苏州德创有哪些业务构成&#xff0c;业务的构成也是其招聘的主要人员的方向。 设备视觉供应商&#xff0c;如卓越&…

【Linux进阶之路】进程(中)—— 进程地址空间

文章目录 一、 进程地址空间1.概念引入2.基本概念3.深入概念3.1 初识信息交互3.2 区域划分3.3 进程地址空间3.4 再识页表缺页中断进程挂起 总结 一、 进程地址空间 1.概念引入 指针指向的地址是内存中的地址吗&#xff1f;下面我们用一个实验来证明一下。 先来写程序看一下程…

2010-2021年北大中国商业银行数字化转型指数数据(第三期)

2010-2021年北大中国商业银行数字化转型指数数据&#xff08;第三期&#xff09; 1、时间&#xff1a;2010-2021年 2、指标&#xff1a;银行名称、银行类型、年份、战略数字化、业务数字化、管理数字化、数字化总指数 3、来源&#xff1a;北大数字金融研究中心 4、数据说明…