探索大語言模型(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?=sj?Xt?=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= ?P11?P21??Pn1??P12?P22??Pn2???????P1n?P2n??Pnn?? ?
矩陣每行元素和為1,即 ∑ j = 1 n P i j = 1 \sum_{j=1}^n P_{ij} = 1 j=1n?Pij?=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 jS?pij?=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)?=kS?pik(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)?=kS?P(Xn+m?=j,Xn?=kX0?=i)?(全概率公式)?=kS?P(Xn+m?=jXn?=k,X0?=i)?P(Xn?=kX0?=i)?(條件概率公式)?=kS?P(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.5?0.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.1?0.30.50.3?0.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?=π0??P2計算。首先計算 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.1?0.30.50.3?0.30.30.6? ?? ?0.40.20.1?0.30.50.3?0.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.1?0.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.3?0.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.16?0.360.380.36?0.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?=π0??P2=[1,0,0]? ?0.250.190.16?0.360.380.36?0.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.3?0.30.70.4?0.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?=π0??Pn。計算 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.2?0.20.50.4?0.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.2?0.10.8?]
表示牛市有90%概率保持,10%概率轉熊市;熊市有20%概率轉牛市。

3. 蒙特卡洛模擬(MCMC)

Metropolis-Hastings算法通過構建馬爾可夫鏈,對復雜分布進行采樣,廣泛應用于貝葉斯統計。


總結

從分析詩歌韻律到驅動AlphaGo的決策過程,馬爾可夫鏈展現了數學工具的跨學科魅力。其核心思想——用簡單的概率規則描述復雜系統的演化——使其成為人工智能、金融、物理等領域的基礎工具。理解馬爾可夫鏈,就是掌握了一把打開隨機世界之門的鑰匙。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902108.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902108.shtml
英文地址,請注明出處:http://en.pswp.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算法解析的時候會經常與這些點云信息打交道…