强化学习-马尔可夫模型

文章目录

  • 前言
  • 一、基本概念
  • [二、马尔科夫链(Markov Chain)](#二、马尔科夫链(Markov Chain))
  • [三、隐马尔可夫模型(Hidden Markov Model,HMM)](#三、隐马尔可夫模型(Hidden Markov Model,HMM))
  • [四、马尔可夫决策过程(Markov Decision Process,MDP)](#四、马尔可夫决策过程(Markov Decision Process,MDP))
  • [五、马尔可夫随机场(Markov Random Field,MRF)](#五、马尔可夫随机场(Markov Random Field,MRF))

前言

前文提到了强化学习源自马尔可夫决策过程,本文从马尔可夫概念入手,讲解和马尔可夫有关的模型和概念。


一、基本概念

马尔科夫模型是一个很大的概念,从模型的定义和性质来看,具有马尔科夫性质、并以随机过程为基础模型的随机过程/随机模型被统称为马尔科夫模型 ,其中就包含我们悉知的马尔科夫链马尔科夫决策过程隐马尔科夫链(HMM)马尔科夫随机场等随机过程/随机模型。

一个随机过程中,在已知它所处的状态的条件下,它未来的演变不依赖于它以往的演变。这种已知"现在"的条件下,"将来"与"过去"独立的特性称为马尔可夫性(Markov Property) ,具有这种性质的随机过程叫做马尔可夫过程(Markov Process)

举例来说,青蛙在荷花池里跳跃的过程中,青蛙依照它瞬间的念头从一片荷叶上跳到另一片荷叶上,因为青蛙是没有记忆的,当所处的位置已知时,它下一步跳往何处和它以往走过的路径无关。因此,后续的演变不依赖于以往的演变,则该过程即为马尔可夫过程。该过程仅依赖当前时刻状态,又称为1阶马尔科夫过程,很容易将定义拓展的多阶的情况。

n阶马尔科夫过程是状态间的转移仅依赖于前n个状态的随机过程。这个过程被称之为n阶马尔科夫模型,其中n是影响下一个状态选择的(前)n个状态,气象预报就可以是一个n阶马尔科夫过程。

二、马尔科夫链(Markov Chain)

马尔可夫链 是具有马尔可夫性质的随机变量的一个数列,即描述了一种状态序列,其每个状态值取决于前面有限个状态。下面讲述马尔可夫链的相关概念:

  • 马尔可夫性质(Markov Property):马尔可夫链的关键特征是马尔可夫性质,即系统在任意时间 n+1 的状态仅依赖于时间 n 的状态,而与之前的状态历史无关。这可以用以下数学表示: P ( X n + 1 = x ∣ X 0 , X 1 ... , X n ) = P ( X t + 1 = X ∣ X n ) P(X_{n+1}=x∣X_0,X_1...,X_n)=P(X_{t+1}=X∣X_n) P(Xn+1=x∣X0,X1...,Xn)=P(Xt+1=X∣Xn)。
  • 状态空间(State Space):状态空间是马尔可夫链可能的状态集合,通常用 S S S 表示。状态可以是离散的(如有限状态空间)或连续的(如状态可以取任意实数值)。
  • 状态转移矩阵(Transition Matrix):状态转移矩阵用于描述状态之间的转移概率。对于有限状态空间的马尔可夫链,状态转移矩阵是一个方阵,其元素 P(i, j) 表示从状态 i 转移到状态 j 的概率。
  • 平稳分布(Stationary Distribution):在某些情况下,马尔可夫链可能具有平稳分布,这是一个稳定的状态分布,不会随时间变化。平稳分布可以用来描述系统在长期运行后的状态分布。
  • 初始概率分布:包含每个状态的初始概率。

以随机餐厅举例

假设有那么一个餐厅,其食品供应符合马尔科夫性质,每天只供应3个菜其中的一种,明天供应什么取决于今天供应了什么(一阶马尔可夫过程)

上图就是一个链的标记,其中的方向概率(准确说是频率)是来自大量数据记录统计

求解过程:披萨->汉堡->披萨->?,可以很容易得出

P(X4=热狗|X1=披萨,X2=汉堡,X3=披萨) = P(X4=热狗|X3=披萨) = 0.7

P(X4=汉堡|X1=披萨,X2=汉堡,X3=披萨) = P(X4=汉堡|X3=披萨) = 0.3

状态转移矩阵如下:

假设第一轮选择比萨,则初始概率分布为 π 0 = [ 0   1   0 ] \pi_0 = [0 \, 1 \, 0] π0=[010],迭代计算如下:

...

求解如下方程,即可得到平稳分布(可以理解为收敛)

上述矩阵乘法可转化为求下列方程的解:

{ 0.2 a + 0.3 b + 0.5 c = a 0.6 a = b 0.2 a + 0.7 b + 0.5 c = c a + b + c = 1 \begin{cases} 0.2a + 0.3b + 0.5c = a \\ 0.6a=b \\ 0.2a+0.7b+0.5c=c \\ a + b + c = 1 \end{cases} ⎩ ⎨ ⎧0.2a+0.3b+0.5c=a0.6a=b0.2a+0.7b+0.5c=ca+b+c=1

解为 [ 0.35211        0.21127        0.43662 ] [0.35211 \,\,\,\,\,\, 0.21127 \,\,\,\,\,\, 0.43662] [0.352110.211270.43662],即为初始状态为披萨的平稳分布。

三、隐马尔可夫模型(Hidden Markov Model,HMM)

在正常的马尔可夫模型中,状态对于观察者来说是直接可见的。这样状态的转换概率便是全部的参数。而在隐马尔可夫模型中,状态并不是直接可见的,但受状态影响的某些变量则是可见的。每一个状态在可能输出的符号上都有一概率分布,因此输出符号的序列能够透露出状态序列的一些信息。

HMM是一种用参数表示的用于描述随机过程统计特性的概率模型,它是一个双重随机过程。HMM 由两部分组成:马尔可夫链和一般随机过程。其中马尔可夫链用来描述状态的转移,用转移概率描述;一般随机过程用来描述状态与观察序列间的关系,用观察值概率描述。

还是以随机餐厅举例,但这次加入食物对宠物心情(观察序列)的影响

因此,虽然每日食物是随机的,但我们可以通过宠物心情(观察序列)来推断每日的食物(马尔科夫状态)是什么

现在假定观测序列为:开心->开心->难过,易知有3×3×3种概率序列

隐马尔科夫就是找最大限度的联合概率
a r g M A X X = x 1 , x 2 , ⋯   , x n P ( X = X 1 , X 2 , ⋯   , X n ∣ Y = Y 1 , Y 2 , ⋯   , Y n ) argMAX_ {X=x_ {1},x_ {2},\cdots ,x_ {n}} P(X= X_ {1} , X_ {2}, \cdots, X_ {n} |Y= Y_ {1}, Y_ {2}, \cdots, Y_ {n}) argMAXX=x1,x2,⋯,xnP(X=X1,X2,⋯,Xn∣Y=Y1,Y2,⋯,Yn)

其中,Y为观测变量,即宠物心情;X为状态,即随机食物

这是基底理论, 利用贝叶斯定律得

a r g M A X X = x 1 , x 2 , ⋯   , x n P ( Y ∣ X ) P ( X ) P ( Y ) argMAX_ {X=x_ {1},x_ {2},\cdots ,x_ {n}} \frac {P(Y|X)P(X)} {P(Y)} argMAXX=x1,x2,⋯,xnP(Y)P(Y∣X)P(X)

因为不是求真实概率,而是求最大概率,因此可以忽略先验概率P(Y),所求目标转换为

P ( Y ∣ X ) = ∏ P ( Y ∣ X ) P ( X ) P(Y|X)=\prod P(Y|X)P(X) P(Y∣X)=∏P(Y∣X)P(X)

利用马尔科夫性, X i X_i Xi只依赖于 X i − 1 X_i-1 Xi−1,可知

P ( X ) = ∏ P ( X i ∣ X i − 1 ) P(X)=\prod P(X_ {i} |X_ {i-1}) P(X)=∏P(Xi∣Xi−1)

由此推得所求目标

a r g M A X X = x 1 , x 2 , ⋯   , x n ∏ P ( Y i ∣ X i ) P ( X i ∣ X i − 1 ) argMAX_ {X=x_ {1},x_ {2},\cdots ,x_ {n}} \prod P(Y_i|X_i)P(X_i|X_ {i-1}) argMAXX=x1,x2,⋯,xn∏P(Yi∣Xi)P(Xi∣Xi−1)

HMM通常用于解决以下问题:

  • 概率计算问题:给定模型和观测序列,计算观测序列出现的概率。
  • 解码问题:给定模型和观测序列,找到最可能的状态序列。
  • 学习问题:根据观测序列学习模型的参数。

四、马尔可夫决策过程(Markov Decision Process,MDP)

通过上述内容,我们已经知道了马尔可夫随机过程,你不免会觉得这样的规律过于"死气沉沉",没有体现出"主观能动性"。

因此,人们在马氏过程的基础上进行了修改,定义了MDP。在马氏过程中,我们只有内在的状态变量 S t S_t St及其关联,在MDP中,我们为系统增加一个行为(action)变量 A t A_t At与一个"奖励"(reward)变量 R t R_t Rt ,其中 ,

  • A t A_t At代表了我们"主观能动性"的部分,相当于系统的"输入";
  • R t R_t Rt代表着在t时刻我们采取的行动带来的回报,相当于系统的"输出"。

这样一来,在MDP中状态的转移关系不再是内在的,而是由状态 S t S_t St 与输入的行动 A t A_t At 共同决定。

简单来说,可以认为马尔可夫决策过程实际上是强化学习的数学上的描述

流程图如下:

马尔可夫决策过程具体定义如下:

在马尔科夫决策过程中,我们有一个智能体,它在一个马尔科夫过程中进行决策,每次决策都会导致状态的转移和获得即时奖励。智能体的目标是通过选择动作来最大化未来奖励的期望值。

通常马尔科夫决策过程是个五元组: ( S , A , P , R , γ ) (S, A, P, R, \gamma) (S,A,P,R,γ)

  • S 表示状态集合,代表智能体可能处于的所有状态。
  • A 表示动作集合,代表智能体可以采取的所有动作。
  • P 表示转移概率函数,它描述了在当前状态下执行某个动作后,智能体将转移到下一个状态的概率分布。
  • R 表示奖励函数,它描述了在某个状态下执行某个动作所获得的即时奖励。
  • γ \gamma γ表示衰减因子。
  • 在决策过程中,策略是指一种映射关系,它将每个状态映射到一个动作上。简单来说,策略就是一个决策规则,告诉智能体在特定状态下应该采取什么样的动作。

  • 策略可以是确定性的,也可以是随机性的。确定性策略是指对于每个状态,都有一个确定的动作与之对应;随机性策略是指对于每个状态,都有一定的概率分布来描述应该采取哪些动作。

  • 策略 π 依赖于当前状态,与历史无关且是固定的。

  • 在马尔科夫决策过程中,策略 π 是一个从状态集 S 到动作集 A 的映射函数,它规定了在每个状态下应该采取什么动作。可以将策略 π 表示为: C : S − > A C:S -> A C:S−>A

在马尔科夫决策过程中,智能体的目标是找到一个最优策略 π ∗ π^* π∗,使得在该策略下获得的长期累积奖励最大化。为了评价每种策略 π 的回报值,就需要定义累计回报。

给定策略π,从状态 s 1 s_1 s1出发可能产生若干马尔可夫链,如: s 1 − s 2 − s 3 − s 4 − s 5 s_1 − s_2 − s_3 − s_4 − s_5 s1−s2−s3−s4−s5,或者 s 1 − s 2 − s 3 − s 5 s_1 − s_2 − s_3 − s_5 s1−s2−s3−s5,针对某一条确定的马尔可夫链,我们可以计算该链的累计回报:

可以用以下公式来表示:

G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ = ∑ k = 0 ∞ γ k R t + k + 1 G_ {t} = R_ {t+1} + \gamma R_ {t+2} + \gamma ^ {2} R_ {t+3} + \cdots = \sum _ {k=0}^ {\infty } \gamma ^ {k} R_ {t+k+1} Gt=Rt+1+γRt+2+γ2Rt+3+⋯=k=0∑∞γkRt+k+1

其中,

  • G t G_ {t} Gt表示从时间步 t t t 开始所获得的期望回报(expected return)

  • γ \gamma γ表示衰减因子(discount factor), 通常在0-1之间

  • R t + 1 R_ {t+1} Rt+1表示在时间步 t + 1 t+1 t+1获得的实际奖励(reward)

期望回报可以分解为当前时刻获得的奖励 R t + 1 R_ {t+1} Rt+1和从下一时刻开始所获得的期望回报 γ G t + 1 \gamma G_ {t+1} γGt+1 的和,其中 γ \gamma γ表示衰减因子,用于逐渐降低未来奖励的权重。

但是由于策略 π 具有随机性,所以从 s 1 s_1 s1出发我们可以画出多条马尔可夫链,也就可以计算出多个累计回报 G 1 G_1 G1 , 为了得出的回报价值,我们将状态s的累计回报的期望作为评价指标,称为值函数,并且通过迭代更新值函数,从而得到最优策略。

值函数可以分为两类:状态值函数状态动作值函数

状态值函数定义如下:

V π ( s ) = E π [ G t ∣ S t = s ] V_ {\pi } (s) = E_ {\pi } [G_ {t} |S_ {t} =s] Vπ(s)=Eπ[Gt∣St=s]

它表示了在当前状态 s 下,按照策略 π 采取行动所能获得的长期收益。其中, E π E_{\pi } Eπ表示在策略 π 下的期望。

状态动作值函数定义如下:

Q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] Q_ {\pi } (s, a) = E_ {\pi } [G_ {t} |S_ {t} =s, A_{t} = a] Qπ(s,a)=Eπ[Gt∣St=s,At=a]

它表示了在当前状态 s 下,首先采取动作a,然后按照策略 π 进行行动所能获得的长期收益。

状态值函数关注的是在某个状态下遵循特定策略的期望回报。它仅基于当前状态来评估长期收益,不考虑选择哪个动作。换句话说,状态值函数表示在状态下遵循策略的平均表现。

状态动作值函数关注的是在某个状态下采取某个动作,然后遵循特定策略的期望回报。它基于当前状态以及采取的动作来评估长期收益。

举例说明:

假设一个3x3的网格世界,机器人的任务是从起始位置(0,0)到达目标位置(2,2),尽量避免障碍物(1,1)。

  • 状态S(state) :在这个例子中,状态可以表示为机器人在网格中的位置,S={(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)}
  • 动作A(action) :机器人可以采取的动作包括向上(U)、向下(D)、向左(L)和向右(R)。
  • 转移概率P(transition probability) :由于机器人可能因为控制错误或者环境不确定性导致转移不成功,我们可以为每个状态和动作定义一个转移概率。例如,从状态(0,0)向上移动的概率为0.8,向右移动的概率为0.1,向左和向下移动的概率为0。
  • 奖励函数R(reward function) :奖励函数定义了机器人在每个状态执行特定动作后获得的奖励。为了鼓励机器人尽快到达目标并避免障碍物,我们可以定义以下奖励函数:
    • 达到目标位置:+10
    • 撞到障碍物:-10
    • 其他情况:-1(表示每走一步的代价)
  • 衰减因子γ:通常选择 0.9 或者 0.99

接下来,我们需要为这个MDP定义一个策略(policy)来指导机器人的行动。策略是一个从状态到动作的映射,表示在某个状态下应该采取哪个动作。我们可以使用值迭代(Value Iteration)或策略迭代(Policy Iteration)等强化学习算法来求解最优策略。

以值迭代为例,计算过程如下:

  1. 初始化值函数 V(s) 为0: V ( ( 0 , 0 ) ) = V ( ( 0 , 1 ) ) = ... = V ( ( 2 , 2 ) ) = 0 V((0,0))=V((0,1))=...=V((2,2))=0 V((0,0))=V((0,1))=...=V((2,2))=0。
  2. 迭代更新值函数,直到收敛:对于每个状态 s,更新 V(s) 为: V ( s ) = max ⁡ a [ R ( s , a ) + γ ∗ ∑ P ( s ′ ∣ s , a ) ∗ V ( s ′ ) ] V(s)= \max _ {a} [R(s,a)+ \gamma * \sum P(s'|s,a)*V(s')] V(s)=maxa[R(s,a)+γ∗∑P(s′∣s,a)∗V(s′)] , 其中,R(s, a) 表示是执行动作a后的即时奖励,P(s'|s, a) 表示从状态s执行动作a后转移到状态s′的概率。
  3. 重复步骤2,直到值函数收敛。通常可以设置一个收敛阈值,当值函数的变化小于阈值时停止迭代。
  4. 从最终的值函数中计算最优策略: π ( s ) = a r g m a x a [ R ( s , a ) + γ ∗ ∑ P ( s ′ ∣ s , a ) ∗ V ( s ′ ) ] \pi(s)= argmax _ {a} [R(s,a)+ \gamma * \sum P(s'|s,a)*V(s')] π(s)=argmaxa[R(s,a)+γ∗∑P(s′∣s,a)∗V(s′)],这个公式表示在每个状态s下选择使累积奖励最大化的动作。

经过值迭代后,我们可以得到一个最优策略,指导机器人在网格世界中达到目标位置并尽量避免障碍物:根据上述最优策略,机器人将从起始位置(0,0)开始,向右移动到(0,1),然后向右移动到(0,2),向下移动到(1,2),最后再向下移动到目标位置(2,2),同时避免了障碍物(1,1)

五、马尔可夫随机场(Markov Random Field,MRF)

马尔可夫随机场,又被称为马尔可夫网络,是具有马尔可夫属性的随机变量的集合,它由一个无向图来描述,图中每个结点表示一个或一组变量,结点之间的边表示两个变量之间的依赖关系。下面是一个简单的马尔可夫随机场:

图中的边表示节点之间具有相互关系,这种关系是双向的、对称的。如: x 2 x_2 x2和 x 4 x_4 x4之间有边相连,则 x 2 x_2 x2和 x 4 x_4 x4具有相关关系,这种相关关系采用势函数进行度量。例如,可以定义如下势函数:

ψ ( x 2 , x 4 ) = { 1.5 , if x2 = x4 0.1 , if otherwise. ψ(x_2 ,x_4)= \begin{cases} 1.5, & \text{if x2 = x4} \\ 0.1, & \text{if otherwise.} \end{cases} ψ(x2,x4)={1.5,0.1,if x2 = x4if otherwise.

则说明该模型偏好变量 x 2 x_2 x2与 x 4 x_4 x4拥有相同的取值,换言之,在该模型中, x 2 x_2 x2与 x 4 x_4 x4的取值正相关。势函数刻画了局部变量之间的相关关系,它应该是非负的函数。为了满足非负性,指数函数常被用于定义势函数

马尔可夫随机场是生成式模型,生成式模型最关心的是变量的联合概率分布。假设我们有n个取值为二值随机变量 ( x 1 , x 2 , ⋯   , x n ) (x_1,x_2,\cdots,x_n) (x1,x2,⋯,xn),其取值分布将包含 2 n 2^n 2n 种可能,因此确定联合概率分布 p ( x 1 , x 2 , ⋯   , x n ) p(x_1,x_2,\cdots,x_n) p(x1,x2,⋯,xn)需要 2 n − 1 2^{n-1} 2n−1个参数,这个复杂度通常是我们不能接受的;而另一种极端情况是,当所有变量都相互独立时, p ( x 1 , x 2 , ⋯   , x n ) = p ( x 1 ) p ( x 2 ) ⋯ p(x_1,x_2,\cdots,x_n)=p(x_1)p(x_2)\cdots p(x1,x2,⋯,xn)=p(x1)p(x2)⋯只需要n个参数。

因此,我们可能会思考,能不能将联合概率分布分解为一组子集概率分布的乘积呢?那么应该怎么划分子图呢?应该遵循怎样的原则?首先定义马尔可夫随机场中随机变量之间的全局马尔可夫性、局部马尔可夫性和成对马尔可夫性。

在MRF中,马尔可夫属性有三个:

  • 成对马尔可夫性质 Pairwise Markov property:给定所有其他变量,两个非邻接变量条件独立。这是因为两个节点没有直接路径,并且所有其他路径上都有确定的观测节点,因此这些路径也将被阻隔。
    p ( x i , x j ∣ x i , j ) = p ( x i ∣ x i , j ) p ( x j ∣ x i , j ) p(x_i,x_j∣x_{i,j})=p(xi∣x_{i,j})p(x_j∣x_{i,j}) p(xi,xj∣xi,j)=p(xi∣xi,j)p(xj∣xi,j)
  • 局部马尔可夫性质 Local Markov property:给定一个变量的所有邻接变量,该变量条件独立于所有其他变量
    p ( x v , x o ∣ x w ) = p ( x v ∣ x w ) p ( x o ∣ x w ) p(x_v,x_o∣x_w)=p(x_v∣x_w)p(x_o∣x_w) p(xv,xo∣xw)=p(xv∣xw)p(xo∣xw)
  • 全局马尔可夫性质 Global Markov property:给定一个分离的子集,任何两个随机变量的子集都是条件独立的
    p ( x A , x B ∣ x C ) = p ( x A ∣ x C ) p ( x B ∣ x C ) p(x_A,x_B∣x_C)=p(x_A∣x_C)p(x_B∣x_C) p(xA,xB∣xC)=p(xA∣xC)p(xB∣xC)

于是,联合概率分布的分解一定要让 x i x_i xi和 x j x_j xj 不出现在同一个划分中,从而让属于这个图的所有可能概率分布都满足条件独立性质。

让非邻接变量不出现在同一个划分中,即每一个划分中节点都是全连接的。这将我们引向了图的一个概念,团(clique)。它被定义为图中节点的一个子集,并且这个子集中任意两节点间都有边相连。若在一个团中加入其他任何节点都不再形成团,则称该团为极大团。下图给出了团和极大团的一个示意:

图中,绿色圆圈是一个团,蓝色圆圈是一个极大团。显然,最简单的团就是两个节点以及一条边,而我们最开始就针对两节点之间的相关关系(每条边)定义了势函数。因此,马尔可夫随机场中,多个变量的联合概率分布能基于团分解为多个势函数的乘积,每一个团对应一个势函数。

对图中每一条边都定义一个势函数,将导致模型的势函数过多,带来计算负担。例如,最上面的图中 x 2 、 x 4 、 x 5 x_2、x_4、x_5 x2、x4、x5分别定义需要定义三个势函数,但是 x 2 、 x 4 、 x 5 x_2、x_4、x_5 x2、x4、x5 两两相关,取值将相互影响,因此可以整体定义一个势函数 ψ ( x 2 , x 4 , x 5 ) \psi(x_2,x_4,x_5) ψ(x2,x4,x5)表示三者取值的偏好。

马尔可夫随机场作为概率图模型的典型一类,用于对具有相关关系(无向)的变量分布进行建模,具有广泛的用用途,如图像去噪等。

相关推荐
yuanbenshidiaos42 分钟前
C++----------函数的调用机制
java·c++·算法
唐叔在学习1 小时前
【唐叔学算法】第21天:超越比较-计数排序、桶排序与基数排序的Java实践及性能剖析
数据结构·算法·排序算法
ALISHENGYA1 小时前
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(switch语句)
数据结构·算法
chengooooooo1 小时前
代码随想录训练营第二十七天| 贪心理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和
算法·leetcode·职场和发展
jackiendsc1 小时前
Java的垃圾回收机制介绍、工作原理、算法及分析调优
java·开发语言·算法
游是水里的游2 小时前
【算法day20】回溯:子集与全排列问题
算法
yoyobravery2 小时前
c语言大一期末复习
c语言·开发语言·算法
Jiude2 小时前
算法题题解记录——双变量问题的 “枚举右,维护左”
python·算法·面试
被AI抢饭碗的人3 小时前
算法题(13):异或变换
算法
nuyoah♂4 小时前
DAY36|动态规划Part04|LeetCode:1049. 最后一块石头的重量 II、494. 目标和、474.一和零
算法·leetcode·动态规划