客服系统想预测「下一张工单会不会升级成投诉」。只看当前工单的类型、渠道、已等待时长,准确率已经够用;把用户过去半年的全部记录都塞进去,提升很有限。这种「下一步只取决于当前状态」的建模方式就是马尔可夫链,AI 系统里它出现的频率比名字听起来高得多。
无记忆是一条假设,不是事实
马尔可夫性说的是:给定当前状态,未来与更早的历史条件独立。写成式子就是 P(下一步 | 当前, 历史) = P(下一步 | 当前)。它把「记住整条历史」换成「记住一个状态」,计算量随历史长度增长的问题一下子消失了。
代价藏在前提里:当前状态必须已经装下预测未来所需的全部信息。这条前提通常靠人来给,模型自己验证不了。状态定义得对不对,决定了整条链有没有意义。
状态和转移概率,两样东西就够
一个马尔可夫链由状态集合和一张转移概率表组成。表里每一行之和为 1,含义是「从当前状态出发,下一步落到各状态的可能性」。
| 场景 | 状态怎么定 | 转移概率从哪来 | 假设破了会怎样 |
|---|---|---|---|
| 文本生成(n-gram) | 前面 n-1 个词 | 语料里数共现频次 | 长程依赖丢失,句子越写越散 |
| 强化学习的环境 | 环境观测,不够时堆叠多帧 | 交互中统计,或由仿真直接给出 | 观测不全,策略学不到最优 |
| MCMC 采样 | 参数当前取值 | 按提议分布与接受率构造 | 链不可约或混合太慢,样本不可用 |
| 流程与漏斗 | 业务阶段,如新建、处理中、关闭 | 历史单据的迁移计数 | 阶段切得太粗,关键差异被抹平 |
四行的转移概率来源各不相同,结构却一致:一个状态集合加一张「从哪到哪」的表。真正的差别在状态粒度由谁决定,而这往往是最费判断的一步。
平稳分布解释了长期会怎样
有限状态、不可约、非周期的链会收敛到一个平稳分布,而且与初始状态无关。这条性质有两个用处。一是长期占比可以直接解方程算出来,不必模拟成千上万步。二是反过来用:想从某个复杂分布里采样,就构造一条以它为平稳分布的链,跑够步数后取样本,这就是蒙特卡洛方法里 MCMC 的基本套路。
「跑够步数」没有通用答案。实践中的做法是跑多条不同初值的链,看它们是否收敛到同一片区域,再做诊断。周期性的链不会收敛到单点分布,比如两状态来回跳的链,它的长期行为是振荡而非稳定。
在 AI 里它藏在这三个位置
最直接的是文本生成:n-gram 语言模型就是马尔可夫假设的应用,阶数决定记忆长度。今天的神经语言模型放松了这条假设,但仍然是逐个 token 地条件生成,思路一脉相承。
强化学习里,马尔可夫决策过程的定义就要求状态满足马尔可夫性。观测不全时(比如只看一帧画面,判断不了运动方向),常用做法是把最近几帧堆起来,或者用循环网络把历史压进一个隐状态,本质是把状态补全,让假设重新成立。
第三处是采样与推断:MCMC、Gibbs 采样,以及扩散模型里逐步加噪的去噪过程,都是把复杂过程拆成一串简单转移。当状态本身看不见、只能通过观测反推时,问题就变成隐马尔可夫模型要处理的形式。
假设不成立时,问题不会消失,只会转移
长程依赖是最常见的破口。连续三天下雨之后,第四天下雨的概率明显更高,这时把状态设成「今天的天气」就不够用,得扩成「最近三天的组合」。状态数随记忆长度指数增长,扩到五六步就基本算不动了。
状态空间的大小也是硬约束。n 个状态要存 n² 个转移概率,上千状态就是百万级参数;连续状态必须先离散化,粒度粗了丢信息,细了数据不够。数据稀疏同样棘手:冷门状态的转移概率靠几条样本估出来,只能靠平滑兜底。
时变系统会让一条固定的链失效。促销、政策、季节都会改变转移概率,用去年估的表预测今年,误差不在模型结构上,而在参数已经过期。还有一点:转移概率描述的是相关性,改一个环节,概率未必按预期变化,做干预决策时不能直接拿它当因果依据。
什么情况下值得用它
三个判断:状态能不能用有限几个值说清;同一状态下,下一步是否真的与更早历史无关(或近似无关);你要的是长期占比还是单步预测。三条都成立,它便宜、可解释、好实现;有一条明显不成立,就该考虑隐状态模型、序列模型,或者直接换更强的办法。
把它当基线也合适。先跑出一个数,后面的复杂模型如果打不过这条基线,说明新增的结构没有换来信息,值得回头检查数据和状态定义,而不是继续加层数。序列问题的整体框架可参考时间序列的拆解方式。
速查:判断能不能用马尔可夫链
- 状态是有限几个可枚举的值吗
- 给定当前状态,更早的历史还有额外信息吗
- 转移概率的样本够不够,冷门状态怎么兜底
- 这套概率在预测期内会漂移吗


