马尔可夫模型 自然语言处理
目录
一.马尔可夫模型
模型描述
有一类很重要的随机变化过程,比如一个系统有很多种可能的“状态”(就像开关有“开”和“关”两种状态,或者天气有“晴”“雨”“阴”等状态),这些状态会随着时间变化,从一个状态转移到另一个状态。
状态:可以想象成系统的“身份”或“模式”,比如“状态1”“状态2”……“状态N”(N是状态总数)。
状态变量:用q_t表示“在时间t时系统处于什么状态”,比如 q_1是“第1时刻的状态”,q_2是“第2时刻的状态”。
转移概率:重点是,当前时刻的状态概率取决于之前所有时刻的状态。例如,明天的天气(t时刻状态)可能受前天、大前天……一直到昨天(前t-1个时刻状态)的影响。公式表示:在已知过去所有时刻状态的情况下,当前时刻t处于状态S_j的概率**。 举个简单例子: 如果系统是“交通信号灯”,状态有“红”“黄”“绿”三种(N=3)。假设现在想知道“第3秒时信号灯是绿色”(q_3=绿)的概率,这需要看第1秒和第2秒的状态(比如第1秒是红,第2秒是黄),因为信号灯的变化规则可能依赖于之前的状态序列。 这种随机过程中,当前状态的概率与历史所有状态都相关,历史状态的信息会影响现在的结果。

意思就是现在的状态只和前面一个的状态有关

意思就是这个和前一个有关的概率不会因为时间而改变,因此是一个常数,只和前面一个是什么有关系。通过 “不动性假设”,我们把状态转移的规律从 “随时间变化的动态系统” 简化为 “固定概率的静态表格”,大大降低了建模和计算的复杂度。
这就像用一个固定的 “概率字典” 来描述状态转移,而不需要考虑时间带来的额外变量,让问题变得更易处理(比如可以用矩阵运算来分析长期趋势)。

- 概率不能是负数;
- 从一个状态出发的所有可能转移的概率加起来必须是 100%。
这两条规则确保了模型在数学上合理、现实中可解释,就像一个 “公平的骰子”,所有面的概率之和永远是 1。



二 隐马尔可夫模型
该模型是一个双重随机过程,我们不知道具体的状态序列,只知道状态转移的概率,即模型的状态转换过程是不可观察的(隐蔽的), 而可观察事件的随机过程是隐蔽状态转换过程的随机函数。






例题:用 HMM 生成天气观察序列
模型参数
-
状态数 N=2:S1(晴天)、S2(雨天)
-
观察符号数 M=2:O1(晾晒)、O2(带伞)
-
状态转移矩阵 A:A=[a11 a21 a12 a22]=[0.7 0.4 0.3 0.6]
- 含义:晴天后保持晴天的概率是 0.7,变雨天的概率是 0.3;雨天后变晴天的概率是 0.4,保持雨天的概率是 0.6。
-
输出概率矩阵 B:B=[b1(1) b2(1) b1(2) b2(2)]=[0.9 0.2 0.1 0.8]
- 含义:晴天时,90% 概率晾晒(O1),10% 概率带伞(O2);雨天时,20% 概率晾晒(O1),80% 概率带伞(O2)。
-
初始状态概率 π:π=(π1,π2)=(0.8,0.2)
- 含义:第一天有 80% 概率是晴天,20% 概率是雨天。
生成观察序列的过程(T=3 天)
步骤 2:选初始状态 q1
- 根据 π:
- 抛硬币(或随机数):假设随机选到晴天(S1),则 q1 = S1。
- 根据 B 中 S1 的输出概率:
- 生成随机数(0-1 之间),假设抽到 0.4(落在 0-0.9 区间),则 O1 = O1(晾晒)。
- 根据 A 中 S1 的转移概率:
- 随机数假设抽到 0.8(落在 0.7-1 区间),则从 S1 转移到 S2(q2 = S2)。
步骤 3:从 q2=S2 输出观察符号 O2
- 根据 B 中 S2 的输出概率:
- 随机数假设抽到 0.9(落在 0.2-1 区间),则 O2 = O2(带伞)。
- 根据 A 中 S2 的转移概率:
- 随机数假设抽到 0.3(落在 0-0.4 区间),则从 S2 转移到 S1(q3 = S1)。
最终观察序列:O1(晾晒)→ O2(带伞)→ O1(晾晒)
更多推荐
所有评论(0)