前面几天观看了B站周博磊老师的强化学习纲要系列视频狠狠地补了一下基础,强烈推荐没有基础的同学去补补基础,特别是MP马尔可夫过程、MRP马尔可夫奖励过程、MDP马尔可夫决策过程等,才能更好地理解与掌握后来的强化学习算法的算法思想,出发点是什么。我看完恍然大悟,原来前辈们提出那么多算法就是为了解决这一个根本性的问题,以及结合深度学习解决衍生出的一些问题。看完基础教学视频,学DQN和PG算法也显得没有那么吃力了,果然学知识就如同建房子,基础打牢了才能往上叠,才能建的更高更牢。
PS:本学习笔记参考了周博磊老师的《强化学习纲要》、以及磨菇书EasyRL,只是自己思路的一个整理,毕竟好记性不如烂笔头,难免有错误之处,还望指出。
1. Value-based RL versus Policy-based RL
基于价值的强化学习 VS 基于策略的强化学习
Q-learning、Sarsa、DQN等都是基于value的算法,其中DQN只是对价值函数进行了近似(value function approximation),它们本质上都是先优化价值函数,再从优化后的价值函数中提取最优策略,它们都是基于价值(value-based)的强化学习方法,都是确定性的策略(Deterministic policy),即在每一个状态选择最大Q值对应的行动(获得确定的动作)。而我们今天的主角Policy Gradient是一种更加直接的方法,它直接计算每个状态对应的动作的概率,所以适用于随机策略问题。
value-base方法在很多领域都发挥了它们的优势,但是也有一些局限性。对于这些不适用的场景我们就可以用policy-based方法。
1)首先就是对连续动作处理能力不足, CartPole-v1 环境,在这个环境中只有两个动作:控制小车向左或者向右,这就是离散动作。那连续动作就是动作不光有方向,而且还有大小,对小车施加的力越大,小车的动作幅度也会越大。例如自动驾驶控制方向盘,还请读者自行体会。这个时候,使用离散的方式是不好表达的,而使用基于 Policy Based 方法就很容易。
2)无法解决随机策略(Stochastic Policy)问题。随机性策略就是把当前状态输入网络,输出的是不同动作的概率分布(比如 40% 的概率向左,60% 的概率向右)或者是对于连续动作输出一个高斯分布。而基于 Value Based 的算法是输出是每个动作的动作价值 Q(s , a),然后选择一个价值最大的动作,也就是说输出的是一个确定的动作,这种我们称之为确定性策略(Deterministic Policy)。但是有些问题的最优策略是随机策略,所以此时 基于 Value Based 的方法就不再适用,这时候就可以适用基于 Policy Based 的方法。(这段参考的博客原文)
基于策略函数的方法的优缺点:
2. 策略优化
强化学习解决的就是学习到一个好的策略来指导agent的行动以获得最大的回报Return(Find a policy maximizing total reward)。策略的输出就是在某一状态下应该采取的最合适的action,我们需要的就是找到一个最优(当然很难找到最优,只能说是近似最优)策略。
策略有两种:确定性和随机性的策略。(随机性的策略函数输出的是指定状态的动作概率分布,离散动作比如:有40%的概率往左走,60%的概率往右走;连续动作可能输出高斯分布)
-
策略优化的目标:如同近似价值函数: q q q ,policy-based这一类强化学习方法近似策略函数,给定一个参数为 θ \theta θ的策略函数 π θ ( s , a ) \pi_\theta(s,a) πθ(s,a),找出最好的 θ \theta θ。
-
如何评估策略的质量(好坏):即我们的优化函数是什么?
从环境的角度来看,
-
在离散动作环境中(有结束的环境),我们可以优化第一个状态的价值,因为初始状态的value决定了它后面所有可能得到的奖励
J 1 ( θ ) = V π θ ( s 1 ) = E π θ [ v 1 ] J_1(\theta)=V^{\pi_{\theta}}(s_1)=E_{\pi_\theta}[v_1] J1(θ)=Vπθ(s1)=Eπθ[v1] -
在一个连续环境中(没有终止的环境),我们有两种办法:
-
优化平均价值
J a v V ( θ ) = ∑ s d π θ ( s ) V π θ ( s ) J_{avV}(\theta)=\sum_sd^{\pi_\theta}(s)V^{\pi_\theta}(s) JavV(θ)=s∑dπθ(s)Vπθ(s) -
优化每一步的平均奖励
J a v R ( θ ) = ∑ s d π θ ( s ) ∑ a π θ ( s , a ) R ( s , a ) J_{avR}(\theta)=\sum_sd^{\pi_\theta}(s)\sum_a\pi_\theta(s,a)R(s,a) JavR(θ)=s∑dπθ(s)a∑πθ(s,a)R(s,a)
-
-
其中, d π θ d^{\pi_\theta} dπθ是指策略 π θ \pi_\theta πθ到达稳定状态的一个马尔可夫链, d π θ ( s