深度强化学习之 PPO 算法
  2ByFsHD6kzN2 2023年11月02日 25 0




深度强化学习之 PPO 算法

  • 强化学习原理
  • 马尔科夫决策过程
  • 学习策略 = 基于行为价值 & 基于行为概率
  • 策略梯度算法:计算状态下所有行为的概率
  • 演员 - 评论家算法:一半基于行为价值,一半基于行为概率
  • DQN 算法(深度Q网络)
  • Q-Learning(Q 值和Q表格)
  • 为什么要引入神经网络?
  • 实现 Q-Learning
  • 实现 DQN 算法
  • PPO 算法 = DQN算法 + 演员-评论家算法 + 策略梯度算法
  • 实现 PPO
  • 用深度强化学习玩动作类游戏



强化学习原理

机器学习是把带标签的数据训练模型,使得预测值尽可能接近真实值。

强化学习是通过和环境交互,奖励来训练模型,使得最后获取的奖励最大期望值。

在强化学习中,机器基于环境做出行为,正确的行为能够获得奖励。以获得更多奖励为目标,实现机器与环境的最优互动。

如教狗子握手的时候,如果狗子正确握手,就能得到骨头奖励,不握手就没有。如果咬了主人一口,还会受到惩罚。

长此以往,狗子为了得到更多骨头,就能学会握手这个技能。

  • 编程开发三要素:数据结构 + 传统算法 = 程序
  • 机器学习三要素:数据 + 学习算法 = 模型
  • 强化学习六要素:环境、决策模型、状态、行为、奖励、评论家

如在对弈的环境中,决策模型根据棋盘上的状态,做出落子行为,然后每盘棋的胜负获得奖励。模拟足够多棋局后,评论家就可以通过计算预测出每步棋对整盘棋的价值,为其打分。
 


马尔科夫决策过程

狭义决策过程:观测->策略->动作

广义决策过程:七元组 深度强化学习之 PPO 算法_决策过程

  • S 状态空间
  • O 观测空间
  • A 动作空间
  • R(s, a) 状态s下a动作的奖励函数
  • T(s’ | s, a) 是状态转移函数,描述了在给定当前状态 s 和采取动作 a 后,系统转移到下一个状态 s’ 的概率。它表示了在某个状态下采取某个动作后,下一个状态的分布情况。
  • 深度强化学习之 PPO 算法_算法_02(o|s,a) 是观测函数,描述了在给定当前状态 s 和采取动作 a 后,观测到某个观测 o 的概率。它表示了在某个状态下采取某个动作后,观测到某个观测的分布情况。观测可以是对环境的感知或者是系统反馈的信息。
  • 深度强化学习之 PPO 算法_强化学习_03

 


学习策略 = 基于行为价值 & 基于行为概率

通过不断训练,机器以赢更多局棋为目标,不断更新优化,成为一个围棋大师。

可以将学习的场景分为两类:

  • 离散场景:机器行为的有限的,如动作类游戏。只有向上、向下、向左、向右这 4 个动作,移动也只能一格一格地走。
    可以把每个状态下的所有行为列举出来,用评论家为每个行为打分,通过选择最高分的行为实现最优互动。
    因为需要评估每个行为的价值,所以这种学习方法被称为基于行为价值的方法
  • 连续场景:机器的行为是连贯的,如赛车的方向盘转动角度可以在一定区间内任意取值,角度之间可以无限分割。
    还有基于行为概率的方法,无需根据每个行为的价值来打分,可以很好地胜任连续场景。

基于值的方法需要根据每个行为的价值进行打分,选出价值最高的行为。由于要穷举出所有行为,因此它只适用于离散场景。

  • Q-Learning 和 DQN 算法,都属于基于值的强化学习方法。

基于价值的方法无法应对连续场景。只能应用在不连续的、离散的环境下(如围棋或动作类游戏)。

对于动作集合规模庞大、动作连续的场景(如机器人控制领域),其很难学习到较好的结果。

基于价值(Value-Based)的思路是:通过计算行为的价值(Value)来训练模型。

棋盘上一共只有 361 个点位,基于值的方法可以计算出棋子落在每个点位的价值,并进行打分,帮助机器选出最优点位。

好处:基于值的方法能实时反馈。可以根据每个行为的价值进行打分,这个分数就相当于每个行为的实时反馈。但不能应用连续场景上。

而基于策略(Policy-Based)的方法并不需要考虑行为的价值,而是反应调整。

机器会在训练过程中随机抽取一些行为,与环境互动。如果行为获得了奖励,就会提高选择它的概率。以后遇到同样的状态时,有更高的概率再次做出这个行为。

相反,如果未获得奖励,或者受到了惩罚,就保持或者降低该行为的概率。

经过大量训练,最终会得出连续行为的概率分布。

基于这样的原理,一个行为能获得越多奖励,被选择的概率就越大,从而实现机器和环境的最优化互动。

好处:基于策略的方法能应用连续场景上。但不能实时反馈。

策略梯度算法:计算状态下所有行为的概率

基于策略的方法,它的原理是根据行为的概率来训练模型。

实现方式:策略梯度算法引入了一个神经网络,输入层是状态(s),经过隐藏层的分析和计算,输出该状态下每个行为的概率.

策略梯度算法在训练过程中经常遇到一个难题:机器在与环境互动时,难以得到实时反馈,往往要在整个回合结束后才能获得奖励。

如赢一盘棋是正向奖励,输一盘棋是负面奖励,但棋局中某一颗棋子的价值很难即时评估。

想要提高学习效率,就必须想办法提供实时反馈。

有没有办法可以将基于策略在应对连续场景上的优点,和基于值在实时反馈上的优点进行结合呢?

那就是演员-评论家算法。

 


演员 - 评论家算法:一半基于行为价值,一半基于行为概率

演员-评论家算法就是将基于策略和基于值两个方法相结合的产物。

这个算法分成两半,一半是演员,另一半是评论家。

  • 演员:这一半基于策略,策略梯度算法。它有一个神经网络,可以根据行为的概率,选出行为。
  • 评论家:这一半基于价值,DQN 算法。它有一个神经网络,可以根据行为的价值进行打分。

将基于策略和基于值的方法相结合,由基于策略的策略网络在连续场景中选出行为,由基于值的价值网络给行为提供实时反馈。

策略网络就像写作业的学生,价值网络就像批改作业的老师。二者结合,反复地写作业、改作业,对比方法,找出最好的方法。
 


DQN 算法(深度Q网络)

DQN 算法全称 深度Q网络,以 Q-Learning 算法为基础,融合了神经网络

Q-Learning(Q 值和Q表格)

Q-Learning 有一个 Q 值(评论家),一个行为的 Q 值越高,表示该行为能带来的奖励越多,越应该被选择。

Q-learning 算法需要知道每个状态下,所有行为Q 值

机器在每个状态下都能做出 Q 值最大的行为(a)。

因为计算每一个Q值,需要同时记录同一个状态下所有行为。

深度强化学习之 PPO 算法_算法_04


行 S 是动作、A 是状态。

更新方法:

深度强化学习之 PPO 算法_神经网络_05

  • 在公式中,Q表示一个函数,它把状态和行动映射到一个值。这个值表示在某个状态下选择某个行动的预期回报。
  • 深度强化学习之 PPO 算法_强化学习_06深度强化学习之 PPO 算法_神经网络_07
  • α 是学习率,它决定了在更新 Q 值时,我们对新的观察结果给予多大的权重。学习率越高,我们对新观察结果的权重越大。
  • 深度强化学习之 PPO 算法_决策过程_08 是在执行行动 深度强化学习之 PPO 算法_神经网络_07
    即时奖励就是指在每个时刻,当你的角色采取一个行动后,系统会立即给出一个奖励。
    比如,当你的角色向上移动时,如果它走进了一个陷阱,那么你可能会得到一个负的即时奖励,表示这个行动是不好的。
    相反,如果你的角色移动到了宝藏所在的位置,你可能会得到一个正的即时奖励,表示这个行动是好的。
  • γ 是折扣因子,它决定了我们对未来奖励的重视程度。
    γ 越大,我们对未来奖励的重视程度越高。
    较低的折扣因子则更关注即时奖励。
    是短期收益和长期收益的平衡。这个参数都是实验出来的。
  • 深度强化学习之 PPO 算法_人工智能_10 表示在下一个状态 深度强化学习之 PPO 算法_算法_11

现在,我们来看一下公式的拆解:

  1. 首先,我们计算出在当前状态和行动下的Q值:深度强化学习之 PPO 算法_算法_12
  2. 深度强化学习之 PPO 算法_神经网络_13
    当我们说衰减因子用于减小当前Q值的影响时,意味着我们希望新的观察结果对Q值的更新有更大的影响,而不是完全依赖于之前的Q值。衰减因子决定了新的观察结果对Q值更新的权重。
    假设机器人在某个状态下选择向右移动,并且根据之前的经验,这个行动的Q值为10。然后,机器人根据新的观察结果,发现向右移动并没有获得期望的回报。新的观察结果给出了一个负的即时奖励。
    在这种情况下,衰减因子的作用就体现出来了。假设我们设置衰减因子为0.5。当我们根据新的观察结果来更新Q值时,衰减因子会将之前的Q值减半,而不是完全保留之前的Q值。这样做的目的是让机器人更加快速地调整策略,不过分依赖之前的经验。
  3. 接下来,我们将即时奖励 深度强化学习之 PPO 算法_算法_14 和未来奖励 深度强化学习之 PPO 算法_神经网络_15
  4. 最后,我们将期望的总回报和更新后的Q值相加,得到最新的Q值:深度强化学习之 PPO 算法_强化学习_16
为什么要引入神经网络?

Q-Learning 就是用 Q表格 计算 Q 值。

当状态和行为的数量非常庞大时,储存所有数据的 Q 表格会占用非常多的资源。

使用神经网络可以直接学习状态、行为、Q值的关系,输入状态,就能得到每个行为的Q值。

神经网络在这的功能:从存储 3 个值的排列组合,到只存储状态。
 


实现 Q-Learning

实现 DQN 算法

 


PPO 算法 = DQN算法 + 演员-评论家算法 + 策略梯度算法

PPO 算法沿用了 AC 算法的整体框架。

就是调整学习率。学习率表示向前的步长。

步长太大,尽管学得快,但会导致后期无法收敛于最优解;步长太小,则会导致学得很慢,学到黄花菜都凉了。

在训练过程中,当模型的更新幅度过大时,会调整更新幅度。

但是进行了这样的调整:机器每向前更新一步,就会与更新前作比较,如果这一步“迈”得太大,就会调整这次更新的幅度。

实现 PPO

用深度强化学习玩动作类游戏


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
2ByFsHD6kzN2