探索大语言模型(LLM):马尔可夫链——从诗歌分析到人工智能的数学工具

提出背景与灵感起源

马尔可夫链由俄国数学家安德雷·马尔可夫于1906年提出,最初是为了挑战当时概率论中“独立性假设”的局限性。他希望通过研究相依变量序列,证明即使随机变量之间存在依赖关系,大数定律和中心极限定理仍然成立。
灵感来源:马尔可夫在1913年分析了普希金的长诗《叶甫盖尼·奥涅金》,统计了元音和辅音字母的交替规律。他发现字母序列的统计特性可以用一种“当前状态仅依赖前一步”的模型描述,这成为马尔可夫链的雏形。这种将语言结构与概率结合的方法,揭示了随机过程中的有序性。


数学定义与公式推导

1. 马尔可夫性质

核心定义: 若随机过程满足 P ( X t + 1 = x ∣ X 0 , X 1 , . . . , X t ) = P ( X t + 1 = x ∣ X t ) P(X_{t+1}=x | X_0, X_1, ..., X_t) = P(X_{t+1}=x | X_t) P(Xt+1=xX0,X1,...,Xt)=P(Xt+1=xXt) 则称其具有马尔可夫性质,即“未来仅取决于现在,与过去无关”。只依赖于当前状态,这种特性被称为 “无记忆性”“马尔科夫性”

2. 转移概率矩阵

假设状态空间为 S = { s 1 , s 2 , . . . , s n } S = \{s_1, s_2, ..., s_n\} S={s1,s2,...,sn},定义单步转移概率:
P i j = P ( X t + 1 = s j ∣ X t = s i ) P_{ij} = P(X_{t+1}=s_j | X_t = s_i) Pij=P(Xt+1=sjXt=si)
则转移矩阵为:
P = [ P 11 P 12 ⋯ P 1 n P 21 P 22 ⋯ P 2 n ⋮ ⋮ ⋱ ⋮ P n 1 P n 2 ⋯ P n n ] P = \begin{bmatrix}P_{11} & P_{12} & \cdots & P_{1n} \\P_{21} & P_{22} & \cdots & P_{2n} \\\vdots & \vdots & \ddots & \vdots \\P_{n1} & P_{n2} & \cdots & P_{nn}\end{bmatrix} P= P11P21Pn1P12P22Pn2P1nP2nPnn
矩阵每行元素和为1,即 ∑ j = 1 n P i j = 1 \sum_{j=1}^n P_{ij} = 1 j=1nPij=1

3. 平稳分布

若存在概率分布 π \pi π 满足: π P = π \pi P = \pi πP=π 则称 π \pi π 为平稳分布。通过求解线性方程组可得到长期状态下的稳定概率。

4.公式推导

用转移概率矩阵 P = ( p i j ) P=(p_{ij}) P=(pij)来描述状态之间的转移,其中 p i j = P ( X n + 1 = j ∣ X n = i ) p_{ij}=P(X _{n+1}=j∣X_n=i) pij=P(Xn+1=jXn=i),表示从状态i转移到状
j的一步转移概率,且满足 ∑ j ∈ S p i j = 1 \sum\limits_{j∈S}p_{ij}=1 jSpij=1,因为从状态i出发,下一步必然转移到状态空间S中的某个状态。

对于n步转移概率,记为 p i j ( n ) = P ( X n + m = j ∣ X m = i ) p_{ij}^{(n)}=P(X_{n+m} =j∣X_m=i) pij(n)=P(Xn+m=jXm=i),它满足切普曼 - 柯尔莫哥洛夫方程: p i j ( n + m ) = ∑ k ∈ S p i k ( n ) p k j ( m ) p_{ij}^{(n+m)} =\sum\limits_{k∈S} p_{ik}^{(n)}p_{kj}^{(m)} pij(n+m)=kSpik(n)pkj(m)

推导过程如下:

p i j ( n + m ) = P ( X n + m = j ∣ X 0 = i ) = ∑ k ∈ S P ( X n + m = j , X n = k ∣ X 0 = i ) ( 全概率公式 ) = ∑ k ∈ S P ( X n + m = j ∣ X n = k , X 0 = i ) ⋅ P ( X n = k ∣ X 0 = i ) ( 条件概率公式 ) = ∑ k ∈ S P ( X n + m = j ∣ X n = k ) ⋅ P ( X n = k ∣ X 0 = i ) = ∑ k ∈ S ​  = p k j ( m ) p i k ( n ) ( 马尔科夫性 ) p_{ij}^{(n+m)}=P(X_{n+m}=j∣X_0=i) \\ \ = \sum\limits_{k∈S}P(X_{n+m}=j,X_n=k∣X_0=i) \ {(全概率公式) }\\ \ = \sum\limits_{k∈S}P(X_{n+m}=j∣X_n=k,X_0=i)⋅P(X_n=k∣X_0=i) \ {(条件概率公式)}\\ \ =\sum\limits_{k∈S}P(X_{n+m}=j∣X_n=k)⋅P(X_n=k∣X_0=i) \\ \ = \sum\limits_{k∈S} ​\ = p_{kj}^{(m)}p_{ik}^{(n)} (马尔科夫性) pij(n+m)=P(Xn+m=jX0=i) =kSP(Xn+m=j,Xn=kX0=i) (全概率公式) =kSP(Xn+m=jXn=k,X0=i)P(Xn=kX0=i) (条件概率公式) =kSP(Xn+m=jXn=k)P(Xn=kX0=i) =kS =pkj(m)pik(n)(马尔科夫性)

该方程表明,从状态i经过n+m步转移到状态j的概率,可以通过从状态i先经过n步转移到中间状态k,再从状态k经过m步转移到状态j,然后对所有可能的中间状态k求和得到。

这为计算多步转移概率提供了递归的方法,也使得我们能够通过一步转移概率矩阵的幂运算来计算任意步的转移概率。


通俗示例

例1:早餐选择

早餐选择模型假设小明每天早餐在A(包子)和B(煎饼)之间选择,规则如下:

  • 若今天选A,明天选A的概率40%,选B的概率60%
  • 若今天选B,明天选A和B的概率各50%

转移矩阵
P = [ 0.4 0.6 0.5 0.5 ] P = \begin{bmatrix}0.4 & 0.6 \\0.5 & 0.5\end{bmatrix} P=[0.40.50.60.5]
转移矩阵对应转移状态示意图
在这里插入图片描述

代码模拟10天早餐序列

import numpy as np
# 定义转移矩阵和初始状态
P = [[0.4, 0.6], [0.5, 0.5]]
current_state = 0  # 初始状态为A
states = ['A', 'B']  # 模拟状态转移
np.random.seed(42)
for _ in range(10):    print(f"Day {_+1}: {states[current_state]}")    current_state = np.random.choice([0,1], p=P[current_state])

输出结果

Day 1: A
Day 2: B
Day 3: A
Day 4: B
Day 5: A
Day 6: B
Day 7: B
Day 8: A
Day 9: B
Day 10: A

例2:地点选择

假设你在玩一个简单的游戏,游戏中有三个地点:公园(A)、图书馆(B)和咖啡馆(C)。每天你都会在这三个地点之一度过,并且第二天去的地点只取决于当天所在的地点。

  • 如果你今天在公园(A),明天有 0.4 的概率还在公园,有 0.3 的概率去图书馆,有 0.3 的概率去咖啡馆。
  • 若今天在图书馆(B),明天有 0.2 的概率在公园,有 0.5 的概率还在图书馆,有 0.3 的概率去咖啡馆。
  • 要是今天在咖啡馆(C),明天有 0.1 的概率在公园,有 0.3 的概率在图书馆,有 0.6 的概率还在咖啡馆。

我们可以将这些转移概率整理成转移概率矩阵P:
P = ( 0.4 0.3 0.3 0.2 0.5 0.3 0.1 0.3 0.6 ) P = \begin{pmatrix} 0.4 & 0.3 & 0.3 \\ 0.2 & 0.5 & 0.3 \\ 0.1 & 0.3 & 0.6 \end{pmatrix} P= 0.40.20.10.30.50.30.30.30.6
在这里插入图片描述

公式推导在例子中的应用假设初始时你在公园(即初始状态概率向量 π 0 = [ 1 , 0 , 0 ] \pi_0 = [1, 0, 0] π0=[1,0,0],我们想知道两天后你在图书馆的概率。根据切普曼 - 柯尔莫哥洛夫方程,两天后的状态概率向量 π 2 \pi_2 π2可以通过 π 2 = π 0 ⋅ P 2 \pi_2 = \pi_0 \cdot P^2 π2=π0P2计算。首先计算 P 2 P^2 P2
P 2 = ( 0.4 0.3 0.3 0.2 0.5 0.3 0.1 0.3 0.6 ) ⋅ ( 0.4 0.3 0.3 0.2 0.5 0.3 0.1 0.3 0.6 ) = ( 0.4 × 0.4 + 0.3 × 0.2 + 0.3 × 0.1 0.4 × 0.3 + 0.3 × 0.5 + 0.3 × 0.3 0.4 × 0.3 + 0.3 × 0.3 + 0.3 × 0.6 0.2 × 0.4 + 0.5 × 0.2 + 0.3 × 0.1 0.2 × 0.3 + 0.5 × 0.5 + 0.3 × 0.3 0.2 × 0.3 + 0.5 × 0.3 + 0.3 × 0.6 0.1 × 0.4 + 0.3 × 0.2 + 0.6 × 0.1 0.1 × 0.3 + 0.3 × 0.5 + 0.6 × 0.3 0.1 × 0.3 + 0.3 × 0.3 + 0.6 × 0.6 ) = ( 0.25 0.36 0.39 0.19 0.38 0.43 0.16 0.36 0.48 ) P^2 = \begin{pmatrix} 0.4 & 0.3 & 0.3 \\ 0.2 & 0.5 & 0.3 \\ 0.1 & 0.3 & 0.6 \end{pmatrix} \cdot \begin{pmatrix} 0.4 & 0.3 & 0.3 \\ 0.2 & 0.5 & 0.3 \\ 0.1 & 0.3 & 0.6 \end{pmatrix}\\= \begin{pmatrix} 0.4\times0.4 + 0.3\times0.2 + 0.3\times0.1 & 0.4\times0.3 + 0.3\times0.5 + 0.3\times0.3 & 0.4\times0.3 + 0.3\times0.3 + 0.3\times0.6 \\ 0.2\times0.4 + 0.5\times0.2 + 0.3\times0.1 & 0.2\times0.3 + 0.5\times0.5 + 0.3\times0.3 & 0.2\times0.3 + 0.5\times0.3 + 0.3\times0.6 \\ 0.1\times0.4 + 0.3\times0.2 + 0.6\times0.1 & 0.1\times0.3 + 0.3\times0.5 + 0.6\times0.3 & 0.1\times0.3 + 0.3\times0.3 + 0.6\times0.6 \end{pmatrix}\\= \begin{pmatrix} 0.25 & 0.36 & 0.39 \\ 0.19 & 0.38 & 0.43 \\ 0.16 & 0.36 & 0.48 \end{pmatrix} P2= 0.40.20.10.30.50.30.30.30.6 0.40.20.10.30.50.30.30.30.6 = 0.4×0.4+0.3×0.2+0.3×0.10.2×0.4+0.5×0.2+0.3×0.10.1×0.4+0.3×0.2+0.6×0.10.4×0.3+0.3×0.5+0.3×0.30.2×0.3+0.5×0.5+0.3×0.30.1×0.3+0.3×0.5+0.6×0.30.4×0.3+0.3×0.3+0.3×0.60.2×0.3+0.5×0.3+0.3×0.60.1×0.3+0.3×0.3+0.6×0.6 = 0.250.190.160.360.380.360.390.430.48
然后计算 π 2 \pi_2 π2
p i 2 = π 0 ⋅ P 2 = [ 1 , 0 , 0 ] ⋅ ( 0.25 0.36 0.39 0.19 0.38 0.43 0.16 0.36 0.48 ) = [ 0.25 , 0.36 , 0.39 ] pi_2 = \pi_0 \cdot P^2\\= [1, 0, 0] \cdot \begin{pmatrix} 0.25 & 0.36 & 0.39 \\ 0.19 & 0.38 & 0.43 \\ 0.16 & 0.36 & 0.48 \end{pmatrix}\\= [0.25, 0.36, 0.39] pi2=π0P2=[1,0,0] 0.250.190.160.360.380.360.390.430.48 =[0.25,0.36,0.39]
所以,两天后你在图书馆的概率是 0.36。

例3:网页浏览预测

在互联网中,用户浏览网页的行为可以近似看作一个马尔科夫链。每个网页是一个状态,用户从一个网页跳转到另一个网页的概率构成转移概率矩阵。假设我们有一个包含三个网页(网页 1、网页 2、网页 3)的小型网站。通过分析用户行为数据,得到转移概率矩阵P:
P = ( 0.5 0.3 0.2 0.1 0.7 0.2 0.3 0.4 0.3 ) P = \begin{pmatrix} 0.5 & 0.3 & 0.2 \\ 0.1 & 0.7 & 0.2 \\ 0.3 & 0.4 & 0.3 \end{pmatrix} P= 0.50.10.30.30.70.40.20.20.3
若初始时用户在网页 1(初始状态概率向量 π 0 = [ 1 , 0 , 0 ] \pi_0 = [1, 0, 0] π0=[1,0,0]),我们想计算 3 次跳转后用户在网页 2 的概率。首先,根据切普曼 - 柯尔莫哥洛夫方程,n步后的状态概率向量 π n = π 0 ⋅ P n \pi_n = \pi_0 \cdot P^n πn=π0Pn。计算 P 3 P^3 P3

import numpy as npP = np.array([[0.5, 0.3, 0.2],[0.1, 0.7, 0.2],[0.3, 0.4, 0.3]
])P_3 = np.linalg.matrix_power(P, 3)
print(P_3)

通过上述代码计算得到 P 3 P^3 P3后,再计算 π 3 \pi_3 π3

pi_0 = np.array([1, 0, 0])
pi_3 = pi_0.dot(P_3)
print(pi_3)

pi_3向量中第二个元素即为 3 次跳转后用户在网页 2 的概率。

例4:天气预测简化模型

假设天气只有晴天、多云、雨天三种状态。通过对历史天气数据的分析,我们得到转移概率矩阵P:
P = ( 0.7 0.2 0.1 0.3 0.5 0.2 0.2 0.4 0.4 ) P = \begin{pmatrix} 0.7 & 0.2 & 0.1 \\ 0.3 & 0.5 & 0.2 \\ 0.2 & 0.4 & 0.4 \end{pmatrix} P= 0.70.30.20.20.50.40.10.20.4
如果今天是晴天(初始状态概率向量 π 0 = [ 1 , 0 , 0 ] \pi_0 = [1, 0, 0] π0=[1,0,0]),计算 4 天后是雨天的概率。同样,先计算 P 4 P^4 P4

P = np.array([[0.7, 0.2, 0.1],[0.3, 0.5, 0.2],[0.2, 0.4, 0.4]
])P_4 = np.linalg.matrix_power(P, 4)
print(P_4)

然后计算 π 4 \pi_4 π4

pi_0 = np.array([1, 0, 0])
pi_4 = pi_0.dot(P_4)
print(pi_4)

pi_4向量中第三个元素就是 4 天后是雨天的概率。虽然实际的天气预测要复杂得多,但马尔科夫链为这种时间序列的状态预测提供了一个简单而有效的基础模型框架。

四、实际应用案例

1. 自然语言处理(NLP)

隐马尔可夫模型(HMM)用于词性标注和语音识别。例如,通过观察单词序列推测隐藏的词性标记。

2. 金融市场分析预测

股票市场的牛市/熊市状态转换。假设转移矩阵为:
P = [ 0.9 0.1 0.2 0.8 ] P = \begin{bmatrix}0.9 & 0.1 \\0.2 & 0.8\end{bmatrix} P=[0.90.20.10.8]
表示牛市有90%概率保持,10%概率转熊市;熊市有20%概率转牛市。

3. 蒙特卡洛模拟(MCMC)

Metropolis-Hastings算法通过构建马尔可夫链,对复杂分布进行采样,广泛应用于贝叶斯统计。


总结

从分析诗歌韵律到驱动AlphaGo的决策过程,马尔可夫链展现了数学工具的跨学科魅力。其核心思想——用简单的概率规则描述复杂系统的演化——使其成为人工智能、金融、物理等领域的基础工具。理解马尔可夫链,就是掌握了一把打开随机世界之门的钥匙。

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

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

相关文章

【web服务_负载均衡Nginx】三、Nginx 实践应用与高级配置技巧

一、Nginx 在 Web 服务器场景中的深度应用​ 1.1 静态网站部署与优化​ 在 CentOS 7 系统中,使用 Nginx 部署静态网站是最基础也最常见的应用场景。首先,准备网站文件,在/var/www/html目录下创建index.html文件: sudo mkdir -p…

C语言格式化输入输出总结 (printf和scanf)

一、printf格式化输出 1. 整数格式化 (%d, %i, %u, %o, %x) c复制代码 int num 42; // 以下为不同格式输出示例 printf("%d", num); // 42 (十进制) printf("%i", num); // 42 (同%d) printf("%u", num); // 42 (无符号十进制…

哈夫曼编码和哈夫曼树

哈夫曼编码(Huffman Coding) 是一种基于字符出现频率的无损数据压缩算法,通过构建哈夫曼树(Huffman Tree) 来生成最优前缀编码,使得高频字符用短编码,低频字符用长编码,从而实现高效…

Jetson Orin NX 部署YOLOv12笔记

步骤一.创建虚拟环境 conda create -n yolov12 python3.8.20 注意:YOLOv12/YOLOv11/YOLOv10/YOLOv9/YOLOv8/YOLOv7a/YOLOv5 环境通用 步骤二.激活虚拟环境 conda activate yolov12 #激活环境 步骤三.查询Jetpack出厂版本 Jetson系列平台各型号支持的最高Jetp…

Linux指令篇 (2)

指令篇(2) Linux基本指令(2)(1) mkdir指令(重要)(2)rmdir指令&&rm指令(重要)(3)man指令(重要)(4)cp指令(重要&…

致远OA——自定义开发rest接口

文章目录 :apple: 业务流程 🍎 业务流程 代码案例: https://pan.quark.cn/s/57fa808c823f 官方文档: https://open.seeyoncloud.com/seeyonapi/781/https://open.seeyoncloud.com/v5devCTP/39/783.html 登录系统 —— 后台管理 —— 切换系…

区块链如何成为智能城市的底层引擎?从数据透明到自动化治理

区块链如何成为智能城市的底层引擎?从数据透明到自动化治理 引言:智能城市真的智能吗? 在数字化时代,智能城市(Smart City)逐步成为各国推动城市创新的重要方向。城市管理者希望借助物联网(IoT…

洛谷P1177【模板】排序:十种排序算法全解(1)

扯谈 之前我已经把十大排序算法全讲了一遍(具体详见专栏C排序算法),今天我们来用一道简单的题目总结实战一下。 算法实现 一、桶排序(Bucket Sort) ‌适用场景‌:数据范围已知且较小(需根据测试数据调整…

SuperMap iClient3D for WebGL 如何加载WMTS服务

在 SuperMap iClient3D for WebGL 中加载WMTS服务时,参数配置很关键!下面我们详细介绍如何正确填写参数,确保影像服务完美加载。 一、数据制作 对于上述视频中的地图制作,此处不做讲述,如有需要可访问:Onl…

再读bert(Bidirectional Encoder Representations from Transformers)

再读 BERT,仿佛在数字丛林中邂逅一位古老而智慧的先知。初次相见时,惊叹于它以 Transformer 架构为罗盘,在预训练与微调的星河中精准导航,打破 NLP 领域长久以来的迷雾。而如今,书页间跃动的不再仅是 Attention 机制精…

从零开始 保姆级教程 Ubuntu20.04系统安装MySQL8、服务器配置MySQL主从复制、本地navicat远程连接服务器数据库

从零开始:Ubuntu 20.04 系统安装 MySQL 8、服务器配置 MySQL 主从复制、本地 Navicat 远程连接服务器数据库 初始化服务器1. 更新本地软件包列表2. 安装 MySQL 服务器3. 查看 MySQL 安装版本4. 登录 MySQL 管理终端5. 设置 root 用户密码(推荐使用 nativ…

java怎么完善注册,如果邮箱中途更换,能否判断

解析在下面 附赠代码 private static class CodeInfo {String code;long timestamp;CodeInfo(String code, long timestamp) {this.code code;this.timestamp timestamp;}}// 存储验证码(邮箱 -> 验证码信息)(保证线程安全) 以免中途更改邮箱pri…

n8n 中文系列教程_01. 简单易懂的现代AI魔法,n8n的快速了解与概念科普(文末有彩蛋)

1. 教程简介 欢迎来到“无代码工具探索”课程,这是专为非技术人员设计的指南(当然,技术人员也可以从中受益)。我们的目标是通过无代码工具来提升工作效率,尤其是利用像 n8n 这样的灵活数据库平台。这些工具被誉为“现…

解码 Web Service:从技术原理到应用场景的深度剖析

Web Service 是一种基于网络的、分布式的计算技术,它允许不同的应用程序之间通过网络进行通信和交互。以下是关于 Web Service 的详细介绍: 一、定义与概念 Web Service 是一种可以通过 Web 协议(如 HTTP)进行访问的软件组件&am…

Nacos启动报错

Nacos启动是在单机模式下,不是集群模式 点击startup.cmd启动会报错 打开bin目录 rem是注释的意思,在nacos1.3.2之后,nacos默认的都是集群模式,我们这里单机测试就是用单机模式。 也可以修改MODE,如果选择不修改&…

uniapp-商城-26-vuex 使用流程

为了能在所有的页面都实现状态管理,我们按照前面讲的页面进行状态获取,然后再进行页面设置和布局,那就是重复工作,vuex 就会解决这样的问题,如同类、高度提炼的接口来帮助我们实现这些重复工作的管理。避免一直在造一样…

Git 命令速查手册

听说用美图可以钓读者? 一、基础操作核心命令 1. 仓库初始化与克隆 命令作用示例git init创建新仓库git init my-projectgit clone克隆远程仓库git clone [https://github.com/user/repo.git](https://github.com/user/repo.git)git remote add关联远程仓库git re…

信息量、香农熵、交叉熵、KL散度总结

信息量 对于一个事件而言,它一般具有三个特征: 小概率事件往往具有较大的信息量 大概率事件往往具有较小的信息量 独立事件的信息量相互可以相加 比如我们在买彩票这个事件中,彩票未中奖的概率往往很高,对我们而言一点也不稀…

使用C语言的cJSON中给JSON字符串添加转义

在 cJSON 库中,没有直接提供 一个函数来专门给 JSON 字符串添加转义(如将 " 转义为 \",\n 转义为 \\n 等)。 但 cJSON 在 序列化(cJSON_Print 或 cJSON_PrintUnformatted) 时会自动处理转义字符…

宇树机器狗go2—slam建图(1)点云格式

0.前言 上一篇番外文章教大家如何在宇树机器狗go2的gazebo仿真环境中实现简单的导航运动,本期文章会教大家如何让宇树的机器狗go2在仿真环境中进行slam建图时经常会遇到的一些点云格式,在后续的slam建图和slam算法解析的时候会经常与这些点云信息打交道…