当前位置: 首页 > article >正文

强化学习(赵世钰版)-学习笔记(8.值函数方法)

本章是算法与方法的第四章,是TD算法的拓展,本质上是将状态值与行为值的表征方式,从离散的表格形式,拓展到了连续的函数形式。
表格形式的优点是直观,便于分析,缺点是数据量较大或者连续性状态或者行为空间时,不能很好的处理(受限于存储和泛化能力)。
而函数形式的优点很明显,比如有10000个点,表格形式需要存储10000个数据,而用函数形式,仅需保存几个参数值,存储压力较小,且有泛化能力(可以生成新的样本点)。下面是一个例子,w是参数向量(parameter vector),因为是线性函数,所以向量维度为2(仅需保存这两个数),φ叫做特征向量(feature vector,专门的叫法)。
需要对应状态值,我们仅需将状态传入函数,即可获得结果,而不是用查表格的形式。
更新状态值的方式也不同,函数法是更新函数的参数向量,这个简介提升了泛化能力,因为为了修改当前值,也会间接影响相邻节点的情况。
但是函数法的缺点是,无法表征的那么精确(本质上是个拟合问题,不一定能找到真实的曲线),所以叫函数近似法。可以提升函数的阶数,从而增加函数的拟合能力。这个高阶曲线,如果将w看做自变量,那么本质上还是线性函数。
后面对值函数方法进行了一个总结,值函数的目的是用一个参数化的方程对状态值与行为值进行一个估计。优点是存储压力小,泛化能力强,难点是如何找到这个函数。
我们在这里用两个函数分别代表真实的状态值和估计出来的状态值,那么问题就变成了一个优化问题,找寻一个最优参数w,使得两者之间的意义是最小的,这样估计值就能尽可能的近似真实值。
这里定义了对应的目标函数,转换成了对目标函数求最小值,并找寻出对应的参数w。
那么这个随机变量S的分布是什么呢?第一种情况就是假设S服从均匀分布,这种方法就是简单,但缺点是真实的状态S不是服从均匀分布,因为各状态之间的重要性是不同的。
第二种情况是假设S服从一个稳定分布,这个稳定分布是马尔科夫过程无限执行下去后,整个系统自动收敛于一个固定的状态概率分布。
后面对稳定分布进一步进行了介绍,本质上还是Markov Process 的内容,无限执行下去,各状态之间的跳转概率就会稳定下来。
从线性代数的角度上看,就是计算这个状态转移矩阵的特征向量(特征值为1)
定义完成目标函数(估计值与真实值差异平方的期望)后,下一步就是对这个目标函数进行优化,用到的方法就是梯度下降法。这里的梯度求导,涉及到了这个期望的计算。
进一步,我们用随机梯度下降代替真实的梯度,从而简化计算。但是,目前仍有一些问题:随机梯度下降的样本采样, 也应满足稳定分布,但是这个采样是随机的。真实的状态值是未知的,也无法直接计算,只能用一个近似来使算法继续执行。
这个真实状态值的近似方法有两个,蒙特卡罗方法和时序差分方法(跟前面几章的内容对上了)
课程中主要介绍了基于时序差分的估计方法,缺点是仅能对状态值进行估计(还有一个行为值需要处理)
还有一个亟待回答的问题,就是这个值函数如何设计。常用的方法有两大类,线性方程和深度学习。
第一种方法的计算过程如下,这种方法叫做时序差分线性(TD-Linear)法。
时序查分线性法的优点是线性模型容易理解,容易将线性函数表征转化为表格类型的表征,缺点是特征向量不好选择。
转化的方式就是找寻一个特殊的特征向量,其本质上是一个One-Hot编码。
通过这个特殊的特征向量,就能把时序查分线性方法,转变成一个熟悉的时序查分表格方法。
这里对时序差分方法进行了一个总结,目标函数的目的是找寻一个值函数,能尽可能近似真实的状态值。用梯度下降法求解这个目标函数的最优解,因为真实的状态值不知道,所以用TD算法来近似。
前面介绍了对状态值的近似,找寻最优策略还需要行为值,行为值的近似一般用Saras算法。
Saras做近似的伪代码如下
类似于Saras算法,Q-Learning算法也能拓展一下用于值函数的近似。
用Q-Learning算法做值函数近似的伪代码如下
而Deep Q-Learning或者DQN,是利用神经网络来做一个非线性函数的近似,这也是深度学习在强化学习中比较成功的应用。
Deep Q-Learning的目的是使目标函数或者损失最小化
如何解决这个优化问题呢,用的是梯度下降。但是这个梯度下降不好计算,在这里引入了一个假设 ,w针对y是个固定值(至少是局部或者临时的)
为了解决这个优化问题,这里引入了两个网络-主网络(main network)和目标网络(target network)。 将目标函数中相加的两部分人为划分为主网络和目标网络,在求梯度的时候,固定住目标网络的参数,以简化梯度的计算。
双网络的模式本质上是计算梯度的一个技巧(为啥有用没看明白,这个假设是否成立,是否对真实结果有影响?)
另一个重要的概念叫做经验回放(Experience Replay),指的是采样到的样本不是直接用,而是先缓存到一个buffer里面。训练网络时,再从这个缓存buffer里面随机均匀采样,生成一个mini-batch用于训练网络。
这里采用经验回放的目的,是因为没有任何的先验知识,所以状态-行为对的分布被假设为均匀分布。
但是我们直接采样是依据某种策略产生的序列生成的,这个序列隐含了样本之间的相关性,所以用经验回放策略先进行缓存,再随机均匀采样生成mini-batch,从而消除样本之间的相关性。
这里又讨论了Q-Learning和Deep Q-Learning之间的差异,为什么有的需要经验回放
后面做了实验,Deep Q-Learning仅用了浅层的网络,就能达到很好的效果。

http://www.kler.cn/a/591338.html

相关文章:

  • MySQL--DDL
  • Python教学:lambda表达式的应用-由DeepSeek产生
  • 技术路线图ppt模板_流程图ppt图表_PPT架构图
  • 优选算法合集————双指针(专题四)
  • django如何配置使用asgi
  • 【LInux进程六】命令行参数和环境变量
  • 【大模型基础_毛玉仁】2.6 非 Transformer 架构
  • SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
  • 谈谈 TypeScript 中的模块系统,如何使用 ES Modules 和 CommonJS 模块?
  • STM32---FreeRTOS内存管理实验
  • 剑指 Offer II 109. 开密码锁
  • 【go】soilid与设计模式
  • 【Leetcode】203.移除链表元素
  • MyBatis 如何创建 SqlSession 对象的?
  • 手抖护理指南:全方位守护患者生活
  • 华为ISC+战略规划项目数字化转型驱动的智慧供应链革新(169页PPT)(文末有下载方式)
  • 为什么Django能有效防御CSRF攻击?
  • 爬虫基础之爬取猫眼Top100 可视化
  • Qt之自定义界面组件 一
  • 地宫取宝---dfs‘记忆