通过把Policy Based 和Value Based结合起来的Actor Critic,解决了Value Based如Q-Learning的无法解决连续和高维度问题,也解决了Policy Based的效率低速度慢的问题。但是同样的,像DQN一样,在使用神经网络进行值估计的时候,神经网络的相关性都太强了,梯度更新相互依赖,导致网络将会学不到东西。
有两种解决方法:DDPG和AC3。
DDPG
Actor-Critic+DQN=Deep Deterministic Policy Gradient。
先将这个词拆成三部分:
- Deep:使用神经网络估计值。
- Policy Gradient:根据学习到的策略分布输出筛选动作。
- Deterministic:斩钉截铁的输出一个动作。因为以往的随机策略会先学习动作分布再随机进行筛选,在某些场景中的动作维度(动作多或联系性动作)可能极大,如果想精确的学习到概率分布需要很大的样本。但是不管动作维度怎么样,最大概率肯定是只有一个,所以确定性策略就直接输出概率最大的动作就可以了。
Actor-Critic+DQN,两者如何融合?
Actor-Critic:Actor网络学习动作策略,Critic网络用于评价动作。
DQN:记忆库,两套网络解决网络相关性。
DQN中的两套网络是为了计算价值函数,那么还是Value Based,现在加入了Policy Based后,同样也需要两套网络来计算策略函数。即使用双Actor神经网络和双Critic神经网络共有4套网络的方法来改善神经网络更新的收敛性。
对于Actor的双网络 ,有用来估计的新网络和延迟的旧网络。估计网络用来输出实时的动作,而旧网络则是用来更新价值网络系统的.。
对于Critic的双网络,也有估计的新网络和延迟的旧网络。它们都输出根据状态的输出相应的value价值,估计网络根据actor的动作进行输出,而旧网络会根据actor旧网络得到的动作进行输出。
太绕了,于是博主自己画了一张图:
即先从一个状态S出发,通过Actor新网络得到动作A并执行,存入记忆库。然后从记忆库中采样,得到Si,Ai,Si’,Si’通过Actor旧网络得到动作Ai’,用于给Critic更新参数,即输入到Critic旧网络中得到一个“现实目标值”Q’,即可以算出在这个状态下的动作总值y,和Critic的估计值进行均方误差就可以更新Critic网络了。(AC中是用前后V值差的均方来更新,现在使用了旧网络能够更加的客观)而actor的网络用Critic新网络得到的Q值来评价动作的好坏,即就用来更新了Actor网络。(AC中是用Reward的TD误差来更新,现在通过旧网络同样更客观了)
Critic 参数更新公式为:
L = 1 N ∑ i ( y i − Q ( s i , a i ∣ θ Q ) ) 2 L=\frac{1}{N}\sum_i(y_i-Q(s_i,a_i|\theta^Q))^2 L=N1i∑(yi−Q(si,ai∣θQ))2