【自动驾驶决策规划】POMDP之Introduction

news2024/11/20 14:42:07

文章目录

  • 前言
  • Markov Property
  • Markov Chain
  • Hidden Markov Model
  • Markov Decision Process
  • Partially Observable Markov Decision Process
    • Background on Solving POMDPs
    • POMDP Value Iteration Example
  • 推荐阅读与参考

前言

本文是我学习POMDP相关的笔记,由于个人能力所限,可能有所纰漏,还请批评指正。初学者,希望和大家共同学习.

Markov Property

Markov Property或者Markov assumption:
未来状态的概率分布只与当前状态有关,而与过去状态无关

P s s ′ \boldsymbol{P}_{ss^{\prime}} Pss为从状态 s s s转移到状态 s ′ s' s的概率,又称一步状态转移概率。 P \boldsymbol{P} P为一步状态转移矩阵。

P [ S t + 1 ∣ S t ] = P [ S t + 1 ∣ S 1 , … , S t ] P s s ′ = P [ S t + 1 = s ′ ∣ S t = s ] P = [ P 11 P 12 … P 1 n P 21 P 22 … P 2 n … … P n 1 P n 2 … P n n ] \begin{gathered} P[S_{t+1}|S_t]=P[S_{t+1}|S_1,\ldots,S_t] \\ \boldsymbol{P}_{ss^{\prime}}=P[S_{t+1}=s^{\prime}|S_{t}=s] \\ \boldsymbol{P}=\begin{bmatrix}P_{11}&P_{12}&\ldots&P_{1n}\\P_{21}&P_{22}&\ldots&P_{2n}\\\ldots\\\ldots\\P_{n1}&P_{n2}&\ldots&P_{nn}\end{bmatrix} \end{gathered} P[St+1St]=P[St+1S1,,St]Pss=P[St+1=sSt=s]P= P11P21Pn1P12P22Pn2P1nP2nPnn

矩阵有以下性质:

  1. 非负性性质, P i j ≥ 0 P_{ij}\geq0 Pij0
  2. 行元素和为1, ∑ P i j = 1 , i = 1 , 2 , . . . , n \sum P_{ij}=1,i=1,2,...,n Pij=1,i=1,2,...,n

在这里插入图片描述
以上图为例, S 1 S_1 S1转移到自身和 S 2 S2 S2的概率分别为0.1,0.9; S 2 S_2 S2转移到自身和 S 1 S1 S1的概率分别为0.2,0.8。状态转移矩阵可表示为: P = [ 0.1 0.9 0.8 0.2 ] \boldsymbol{P}=\begin{bmatrix}0.1&0.9\\0.8&0.2\end{bmatrix} P=[0.10.80.90.2]

Markov Chain

时间和状态都是离散的马尔科夫过程称为马尔科夫链Markov Chain.Markov Chain可由二元组 ( S , P ) (S, P) (S,P)描述。状态转移概率不随时间发生变化。

Hidden Markov Model

隐马尔可夫模型(Hidden Markov Model, HMM)是一种统计模型,它用于描述一个含有隐含未知参数的马尔可夫过程。通俗地说,就是在一个不可见的马尔可夫链的基础上,系统会根据内部状态的转移次数发生事件,从而观察到系统的输出。它在语音识别、自然语言处理、生物信息学等领域得到了广泛应用。

在HMM中,假设只有观测到的状态是可见的,而模型的内部状态是不可见的。每个状态对应于一个观测值,然后通过观测值的分布和状态转移的概率来定义模型的参数。具体来说,HMM由以下几部分组成:

  • 状态序列:用S表示,其中,每个状态s属于状态集合 S = S 1 , S 2 , . . . , S N S={S_1, S_2, ..., S_N} S=S1,S2,...,SN
  • 观测序列:用O表示,其中,每个观测 o o o属于观测集合 O = O 1 , O 2 , . . . , O M O={O_1, O_2, ..., O_M} O=O1,O2,...,OM
  • 状态转移概率:用 P i j P_{ij} Pij表示,表示从状态 S i S_i Si转移到状态 S j S_j Sj的概率,其中 P = P i j P={P_{ij}} P=Pij是一个 N × N N\times N N×N的矩阵,且对于所有的 i i i ∑ j = 1 N P i j = 1 \sum_{j=1}^{N}P_{ij}=1 j=1NPij=1
  • 观测概率:用 B i ( o ) B_{i}(o) Bi(o)表示,表示在状态 S i S_i Si时观测到 o o o的概率,其中 B = B i ( o ) B={B_i(o)} B=Bi(o)是一个 N × M N\times M N×M的矩阵,且对于所有的 i i i ∑ o = 1 M B i ( o ) = 1 \sum_{o=1}^{M}B_{i}(o)=1 o=1MBi(o)=1
  • 初始状态概率:用 π i {\pi_{i}} πi表示,表示初始状态为 S i S_i Si的概率,其中 π = π i \pi={\pi_{i}} π=πi是一个长度为 N N N的向量,且对于所有的 i i i ∑ i = 1 N π i = 1 \sum_{i=1}^{N}\pi_{i}=1 i=1Nπi=1
    在这里插入图片描述

Markov Decision Process

MDP(Markov Decision Process)是用于描述智能体与环境交互的数学模型。MDP 可以表示为五元组 ( S , A , P , R , γ ) (S, A, P, R, \gamma) (S,A,P,R,γ)

  • S S S:状态集合, S = { s 1 , s 2 , . . . , s n } S=\{s_1, s_2, ..., s_n\} S={s1,s2,...,sn},包含了车道、环境、世界模型等信息。
  • A A A:动作集合, A = { a 1 , a 2 , . . . , a m } A=\{a_1, a_2, ..., a_m\} A={a1,a2,...,am},车辆的决策空间,包含换道、跟随、超车等等。
  • P ( s ′ ∣ s , a ) P(s'|s, a) P(ss,a):状态转移概率,表示在当前状态 s s s 下,采取动作 a a a 后转移到状态 s ′ s' s 的概率, s ′ ∈ S s'\in S sS s , s ′ ∈ S s, s'\in S s,sS a ∈ A a\in A aA
  • R ( s , a , s ′ ) R(s, a, s') R(s,a,s):即时奖励函数,表示在当前状态 s s s 下,采取动作 a a a 后转移到状态 s ′ s' s 所获得的即时奖励, s , s ′ ∈ S s, s'\in S s,sS a ∈ A a\in A aA
  • γ ∈ ( 0 , 1 ) γ\in(0,1) γ(0,1):折扣因子,表示当前奖励和未来奖励的权重比例。

MDP 将智能体的行动转化为对状态的选择,使得智能体可以基于经验策略不断学习并优化其决策。因此,MDP 在强化学习等领域广泛应用。

在这里插入图片描述

自动驾驶车辆的决策问题本质上是寻找到一个最优的策略,对于当前状态 S S S,通过一定的动作 A A A,使之达到目标状态。因此可以通过一个目标函数去最大化总的奖励: ∑ t = 0 ∞ γ t R ( S t + 1 ∣ S t ) \sum_{t=0}^\infty\gamma^tR(S_{t+1}|S_t) t=0γtR(St+1St)动作 a a a可以用policy π \pi π去定义: a = π ( s ) a=\pi(s) a=π(s),policy则是我们所求的MDP的解。
问题的解可以通过动态规划的方法进行求解,通过迭代求解最大的奖励,最后回溯得到解。假设状态转移概率矩阵 P P P和奖励函数 R R R已知,通过对以下过程的不断迭代可以得到最优解: π ( s t ) ← a r g m a x { ∑ s t + 1 P ( S t + 1 ∣ S t ) ( R ( S t + 1 ∣ S t ) + γ V ( s t + 1 ) ) } V ( s t ) ← ∑ s t + 1 P π ( s t ) ( S t + 1 ∣ S t ) ( R π ( s t ) ( S t + 1 ∣ S t ) + γ V ( s t + 1 ) ) \begin{aligned}\pi(s_t)&\leftarrow\mathrm{argmax}\left\{\sum_{s_t+1}P(S_{t+1}|S_t)\left(R(S_{t+1}|S_t)+\gamma V(s_{t+1})\right)\right\}\\V(s_t)&\leftarrow\sum_{s_{t+1}}P_{\pi(s_t)}(S_{t+1}|S_t)(R_{\pi(s_t)}(S_{t+1}|S_t)+\gamma V(s_{t+1}))\end{aligned} π(st)V(st)argmax{st+1P(St+1St)(R(St+1St)+γV(st+1))}st+1Pπ(st)(St+1St)(Rπ(st)(St+1St)+γV(st+1))

V ( s t ) V(s_t) V(st)为价值函数(Value Function),表示奖励中的累计折扣。求解过程就是在 s t s_t st s t + 1 s_{t+1} st+1之间不断迭代直到收敛。

对于动态规划迭代求解的过程,这篇文章简洁地揭示了相关原理(Value Iteration Algorithm):Brief Introduction to the Value Iteration Algorithm.

MDP比较重要的一点就是如何设计奖励函数,通常需要考虑以下因素:

  1. 抵达目标点同时不偏离路径;
  2. 安全性;
  3. 舒适性。

除此之外,状态空间、状态转移矩阵等等的设计都是十分重要的。

Partially Observable Markov Decision Process

Partially Observable Markov Decision Process (POMDP) 是一个基于马尔可夫决策过程 (MDP) 的扩展模型,其状态不完全可观测。POMDP 可以表示为一个七元组 ( S , A , P , R , Z , O , γ ) (S, A, P, R, Z, O,γ) (S,A,P,R,Z,Oγ),其中:

  • S S S:状态集合, S = { s 1 , s 2 , . . . , s n } S=\{s_1, s_2, ..., s_n\} S={s1,s2,...,sn},包含了车道、环境、世界模型等信息。
  • A A A:动作集合, A = { a 1 , a 2 , . . . , a m } A=\{a_1, a_2, ..., a_m\} A={a1,a2,...,am},车辆的决策空间,包含换道、跟随、超车等等。
  • P ( s ′ ∣ s , a ) P(s'|s, a) P(ss,a):状态转移概率,表示在当前状态 s s s 下,采取动作 a a a 后转移到状态 s ′ s' s 的概率, s ′ ∈ S s'\in S sS s , s ′ ∈ S s, s'\in S s,sS a ∈ A a\in A aA
  • R ( s , a , s ′ ) R(s, a, s') R(s,a,s):即时奖励函数,表示在当前状态 s s s 下,采取动作 a a a 后转移到状态 s ′ s' s 所获得的即时奖励, s , s ′ ∈ S s, s'\in S s,sS a ∈ A a\in A aA
  • γ ∈ ( 0 , 1 ) γ\in(0,1) γ(0,1):折扣因子,表示当前奖励和未来奖励的权重比例。
  • Z Z Z 是观测集合, Z = { z 1 , z 2 , . . . , z n } Z=\{z_1, z_2, ..., z_n\} Z={z1,z2,...,zn}
  • O ( z ∣ s ′ , a ) O(z|s', a) O(zs,a) 是观测函数 O : S × A × Z → [ 0 , 1 ] O: S \times A \times Z \rightarrow [0, 1] O:S×A×Z[0,1],定义了在执行一个动作 a ∈ A a \in A aA 后,在一个状态 s ∈ S s \in S sS 产生一个观测 z ∈ Z z \in Z zZ 的概率。

在这里插入图片描述

在POMDP中,将一组观测值(observation)添加到模型中。我们不能直接观测到当前的状态,而是通过整个模型的全域和状态给予的观测值去估计当前的状态是什么。观测值通常是一个概率,因此需要建立相应的观测模型。

Background on Solving POMDPs

这部分内容参考了https://cs.brown.edu/research/ai/pomdp/tutorial/pomdp-solving.html。

对于CO-MDP(完全可观的MDP)问题,我们需要找到状态state与动作action的映射关系;而对于POMDP问题,我们需要找到基于状态的概率分布与动作之间的映射关系。在接下来的部分,我们用belief state(信念状态)来代替基于状态的概率分布(probability distribution over states);用belief space(信念空间)来代替概率空间probability space (the set of all possible probability distributions)。

接下来这幅图将会描述信念空间的概念。为了简化问题,我们采用2个状态的POMDP问题进行阐述。从前面的内容中可知,信念状态代表概率分布,所有的概率之和应该为1.因此在2 state POMDP问题中,若一个状态的概率为 p p p,这另一个状态概率为 1 − p 1-p 1p.于是,整个信念空间可以用一个线段进行描述。线段宽度可忽略。

在这里插入图片描述

1D belief space for a 2 state POMDP

如图所示,若信念状态非常靠近最左边时,意味着处于状态 s 2 s_2 s2的概率为1,反之这是处于状态 s 1 s_1 s1的概率为1。值得注意的是,将2 state推广到高维空间时亦成立。

接着,若假设我们从一个指定的信念状态 b b b开始,然后采取动作 a 1 a_1 a1并且收到观测值 z 1 z_1 z1,于是下一个信念状态就可以完全确定了。事实上,若我们假定有有限个的动作actions以及有限个数量的观测值observations,给定一个信念状态,就可以确定接下来的信念状态。

下图显示了上述的过程:两个state( s 1 , s 2 s_1,s_2 s1,s2),两个actions( a 1 , a 2 a_1,a_2 a1,a2)以及三个observations( z 1 , z 2 , z 3 z_1,z_2,z_3 z1,z2,z3),黑色竖线段为起始的信念状态。
在这里插入图片描述
上图显示了所有可能的信念状态。总结一下:对于一个起始的信念状态,若产生一个动作并且得到相应的观测值,就可以确定下一个信念状态。不过对于一个POMDP问题中,在产生一个action之前,每一个最终的信念状态都会对应相应的概率,而这样的信念状态(包括相应的observations)有很多,但是对于一个action,下一步的信念状态所对应的概率之和应该为1.

显然,上述的过程符合Markov Property,下一步的信念状态取决于上一步信念状态(以及action和observations)。事实上,我们可以将离散的POMDP问题转化为连续空间的CO-MDP问题,其中连续空间是信念空间。也就意味着我们可以利用value iteration (VI) algorithm进行求解。但是这个算法还需要被进一步完善。

在一些教程里,将其描述为Belief-MDP

MDP的可以很好地利用value iteration进行求解,因为其状态是离散的,每一个状态的价值函数也是离散的。但是POMDP问题则不一样,因为状态(信念状态)是连续的,就需要合理的一个价值函数进行描述。下图是价值函数的一个示例:
在这里插入图片描述
POMDP公式对于上述问题施加了相关约束。核心点就是:对于每一个视野长度horizon length,价值函数是分段线性且凸的piecewise linear and convex (PWLC) 。这就意味着对于每一个值迭代过程,我们只需要找到有限个的线段去构造价值函数。

下图是相应的例子,重合部分的线段取最大值。
在这里插入图片描述

These amount to nothing more than lines or, more generally, hyper-planes through belief space. We can simply represent each hyper-plane with a vector of numbers, which are the coefficients of the equation of the hyper-plane. The value at any given belief state is found by plugging in the belief state into the hyper-planes equation. If we represent the hyper-plane as a vector (i.e., the equation coefficients) and each belief state as a vector (the probability at each state) then the value of a belief point is simply the dot product of the two vectors.

如果我们将超平面表示为一个向量(即方程的系数,又称为alpha vector),并将每个信念状态表示为一个向量(每个状态的概率),那么信念状态的价、值就是两个向量的点积( α ⋅ b \alpha \cdot b αb)。

下面是另一种方式,将信念空间分段,两者其实是等效的:

Instead of linear segments over belief space, another way to view the function is that it partitions belief space into a finite number of segments. We will be using both the value function and this partitioning representation to explain the algorithms. Keep in mind that they are more or less interchangeable.

在这里插入图片描述

The problem now boils down to one stage of value iteration; given a set of vectors representing the value function for horizon ‘h’, we just need to generate the set of vectors for the value function of horizon ‘h+1’

总结一下:给定一组合向量表示某一时间窗口(或称时间步长)'h’的价值函数,我们通常需要推导出时间窗口 ‘h+1’ 的价值函数的向量集合。

但是,连续状态空间的确会带来进一步的问题。在离散状态空间中的每次值迭代中,我们可以通过遍历所有可能的下一个状态来找到一个状态的新值。然而,对于连续状态 CO-MDPs,我们无法枚举所有可能的状态,因为它们是"无限"的。

接下来将会介绍一系列方法用以解决上述问题。

POMDP Value Iteration Example

接下来是一个horizon length为3的例子。依旧是两个state( s 1 , s 2 s_1,s_2 s1,s2),两个actions( a 1 , a 2 a_1,a_2 a1,a2)以及三个observations( z 1 , z 2 , z 3 z_1,z_2,z_3 z1,z2,z3)

Horizon 1 value function

对于horizon=1的情况,我们只关心即刻的奖励,因此价值函数就变成了即刻奖励的函数,而不再考虑未来奖励的影响(就是不用考虑折扣因子 γ \gamma γ的影响)。

对于此问题,我们有两个state和两个action,因此我们有四种行为和状态的组合,每种组合有不同的价值:
r ( s 1 , a 1 ) , r ( s 2 , a 1 ) , r ( s 1 , a 2 ) , r ( s 2 , a 2 ) r(s_1,a_1),r(s_2,a_1),r(s_1,a_2),r(s_2,a_2) r(s1,a1),r(s2,a1),r(s1,a2),r(s2,a2)
这些价值是离散的(基于离散state的POMDP),但是若是在一个特定的信念状态去执行一个特定的action,这个值就变得容易获得。我们只需使用信念状态的概率分布作为每个state价值的权重。

用一个简单例子来进一步理解:若执行action a 1 a_1 a1时,价值为 r ( s 1 , a 1 ) = 1 , r ( s 2 , a 1 ) = 0 r(s_1,a_1)=1,r(s_2,a_1)=0 r(s1,a1)=1,r(s2,a1)=0,执行action a 2 a_2 a2时,价值为 r ( s 1 , a 2 ) = 0 , r ( s 2 , a 2 ) = 1.5 r(s_1,a_2)=0,r(s_2,a_2)=1.5 r(s1,a2)=0,r(s2,a2)=1.5。若当前的信念状态为 [ 0.25 , 0.75 ] [0.25,0.75] [0.25,0.75](意味着我们“相信”当前有75%的可能在 s 2 s_2 s2,有25%的可能在 s 1 s_1 s1),则可得到执行 a 1 a_1 a1的价值为: 0.25 × 1 + 0.75 × 0 = 0.25 0.25 \times 1 + 0.75 \times 0 = 0.25 0.25×1+0.75×0=0.25,执行 a 2 a_2 a2的价值为: 0.25 × 0 + 0.75 × 1.5 = 1.125 0.25 \times 0 + 0.75 \times 1.5 = 1.125 0.25×0+0.75×1.5=1.125。我们可以用下图在信念空间上显示这些值。

在这里插入图片描述

Horizon 1 value function

可以看到,每一个action对应的即时奖励都指定了一段在信念空间上的线性函数。基于特定的信念状态,我们会去选择能带来更高收益的动作。上图中对于绿色部分的信念空间,显然选择 a 2 a_2 a2会带来更高的收益,而蓝色部分的信念空间,选择 a 1 a_1 a1会带来更高的收益。

Horizon 2 value function
接下来介绍Horizon 2 value function的情况。

我们的目的是找到在每个信念状态中,仅使用两种行动的最佳策略。这个问题比较复杂,我们将问题拆解,去依次回答如下3个问题:

  1. 如何在给定一个action和observation的情况下计算单个信念状态的价值。
  2. 如何在只给定action的情况下计算一个信念状态的价值。
  3. 如何计算一个信念状态的价值.

V(b) given a and z

首先从第一个问题开始:给定一个特定的信念状态 b b b,如何计算在执行action a 1 a_1 a1并收到观测值observation z 1 z_1 z1的情况下的价值。

在horizon=2的情况下,当前每个信念状态的价值就是即时行动的价值加上下一个行动的价值。因为我们固定了即时行动的action,所以总的流程其实类似于horizon=1的情况。

来看下图的例子:
左边是即时奖励的函数,右边是Horizon=1时的价值函数。 a 2 a_2 a2的即时奖励函数是虚线,我们不必去考虑它(因为我们已经给定了action a 1 a_1 a1)。

在这里插入图片描述

Value of a fixed action and observation

我们定义 T T T是在给定 a 1 , z 1 a_1,z_1 a1,z1下,从信念状态 b b b转移到 b ′ b' b的函数。从 b ′ b' b的角度去看,很容易决定选择哪一个action能够带来更高的收益。上图的 b ′ b' b落在绿色的区域,意味着对于Horizon=2的情况,若我们首先选择 a 1 a_1 a1,且观测到了 z 1 z_1 z1,那么接下来选择 a 2 a_2 a2会给我们带来更大的收益。显然,我们知道所有需要计算价值的变量,知道了即时奖励的值,知道转移到 b ′ b' b后的最佳的价值,只需要将两者相加,就可以求得在给定 a 1 , z 1 a_1,z_1 a1,z1时, b b b状态下的价值。

我们可以通过重复上一节的步骤计算任意的一个信念状态的价值(即刻回报+转换后的价值)。接下来我们希望找到所有的信念状态的价值(横轴上[0,1]中每一个点的价值)。

Horizon=1时的价值函数是基于转移后的信念状态 b ′ b' b的函数, b ′ b' b则是在给定 a 1 , z 1 a_1,z_1 a1,z1下基于初始信念状态 b b b的转移函数( b ′ = τ ( b , a 1 , z 1 ) b'=\tau(b,a_1,z_1) b=τ(b,a1,z1))。因此,我们可以根据horizon=1的价值函数,在整个信念空间上构造一个函数,这个函数内置了转移函数 b ′ = τ ( b , a 1 , z 1 ) b'=\tau(b,a_1,z_1) b=τ(b,a1,z1)

在这里插入图片描述

Transformed value function

接着,我们可以使用 S ( a i , z j ) S(a_i,z_j) S(ai,zj)去代表上述的函数(transformed value function)。现在,如果我们要找到一个给定 ( a i , z j ) (a_i,z_j) (ai,zj)的信念状态,只需要将 S ( a i , z j ) S(a_i,z_j) S(ai,zj)和即时奖励 r ( s i , a i ) r(s_i,a_i) r(si,ai)相加即可。

PS:值得注意的是,这个函数 S ( a i , z j ) S(a_i,z_j) S(ai,zj)也是PWLC的。

V(b) given a
接着上面的问题,对于给定的 ( a i , z j ) (a_i,z_j) (ai,zj),我们可以通过上述的方法知道一个信念状态 b b b的价值。然而,通常情况下,observation z z z是不可知的,我们不能保证就能观测到给定的 z j z_j zj值。因此,我们给出下面的例子,进一步对问题进行解释:

如图所示, b b b在给定动作 a 1 a_1 a1的情况下,可能会出现三种观测值 z 1 , z 2 , z 3 z_1,z_2,z_3 z1,z2,z3,并导致三种可能的结果。

解决这个问题很简单:如果我们知道给定观测值 z j z_j zj后的信念状态的结果,那么即便我们不知道观测值,我们也可以计算信念状态的价值:用每个观察结果 z j z_j zj出现的概率进行加权得即可
在这里插入图片描述

PS:我们之前展示的 S ( a 1 , z 1 ) S(a_1,z_1) S(a1,z1)实际上是观测概率的因素。我们声称它是每个信念状态 b b b对固定动作 a i a_i ai以及给定观测值 z j z_j zj的下一个信念状态 b ′ b' b,实际上, S ( a i , z j ) S(a_i,z_j) S(ai,zj)函数并不是我们所声称的那样。 S ( a i , z j ) S(a_i,z_j) S(ai,zj)函数其实已经内置了观测的概率。

在这个例子中(有三个可能的observation),每一个 z i z_i zi都有对应的 S S S函数。很明显可以得到一个结论:下一步要采取的最佳行动不仅取决于最初的信念状态,还取决于我们得到的确切观测结果

在这里插入图片描述

Transformed value function for all observations

Horizon=2时的价值不仅仅取决于给定的动作 a 1 a_1 a1,还取决于下一步的动作。对于给定的信念状态和观测值,我们可以查看 S S S函数分区,以决定下一步要做的最佳操作是什么。
在这里插入图片描述

如下图所示,若给定信念状态 b b b,动作 a 1 a_1 a1,我们很容易从图中知道接下来的策略:若观测到 z 1 z_1 z1,则执行 a 2 a_2 a2;若观测到 z 2 , z 3 z_2,z_3 z2,z3,则执行 a 1 a_1 a1。对于信念空间中的每一个点,我们都可以划这么一条竖线,得到在这个信念状态下的策略:如果观察到 z i z_i zi,则选择 a j a_j aj 下图的策略就是 ( z 1 : a 2 , z 2 : a 1 , z 3 : a 1 ) (z_1:a_2, z_2:a_1, z_3:a_1) (z1:a2,z2:a1,z3:a1)

在这里插入图片描述
V(b)

但是,上述的过程只是代表了在信念状态 b b b中能够获得的最优策略,并不代表是所有信念状态 b i b_i bi的最优策略。接着来看下面的图:

下图中,上面的矩形中不同的颜色代表了对应于不同最优策略 b b b的范围。我们有三个观测值 z 1 , z 2 , z 3 z_1,z_2,z_3 z1,z2,z3,两个动作 a 1 , a 2 a_1,a_2 a1,a2,因此我们有8种对应的策略,但并非每一种策略都是有效的(任何情况下非最优),比如图中这个例子就只有4种策略。

同样地,可以为这之中的四个构造相应的线段,最后会得到如下图所示的线性分段凸函数。
在这里插入图片描述

注意上图中的每一个线段代表了两个动作:action a 1 a_1 a1以及依赖于观测的另一个动作。

在这里插入图片描述
若我们的模型中只有一个动作 a 1 a_1 a1,那么上述的过程就已经结束了,我们也得到了Horizon=2的价值函数。但是,我们还有其他action。如上图所示,对 a 2 a_2 a2也重复上述过程,可得到 a 2 a_2 a2的价值函数以及具有两个分区的图。

接着,我们将 a 1 a_1 a1 a 2 a_2 a2两个价值函数进行叠加,从而去找到哪一个action能够提高更大的价值。
在这里插入图片描述
同样是构造PWLC,可以注意到有些线段对于两个动作来说都是无效的,因此被剪枝。最后得到下图所示的Horizon=2时的价值函数。

在这里插入图片描述

PS:上述有好几个不同的 a 1 a_1 a1,仅代表初始步骤相同,选择哪个区域相当于选择对应的策略。比如对于品红色区域,我们第一个步骤选择 a 1 a_1 a1,之后再依据观测值选择剩余的动作。

Horizon 3 value function
Horizon=3的情况类似于Horizon=2的情况。首先对 a 1 a_1 a1构造价值函数(同样利用 S S S函数将Horizon=2的价值函数进行转移变换)。如下图所示,有六种有效策略。

在这里插入图片描述
接着构造 a 2 a_2 a2的价值函数,如下图所示,有4种有效策略。

在这里插入图片描述
将两者叠加可得到,
在这里插入图片描述
我们将两个可能的action的情况结合起来,并进行剪枝(去掉无法达到最优的策略),那么最终右下图就是horizon=3的Value Function了。

在这里插入图片描述


目前解决POMDP的方法有预测模型法。引入置信度,将问题转化为统计上的MDP进行解决。

在这里插入图片描述


下面这张图很好地显示了四种Markov模型之间的关系。
在这里插入图片描述

推荐阅读与参考

[1] https://cs.brown.edu/research/ai/pomdp/tutorial/(讲解MDP和POMDP,非常通俗易懂)
[2] http://cbl.eng.cam.ac.uk/pub/Intranet/MLG/ReadingGroup/pomdp.pdf
[3] https://besjournals.onlinelibrary.wiley.com/doi/full/10.1111/2041-210X.13692
[4] [规划问题] 1 POMDP值迭代的直观理解
[5] https://www.cs.cmu.edu/~ggordon/780-fall07/lectures/POMDP_lecture.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1010966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云CDN缓存配置及优化-oss绑定CDN缓存自动刷新功能

参考阿里云官网文档:https://help.aliyun.com/practice_detail/603170 1.缓存时间配置 在缓存管理中,可以方便地指定目录和文件后缀名在CDN节点上的缓存时间,缓存时长配置的长短,取决于源站对该文件的变更频率。我们需要分析下业务…

前后端分离毕设项目之springboot同城上门喂遛宠物系统(内含文档+源码+教程)

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

项目:UDP聊天室

UDP UDP(User Datagram Protocol)是一种无连接、不可靠、面向数据报的传输协议。与TCP相比,UDP更加轻量级,不提供像TCP那样的可靠性和流控制机制,但具备较低的通信延迟和较少的开销。 UDP具有以下几个特点&#xff1…

数据中台基本概念

数据中台 数据中台(Data Midway)是一个用于集成、存储、管理和分析数据的中心化平台或架构。它的目标是将组织内散布在各个系统、应用程序和数据源中的数据整合到一个可统一访问和管理的中心位置,以支持数据驱动的决策制定和业务需求。 数据…

单片机第三季-第二课:STM32存储器、电源和时钟体系

目录 1,存储器 1.1,位带操作 2,启动模式 3,电源管理系统 4,复位和时钟 4.1,复位 4.2,时钟 1,存储器 ICode总线: 该总线将Cortex™-M3内核的指令总线与闪存指…

Flutter插件之阿里百川

上一篇:Flutter插件的制作和发布,我们已经了解了如何制作一个通用的双端插件,本篇就带领大家将阿里百川双端sdk制作成一个flutter插件供项目调用! 目录 登录并打开控制台,创建应用:填写应用相关信息开通百川…

Vue--1.6计算属性

概念&#xff1a;基于现有的数据&#xff0c;计算出来的新属性。依赖的数据变化&#xff0c;自动重新计算。 语法&#xff1a; 1&#xff09;声明在computed配置项中&#xff0c;一个计算属性对应一个函数。 2&#xff09;使用起来和普通属性一样使用{{计算属性名}} <!do…

Java/ExecutorService中多线程服务ExecuteService的使用

什么是ExecutorService ExecutorService 是 Java 中的一个接口&#xff0c;它扩展了 Executor 接口&#xff0c;并提供了更多的方法来处理多线程任务。它是 Java 中用于执行多线程任务的框架之一&#xff0c;可以创建一个线程池&#xff0c;将多个任务提交到线程池中执行。Exe…

【深度学习】 Python 和 NumPy 系列教程(十五):Matplotlib详解:2、3d绘图类型(1):线框图(Wireframe Plot)

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 线框图&#xff08;Wireframe Plot&#xff09; 一、前言 Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名&#xff0…

C++模版基础

代码地址 gitgithub.com:CHENLitterWhite/CPPWheel.git 专栏介绍 本专栏会持续更新关于STL中的一些概念&#xff0c;会先带大家补充一些基本的概念&#xff0c;再慢慢去阅读STL源码中的需要用到的一些思想&#xff0c;有了一些基础之后&#xff0c;再手写一些STL代码。 (如果你…

Flink、Spark、Hive集成Hudi

环境描述: hudi版本:0.13.1 flink版本:flink-1.15.2 spark版本:3.3.2 Hive版本:3.1.3 Hadoop版本:3.3.4 一.Flink集成Hive 1.拷贝hadoop包到Flink lib目录 hadoop-client-api-3.3.4.jar hadoop-client-runtime-3.3.4.jar 2.下载上传flink-hive的jar包 flink-co…

【蓝桥杯选拔赛真题60】Scratch旋转风车 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch旋转风车 一、题目要求 编程实现 二、案例分析 1、角色分析

腾讯mini项目-【指标监控服务重构】2023-07-30

今日已办 调研 CPU & Memory Cadivisor &#xff23;adivisor -> Prometheus -> (Grafana / SigNoz Web) google/cadvisor: Analyzes resource usage and performance characteristics of running containers. (github.com) services:cadvisor:image: gcr.io/ca…

基于Qt5的计算器设计

Qt5的信号与槽 ✨描述&#xff1a;信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽&#xff0c;实际就是观察者模式(发布-订阅模式)。当某个事件发生之后&#xff0c;比如&#xff0c;按钮检测到自己被点击了一下&#xff0c;它就会发出一个信号&#xff08;signal&#xff09…

视图/存储过程/触发器

视图 介绍 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视 图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 通俗的讲&#xff0c;视图只保存了查询的SQL逻辑&#xff0c;不保存…

手机悬浮提词器怎么设置?分享三个简单的操作方法

在现代社会中&#xff0c;手机已成为人们生活中必不可少的一部分。随着科技的不断发展&#xff0c;手机的功能也越来越强大&#xff0c;如今手机悬浮提词器已成为许多人工作或学习时必备的工具。下面将分享三个简单的操作方法&#xff0c;帮助大家更好地设置手机悬浮提词器。 打…

关于时空数据的培训 GAN:实用指南(第 01/3 部分)

第 1 部分&#xff1a;深入了解 GAN 训练中最臭名昭著的不稳定性。 一、说明 GAN 是迄今为止最受欢迎的深度生成模型&#xff0c;主要是因为它们最近在图像生成任务上产生了令人难以置信的结果。然而&#xff0c;GAN并不容易训练&#xff0c;因为它们的基本设计引入了无数的不稳…

图像处理的创意之旅:逐步攀登Python OpenCV的高峰

目录 介绍OpenCV简介安装OpenCV加载和显示图像图像处理目标检测图像处理的高级应用视频处理综合案例&#xff1a;人脸识别应用总结 介绍 欢迎来到本篇文章&#xff0c;我们将一起探索如何使用Python中的OpenCV库进行图像处理和计算机视觉任务。无论您是初学者还是有一定编程…

Excel VLOOKUP 初学者教程:通过示例学习

目录 前言 一、VLOOKUP的用法 二、应用VLOOKUP的步骤 三、VLOOKUP用于近似匹配 四、在同一个表里放置不同的VLOOKUP函数 结论 前言 Vlookup&#xff08;V 代表“垂直”&#xff09;是 excel 中的内置函数&#xff0c;允许在 excel 的不同列之间建立关系。 换句话说&#x…

运算符——“MySQL数据库”

各位CSDN的uu们好呀&#xff0c;今天&#xff0c;小雅兰的内容是MySQL数据库里面的操作符&#xff0c;下面&#xff0c;让我们进入操作符的世界吧&#xff01;&#xff01;&#xff01; 算术运算符 比较运算符 逻辑运算符 位运算符 运算符的优先级 拓展&#xff1a;使用正…