上文我们已经理解强化学习的基础概念以及其目标是找到一个策略 pi 最大化未来累计奖励。同时介绍了几种常用的寻找最优策略的方法。在强化学习中还会将这些方法分类为model-based和model-free,value-based和policy-based,其中value-base的学习方法又分为off-policy和on-policy。本文主要介绍这些方法的区别和概念。
model-based和model-free
model-based基于模型的方法是让agent学习一种模型,这里的模型是指在环境中状态转移概率P,以及采取action后的奖励函数R进行建模,然后利用模型做出动态规划得到最佳策略。比如,如果agent已知任何状态下转移到任意状态的转移概率,以及在状态下执行任何动作的回报,那就可以通过动态规划问题求解得到一个回报最高的策略了。这种通过建立环境模型的方法就是model-based方法。
model-free方法则不需对环境进行建模,通常情况下去对环境统计出模型的情况也很少。model-free是对状态 s_t 下执行动作a_t能获得未来累计奖励进行估计,上文中MC和TD并没有对状态转移概率和奖励建立模型,所以是属于model-free方法。(个人理解model-free并不能说并没有模型,比如对累计奖励的预估也是模型,只是不需要先学一个概率转移模型,而是在agent和environment实时交互中优化策略。)
所以一个强化学习算法是model-based还是model-free主要是看是否有对状态转移概率以及奖励建模,如果有就是model-based,否则就是model-free。
value-based和policy-based
value-based基于值的强化方法
on-policy和off-policy
介绍value-based之前先了解on-policy和off-policy。这两者的主要区别就是在于更新值函数时的策略。on-policy,只使用了当前策略产生的样本,而off-policy,并不一定使用当前策略产生的样本。主要区别是看学习者和策略者是不是同一个,如果是一个边决策边学习,就是on-policy,比如SARSA;否则不是同一个,通过学习历史信息对策略优化,就是off-policy,比如Q-learning.
SARSA和Q-learning
接下来初步了解下上文提到的SARSA和Q-learning算法。
SARSA算法的基础思路就是他的名字(State-Action-Reward-State'-Action')。先基于 epsilon -贪婪法对当前状态S选择动作A,进入下一个状态S'并得到即时回报R,在新状态S’下再基于 epsilon -贪婪法选择下一个动作A',更新价值函数:
如此循环迭代,直到收敛。
(其中 epsilon -贪婪法指设置一个小的 epsilon值,1- epsilon的概率选择目前认为是最大行为价值的行为, epsilon的概率从动作空间中选择动作)
Q-learning的基本思路是先基于 epsilon -贪婪法对当前状态S选择动作A, 进入下一个状态S'并得到即时回报R,(这里和SARSA一样),接下来使用贪婪法选择A’来更新价值函数(SARSA是使用 epsilon -贪婪法选择A’去更新价值函数)
价值函数更新后,新的动作是基于状态S’,用 epsilon -贪婪法重新得到。(SARSA是直接使用A’作为下一步开始执行动作)
SARSA和Q-learning都是价值迭代,通过价值函数的更新来更新当前策略,然后通过策略得到新的状态和即时奖励,循环迭代直到价值函数和策略收敛,得到最优价值函数和最优策略。
对于价值函数我们也可以通过神经网络来进行近似表示。对于状态价值函数,输入是状态s,输出是状态价值V(s,w)。对于动作价值函数,一种是输入状态s和动作a,输出对于动作价值q(s,a,w),一种是只输入状态s,动作集合有多少个动作就有多少个q(s,a_i,w)。
Deep Q-learning和Q-learning的区别在于,价值函数Q值不通过状态和动作计算出来,而是通过深度网络Q网络得到。Q网络的输入是状态向量,输出是所有动作在该状态下的动作价值函数Q。
以上方法均是基于值函数来学习,但是在应用中主要有以下不足:
- 对连续动作处理不足;2.无法解决随机策略问题;3.在拥有重复状态环境下处理不足。
policy-based基于策略的强化方法
基于策略的强化学习,是直接对策略进行建模,用一个神经网络表示策略,对动作输出一个输出概率来表示。即学习
,给定状态s,得到选择的动作a的概率。
在基于值的方法中,选择动作的策略是不变的,使用贪婪选择法,而在基于策略中是通过概率分布选择的。
首先它是可以处理离线动作空间的,从s输出一个离散分布,选择每个动作的概率;其次,对于连续空间,可以先假设动作服从一个分布,然后从s输出一个动作的均值,选择动作时就可以利用分布选择。
在基于价值算法中,是根据值函数对策略进行改进,对比基于策略的方法,他的决策更为肯定就是选择价值最高的;而基于策略方法,是直接对策略进行迭代,直到累计回报最大。
最后借鉴一张图片总结下强化学习算法框架
参考:
https://blog.csdn.net/wordyang1/article/details/76557608
https://www.cnblogs.com/pinard/p/10137696.html
https://zhuanlan.zhihu.com/p/65847946