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

2023-10-24 21:28
文章标签 规划 学习 dyna 强化 07

本文主要是介绍【强化学习】07——规划与学习(Dyna-Q),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前置知识回顾
    • 策略值函数估计(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 = envself.gamma = gammaself.alpha = alphaself.epsilon = epsilonself.numOfEpisodes = numOfEpisodesself.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 actiondef 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 statestate = self.env.Reset()done = FalseepisodeReward = 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# UpdateTD_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-plannnigTD_error = r + self.gamma * self.Q_table[s_next].max() \- self.Q_table[s, a]self.Q_table[s, a] += self.alpha * TD_errorstate = stateprimereturnList.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

这篇关于【强化学习】07——规划与学习(Dyna-Q)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/277861

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识