DQN--基于价值
强化学习中有开发和探索两个概念
1.开发:就是让agent在已知的(状态-动作)二元分布中根据奖励最大化选择最优动作。
2.探索:让agent在未知二元组分布外,选择其他的动作
开发是让当前期望的奖励最大化,而探索则是让从长远的角度让奖励最大化。在DQN中用到了ϵ−贪心策略,正数ϵ的概率随机选择未知的一个动作,剩下(1 − ϵ)的概率选择已有动过中动作价值最大的动作。在决策过程中,有ϵ 概率选择非贪心的动作,即每个动作被选择的概率为 ϵ/∣A∣,其中|A|表示动作数量,也就是说,每个动作都有同样 ϵ/∣A∣概率的被非贪心的选择。另外还有1−ϵ的概率选择一个贪心策略,因此这个贪心策略被选择的概率则为 1−ϵ + ϵ /∣A∣。在所有的动作集合A中,在某一个时刻,总会有一个动作是智能体认为的最优动作,即a∗=argmax(Q(a,s)) 。
DQN和Q-Learning都是基于价值迭代的算法并且,可能价值迭代不适用我们的场景,因此DQN中的模型学习效果不好,与Q-Learning相比DQN通过建立记忆池减小了数据之间的相关性,同时减小了参数更新的方差,提高的收敛速度。DQN的agent每次从环境中采样得到的四元组数据(状态、动作、奖励、下一状态)存储到回放缓冲区中,训练Q网络的时候再从回放缓冲区中随机采样若干数据来进行训练。
DQN通过神经网络产生当前的Q估计值和Q现实值,产生这两个值的网络结构相同但是参数不同,预测Q估计的网络使用最新的参数值,而预测Q现实的网络则使用先前的参数值。
PPO--基于策略
Policy Gradient是基于Policy做梯度下降优化模型,进而改变动作出现的概率。PG算法的目的是使得策略πθ的期望最大化。
经过推导的:
之后利用梯度上升更新θ∗。
TPRO算法
如果使用PG算法,当策略网络是深度模型时,沿着策略梯度更新参数,如果步长选择不合理就会导致步长突然变差,从而影响训练效果。
为了解决这一问题,在更新参数时需要找到一个信任区域,在这个区域里更新策略时能够得到策略性能的安全性保证,这就是TPRO的主要思想。
设当前状态的策略为πθ,我们需要对θ进行优化从而找到J(θ')≥J(θ)。由于初始状态的S0的分布与策略无关,所以J(θ)的期望值如下:
上图将时序差分残差定义为优势函数A:
为了保证新旧策略足够接近,TRPO 使用KL散度来衡量策略之间的距离,整体优化公式如下:
PPO算法
TPRO算法运算量非常大,因此提出了PPO算法,PPO 的优化目标与 TRPO 相同,但它利用了PPO-惩罚或PPO-截断来进行优化。
PPO惩罚:
PPO截断: