由于全文太长,只好分开发了。(已完结!在专栏查看本系列其他文章)
个人博客可以直接看全文~
本系列为在学习赵世钰老师的“强化学习的数学原理” 课程后所作笔记。
课堂视频链接https://www.bilibili.com/video/BV1sd4y167NS/
第三章 贝尔曼最优公式
- 直观上地说,选择action value比较大的action,将他设置为1,其他设置为0。不断如此迭代,就可以找到最优的策略。
- 严格证明则需要贝尔曼最优公式。
如果对于所有的s,都有 v π 1 ( s ) ≥ v π 2 ( s ) f o r a l l s ∈ S v_{\pi_1}(s) \ge v_{\pi_2}(s) for\ all \ s \in S vπ1(s)≥vπ2(s)for all s∈S ,那么说 π 1 \pi_1 π1 是比 π 2 \pi_2 π2要好的。
- 问题一:这样最优的策略是否存在?
- 问题二:这个最优的策略是唯一的吗?
- 问题三:策略是stochastic还是deterministic?
- 问题四:如何找到这么一个策略?
贝尔曼最优公式
- 贝尔曼最优公式堂堂登场!
v ( s ) = m a x ( ∑ a ( π ( a ∣ s ) q ( s , a ) ) ) , s ∈ S v(s) = max(\underset{a}{\sum} (\pi(a|s) q(s,a))) , s \in S v(s)=max(a∑(π(a∣s)q(s,a))),s∈S
可以发现,假设当 a = a ′ a = a' a=a′时, q ( s , a ) q(s,a) q(s,a) 最大,那么令$\pi(a|s) = \begin{equation} \left{ \begin{array}{lr} 1 &a = a’ \ 0 & a\not= a’ \end{array} \right. \end{equation} $ ,就会得到最大的 v ( s ) v(s) v(s)。
即 v ( s ) = m a x ( ∑ a ( π ( a ∣ s ) q ( s , a ) ) ) = m a x a ∈ A ( s ) ( q ( s , a ) ) v(s) = max(\underset{a}{\sum} (\pi(a|s) q(s,a)))=\underset{a\in A(s)}{max}(q(s,a)) v(s)=max(a∑(π(a∣s)q(s,a)))=a∈A(s)max(q(s,a))
- 将公式变为矩阵-向量形式
v = m a x π ( r π + γ P π v ) v = \underset{\pi}{max}(r_\pi + \gamma P_\pi v) v=πmax(rπ+γPπv)
我们设一个映射 f ( v ) : = m a x π ( r π + γ P π v ) f(v) := \underset{\pi}{max}(r_\pi + \gamma P_\pi v) f(v):=πmax(rπ+γPπv) ,那么原式就可以化为 v = f ( v ) v=f(v) v=f(v)
一些概念
FixedPoint 不动点: 对于映射 f : X → X f : X \to X f:X→X ,存在 x ∈ X , f ( x ) = x x \in X, f(x) = x x∈X,f(x)=x ,那么x是不动点。
Contraction mapping : 在映射后两点的距离更小。 ∣ ∣ f ( x 1 ) − f ( x 2 ) ∣ ∣ = γ ∣ ∣ x 1 − x 2 ∣ ∣ , γ < 1 ||f(x_1)-f(x_2)|| = \gamma||x_1 - x_2|| ,\gamma < 1 ∣∣f(x1)−f(x2)∣∣=γ∣∣x1−x2∣∣,γ<1 。(例如 f ( x ) = 0.5 x f(x) = 0.5x f(x)=0.5x 就是一个contraction mapping)
contraction Theorem
如果 f f f是一个contraction mapping。那么一定有
- 存在一个 x ∗ x* x∗ , 满足 f ( x ∗ ) = x ∗ f(x^*) = x^* f(x∗)=x∗ ,即 x ∗ x^* x∗ 是一个FixedPoint
- 这样的 x ∗ x^* x∗ 一定有且只有一个
- 可以通过迭代算法求出这个 x ∗ x^* x∗ : x k + 1 = f ( x k ) x_{k+1} = f(x_k) xk+1=f(xk) ,当 k → ∞ k \to \infty k→∞ 时,有 x k → x ∗ x_k \to x^* xk→x∗
例如 f ( x ) = 0.5 x f(x) = 0.5x f(x)=0.5x ,那么 f ( 0 ) = 0 , x ∗ = 0 f(0) = 0, x^* = 0 f(0)=0,x∗=0 ,给出任意x,在不断进行 x = 0.5 x x = 0.5x x=0.5x 迭代后,会收敛于 0 0 0
求解贝尔曼最优公式
可以证明在贝尔曼最优公式中 f ( v ) = m a x π ( r π + γ P π v ) f(v) = \underset{\pi}{max}(r_\pi + \gamma P_\pi v) f(v)=πmax(rπ+γPπv) 是一个contraction mapping,那么 v = f ( v ) v = f(v) v=f(v) 。于是就可以通过迭代算法来求解出来。
假设 v ∗ v^* v∗ 是贝尔曼最优公式的解,即是他的不动点。即 v ∗ = m a x π ( r π + γ P π v ∗ ) v^* = \underset{\pi}{max}(r_\pi + \gamma P_\pi v^*) v∗=πmax(rπ+γPπv∗)
所以就可以利用contraction Theorem中的迭代算法来求得 v ∗ v^* v∗
所以贝尔曼最优公式就是特殊的贝尔曼公式。
