动态规划求解强化学习任务——策略评估[解析解]
动态规划求解强化学习任务——策略评估[解析解]
目录
上一节我们提到,策略迭代(Policy Iteration)是动态规划(Dynamic Programming,DP)求解强化学习任务的一种方式,共包含两个部分:策略评估,策略改进。
本节主要介绍:在策略评估过程中使用解析方式求解最优价值函数。
希望感兴趣的小伙伴能够看完,虽然使用解析方式求解最优价值函数是很原始的,文章最后也点出时间复杂度极高的问题,但求解析解的推导过程有助于我们对马尔可夫决策过程的理解更加深刻。另外,非常感谢白板大神的视频!!
解析方式求解最优价值函数逻辑梳理
策略评估的基本目标是:在p (s′ , r ∣ s , a ) p(s',r \mid s,a) p(s′,r∣s,a)已知的条件下,给定策略 π \pi π,对于 ∀ s ∈ S \forall s \in \mathcal S ∀s∈S,求出价值函数( V π ( s ) , q π ( s , a ) V_\pi(s),q_\pi(s,a) Vπ(s),qπ(s,a))。
换句话说 → \to → 将状态集合 S \mathcal S S中的所有状态对应的价值函数 全部求出来。
设状态集合 S \mathcal S S中包含 ∣ S ∣ |\mathcal S| ∣S∣个状态, V π ( s ) V_\pi(s) Vπ(s)可以表示成如下的向量形式(向量形状 → ∣ S ∣ × 1 \to |\mathcal S| \times 1 →∣S∣×1):
Vπ ( s ) =( V π ( s 1 ) V π ( s 2 ) V π ( s 3 ) . . . V π ( s∣S∣ ) ) V_\pi(s) = \begin{pmatrix} V_\pi(s_1) \\ V_\pi(s_2) \\ V_\pi(s_3)\\ ...\\ V_\pi(s_{|\mathcal S|}) \end{pmatrix} Vπ(s)=⎝⎜⎜⎜⎜⎛Vπ(s1)Vπ(s2)Vπ(s3)...Vπ(s∣S∣)⎠⎟⎟⎟⎟⎞
向量中的每个元素均表示某一个状态的价值函数。
回顾贝尔曼期望方程(Markov Decision Process, MDP):
这里使用 sk s_k sk区别一下表示价值函数向量的 Vπ ( s ) V_\pi(s) Vπ(s)中的s s s。
V π ( s k ) = E π [ G t ∣ S t = s k ] = E π [ R t + 1 + γ V π ( S t + 1 ) ] = ∑ a ∈ A π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ V π ( s ′ ) ] \begin{aligned} V_\pi(s_k) & = E_\pi[G_t \mid S_t=s_k] \\ & = E_\pi[R_{t+1} + \gamma V_\pi(S_{t+1})] \\ & = \sum_{a \in \mathcal A}\pi(a \mid s) \sum_{s',r}p(s',r \mid s,a)[r + \gamma V_\pi(s')] \\ \end{aligned} Vπ(sk)=Eπ[Gt∣St=sk]=Eπ[Rt+1+γVπ(St+1)]=a∈A∑π(a∣s)s′,r∑p(s′,r∣s,a)[r+γVπ(s′)]
由于 V π ( s ) V_\pi(s) Vπ(s)本身是向量, s k , s ′ s_k,s' sk,s′均是状态集合 S \mathcal S S中的元素,同样地, V π ( s k ) , V π ( s ′ ) V_\pi(s_k),V_\pi(s') Vπ(sk),Vπ(s′)也都是向量 Vπ ( s ) V_\pi(s) Vπ(s)中的元素。如果将 V π ( s k ) , V π ( s ′ ) V_\pi(s_k),V_\pi(s') Vπ(sk),Vπ(s′)看作未知量 M , M ′ M,M' M,M′,将贝尔曼期望方程展开成如下形式:
M = ∑ a ∈ A π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ M ′ ] = ∑ a ∈ A ∑ s ′ , r π ( a ∣ s ) p ( s ′ , r ∣ s , a ) [ r + γ M ′ ] = ∑ a ∈ A ∑ s ′ ∑ r { r [ π ( a ∣ s ) p ( s ′ , r ∣ s , a ) ] + γ M ′ [ π ( a ∣ s ) p ( s ′ , r ∣ s , a ) ] } \begin{aligned} M & = \sum_{a \in \mathcal A}\pi(a \mid s) \sum_{s',r}p(s',r \mid s,a)[r + \gamma M'] \\ & = \sum_{a \in \mathcal A}\sum_{s',r}\pi(a \mid s)p(s',r \mid s,a)[r + \gamma M'] \\ & = \sum_{a \in \mathcal A}\sum_{s'}\sum_{r}\{r[\pi(a \mid s)p(s',r \mid s,a)] + \gamma M'[\pi(a \mid s)p(s',r \mid s,a)]\} \end{aligned} M=a∈A∑π(a∣s)s′,r∑p(s′,r∣s,a)[r+γM′]=a∈A∑s′,r∑π(a∣s)p(s′,r∣s,a)[r+γM′]=a∈A∑s′∑r∑{r[π(a∣s)p(s′,r∣s,a)]+γM′[π(a∣s)p(s′,r∣s,a)]}
观察上述展开式:
等式右侧是关于 a , s ′ , r a,s',r a,s′,r的三重累加(积分)形式,并且奖励(Reward) r r r, γ \gamma γ, p ( s ′ , r ∣ s , a ) p(s',r \mid s,a) p(s′,r∣s,a)都是已知条件,策略 π \pi π是给定的, M M M和 M ′ M' M′之间仅是纯粹的线性关系(一次函数关系)。
一个包含 ∣ S ∣ |\mathcal S| ∣S∣个元素的 V π ( s ) V_\pi(s) Vπ(s)向量 → \to → 需要对应 ∣ S ∣ |\mathcal S| ∣S∣个方程的 ∣ S ∣ |\mathcal S| ∣S∣元方程组对其进行求解 → \to → 使用矩阵运算对方程组的解进行表示。
准备工作
在明确了最终目标 → \to → 对 ∣ S ∣ |\mathcal S| ∣S∣元方程组进行求解,需要做一些准备工作:
奖赏(Reward)函数
奖赏(Reward)函数是马尔可夫决策过程中的知识点,在推导贝尔曼最优方程时,我们使用回报(Return)作为评价标准而不是奖赏函数。
设定 R \mathcal R R为奖励集合, r ( s , a ) r(s,a) r(s,a)表示智能体在 t t t时刻状态 St = s S_t=s St=s下执行动作a a a时得到的 期望奖赏(expected reward)。其公式表达如下:
r ( s , a ) = E [ R t + 1 ∣ S t = s , A t = a ] = ∑ r r ∑ s ′ p ( s ′ , r ∣ s , a ) \begin{aligned} r(s,a) & = \mathbb E[R_{t+1} \mid S_t=s,A_t=a] \\ & = \sum_rr\sum_{s'} p(s',r \mid s,a) \end{aligned} r(s,a)=E[Rt+1∣St=s,At=a]=r∑rs′∑p(s′,r∣s,a)
继续观察,我们发现 s ′ s' s′只存在于条件概率中,根据 概率密度积分等于1的规则(以 离散型随机变量为例):
∑ s ′ p (s′ ) = 1 \sum_{s'}p(s') = 1 s′∑p(s′)=1
我们可以继续对上式进行化简:
r ( s , a ) = E [ R t + 1 ∣ S t = s , A t = a ] = ∑ r r ∑ s ′ p ( s ′ , r ∣ s , a ) = ∑ r r × p ( r ∣ s , a ) \begin{aligned} r(s,a) & = \mathbb E[R_{t+1} \mid S_t=s,A_t=a] \\ & = \sum_rr\sum_{s'} p(s',r \mid s,a) \\ & = \sum_r r\times p(r \mid s,a) \\ \end{aligned} r(s,a)=E[Rt+1∣St=s,At=a]=r∑rs′∑p(s′,r∣s,a)=r∑r×p(r∣s,a)
回过头来,我们看 r r r是否可以化简,通过观察, r r r不仅在条件概率中存在,条件概率外同样也存在一个 r r r,这个 r r r是不能化简的。
状态转移(State Transition)函数
状态转移(State Transition)函数表示在状态 s s s情况下,执行动作 a a a,状态 s → s ′ s \to s' s→s′的概率。包含以下2种形式:
p ( s ′ , r ∣ s , a ) = P [ S t + 1 = s , R t + 1 = r ∣ S t = s , A t = a ] ( ∑ s ′ ∑ r p ( s ′ , r ∣ s , a ) = 1 ) p ( s ′ ∣ s , a ) = P [ S t + 1 = s ∣ S t = s , A t = a ] ( ∑ s ′ p ( s ′ ∣ s , a ) = 1 ) \begin{aligned} p(s',r \mid s,a) & = P[S_{t+1}=s,R_{t+1}=r \mid S_t=s,A_t=a](\sum_{s'}\sum_rp(s',r \mid s,a)=1) \\ p(s' \mid s,a) & = P[S_{t+1}=s \mid S_t=s,A_t=a](\sum_{s'}p(s'\mid s,a)=1) \\ \end{aligned} p(s′,r∣s,a)p(s′∣s,a)=P[St+1=s,Rt+1=r∣St=s,At=a](s′∑r∑p(s′,r∣s,a)=1)=P[St+1=s∣St=s,At=a](s′∑p(s′∣s,a)=1)
这两种都可以表示马尔可夫决策过程(MDP)中的状态转移概率。
第一行是我们常见的动态特性函数(连续)/状态转移矩阵(离散),既考虑到进入下一状态的随机性,又考虑到下一状态获得奖赏的随机性;第二行只体现出智能体执行动作后进入下一状态的随机性。
条件概率密度积分
该部分只是推导过程中出现的一些手法,熟练的小伙伴可以跳过~
- 无论离散型随机变量还是连续型随机变量,它的概率之和均为1 → \to → 可以理解成对一个事件所有可能发生的情况全部考虑到了,那么这件事情就 必然会发生。
使用数学语言表达如下:
某事件A \mathcal A A存在m m m种可能发生的状态以及对应状态发生的概率如下:
A = { a 1 , a 2 , a 3 , . . . , a m } P ( A )= { p ( a 1 ) , p ( a 2 ) , p ( a 3 ) , . . . , p ( a m ) } \begin{aligned} \mathcal A & = \{a_1,a_2,a_3,...,a_m\} \\ P(\mathcal A) & = \{p(a_1),p(a_2),p(a_3),...,p(a_m)\} \\ \end{aligned}AP(A)={a1,a2,a3,...,am}={p(a1),p(a2),p(a3),...,p(am)}
∑ a ∈ Ap(a)= ∑ i = 1m p( a i )=1 \sum_{a \in \mathcal A} p(a) = \sum_{i=1}^m p(a_i) = 1a∈A∑p(a)=i=1∑mp(ai)=1 - 在步骤1的基础上,添加一个事件B \mathcal B B,将概率换成条件概率,即:
在事件B \mathcal B B发生的条件下,A \mathcal A A事件所有可能发生情况之和: 毫无疑问,仍然是1 → \to → 感觉B \mathcal B B发不发生和A \mathcal A A没什么关系。
数学语言表达如下:
∑ a ∈ Ap(a∣B)= ∑ i = 1m p( a i ∣B)=1 \sum_{a \in \mathcal A} p(a \mid \mathcal B) = \sum_{i=1}^m p(a_i \mid \mathcal B) = 1a∈A∑p(a∣B)=i=1∑mp(ai∣B)=1 - 继续观察,我们在步骤2的基础上添加一个关于 a aa的函数:
a + 1= f ( a ) → ∑ a ∈ A f ( a ) p ( a ∣ B ) = ? \begin{aligned} a+1 & = f(a) \to \sum_{a \in \mathcal A} f(a) p(a \mid \mathcal B) =? \end{aligned}a+1=f(a)→a∈A∑f(a)p(a∣B)=?
这个新式子我们是否可以用步骤1的结论套用吗 → \to → 显然是不行的。我们可以将上式展开:
∑ a ∈ A f ( a ) p ( a ∣ B )= ∑ i = 1 m f ( a i ) p ( a i ∣ B ) = f ( a 1 ) p ( a 1 ∣ B ) + f ( a 2 ) p ( a 2 ∣ B ) + . . . + f ( a m ) p ( a m ∣ B ) \begin{aligned} \sum_{a \in \mathcal A} f(a) p(a \mid \mathcal B) & = \sum_{i=1}^mf(a_i)p(a_i \mid \mathcal B) \\ & = f(a_1)p(a_1 \mid \mathcal B) + f(a_2)p(a_2 \mid \mathcal B) +...+ f(a_m)p(a_m \mid \mathcal B) \end{aligned}a∈A∑f(a)p(a∣B)=i=1∑mf(ai)p(ai∣B)=f(a1)p(a1∣B)+f(a2)p(a2∣B)+...+f(am)p(am∣B)
这明显是个数学期望的格式。上述式子明显是函数和对应概率的加权结果,仅使用步骤1,2的结论无法对该式进行化简。 - 继续观察,我们将步骤3中的函数f ( a ) f(a) f(a)进行替换,替换成一个以 a,B a,\mathcal Ba,B为条件的条件概率 p(c∣a,B) p(c \mid a, \mathcal B)p(c∣a,B):
∑ a ∈ Ap(c∣a,B)p(a∣B) \sum_{a \in \mathcal A}p(c\mid a, \mathcal B)p(a \mid \mathcal B)a∈A∑p(c∣a,B)p(a∣B)
通过条件概率公式,将上式化简成如下式子(这里用到了1个条件概率的变形公式):
p ( c ∣ a , B ) p ( a ∣ B )= p ( c , a ∣ B ) ∑ a ∈ A p ( c ∣ a , B ) p ( a ∣ B )= ∑ a ∈ A p ( c , a ∣ B ) \begin{aligned} p(c\mid a, \mathcal B)p(a \mid \mathcal B) & = p(c, a\mid \mathcal B) \\ \sum_{a \in \mathcal A}p(c\mid a, \mathcal B)p(a \mid \mathcal B) & = \sum_{a \in \mathcal A}p(c, a\mid \mathcal B) \end{aligned}p(c∣a,B)p(a∣B)a∈A∑p(c∣a,B)p(a∣B)=p(c,a∣B)=a∈A∑p(c,a∣B)
此时再对a a a求积分,使用步骤2的操作,我们可以将a a a消掉。得到如下结果:
∑ a ∈ Ap(c,a∣B)=p(c∣B) \sum_{a \in \mathcal A}p(c, a\mid \mathcal B) = p(c \mid \mathcal B)a∈A∑p(c,a∣B)=p(c∣B)
求解过程
首先,将贝尔曼期望方程按 [ r + γ V π ( s ′ ) ] [r + \gamma V_\pi(s')] [r+γVπ(s′)]位置进行展开,分成两个部分:
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ V π ( s ′ ) ] = ∑ a ∈ A π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) r + γ ∑ a ∈ A π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) V π ( s ′ ) \begin{aligned} V_\pi(s) & = \sum_{a \in \mathcal A}\pi(a \mid s) \sum_{s',r}p(s',r \mid s,a)[r + \gamma V_\pi(s')] \\ & = \sum_{a \in \mathcal A}\pi(a \mid s) \sum_{s',r}p(s',r \mid s,a)r + \gamma\sum_{a \in \mathcal A}\pi(a \mid s) \sum_{s',r}p(s',r \mid s,a)V_\pi(s') \end{aligned} Vπ(s)=a∈A∑π(a∣s)s′,r∑p(s′,r∣s,a)[r+γVπ(s′)]=a∈A∑π(a∣s)s′,r∑p(s′,r∣s,a)r+γa∈A∑π(a∣s)s′,r∑p(s′,r∣s,a)Vπ(s′)
我们首先观察第一部分:
∑ a ∈ A π ( a ∣ s )∑ s ′, r p (s′ , r ∣ s , a ) r \sum_{a \in \mathcal A}\pi(a \mid s) \sum_{s',r}p(s',r \mid s,a)r a∈A∑π(a∣s)s′,r∑p(s′,r∣s,a)r
发现其后半部分 ∑ s ′ ,r p ( s ′ , r ∣ s , a ) r \sum_{s',r}p(s',r \mid s,a)r ∑s′,rp(s′,r∣s,a)r正好是奖赏函数的完整形式,我们直接使用奖赏函数进行替换:
∑ a ∈ A π ( a ∣ s ) r ( s , a ) \sum_{a \in \mathcal A}\pi(a \mid s)r(s,a) a∈A∑π(a∣s)r(s,a)
继续观察,该部分仍然能够继续化简,根据上面条件概率密度积分中的步骤4将a消去。
设置 P′ P' P′为概率π , p \pi,p π,p相乘产生的新的概率。化简成如下格式:
∑ a ∈ A π ( a ∣ s ) r ( s , a ) = ∑ a ∈ A ∑ r π ( a ∣ s ) p ( r ∣ s , a ) r = ∑ a ∈ A ∑ r P ′ ( r , a ∣ s ) r = ∑ r P ′ ( r ∣ s ) r = r π ( s ) \begin{aligned} \sum_{a \in \mathcal A}\pi(a \mid s)r(s,a) & = \sum_{a \in \mathcal A}\sum_{r}\pi(a \mid s)p(r \mid s,a)r \\ & = \sum_{a \in \mathcal A}\sum_{r}P'(r,a \mid s)r \\ & = \sum_{r}P'(r\mid s)r \\ & = r_\pi(s) \end{aligned} a∈A∑π(a∣s)r(s,a)=a∈A∑r∑π(a∣s)p(r∣s,a)r=a∈A∑r∑P′(r,a∣s)r=r∑P′(r∣s)r=rπ(s)
实际上,上述式子已经和动作 a a a之间没有任何关系了,只和状态 s s s相关。我们使用 rπ ( s ) r_\pi(s) rπ(s) 对上述式子进行表达。
如果从逻辑角度理解, r π ( s ) r_\pi(s) rπ(s)可以理解成 策略π \pi π对期望奖赏r ( a , s ) r(a,s) r(a,s)的期望。(仅是一个符号表示而已)
r π ( s ) = ∑ a ∈ A π ( a ∣ s ) r ( s , a ) = E [ r ( s , a ) ∣ A t = a , S t = s ] \begin{aligned} r_\pi(s) & = \sum_{a \in \mathcal A}\pi(a \mid s)r(s,a) \\ & = \mathbb E[r(s,a) \mid A_t=a,S_t=s] \end{aligned} rπ(s)=a∈A∑π(a∣s)r(s,a)=E[r(s,a)∣At=a,St=s]
根据上式,一共有 ∣ S ∣ |\mathcal S| ∣S∣个状态,对于任意1个状态 s ∈ S s \in \mathcal S s∈S,都可以得到一个对应的收益数值 r π ( s ) r_\pi(s) rπ(s)进行表示。
和定义价值函数 V π ( s ) V_\pi(s) Vπ(s)类似,同样可以定义一个关于 rπ ( s ) r_\pi(s) rπ(s)的向量(向量形状 → ∣ S ∣ × 1 \to |\mathcal S| \times 1 →∣S∣×1):
rπ ( s ) ={ r π ( s 1 ) r π ( s 2 ) r π ( s 3 ) . . . r π ( s∣S∣ ) } r_\pi(s) = \begin{Bmatrix} r_\pi(s_1) \\ r_\pi(s_2) \\ r_\pi(s_3)\\ ...\\ r_\pi(s_{|\mathcal S|}) \end{Bmatrix} rπ(s)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧rπ(s1)rπ(s2)rπ(s3)...rπ(s∣S∣)⎭⎪⎪⎪⎪⎬⎪⎪⎪⎪⎫
接下来观察第二部分:
γ∑ a ∈ A π ( a ∣ s )∑ s ′, r p (s′ , r ∣ s , a )Vπ (s′ ) \gamma \sum_{a \in \mathcal A}\pi(a \mid s)\sum_{s',r}p(s',r \mid s,a)V_\pi(s') γa∈A∑π(a∣s)s′,r∑p(s′,r∣s,a)Vπ(s′)
观察上式中只有动态特性函数 p ( s ′ , r ∣ s , a ) p(s',r \mid s,a) p(s′,r∣s,a)中包含 r r r,其余部分均不包含 r → r \to r→ 将 r r r消去;
γ∑ a ∈ A π ( a ∣ s )∑ s ′ p (s′ ∣ s , a )Vπ (s′ ) \gamma \sum_{a \in \mathcal A}\pi(a \mid s)\sum_{s'}p(s' \mid s,a)V_\pi(s') γa∈A∑π(a∣s)s′∑p(s′∣s,a)Vπ(s′)
中间的 p ( s ′ ∣ s , a ) p(s' \mid s,a) p(s′∣s,a)就是状态转移函数。
继续向下整理,将 ∑s′ \sum_{s'} ∑s′符号移到 ∑a∈A \sum_{a \in \mathcal A} ∑a∈A左边:
γ∑ s ′ ∑ a ∈ A π ( a ∣ s ) p (s′ ∣ s , a )Vπ (s′ ) \gamma \sum_{s'}\sum_{a \in \mathcal A}\pi(a \mid s)p(s' \mid s,a)V_\pi(s') γs′∑a∈A∑π(a∣s)p(s′∣s,a)Vπ(s′)
然后来观察中间的项:
∑ a ∈ A π ( a ∣ s ) p (s′ ∣ s , a ) \sum_{a \in \mathcal A}\pi(a \mid s)p(s' \mid s,a) a∈A∑π(a∣s)p(s′∣s,a)
发现依然可以使用条件概率密度积分中步骤4的方式消去 a a a,进行简化(定义P P P为概率π , p \pi,p π,p相乘产生的新的概率):
∑ a ∈ A π ( a ∣ s ) p ( s ′ ∣ s , a ) = ∑ a ∈ A P ( s ′ , a ∣ s ) = P ( s ′ ∣ s ) = P π ( s , s ′ ) \begin{aligned} \sum_{a \in \mathcal A}\pi(a \mid s)p(s' \mid s,a) & = \sum_{a \in \mathcal A} P(s',a \mid s)\\ & = P(s' \mid s) \\ & = P_\pi(s,s') \end{aligned} a∈A∑π(a∣s)p(s′∣s,a)=a∈A∑P(s′,a∣s)=P(s′∣s)=Pπ(s,s′)
我们给上述式子定义一个新的符号: P π ( s , s ′ ) P_\pi(s,s') Pπ(s,s′)
第二部分我们将式子整理为:
γ∑ s ′ Pπ ( s ,s′ )Vπ (s′ ) \gamma \sum_{s'}P_\pi(s,s')V_\pi(s') γs′∑Pπ(s,s′)Vπ(s′)
合并2个部分的式子:
Vπ ( s ) =rπ ( s ) + γ∑ s ′ Pπ ( s ,s′ )Vπ (s′ ) V_\pi(s)=r_\pi(s) + \gamma \sum_{s'}P_\pi(s,s')V_\pi(s') Vπ(s)=rπ(s)+γs′∑Pπ(s,s′)Vπ(s′)
解析方式求解最优价值函数逻辑梳理 中我们提到: V π ( s ) V_\pi(s) Vπ(s)表示的是一个向量,我们如何使用合并后的公式来计算向量中的每一个元素呢?
已知 s , s ′ s,s' s,s′都是状态集合 S \mathcal S S中的元素,我们进行这样的设定
→ \to → 它们属于同一个集合,但我们在表示上把它区分开:
令 si s_i si是s s s在状态集合S \mathcal S S中选择的状态;
sj s_j sj是 s′ s' s′在状态集合S \mathcal S S中选择的状态;
我们对某个状态 s i s_i si的状态价值函数进行如下表示:
Vπ (si ) =rπ (si ) + γ∑ j = 1∣ S ∣ Pπ (si ,sj )Vπ (sj ) V_\pi(s_i) = r_\pi(s_i) + \gamma \sum_{j=1}^{|\mathcal S|}P_\pi(s_i,s_j)V_\pi(s_j) Vπ(si)=rπ(si)+γj=1∑∣S∣Pπ(si,sj)Vπ(sj)
此时, V π ( s ) V_\pi(s) Vπ(s)向量中的其中一个元素已经求出,整个向量可以使用这种方式将所有元素全部求出。
Vπ ( s ) =( V π ( s 1 ) V π ( s 2 ) V π ( s 3 ) . . . V π ( s∣S∣ ) ) =( r π ( s 1 ) + γ ∑j=1 ∣S∣ P π ( s 1 , s j ) V π ( s j ) r π ( s 2 ) + γ ∑j=1 ∣S∣ P π ( s 2 , s j ) V π ( s j ) r π ( s 3 ) + γ ∑j=1 ∣S∣ P π ( s 3 , s j ) V π ( s j ) . . . r π ( s∣S∣ ) + γ ∑j=1 ∣S∣ P π ( s∣S∣ , s j ) V π ( s j ) ) V_\pi(s) = \begin{pmatrix} V_\pi(s_1) \\ V_\pi(s_2) \\ V_\pi(s_3)\\ ...\\ V_\pi(s_{|\mathcal S|}) \end{pmatrix}= \begin{pmatrix} r_\pi(s_1) + \gamma \sum_{j=1}^{|\mathcal S|}P_\pi(s_1,s_j)V_\pi(s_j) \\ r_\pi(s_2) + \gamma \sum_{j=1}^{|\mathcal S|}P_\pi(s_2,s_j)V_\pi(s_j) \\ r_\pi(s_3) + \gamma \sum_{j=1}^{|\mathcal S|}P_\pi(s_3,s_j)V_\pi(s_j)\\ ...\\ r_\pi(s_{|\mathcal S|}) + \gamma \sum_{j=1}^{|\mathcal S|}P_\pi(s_{|\mathcal S|},s_j)V_\pi(s_j) \end{pmatrix} Vπ(s)=⎝⎜⎜⎜⎜⎛Vπ(s1)Vπ(s2)Vπ(s3)...Vπ(s∣S∣)⎠⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎜⎛rπ(s1)+γ∑j=1∣S∣Pπ(s1,sj)Vπ(sj)rπ(s2)+γ∑j=1∣S∣Pπ(s2,sj)Vπ(sj)rπ(s3)+γ∑j=1∣S∣Pπ(s3,sj)Vπ(sj)...rπ(s∣S∣)+γ∑j=1∣S∣Pπ(s∣S∣,sj)Vπ(sj)⎠⎟⎟⎟⎟⎟⎞
上式实际上就是策略评估——最优价值函数的解析解了。
如果使用矩阵方式进行表达呢?
我们回头观察 P π ( s , s ′ ) P_\pi(s,s') Pπ(s,s′):
Pπ ( s ,s′ ) =∑ a ∈ A π ( a ∣ s ) p (s′ ∣ s , a ) P_\pi(s,s') = \sum_{a \in \mathcal A}\pi(a \mid s)p(s' \mid s,a) Pπ(s,s′)=a∈A∑π(a∣s)p(s′∣s,a)
从本质上来讲, P π ( s , s ′ ) P_\pi(s,s') Pπ(s,s′)就是以 s , s ′ s,s' s,s′作为自变量,返回的概率值结果。
对于 ∀ s , s ′ ∈ S \forall s,s' \in \mathcal S ∀s,s′∈S( S \mathcal S S里共包含 ∣ S ∣ |\mathcal S| ∣S∣个元素),我们能够产生多少个概率值呢?很明显是 ∣ S ∣ × ∣ S ∣ |\mathcal S| \times |\mathcal S| ∣S∣×∣S∣个。
我们可以将这些概率值结果组成一个矩阵(这里使用表格代替):
s 1s_1 s1 | s 2s_2 s2 | s 3s_3 s3 | … | s ∣ S ∣ s_{\mid\mathcal S\mid} s∣S∣ | |
---|---|---|---|---|---|
s 1s_1 s1 | P π( s 1, s 1) P_\pi(s_1,s_1) Pπ(s1,s1) | P π( s 1, s 2) P_\pi(s_1,s_2) Pπ(s1,s2) | P π( s 1, s 3) P_\pi(s_1,s_3) Pπ(s1,s3) | … | P π( s 1, s ∣ S ∣ ) P_\pi(s_1,s_{\mid\mathcal S\mid}) Pπ(s1,s∣S∣) |
s 2s_2 s2 | P π( s 2, s 1) P_\pi(s_2,s_1) Pπ(s2,s1) | P π( s 2, s 2) P_\pi(s_2,s_2) Pπ(s2,s2) | P π( s 2, s 3) P_\pi(s_2,s_3) Pπ(s2,s3) | … | P π( s 2, s ∣ S ∣ ) P_\pi(s_2,s_{\mid\mathcal S\mid}) Pπ(s2,s∣S∣) |
s 3s_3 s3 | P π( s 3, s 1) P_\pi(s_3,s_1) Pπ(s3,s1) | P π( s 3, s 2) P_\pi(s_3,s_2) Pπ(s3,s2) | P π( s 3, s 3) P_\pi(s_3,s_3) Pπ(s3,s3) | … | P π( s 3, s ∣ S ∣ ) P_\pi(s_3,s_{\mid\mathcal S\mid}) Pπ(s3,s∣S∣) |
… | … | … | … | … | … |
s ∣ S ∣ s_{\mid\mathcal S\mid} s∣S∣ | P π( s ∣ S ∣ , s 1) P_\pi(s_{\mid\mathcal S\mid},s_1) Pπ(s∣S∣,s1) | P π( s ∣ S ∣ , s 2) P_\pi(s_{\mid\mathcal S\mid},s_2) Pπ(s∣S∣,s2) | P π( s ∣ S ∣ , s 3) P_\pi(s_{\mid\mathcal S\mid},s_3) Pπ(s∣S∣,s3) | … | P π( s ∣ S ∣ , s ∣ S ∣ ) P_\pi(s_{\mid\mathcal S\mid},s_{\mid\mathcal S\mid}) Pπ(s∣S∣,s∣S∣) |
我们定义这个矩阵为 P π P_\pi Pπ。
结合 r π ( s ) r_\pi(s) rπ(s)和 V π ( s ) V_\pi(s) Vπ(s),我们重新使用矩阵
我们使用矩阵运算重新表示最优价值函数的解析解:
Vπ =rπ + γPπ Vπ V_\pi = r_\pi + \gamma P_\pi V_\pi Vπ=rπ+γPπVπ
其中:(忘了的小伙伴可以回溯一下- -~)
Vπ =( V π ( s 1 ) V π ( s 2 ) V π ( s 3 ) . . . V π ( s∣S∣ ) ) rπ =( r π ( s 1 ) r π ( s 2 ) r π ( s 3 ) . . . r π ( s∣S∣ ) ) V_\pi = \begin{pmatrix} V_\pi(s_1) \\ V_\pi(s_2) \\ V_\pi(s_3)\\ ...\\ V_\pi(s_{|\mathcal S|}) \end{pmatrix} r_\pi = \begin{pmatrix} r_\pi(s_1) \\ r_\pi(s_2) \\ r_\pi(s_3)\\ ...\\ r_\pi(s_{|\mathcal S|}) \end{pmatrix} Vπ=⎝⎜⎜⎜⎜⎛Vπ(s1)Vπ(s2)Vπ(s3)...Vπ(s∣S∣)⎠⎟⎟⎟⎟⎞rπ=⎝⎜⎜⎜⎜⎛rπ(s1)rπ(s2)rπ(s3)...rπ(s∣S∣)⎠⎟⎟⎟⎟⎞
对 Vπ V_\pi Vπ进行求解(移项 + 求矩阵的逆即可, I I I表示单位矩阵):
V π = r π + γ P π V π→ ( I − P π ) V π = r π→ V π = ( I − P π ) − 1 r π \begin{aligned} V_\pi = r_\pi + \gamma P_\pi V_\pi \\ \to (I - P_\pi)V_\pi = r_\pi \\ \to V_\pi = (I - P_\pi)^{-1}r_\pi \end{aligned} Vπ=rπ+γPπVπ→(I−Pπ)Vπ=rπ→Vπ=(I−Pπ)−1rπ
至此,策略评估——使用解析方式求解状态价值函数的公式推导全部结束,最后我们观察一下求解该方程组的复杂度:
- 求解 Pπ P_\pi Pπ:∣ S ∣ × ∣ S ∣ |\mathcal S|\times|\mathcal S| ∣S∣×∣S∣项元素 → ∣ S∣2 \to |\mathcal S|^2 →∣S∣2
- rπ r_\pi rπ是∣ S ∣ × 1 |\mathcal S|\times1 ∣S∣×1的列向量 → ∣ S ∣ \to |\mathcal S| →∣S∣
最终时间复杂度是( ∣ S ∣ × ∣ S ∣ 2 → ∣ S ∣ 3 |\mathcal S| \times |\mathcal S|^2 \to |\mathcal S|^3 ∣S∣×∣S∣2→∣S∣3),这是一个极高的复杂度。如果状态过多,我们很难求出这个解 → \to → 内存空间不足。
下一节内容
下一节我们会继续讲解策略评估——使用迭代方式求解最优价值函数
相关参考
强化学习-DP-1-策略评估-解析解
深度强化学习原理、算法pytorch实战 —— 刘全,黄志刚编著