【数学】什么是马尔可夫链?RNN 与马尔可夫链的联系,马尔可夫链与条件随机场的比较

文章目录

马尔可夫链

背景

马尔可夫链是描述一个系统在不同状态之间转移的数学模型。它的特点是"无记忆性",即下一状态只依赖于当前状态,而与之前的状态无关。马尔可夫链在许多领域有广泛应用,如经济学、统计学、计算机科学(尤其是人工智能和机器学习)等。

公式

马尔可夫链的主要公式包括状态转移矩阵和初始状态向量:

  1. 状态转移矩阵 : P = [ p i j ] P = [p_{ij}] P=[pij],其中 p i j p_{ij} pij 表示从状态 i i i 转移到状态 j j j 的概率。
  2. 初始状态向量
    π ( 0 ) = [ π 1 ( 0 ) , π 2 ( 0 ) , ... , π n ( 0 ) ] ,其中 π i ( 0 ) \pi^{(0)} = [\pi_1^{(0)}, \pi_2^{(0)}, \ldots, \pi_n^{(0)}],其中 \pi_i^{(0)} π(0)=[π1(0),π2(0),...,πn(0)],其中πi(0)
    表示系统初始处于状态 i i i 的概率。

状态转移的公式:
π ( n ) = π ( 0 ) P n \pi^{(n)} = \pi^{(0)} P^n π(n)=π(0)Pn

示例题目

假设有一个简单的天气模型,它只有三种状态:晴天、阴天和雨天。它的状态转移矩阵 P P P 为:
P = [ 0.6 0.3 0.1 0.2 0.7 0.1 0.4 0.2 0.4 ] P = \begin{bmatrix} 0.6 & 0.3 & 0.1 \\ 0.2 & 0.7 & 0.1 \\ 0.4 & 0.2 & 0.4 \end{bmatrix} P= 0.60.20.40.30.70.20.10.10.4

初始状态向量 $ \pi^{(0)} $ 为:
π ( 0 ) = [ 0.5 , 0.3 , 0.2 ] \pi^{(0)} = [0.5, 0.3, 0.2] π(0)=[0.5,0.3,0.2]

请问三天后的状态概率分布是多少?

详细讲解

  1. 首先,计算第一天的状态概率分布:
    π ( 1 ) = π ( 0 ) P \pi^{(1)} = \pi^{(0)} P π(1)=π(0)P
    = [ 0.5 , 0.3 , 0.2 ] [ 0.6 0.3 0.1 0.2 0.7 0.1 0.4 0.2 0.4 ] = [0.5, 0.3, 0.2] \begin{bmatrix} 0.6 & 0.3 & 0.1 \\ 0.2 & 0.7 & 0.1 \\ 0.4 & 0.2 & 0.4 \end{bmatrix} =[0.5,0.3,0.2] 0.60.20.40.30.70.20.10.10.4
    = [ 0.5 × 0.6 + 0.3 × 0.2 + 0.2 × 0.4 , 0.5 × 0.3 + 0.3 × 0.7 + 0.2 × 0.2 , 0.5 × 0.1 + 0.3 × 0.1 + 0.2 × 0.4 ] = [0.5 \times 0.6 + 0.3 \times 0.2 + 0.2 \times 0.4, 0.5 \times 0.3 + 0.3 \times 0.7 + 0.2 \times 0.2, 0.5 \times 0.1 + 0.3 \times 0.1 + 0.2 \times 0.4] =[0.5×0.6+0.3×0.2+0.2×0.4,0.5×0.3+0.3×0.7+0.2×0.2,0.5×0.1+0.3×0.1+0.2×0.4]
    = [ 0.42 , 0.36 , 0.22 ] = [0.42, 0.36, 0.22] =[0.42,0.36,0.22]

  2. 然后,计算第二天的状态概率分布:
    π ( 2 ) = π ( 1 ) P \pi^{(2)} = \pi^{(1)} P π(2)=π(1)P
    = [ 0.42 , 0.36 , 0.22 ] [ 0.6 0.3 0.1 0.2 0.7 0.1 0.4 0.2 0.4 ] = [0.42, 0.36, 0.22] \begin{bmatrix} 0.6 & 0.3 & 0.1 \\ 0.2 & 0.7 & 0.1 \\ 0.4 & 0.2 & 0.4 \end{bmatrix} =[0.42,0.36,0.22] 0.60.20.40.30.70.20.10.10.4
    = [ 0.42 × 0.6 + 0.36 × 0.2 + 0.22 × 0.4 , 0.42 × 0.3 + 0.36 × 0.7 + 0.22 × 0.2 , 0.42 × 0.1 + 0.36 × 0.1 + 0.22 × 0.4 ] = [0.42 \times 0.6 + 0.36 \times 0.2 + 0.22 \times 0.4, 0.42 \times 0.3 + 0.36 \times 0.7 + 0.22 \times 0.2, 0.42 \times 0.1 + 0.36 \times 0.1 + 0.22 \times 0.4] =[0.42×0.6+0.36×0.2+0.22×0.4,0.42×0.3+0.36×0.7+0.22×0.2,0.42×0.1+0.36×0.1+0.22×0.4]
    = [ 0.424 , 0.362 , 0.214 ] = [0.424, 0.362, 0.214] =[0.424,0.362,0.214]

  3. 最后,计算第三天的状态概率分布:
    π ( 3 ) = π ( 2 ) P \pi^{(3)} = \pi^{(2)} P π(3)=π(2)P
    = [ 0.424 , 0.362 , 0.214 ] [ 0.6 0.3 0.1 0.2 0.7 0.1 0.4 0.2 0.4 ] = [0.424, 0.362, 0.214] \begin{bmatrix} 0.6 & 0.3 & 0.1 \\ 0.2 & 0.7 & 0.1 \\ 0.4 & 0.2 & 0.4 \end{bmatrix} =[0.424,0.362,0.214] 0.60.20.40.30.70.20.10.10.4
    = [ 0.424 × 0.6 + 0.362 × 0.2 + 0.214 × 0.4 , 0.424 × 0.3 + 0.362 × 0.7 + 0.214 × 0.2 , 0.424 × 0.1 + 0.362 × 0.1 + 0.214 × 0.4 ] = [0.424 \times 0.6 + 0.362 \times 0.2 + 0.214 \times 0.4, 0.424 \times 0.3 + 0.362 \times 0.7 + 0.214 \times 0.2, 0.424 \times 0.1 + 0.362 \times 0.1 + 0.214 \times 0.4] =[0.424×0.6+0.362×0.2+0.214×0.4,0.424×0.3+0.362×0.7+0.214×0.2,0.424×0.1+0.362×0.1+0.214×0.4]
    = [ 0.4196 , 0.3696 , 0.2108 ] = [0.4196, 0.3696, 0.2108] =[0.4196,0.3696,0.2108]

Python代码求解

python 复制代码
import numpy as np

# 状态转移矩阵
P = np.array([
    [0.6, 0.3, 0.1],
    [0.2, 0.7, 0.1],
    [0.4, 0.2, 0.4]
])

# 初始状态向量
pi_0 = np.array([0.5, 0.3, 0.2])

# 计算三天后的状态概率分布
pi_3 = pi_0 @ np.linalg.matrix_power(P, 3)
print(pi_3)

实际生活中的例子

马尔可夫链在金融市场中有广泛应用。例如,股票价格可以被看作是一个马尔可夫过程,股票的未来价格仅依赖于当前价格,而不依赖于过去的价格变化。通过构建马尔可夫链模型,投资者可以预测股票价格的变化趋势,制定相应的投资策略。此外,在自然语言处理领域,马尔可夫链被用于语言建模和文本生成,例如用于预测一个单词序列中的下一个单词。

RNN 与马尔可夫链的联系

递归神经网络(RNN)是一种深度学习模型,用于处理序列数据。与马尔可夫链不同,RNN 具有记忆能力,可以通过隐状态(hidden state)存储之前时刻的信息。这使得 RNN 能够捕捉序列中的长期依赖关系。

具体来说,在 RNN 中,每个时间步 ( t ) 的隐状态 ( h_t ) 是由当前输入 ( x_t ) 和前一时间步的隐状态 ( h_{t-1} ) 决定的:

h t = f ( h t − 1 , x t ) h_t = f(h_{t-1}, x_t) ht=f(ht−1,xt)

其中 ( f ) 是一个非线性激活函数(如 tanh 或 ReLU)。

从这个公式可以看出,RNN 的状态不仅依赖于当前输入,还依赖于之前所有时间步的隐状态。因此,RNN 能够捕捉序列中的长期依赖关系,而不仅仅是当前状态的信息。

对比总结

  • 马尔可夫链:下一状态仅依赖于当前状态,与之前的状态无关。适合建模具有无记忆性的随机过程。
  • RNN:下一状态依赖于当前输入和之前所有时间步的隐状态。适合建模具有长期依赖关系的序列数据。

图示解释

  1. 马尔可夫链

    s0 → s1 → s2 → ... → st

每个状态只依赖于前一个状态。

  1. RNN

    x0 → x1 → x2 → ... → xt
    ↓ ↓ ↓ ↓
    h0 → h1 → h2 → ... → ht

每个隐状态 ( h_t ) 依赖于前一个隐状态 ( h_{t-1} ) 和当前输入 ( x_t )。

这说明 RNN 可以记住更长的历史信息,适用于需要考虑上下文的任务,比如自然语言处理、时间序列预测等。

马尔可夫链与条件随机场的比较

条件随机场 (Conditional Random Field, CRF)

条件随机场是一种用于标注和分割序列数据的概率图模型。它通过定义在观测数据条件下的一组随机变量之间的条件概率分布来进行建模。CRF 在自然语言处理(NLP)和计算机视觉等领域中被广泛应用,尤其适用于序列标注任务。

马尔可夫链与 CRF 的联系

马尔可夫链是描述状态序列中的转移概率的模型,而 CRF 则是在给定观测序列条件下建模状态序列的概率分布。两者的联系在于它们都基于图模型,并且可以用于序列数据的建模。然而,它们在建模方式和应用场景上有所不同。

马尔可夫链

马尔可夫链假设当前状态只依赖于前一个状态,即马尔可夫性质。通常使用转移概率矩阵来描述状态转移。

隐马尔可夫模型 (HMM)

隐马尔可夫模型(Hidden Markov Model, HMM)是在马尔可夫链基础上扩展的模型,用于处理观测数据和隐藏状态之间的关系。HMM 假设观测序列是由隐藏状态序列生成的,每个隐藏状态生成一个观测数据。

条件随机场 (CRF)

CRF 是一种判别式模型,它直接建模观测序列条件下的状态序列的概率分布,而不需要显式建模观测数据的生成过程。CRF 通过定义全局特征函数来捕捉观测数据和状态序列之间的依赖关系。

举例说明

假设我们有一个命名实体识别(NER)任务,需要从文本序列中识别出实体(如人名、地名等)。

使用 HMM 的方法
  1. 状态:每个单词的标签,如 B-PER(人名的开始)、I-PER(人名的内部)、O(非实体)。
  2. 观测:文本中的单词。
  3. 模型:通过观察单词的特征(如单词本身、词性等)来预测隐藏状态(标签)。

HMM 模型会基于观测数据生成隐藏状态序列,假设观测数据是由隐藏状态生成的。

使用 CRF 的方法
  1. 状态:每个单词的标签。
  2. 观测:文本中的单词及其特征(如词性、词形、上下文等)。
  3. 模型:直接建模在给定观测序列条件下的状态序列的概率分布。

CRF 通过定义特征函数来捕捉观测数据和标签之间的依赖关系,以及标签之间的相互依赖关系。例如,CRF 可以定义特征函数来表示"如果一个单词以大写字母开头并且出现在句子开头,那么它很可能是一个人名的开始"。

图示解释

  1. 隐马尔可夫模型 (HMM)

    观测序列: o1 o2 o3 o4
    ↓ ↓ ↓ ↓
    隐藏状态: s1 → s2 → s3 → s4

  2. 条件随机场 (CRF)

    观测序列: o1 o2 o3 o4
    ↓ ↓ ↓ ↓
    标签序列: y1 → y2 → y3 → y4

CRF 的特征函数可以捕捉:

  • 观测数据 ( o ) 和标签 ( y ) 之间的依赖关系。
  • 标签 ( y ) 之间的相互依赖关系。

总结

  • 马尔可夫链:用于建模状态序列的转移概率。
  • 隐马尔可夫模型 (HMM):在马尔可夫链基础上增加了观测数据和隐藏状态之间的关系。
  • 条件随机场 (CRF):直接建模观测数据条件下的状态序列概率分布,适合序列标注任务。

CRF 比 HMM 更加灵活,因为它不需要假设观测数据是由隐藏状态生成的,并且可以使用丰富的特征来捕捉数据和标签之间的复杂关系。

相关推荐
昨日之日20061 小时前
Moonshine - 新型开源ASR(语音识别)模型,体积小,速度快,比OpenAI Whisper快五倍 本地一键整合包下载
人工智能·whisper·语音识别
浮生如梦_1 小时前
Halcon基于laws纹理特征的SVM分类
图像处理·人工智能·算法·支持向量机·计算机视觉·分类·视觉检测
深度学习lover1 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
热爱跑步的恒川2 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
阡之尘埃4 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
孙同学要努力6 小时前
全连接神经网络案例——手写数字识别
人工智能·深度学习·神经网络
Eric.Lee20216 小时前
yolo v5 开源项目
人工智能·yolo·目标检测·计算机视觉
其实吧37 小时前
基于Matlab的图像融合研究设计
人工智能·计算机视觉·matlab
丕羽7 小时前
【Pytorch】基本语法
人工智能·pytorch·python
ctrey_7 小时前
2024-11-1 学习人工智能的Day20 openCV(2)
人工智能·opencv·学习