强化学习 --- QLearning

C. 人工智能 — 强化学习 - QLearning

Q-Learning

  • 概述
    • QLearning是强化学习算法中value-based的算法,Q即为Q(s,a)就是在某一时刻的 s 状态下(s∈S),采取 动作a (a∈A)动作能够获得收益的期望,环境会根据agent的动作反馈相应的回报reward r,所以算法的主要思想就是将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。
  • 缺点
    • 不适合连续型的action
  • 优化
    • 为了解决action是连续性的问题,通过训练一个Actor(NN),是的Q最大
  • 关键点
    • 问题一
      • 问题
        • 用非线性逼近器,如神经网络,去代表动作Q值时,常常会不稳定甚至不收敛。
        • 这是由于数据之间有较强关联性,不符合神经网络独立同分布的要求。
      • 思路:深度Q网络采取以下两种主要措施来解决此问题
        • 经验回放方法(reply),对数据进行随机化。消除观测序列中的相关性,并平滑数据中的变化。
        • 使用迭代更新,增加一个新的网络target-network来计算目标值,并周期性更新target-network,从而减少数据的相关性。
    • 问题二
      • 问题
        • 如果有一个Action被选中,由于Reward是最大的,其他的要么比他低,要么之前没有执行过,无法评估,导致以后就会一直执行这个Action
      • 思路:Exploration
        • Epsilon Greedy
          • 通过概率的方式选择Action,Reward最大被选中的可能性越大,但不是绝对的
        • Boltzmann Exploration
          • 因为Q-value可能有正有负,所以先取exp全部转成正的。然后除以分母,做Normalization。这样就将所有动作的Q value转化为概率,概率的大小和Q value的大小有关。然后通过概率的大小去选择不同动作a,概率大的被选到的次数就会多,概率小的被选到的次数就会少,这样即便Q value小的action也还是有可能会被选到。
    • 问题三
      • 问题
        • 训练过程中与环境交互很耗时间,而Replay Buffer可以使得之前的actor的exp被反复利用到,减少了互动次数;
        • 增加数据多样性,降低batch内相关性,提高泛化性能,训练效果更好。
      • 思路:Replay Buffer
        • 把actor的每笔experience (st,at,rt,st+1)放到一个buffer里面,其中buffer里面的exp可能来自采取不同policy的actor(假设actor和环境互动一万次后就更新参数,而buffer里面能存放5万个的exp,就会导致buffer里有5种不同的actor的exp)
        • 当buffer满了再替换旧的exp。训练过程时每次从buffer里面sample一个batch(比如说100个exp)出来训练。
        • 因为buffer里有采取不同policy的actor的experience,所以导致这个训练过程变成off-policy的。但是因为我们只用一个experience训练,并不是整个trajectory,所以off-policy也没关系。

离散型 QLearning 的变种

  • Double DQN
    • 问题
      • 由于Q值总是基于使得Q最大的action得出的,因此会趋向于被高估,于是引入double DQN
        • 因为目标值 rt+maxQ(st+1,a)r_t+maxQ(s_{t+1}, a)rt​+maxQ(st+1​,a) 总是倾向于选择被高估的行动action
    • 思路
      • 使用两个Q function(因此称为double), 一个用来选择行动action,另外一个用来计算Q值,通常会选择target network来作为另外一个用于计算Q值的Q‘ function.
      • 如果Q高估了 a 从而被选择, Q’ 会给这个被选择的a一个合适的Q值如果Q’会高估某个action a,这个action并不会被Q选择到
  • Dueling DQN
    • 与Double DQN 的区别
      • 网络结构不一样
    • 问题
      • 如果没有Action的时候,就没有 Reward
    • 思路
      • 把Reward 拆分成 state reward + action reward
      • 这种类型的网络结构可以用来学习不被行动action影响下的state的价值
      • 此外,如果只需要通过改变V(s)的值就能改变某个状态下所有的Q的话,会比较方便
  • Rainbow
  • Prioritized Experience Replay
    • 在训练的过程中,对于在经验buffer里面的样本,那些具有更好的TD 误差的样本会有更高的概率被采样,这样可以加快训练速度。
  • Multi-step: Combination of MC and TD
    • 模型需要学习多步累积起来的回报reward,也就是说将MC和TD进行了折中,同时引入了一个超参数,即累积reward的步长N
  • Noisy Net
    • 在每个episode开始时,在Q function的参数上引入噪声,但在每一个episode内,参数不会发生改变。
    • 特点
      • Noise On Action
        • 相同的state,有可能产生不同的Action
        • No real policy works in this way
      • Noise On Parameters
        • 相同的state,agent 采用相同的 Action
          • State-dependent Exploration
        • Explore in a consistent way
  • Distributional Q-function
    • 问题
      • 状态-行动价值函数 Qπ(s,a)Q^\pi(s,a)Qπ(s,a) 是累积收益的期望值,也就是说是价值分布的均值。然而,有的时候不同的分布得到的均值可能一样,但我们并不知道实际的分布是什么。
    • 优点
      • Distributional Q-function 认为可以输出Q值的分布,当具有相同的均值时,选择具有较小方差(风险)的那一个。但实际上,这个方法很难付诸实践。

连续型 QLearning 的变种

  • 问题
    • 在某些情况下,action是一个连续向量(比如驾驶类游戏,需要决定一个连续的角度)在这种情况下,Q learning 并不是一个用来寻找最佳action的好方法
  • 应用场景
    • 自驾车
    • 机器人
  • 思路
    • 思路一
      • 采样一系列行动,看哪个行动会返回最大的Q值
    • 思路二
      • 使用梯度上升来解决这个优化问题(具有较高的计算成本)
    • 思路三
      • 设计一个网络来使得这个优化过程更简单
    • 思路四
      • 不使用 Q-learning
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值