理解actor-critic

要想深入理解还得系统地看书看公式。下面提供两个不同的视角,看看能不能帮助你理解。

视角一:从Q-Learning过渡到Actor-Critic

经典的Q-learning可以拆成两部分:一部分是Q(s,a)存储了在状态s下执行a动作后,执行greedy策略的期望收益,另外一部分是在决定执行哪一个动作的时候,把每个候选的a代入到Q(s,a),求出具体的值后,根据e-greedy策略来选择其中一个a作为真正执行的动作。这里用到的e-greedy策略是非参数化(因为e是一个固定值)的,是个固定的策略,所以通常被我们忽略掉这部分,注意力都放在Q值更新上;但如果把这个e-greedy策略替换成参数化的策略,那么就变成了actor-critic。上述所谓的第一部分就是critic,第二部分就是actor。从这个角度看,Q-learning可以视为actor为固定策略的特殊的actor-critic。

视角二:从Policy Gradient过渡到Actor-Critic

Policy Gradient经典算法REINFORCE的基本思路是,用pi(s,a)来直接决定在s状态下,选择动作a的概率。每次学习的时候,在s状态采取动作a,然后follow当前policy一条路走到黑,看看最后的return是多少。如果return不错,那么把pi(s,a)的值稍微加大一点,鼓励下次继续选择动作a。但是每当现有policy稍微一迭代更新,在s状态采取动作a后,依照这个policy开始一条路走到黑最后的return就变化,那么就会导致我们一下子鼓励a,一下子不鼓励a,不利于训练(尤其是用神经网络等非线性模型作为Function Approximator的时候)。一个改进思路是干脆我们把return的平均值记下来,取代之前用的单次simulation的return,作为s状态采取动作a到底好不好的度量。好处是return的平均值(近似Q(s,a))变化就慢多了,起码正负号稳定多了。这里用return平均值近似的Q(s,a)就是Critic。前面的pi(s,a)就是actor。

其实还有一个有点邪门的视角:actor就好比是你,critic就好比你妈。你做一件事情,比如抓蜜蜂,结果被蜇疼了,下次你再抓蜜蜂的概率就减小了,这个就是policy gradient。你刚手伸出去要去抓蜜蜂,你妈就说,别抓,十有八九会被蜇疼。你听了后停止了抓蜜蜂,并且下次抓蜜蜂的概率减小了,这个就是actor-critic。你每次看见蜜蜂的时候都问你妈,抓蜜蜂好还是不抓蜜蜂好?你妈说不抓蜜蜂好,通常你听你妈的话就不抓蜜蜂了,偶尔心情不好的时候(以e的概率)还要去抓蜜蜂,这个就是Q-learning。那么妈妈是怎么知道抓蜜蜂会疼的?当然她也是抓过蜜蜂的(Q-value update)。

------------------------------------------------------------------------------------------------------------

https://blog.csdn.net/coffee_cream/article/details/70194456

Temporal-difference (TD) learning可以说是增强学习的中心,它集成了蒙特卡洛思想和动态编程(dynamic programming, DP)思想,像蒙特卡洛方法一样,TD 方法不需要环境的动态模型,直接从经验经历中学习,像 DP 方法一样,TD 方法不需要等到最终的 outcome 才更新模型,它可以基于其他估计值来更新估计值。

猜你喜欢

转载自blog.csdn.net/wasefadg/article/details/81169712
今日推荐