深度强化学习之 PPO 算法
深度强化学习之 PPO 算法
- 强化学习原理
- 学习策略 = 基于行为价值 & 基于行为概率
- 策略梯度算法:计算状态下所有行为的概率
- 演员 - 评论家算法:一半基于行为价值,一半基于行为概率
- DQN 算法(深度Q网络)
- Q-Learning(Q 值)
- PPO 算法 = DQN算法 + 演员-评论家算法 + 策略梯度算法
强化学习原理
机器学习是把带标签的数据训练模型,使得预测值尽可能接近真实值。
强化学习是通过和环境交互,奖励来训练模型,使得最后获取的奖励最大期望值。
在强化学习中,机器基于环境做出行为,正确的行为能够获得奖励。以获得更多奖励为目标,实现机器与环境的最优互动。
如教狗子握手的时候,如果狗子正确握手,就能得到骨头奖励,不握手就没有。如果咬了主人一口,还会受到惩罚。
长此以往,狗子为了得到更多骨头,就能学会握手这个技能。
- 编程开发三要素:数据结构 + 传统算法 = 程序
- 机器学习三要素:数据 + 学习算法 = 模型
- 强化学习六要素:环境、决策模型、状态、行为、奖励、评论家
如在对弈的环境中,决策模型根据棋盘上的状态,做出落子行为,然后每盘棋的胜负获得奖励。模拟足够多棋局后,评论家就可以通过计算预测出每步棋对整盘棋的价值,为其打分。
通过不断训练,机器以赢更多局棋为目标,不断更新优化,成为一个围棋大师。
可以将学习的场景分为两类:
-
离散场景:机器行为的有限的,如动作类游戏。只有向上、向下、向左、向右这 4 个动作,移动也只能一格一格地走。
可以把每个状态下的所有行为列举出来,用评论家为每个行为打分,通过选择最高分的行为实现最优互动。
因为需要评估每个行为的价值,所以这种学习方法被称为基于行为价值的方法。
-
连续场景:机器的行为是连贯的,如赛车的方向盘转动角度可以在一定区间内任意取值,角度之间可以无限分割。
还有基于行为概率的方法,无需根据每个行为的价值来打分,可以很好地胜任连续场景。
学习策略 = 基于行为价值 & 基于行为概率
基于值的方法需要根据每个行为的价值进行打分,选出价值最高的行为。由于要穷举出所有行为,因此它只适用于离散场景。
- Q-Learning 和 DQN 算法,都属于基于值的强化学习方法。
基于价值的方法无法应对连续场景。只能应用在不连续的、离散的环境下(如围棋或动作类游戏)。
对于动作集合规模庞大、动作连续的场景(如机器人控制领域),其很难学习到较好的结果。
基于价值(Value-Based)的思路是:通过计算行为的价值(Value)来训练模型。
棋盘上一共只有 361 个点位,基于值的方法可以计算出棋子落在每个点位的价值,并进行打分,帮助机器选出最优点位。
好处:基于值的方法能实时反馈。可以根据每个行为的价值进行打分,这个分数就相当于每个行为的实时反馈。但不能应用连续场景上。
而基于策略(Policy-Based)的方法并不需要考虑行为的价值,而是反应调整。
机器会在训练过程中随机抽取一些行为,与环境互动。如果行为获得了奖励,就会提高选择它的概率。以后遇到同样的状态时,有更高的概率再次做出这个行为。
相反,如果未获得奖励,或者受到了惩罚,就保持或者降低该行为的概率。
经过大量训练,最终会得出连续行为的概率分布。
基于这样的原理,一个行为能获得越多奖励,被选择的概率就越大,从而实现机器和环境的最优化互动。
好处:基于策略的方法能应用连续场景上。但不能实时反馈。
策略梯度算法:计算状态下所有行为的概率
基于策略的方法,它的原理是根据行为的概率来训练模型。
实现方式:策略梯度算法引入了一个神经网络,输入层是状态(s),经过隐藏层的分析和计算,输出该状态下每个行为的概率.
策略梯度算法在训练过程中经常遇到一个难题:机器在与环境互动时,难以得到实时反馈,往往要在整个回合结束后才能获得奖励。
如赢一盘棋是正向奖励,输一盘棋是负面奖励,但棋局中某一颗棋子的价值很难即时评估。
想要提高学习效率,就必须想办法提供实时反馈。
有没有办法可以将基于策略在应对连续场景上的优点,和基于值在实时反馈上的优点进行结合呢?
那就是演员-评论家算法。
演员 - 评论家算法:一半基于行为价值,一半基于行为概率
演员-评论家算法就是将基于策略和基于值两个方法相结合的产物。
这个算法分成两半,一半是演员,另一半是评论家。
- 演员:这一半基于策略,策略梯度算法。它有一个神经网络,可以根据行为的概率,选出行为。
- 评论家:这一半基于价值,DQN 算法。它有一个神经网络,可以根据行为的价值进行打分。
将基于策略和基于值的方法相结合,由基于策略的策略网络在连续场景中选出行为,由基于值的价值网络给行为提供实时反馈。
策略网络就像写作业的学生,价值网络就像批改作业的老师。二者结合,反复地写作业、改作业,对比方法,找出最好的方法。
DQN 算法(深度Q网络)
DQN 算法全称 深度Q网络,以 Q-Learning 算法为基础,融合了神经网络。
Q-Learning(Q 值)
Q-Learning 有一个 Q 值(评论家),一个行为的 Q 值越高,表示该行为能带来的奖励越多,越应该被选择。
Q-learning 算法需要知道每个状态下,所有行为的 Q 值。
让机器在每个状态下都能做出 Q 值最大的行为(a)。
因为计算每一个Q值,需要同时记录同一个状态下所有行为。
而当状态和行为的数量非常庞大时,储存所有数据会占用非常多的资源。
使用神经网络可以直接学习状态、行为、Q值的关系,输入状态,就能得到每个行为的Q值。
神经网络在这的功能:从存储 3 个值的排列组合,到只存储状态。
PPO 算法 = DQN算法 + 演员-评论家算法 + 策略梯度算法
PPO 算法沿用了 AC 算法的整体框架。
就是调整学习率。学习率表示向前的步长。
步长太大,尽管学得快,但会导致后期无法收敛于最优解;步长太小,则会导致学得很慢,学到黄花菜都凉了。
在训练过程中,当模型的更新幅度过大时,会调整更新幅度。
但是进行了这样的调整:机器每向前更新一步,就会与更新前作比较,如果这一步“迈”得太大,就会调整这次更新的幅度。