强化学习基础知识梳理(4)

顺序以周博磊老师强化学习纲要课程为主,增加王树森老师强化学习基础的知识补充,和蘑菇书的知识补充,作为学习记录

第四章:价值函数近似

主要内容包括:

  1. 价值函数近似基本原理介绍(Value Function Approximation, VFA) 
  2. 线性价值函数近似(在预测和控制方面的应用)
  3. 非线性价值函数近似(主要是DQN的介绍)

一、价值函数近似基本原理的介绍:

  1. 引入原因:
    1. 之前是问题更多是少量状态的RL问题,所以可以用Qtable,即用表格形式存储每个状态s下动作a取得的奖励(这里的少量如悬崖行走问题的4*16,mountain car问题的1600等)
    2. 实际强化问题大多是大规模状态的问题,包括本身状态量巨大,或是连续状态空间,状态量无穷(这里的大量如国际象棋10^47  围棋10^170次方,事实上所有可观测宇宙的原子个数也只有10^80)
    3. 在解决问题的过程中,我们所用到的奖励函数R(ModelFree没有)、策略函数π、状态价值函数V和动作价值函数Q都与状态有关。
    4. 当状态数量过大时,价值函数的计算就十分困难,出现维度灾难(即在涉及向量的计算问题中,随着维数增加,计算量会随指数倍增长,事情变得不可控)
    5. 导致结果:在前一章ModelFree中基于Q表格(Lookup Table)提出的的解决方法就不再适用,需要研究如何将ModelFree方法应用到这种大规模状态情况。
  2. 引出解决大规模马尔可夫过程问题的方法:函数近似

    1. 不再使用表格形式,而是通过函数近似的方法代替真实的价值函数(使用带参数的近似函数)
    2. 优势:从已知状态泛化到未知状态,避免学习、存储每一个状态信息,使用插值方法估计没有出现过的状态(不需要对所有状态得到观测)
    3. 参数w可以使用MC(蒙特卡洛采样)或TD learning方法实现近似估计
  3. 函数近似的多种方法:
    1. 线性特征(Linear feature representations)(设计特征再进行线性叠加)
    2. 神经网络(Neural networks)(有效的拟合函数)
    3. 决策树(Decision trees)
    4. 近邻取样(Nearest neighbors)
    5. 主要介绍前两类,因为前两类可微分,这种性质方便我们优化相关参数(使用梯度下降更新)
  4. 参数优化(以价值函数的优化为例)(本章最重要的内容就是对梯度增量中的近似函数进行优化)
    1. 由于某些原因需要极小化(极大化)目标函数(损失函数)J(w)
    2. 这里我们需要极小化的损失函数J(w)如下,这里使用了均方误差(自定义的):(在已知当前给定状态s时的真正价值Vπ的情况下,希望我们所拟合的函数能够在不断更新后逐渐接近真实值,也就是说状态时定值,通过对参数的优化来极小化函数)
    3. 可能存在的误区:已知的价值函数真实值(orcle)的状态是有限的,而我们希望通过优化自己估计的价值函数,从而得到更多的状态对应价值。

    4. 使用梯度下降的方式对参数进行优化

      1. 梯度在数学中
        1. 单变量函数,梯度就是函数的微分,代表切线斜率
        2. 多变量函数,梯度是一个向量,向量有方向,梯度的方向指出了函数在给定点的上升最快的方向(参数其实也是一个向量)(只知道方向不知道长度)
      2. 目标:通过迭代优化参数找到目标函数的最小值或收敛到最小值
      3. 方法:对于可微分的函数来说,由于梯度的方向是函数变化最快的方向,找到给定点的梯度,再通过我们所设定的步长,可以得到参数如何变化能让函数值下降最快。
      4. 结果:通过反复求梯度,就能到达局部最小值(对于只有一个最值的函数,局部最小值即全局最小值)
      5. 公式中:负号表示向梯度相反的方向前进,即梯度下降 ;α称为学习率或步长,控制每一步的距离,避免错过最低点;1/2是为了求偏导时消去2不影响结果
      6. 缺点:受学习率影响很大;对于有多个极值的函数来说,它永远不能保证全局最优性,只能保证局部最低
  5.  状态s的描述
    1. 输入状态,提取对应的特征向量作为状态进行后续运算

    2. 具体特征是人为设定的,基于要解决的问题设计自己需要的特征

      1. 车的位置、速度、加速度
      2. cart的位置、速度、木杆角度、旋转角速度
    3. 将特征作为状态的函数表示状态,输入给价值函数、策略函数等,得到对应值

二、线性模型拟合价值函数

  1. 策略评估的函数近似(策略评估就是预测当前状态的价值)
    1. 已知orcle
      1.  相关函数变形
        1. 近似价值函数:(特征的线性叠加,对特征向量和参数进行线性组合)

        2. 需要最小化的损失函数:

        3. 梯度更新增量:(这个形式只有线性模型才适用)

      2. 线性模型的优势:对于线性模型来说,随机梯度下降的结果会接近全局最优解,即我们得到的局部最优解几乎就是全局最优解(找到最佳拟合价值函数的模型)

      3. 特殊的特征定义:Table Lookup Feature
        1. one-hot vector:向量中只有一个位置的值是1,即当前状态对应位置元素,其他值都是0

        2. 此时的线性模型:

        3. 于是此时的拟合价值函数就是:(wk即参数)

    2. model-free预测的近似(无oracle)
      1. 不知道真实价值V^π(s),只有来自环境的回报(重点区别在于梯度增量的计算)
      2. 回顾:(oracle 真实标签)
        1. model-free预测的目的是,给定一个策略,估计对于每个状态它的价值
        2. 方法:MC、TD来估计价值函数
        3. 维护一个个lookup table来存储V/Q的估计值
      3. 方法:将函数近似同时放入model-free 预测的循环中
        1. 优化价值函数
        2. 利用优化好的价值函数优化价值函数的近似(优化参数)
        3. 对比:
          1. 已知真实价值:

          2. MC方法代替真实价值

          3. TD target代替真实价值:

        4. 两种方法的对比:
          1. 对于MC方法:
            1. 回报Gt对于真实价值来说是无偏的(即均值等于真实值)
            2. 对于线性和非线性的价值函数近似都可以收敛
          2. 对于TD方法:
            1. TD target对于真实价值来说是有偏的(因为自身包含正在优化大参数,不够准确,不是真实的梯度)又称为semi-gradient)
            2. 在线性的价值函数近似可以达到、接近整体最优解
  2. 控制部分的函数近似:
    1. 控制部分包括策略评估(预测)和策略优化,将动作价值函数进行函数近似,就可以适用于更大规模的状态情况
    2. 动作价值函数也可以以相同的方式进行函数近似
    3. 已知orcle
      1. 相关函数表示
        1. 动作价值函数近似:

        2. 损失函数:

        3. 梯度增量:

      2. 线性模型拟合:
        1. 状态的特征表示:

        2. 动作价值函数近似:

        3. 梯度增量:

    4. 未知orcle
      1. MC方法:

      2. Sarsa TD target:

      3. Q-learning TD target:

      4. 具体算法:(Sarsa算法与semi-gradient Sarsa算法的对比)
        1. 强调无模型状态
        2. 通过更新参数的方法更新函数,强调大数据的拟合
      5. 关于收敛(关于两种TD方法Sarsa与Q-learning)
        1. 当存在价值函数估计时,由于梯度中存在需要优化的参数本身,梯度并不是很准确
        2. 更新过程中,有两个近似过程(Bellman backup与价值函数近似),会引入很多噪声
        3. 结果:使用off-policy或使用非线性函数近似时收敛过程很不稳定,价值函数估计不准确
      6. 控制算法的收敛性:
        1. 状态较少时都可以收敛(小规模MDP可以找到最优解)
        2. 线性特征拟合前两者可以找到近似最优解,Qlearning很难找到最优解
        3. 近似函数选择非线性函数(神经网络)都很难保证得到最优解
  3. 题外话1:强化学习的死亡三角(Deadly Triad)
    1. 最重要的三点不确实因素:
    2. 函数估计:利用函数近似价值函数,利用近似会引入误差
    3. Bootstarpping(自举):基于之前的估计值进一步估计 (主要发生在TD方法中)
    4. Off-policy 训练:两个policy导致采集数据与实际优化数据不同,也引入了不确定因素
  4. 题外话2:由单步优化变为块优化(Batch优化)
    1.  前述方法都是单步优化,实际效率很低

    2. 保存一个training batch,直接优化batch中的所有样本,实现函数拟合

    3. 具体方法:

      1. 前提:存在一个数据库保存了一系列样本(pair)

      2. 根据方法的不同(MC、TD)选择对应target(替换不同v),优化参数w,使其对每个pair都达到极小化(这个是一次优化)

      3. 可能数据过大无法全部计算,则对数据库进行随机采样,利用采样数据对w进行迭代优化(这个是一次抽一部分,迭代优化)

      4. 这种方式与直接优化数据集的效果是一样的


三、非线性函数拟合

  1. 对比:
    1. 线性模型:人为确定表示状态的特征向量,线性价值函数将其进行线性叠加,然后就用于估计v值,计算损失函数,得到梯度表达式,对于Model-free则使用MC或TD方法将真实价值进行替换
    2. 前述方法是线性模型,需要人为确定对应特征向量才能良好工作,但这件事情其实很困难
    3. 存在非线性函数拟合,可以将特征提取与价值函数学习结合,神经网络是常用的非线性函数拟合方法
  2. 神经网络介绍
    1. 神经网络是多层参数叠加函数神经网络内部有许多网络层,将其一层一层叠加起来,最终得到想要的输出。

    2. 使用链式法则优化参数(后向传播)

    3. 后向传播介绍
      1. 解决神经网络在训练模型时的参数更新问题,对权重进行优化,使得神经网络能够学习到从任意输入到输出的准确映射
      2. 梯度的意义在于,它在一定程度上表示了这个参数对整体结果的一个影响情况
      3. 就像链式求导,对每个参数的求导都会变成多个求导的乘积 

    4. 卷积神经网络:每一层都是由卷积层叠加起来的
  3. 强化学习与深度学习的结合:深度强化学习(Deep Reinforcement Learning)
    1. 主要特点:使用神经网络实现RL中函数的拟合(动作/状态价值函数,环境模型等)
    2. 一般使用SGD(随机梯度下降)实现参数优化
    3. 挑战:过多的模型参数需要优化;Deadly Triad(收敛问题,得到的解与最优解并不一致)
  4. DQN(Deep Q-Network)
    1. 出现时间:2015年DeepMind发表论文:Human-level control through deep reinforcement learning,提出了用神经网络拟合Q函数,在Atari游戏中取得了近似于人的表现能力,其实拟合的是最优动作价值函数Qstar
    2. 主要思想:

      1. 使用卷积神经网络拟合Q函数(由于DQN是Q-learning方法与深度学习结合的产物,所以神经网络拟合的其实是最佳动作价值函数即Qstar函数)
      2. 将游戏界面作为输入(连续4帧像素级别的图像)
      3. 输出是18个操作(所有动作的分数)
      4. 奖励是游戏的分数增减
      5. 内部是两层卷积网络和一层全连接将输入变为输出
    3. Qlearning中存在的问题:
      1. 样本之间相关性过高,导致学习比较困难(从像素级别来说,连续的每个画面之间的区别其实是很小的)
      2. 高估问题(最大化和自举)
    4. 解决方法和DQN的优化方法:
      1. 经验回放:experience replay(2个优势) 相关性和经验的重复利用避免 浪费
      2. target network(自举)、Double DQN(最大化)
    5. 经验回放:experience replay
      1. 重复利用经验避免浪费;打破序列顺序消除相关性
      2. 使用replay buffer(容器)存储不同游戏环境里的sample(在王树森老师的视频中将其称为transition,具体buffer中存放多少transition由具体应用决定)

      3. 存在特定网络为容器中填充内容
      4. 为了训练网络:每次从中随机采样,并用其计算TD target 再用target进行随机梯度下降更新参数w

      5. 随机采样降低了相关度,更有利于学习(以及对经验的重复利用) 
      6. 这也是随机梯度下降的主要思想,通过每次随机采样的数据对参数进行更新,当数据过大时,就可以在不采样使用完全部数据的情况下,得到一个误差范围内可接受的梯度值。
      7. 对经验回放的改进:Prioritized Experience Replay(优先经验回放)
        1. 主要思想:用非均匀抽样代替均匀抽样
        2. transition的重要性各不相同,比如超级玛丽中正常关卡和Boss关卡,后者更加稀缺也更加重要,transition需要被充分利用
        3. 可以使用TD error的绝对值表示重要性(即价值的真实值-价值函数近似值,因为训练的DQN由于不熟悉场景,预测的值就会偏离真实值(或估计的真实值)导致TD error的绝对值大)
        4. 给重要的transition更高的权重
        5. 非均匀抽样的两种方法:

          1. 抽样概率正比于TD error
          2. 抽样概率反比于rank(t)(是TD error的序号)
          3. 原理相同:TDerror越大,transition被抽样的概率越大

           

        6. 非均匀抽样可能导致预测有偏差
          1. 原因:概率由 TD error决定,不同的transition的重要性不同
          2. 解决:均匀抽样:所有的transition有相同的学习率;非均匀抽样:不同的transition应当设定不同的学习率

          3. 对于抽样概率较大的transition,它的学习率应当比较小
          4. β是个超参数,建议一开始值设定较小,最终逐渐接近1  
        7. 流程:
          1. 对于刚获得的transition,不知道它的TD error,所以先将其TD error设为最大,获得最高优先级,以便下一次被选中
          2. 每一次从buffer中采样时,也要同时更新TD error,即每一次需要更新它的选中概率
    6. 高估问题的产生原因(使用TD算法,会导致DQN高估真实的动作价值)
      1. 高估并不是DQN自身的属性,而是由Qlearning算法造成的,因此解决高估就需要对Qlearning算法进行优化
      2. 原因一:计算TD target会存在最大化,它会导致高估 
        1. 这里的最大化是指在计算Qlearning的TDtarget时使用的最大化函数
        2. 已知我们在估计动作价值函数时会存在误差,即使我们认为误差是无偏的,即加入均值为0的噪声,最大化函数仍然会使我们所计算得到的值是大于或等于实际值的(这里存在一个我不会证明的数学原理)
      3. 原因二:bootstropping:使用自己的估计去进一步估计自己
        1. 从上式可知,我们希望我们所估计的值会进一步靠近计算的yt(因为它一半基于真实值一半基于估计值)
        2. 因此,在逐次计算中高估现象会越来越严重
      4. 真正问题:高估问题的真正危害在于:非均匀的高估
        1. 使用动作价值函数对动作进行打分,这其实是一种相对的比较
        2. 因此,如果是绝对的高估,反而不会影响动作的最终选择
        3. 但由于采样时的选择,以及所有的transition在buffer中出现频率也是不同的,这导致高估是非均匀的
        4. 非均匀的高估会对动作选择产生影响
      5. 解决方法:
        1. 切断自举:使用target network
        2. 避免最大化造成高估:double DQN
    7.  target network(Fixed target)
      1.  目的:为了使训练更加稳定(使用另一个神经网络计算TD target而不是正要学习的网络自己)
      2. 理解:
        1. 猫要追上老鼠

        2. 两个都是即时更新,会产生奇怪的优化轨迹,导致训练不稳定

        3. 修复方法:降低老鼠的移动频率,让猫有足够的时间接近target,使训练更有效
      3. 方法:计算TD target的网络的参数w^−的更新与实际参数w存在时间差,w^−的更新慢于w(对于右边的target使用专门的target network进行更新)(为了方便更新,它的神经网络结构与DQN完全相同,只有参数不同)

      4. 流程:
        1. 从replay buffer中取tuples

        2. 计算target:注意这里的w已经不是同一个w了

        3. 更新w

    8. Double DQN
      1. 目的:在target network的基础上做出进一步的改进,缓解最大化造成的高估
      2. 方法:将TD target的计算过程进行进一步的拆分:

      3. 对比:
        1. Qlearning中使用target network后:

        2. 使用Double DQN后:

      4. 原因:由于此时选择的最优动作,并不一定是在target network参数下的最优动作,因此可以缓解最大化造成的高估
    9. 题外话:Sarsa算法中自举的问题仍然存在,但根据公式可知Sarsa中并不存在最大化造成高估的问题,因此Sarsa中只需要target network即可
      1. 关于高估问题参考了博主UQI-LIUWJ的理解,感谢分享

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度强化学习是结合了深度学习强化学习的一种算法方法,它的发展历史可以追溯到强化学习深度学习各自的起源。 强化学习是一种机器学习方法,旨在通过智能体与环境的交互来学习最优的行为策略。其基本思想是通过试错和奖励机制来引导智能体的学习过程。强化学习的发展历史可以追溯到20世纪50年代的动态规划方法,随后逐渐发展出了值函数和策略函数的方法,如Q-learning和SARSA等。然而,传统的强化学习方法在处理高维、复杂的问题时面临着维度灾难和计算复杂性的挑战。 深度学习是一种基于神经网络机器学习方法,通过多层次的神经网络模型来学习数据的表示和特征提取。深度学习在图像识别、语音识别等领域取得了巨大成功。然而,传统的深度学习方法在处理序列决策问题时存在困难,因为它们缺乏对时间序列和延迟奖励的建模能力。 深度强化学习的发展可以追溯到2013年,当时DeepMind团队提出了一种基于深度神经网络强化学习算法——深度Q网络(DQN)。DQN通过将强化学习深度学习相结合,成功地解决了一些复杂的游戏问题。随后,深度强化学习得到了广泛的关注和研究。 在此基础上,深度强化学习的发展又涌现出了一系列的算法,如策略梯度方法、Actor-Critic方法、Proximal Policy Optimization(PPO)等。这些算法通过引入深度神经网络来近似值函数或策略函数,进一步提高了深度强化学习在处理复杂问题上的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值