强化学习基础概念

强化学习入门

入门学习第一周:基础概念

经验回放:

s s s,agent当前步的action环与境的交互 r r r以及下一步的状态 s t + 1 s_{t+1} st+1组成的四元组[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wxhVd0dn-1676710992983)(null)]
组成序列,需要人为指定数组的大小(记作 b)。数组中只保留最近 b 条数据;当数组存满之后,删除掉最旧的数据。数组的大小 b 是个需要调的超参数,会影响训练的结果。通常设置 b 为
10^5 ∼ 10^6。

  • 经验回放的优点
    经验回放的一个好处在于打破序列的相关性。训练 DQN 的时候,每次我们用一个四元组对 DQN 的参数做一次更新。我们希望相邻两次使用的四元组是独立的。然而当智能体收集经验的时候,相邻两个四元组 有很强的相关性。依次使用这些强关联的四元组训练 DQN,效果往往会很差。经验回放每次从数组里随机抽取一个四元组,用来对 DQN 参数做一次更新。这样随机抽到的四元组都是独立的,消除了相关性。
    经验回放的另一个好处是重复利用收集到的经验,而不是用一次就丢弃,这样可以用更少的样本数量达到同样的表现。
  • 经验回放的局限性
    经验回放不适用于同策略。SARSA等学习算法要求当前执行的策略必须为目标策略(同策略),而经验回放只适用于异策略,因为其用到的都是“过时”的策略函数执行的结果。

优先经验回放

tldr:给四元组序列加权,让不同样本被抽中的概率不一样。如,自动驾驶中绝大部分数据(四元组)都是在正常行驶状态下进行,而这些数据价值不大。出意外的时候的数据很宝贵,但占比极少。这样正常抽样训练的模型会很难好用。

  • 如何自动判断样本权重
    TD误差越大,将该样本权重设置越高。
    解释:TD误差越大,说明该网络的判断与真实估计的差越大,说明网络对当前样本的判断越不好,需要加强对此类样本的学习。

高估问题及解决方法

  • 为什么会出现高估
    • 自举的高估
      tldr:TD误差中等号左右都是Q函数对自己的估计,若等号右端已经高估,那么等号左端也会高估,造成误差的传播,让更多的价值被高估。

    • 最大化导致的高估

如果DQN是完全恒等于真实Q函数的,那么没有任何误差,然而真实情况不可能如此。只要其有误差,即使是无偏的,那么依然存在高估。因为往一个随机变量里加入任意量均值为0的随机噪声,那么新序列的最大值的期望,一定是大于等于原序列的。

  • 高估的危害
    废话,高估导致智能体导致估计不准确,作出错误判断
  • 高估的解决办法
    想要避免 DQN 的高估,要么切断自举,要么避免最大化造成高估︒注意,高估并不是 DQN 自身的属性,高估纯粹是算法造成的。想要避免高估,就要用更好的算法替代原始的 Q 学习算法。(下文详述)
  • 目标网络
    想要切断自举,可以用另一个神经网络计算 TD 目标,而不是用 DQN 自己计算 TD 目标。另一个神经网络被称作目标网络(target network)。
    它的神经网络结构与 DQN 完全相同,只有其参数 w − 不同于 w w^- 不同于 w w不同于w

我的总结:用另一个目标网络去预测下一步的最优价值,得到目标值;原网络的参数更新方式不变,新网络的更新是移动平均加权的形式。这种方法实际上只能减缓最大化的高估趋势,并不是根除了高估。且该方法对自举的高估没有作用。

  • 双Q学习
    与上文的目标网络Q学习的差异在于,双Q将网络进行拆分,用DQN选择action,用目标网络来求值
    这样做能够减小高估,因为Q函数对于一个确定的a的值,显然是小于等于最优价值函数的。(体会:有点拆东补西,中和的意思,并不是把根儿拔了。)

噪声网络

将原网络中的每个参数w改写为 w = u + a ∗ b w = u+a*b w=u+ab
u u u为均值, a a a为正态分布随机变量, b b b为方差。
u 和 b u和b ub为可学习参数,a从正态分布抽样,每一步学习需要重新抽样。
噪声网络的好处:
不仅有利于探索,还能增强鲁棒性。
噪声网络自带有随机性,参数的随机性可能使下一步action的输出具有随机性。因此使用了噪声网络即可无需使用其他策略来保证探索的随机性。

策略梯度网络

  • 更新策略
  • 依赖观察到的s
  • 从策略网络抽样得到一个a
  • 然后计算出随机梯度,更新策略网络的参数

此处存在的问题是Q函数我们无法知道。因此需要想办法进行估计。

  • REINFORCE
    tldr:完成一局游戏,将得到的奖励 u t u_t ut作为Q值的蒙特卡洛估计。
  • actor-critic
    policy网络:输入是状态 s s s,输出是一个action的概率分布
    value_network:输入(s,a),评价当前动作的好坏
    训练步骤:
    • 观测状态 s t s_t st
    • 从随机初始化的策略网络sample出 a t a_t at
    • agent执行 a t a_t at,观察 s t + 1 s_{t+1} st+1 r r r
    • 用TD算法更新value_network的参数w
    • 用策略梯度更新policy net

带基线的策略梯度算法

tldr:策略梯度公式中用到的策略梯度网络求导乘上实际奖励(对状态价值函数的蒙特卡洛模拟) u t u_t ut作为策略梯度。一个改进方法为在该实际奖励上减去一个 V π ( s ) V_\pi(s) Vπ(s),这样能使梯度更稳定,当然,也引入了一个状态价值网络来作为 V π ( s ) V_\pi(s) Vπ(s)

不完全观测问题

  • 例子:英雄联盟;绝地求生等
  • 基本思路:对于不完全观测的强化学习问题,应当记忆过去的观测,用所有已知的信息做决策。
    这正是人类解决不完全观测问题的方式。(即使是完全观测问题,记忆前面几步的状态也是有意义的,如alphago的input)
  • 记录过去n步的观测,n可能是不定长的,因此RNN和transformer是处理此类问题的好方法,其满足接受不定长的输入而输出的向量维度不变。

alphaGo

基本设定:

  • 游戏结束之前,所有r均为0;
  • 游戏结束时,获胜:r=+1;失败:r=-1
  • behavior cloning:模仿学习(监督学习的一类)
    棋盘状态的输入是一个三维立体tensor;输出是19*19的矩阵;
    在一次训练中,人类玩家在该状态下走的比如是第256个格子,那么target就是one-hot向量(第256个元素为1其余为0),策略网络的输出是预测值。二者做损失。
    一个非常传统的多分类任务。
    • 体会:该策略应该是只能接近人类水平。论文中说经过该算法,策略算法已经能够击败业余水平玩家。bc算法缺陷是对训练数据中出现较少的s,或者没出现过的s;另外只要有一次s未出现过,那么此后的状态将均没见过,因此错误会累加,此后的策略网络基本都在随机游走,因为这些状态它都没见过;作为人类选手,只需要走出一些非常奇怪的状态,便很大概率能够找到该策略网络没见过的局面从而将其击败。且考虑到围棋的复杂度,这个状态容易撞出来。
  • 强化学习:
    • 策略网络从behavior cloning的SL网络权重初始化,对手网络最开始也是如此;
    • 此后,策略网络使用策略梯度进行更新,而每轮使用的对手网络是随机从历史策略网络中选取一个。这个trick能防止策略网络在当前策略上过拟合。
  • alphaGo使用的蒙特卡洛树搜索
    • 价值网络能衡量状态好坏;人类棋手下棋时,会预估未来几步的走势

    • 选择:使用PUCT算法不断往下搜索节点;具体的,以下为每个节点的计算方式:
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t5XFXzXV-1676710993087)(null)]

    • 用策略函数选取几个好的动作;让策略网络按照选取的动作自我博弈到游戏结束,看这个动作是赢还是输;

    • score(a)=(v+r)/2 其中v是动作做完后价值网络的打分;r是游戏结束的reward;

    • 重复很多次,能得到每个动作的平均分值;选择分数最高的a。

  • 体会:
    • alphaGo相当于预先看完了所有的步数;
    • 机器的自我博弈及其客观,而人类的自我对弈很难无偏
    • 好奇alphaGo/Zero不使用蒙特卡洛树搜索,单纯使用策略网络的对弈水平。蒙特卡洛这招有点儿玩赖,靠着远超于人类的算力当场进行模拟,如果对手(比如柯洁)也每走一步都跟顶级高手博弈几千把、模拟几个月再出手,ai还能获胜吗?
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值