文章目录
上一次的记录中讲解了Policy-Gradient的概念和原理,通过学习一个Actor,即利用神经网络预测下一步的action是什么。是Policy-Based的方法,而强化学习中还有另外一个方向,基于Value-Based的方法,训练一个Critic,评判这一个action有多好。
Critic
Critic,它不决定下一次的action是什么。相反,给出一个action,让Critic评估这个action有多好。我们将评估函数记作 V π ( s ) V^\pi(s) Vπ(s),输入state,此时采取了actor π \pi π的策略,未来将会的得到所有reward的总和(不是当下会得到reward)。
这里要注意的是, V π ( s ) V^\pi(s) Vπ(s)主要目的是评价actor π \pi π的策略的好坏。所以即便是在同一个state下,采取不同的actor π \pi π,其计算出来的值也是不同的。用critic预测reward的模式也就是我们之前提的value-based方法。Critic不能单独存在,它需要有一个对应的actor,所以 V π V^\pi Vπ的大小,取决于两个因素,一个是state,一个actor。
如何计算 V π ( s ) V^\pi(s) Vπ(s)
还是以电子游戏为例子
Monte-Carlo based approach
用通俗易懂的方式解释蒙特卡洛的方法:让critic看actor π \pi π玩游戏
假设看到 S a S_a Sa会得到reward的总和是 G a G_a Ga,那么我们的 V π ( s a ) V^\pi(s_a) Vπ(sa)需要和 G a G_a Ga越接近越好。同理,看到 S b S_b Sb得到 G a G_a Ga,那么就需要使得 V π ( s b ) V^\pi(s_b) Vπ(sb)需要和 G b G_b Gb越接近越好。
蒙特卡洛最大的缺点就是耗时,总是需要等每一个episode结束,才能收集完训练数据。
Temporal-difference approach
我们观察到从
s
t
s_t
st采取
a
t
a_t
at得到
r
t
r_t
rt然后转换成
s
t
+
1
s_{t+1}
st+1的过程中,
s
t
s_t
st和
s
t
+
1
s_{t+1}
st+1之间只差了一个
r
t
r_t
rt。所以Temporal-difference采用差分的方式计算
V
π
(
s
)
V^\pi(s)
Vπ(s),即和上图所示一样:
V
π
(
s
t
)
=
V
π
(
s
t
+
1
)
+
r
t
V^\pi(s_t) = V^\pi(s_{t+1}) + r_t
Vπ(st)=Vπ(st+1)+rt
这里解释下为什么是时刻
t
t
t的reward必然比
t
+
1
t+1
t+1要大,
V
π
(
s
)
V^\pi(s)
Vπ(s)评估的是要赢的分数,要赢的分数只会越来越少。
那么我们优化的目标就是 V π ( s t ) − V π ( s t + 1 ) V^\pi(s_t) - V^\pi(s_{t+1}) Vπ(st)−Vπ(st+1)与 r t r_t rt越接近越好。
TD的方法显而易见的好处就是,能在episode还没有结束的时候就开始训练。所以TD的方法通常比MC要快,因为它每一步都在更新。并且MC没办法处理非回合制的任务(自动驾驶,机器人控制等连续决策的过程)。MC无偏但方差大,而TD方法有偏但方差小。
这里强调一下偏差和方差的影响:
无偏(Unbiased)
无偏意味着在无限次采样情况下,估计值的期望等于真实值。换句话说,长远来看,估计不会系统性地偏离真实值。
-
优点
- 准确性:无偏估计在足够多的样本下能够提供准确的估计值,不会系统性地偏离目标。
- 理论保障:在理论分析中,无偏估计通常更容易处理和分析,提供收敛性保证。
-
缺点
- 高方差:无偏估计通常具有较高的方差,因为它完全依赖于样本,而每个episode可能会有较大波动。高方差会导致学习过程中的不稳定性和慢收敛。
有偏(Biased)
有偏意味着估计值的期望不等于真实值。即使在无限次采样情况下,估计值仍会系统性地偏离真实值。
-
优点
- 低方差:有偏估计通常具有较低的方差,因为它引入了某种形式的平滑或预测,使得每次更新不完全依赖于单一的样本。这可以使学习过程更加稳定和快速收敛。
- 实用性:在许多实际应用中,略微的偏差可能是可以接受的,特别是如果这能显著提高收敛速度和稳定性。
-
缺点
- 系统性误差:由于存在偏差,最终的估计可能永远无法准确反映真实值,尤其在策略评估和优化任务中可能导致次优决策。
- 复杂度:有偏估计的理论分析通常更复杂,需要仔细设计以确保偏差在可接受范围内。
实际来看看某一个例子,如上图所示,这里有8次episode,要计算 V π ( s a ) V^\pi(s_a) Vπ(sa)和 V π ( s b ) V^\pi(s_b) Vπ(sb)的值
- V π ( s b ) V^\pi(s_b) Vπ(sb):8次episode里,看到 s b s_b sb之后到游戏结束,得到的reward,6次是1,2次是0,那么 V π ( s b ) = 3 / 4 V^\pi(s_b) = 3/4 Vπ(sb)=3/4,这个很好计算。
- V π ( s a ) V^\pi(s_a) Vπ(sa):如果是用MC,预估出来的 V π ( s a ) = 0 V^\pi(s_a) = 0 Vπ(sa)=0,而如果用TD,预估出来的 V π ( s a ) = 3 / 4 V^\pi(s_a) = 3/4 Vπ(sa)=3/4
所以即使你用同一批训练数据,用了MC或者TD,这两个计算出来的结果也有可能是不一样的。那么哪个更好呢?其实各有各的好。
- 假如说第一个episode中,遇到 s a s_a sa之后,再跳转到 s b s_b sb,就会导致 s b s_b sb的reward是0,你如果用MC就会考虑这个情况。
- 但如果说,遇到 s a s_a sa之后,再跳转到 s b s_b sb,得到reward为0可能只是个巧合,刚好就发生了,和前面遇到的是 s a s_a sa还是 s b s_b sb都没有关系,那么用TD就会更准确。
实践里的折中
在实践中,常常会使用一些折中方法,如混合蒙特卡洛和TD的方法,或者引入启发式策略以在有偏和无偏之间取得平衡。例如,TD( λ λ λ)方法通过引入衰减因子 λ λ λ来控制TD方法与MC方法之间的平衡,结合了两者的优点。
Q-Learning (Another Critic)
刚刚说到Critic是需要外接传入一个action的。假设我们现在的任务是每一个action都是可以穷举的,那么每一次我们都可以计算出 V π ( s t ) V^\pi(s_t) Vπ(st),使得每次都可以选最好的一个action。这个就是Q-Learning的思想。输入state和action到 Q π Q^\pi Qπ中,得到不同action的预测期望值。
完整的Q-Learning如上图所示:
- 初始的 π \pi π先和环境做互动,经过TD或者MC的方法,计算reward得到数据。
- 利用critic V π ( s ) V^\pi(s) Vπ(s)得到 π ′ \pi' π′,这里有一个前提, V π ′ ( s ) > V π ( s ) V^\pi{'}(s) > V^\pi(s) Vπ′(s)>Vπ(s),即新的策略 π ′ \pi' π′在同样的state下,得到的期望值必须要比用策略 π \pi π高。
- 利用argmax计算出得到最好的 π ′ \pi' π′
- 重复1-3的过程,policy就会越来越好
需要注意的是,Q-Learning只适合action是离散的情况。这里只是简单介绍Q-Learning的方法,后面会在其他博客中详细讲解。
Actor-Critic
最后来介绍一下Actor-Critic的方法。其实不难发现可以用Actor生成的action去探索,同时用Critic去评价这个action的好坏。两个方法本身互不影响。并且Critic给出的期望值会比环境本身给出的Reward更准确(环境是随机的,变化太大)。所以两个方法的结合就是Actor-Critic