【菜狗每日记录】隐马尔可夫模型、隐半马尔可夫、层次狄利克雷过程——20251209

目录

隐马尔可夫模型(HMM)

[🧠1、 生活化比喻](#🧠1、 生活化比喻)

[🚗 2、对应到驾驶](#🚗 2、对应到驾驶)

隐半马尔可夫模型(HSMM)

[🧠1、 生活化比喻](#🧠1、 生活化比喻)

[🚗 2、对应到驾驶](#🚗 2、对应到驾驶)

层次狄利克雷过程(HDP)

[🟩 1、DP(Dirichlet Process)是什么?](#🟩 1、DP(Dirichlet Process)是什么?)

[通俗解释 DP](#通俗解释 DP)

[🟩 3、HDP 是什么?(生活化解释)](#🟩 3、HDP 是什么?(生活化解释))

[① 全局菜单 G₀(所有人共享)](#① 全局菜单 G₀(所有人共享))

[② 每个人自己的菜单 Gᵢ(每位驾驶员的风格)](#② 每个人自己的菜单 Gᵢ(每位驾驶员的风格))


一、隐马尔可夫模型(HMM)

系统在不同"隐藏状态"之间转换,每个状态产生可观察数据。

🧠1、 生活化比喻

假设你隔着门听一个人在屋里运动,你只能听到声音,但看不到动作。

屋里可能有三种"动作状态":

  1. 跑步

  2. 走路

  3. 静止

这些动作看不见 → 隐藏状态(Hidden State)

你能听到什么?

  • 跑步 = "哒哒哒"

  • 走路 = "踏...踏..."

  • 静止 = "无声"

这些声音就是 观测值(Observation)

并且:

  • 如果他现在在跑,很可能下一秒仍然在跑(状态会延续)

  • 但也可能切换到走路状态

所以 HMM 就是:

"一个你看不到的状态序列,在背后支配你能观察到的数据。"


🚗 2、对应到驾驶

隐藏状态 = 驾驶 primitive(比如 closing-in、keeping、falling-behind)

可观测数据 = 车距、相对速度、加速度

你看不到驾驶员的"心理状态",但能看到车的行为。

HMM 就是把"行为序列"分解成若干隐藏的"动作块"。


二、隐半马尔可夫模型(HSMM)

👉 核心:每个隐藏状态有"持续时间"。

HMM 有个很不现实的问题:

默认每一帧都有可能切状态。也就是说"一个动作只能持续一帧"。

这非常不符合驾驶、人类行为等现实情况。


🧠1、 生活化比喻

HMM 认为:

  • 跑步 → 下秒可能马上走路 → 再下一秒马上静止

但真实情况是:

  • 跑步至少要持续几秒

  • 走路也不会 0.1 秒就换一次状态

所以 HSMM 做了一个改进:

每个状态不仅有"状态名",还有"持续时间"。

比如:跑步持续 8 秒 → 走路持续 5 秒 → 静止 12 秒。


🚗 2、对应到驾驶

驾驶中一个 primitive(例如 closing in)通常持续 3~10 秒。HSMM 能真正刻画这种"阶段性行为"。


三、层次狄利克雷过程(HDP)

当你有多个序列(多个驾驶员、多段数据)要共享模式,又不想提前设定"有几个模式",HDP 就是完美方案。

🟩 1、DP(Dirichlet Process)是什么?

🔍 场景:你要做"模式发现"

比如你想发现:

  • 某驾驶员有多少个 driving primitives?

  • 每个 primitive 的位置/速度/加速度特征是什么?

  • primitive 数量未知且理论上可能无限

常规聚类(K-means、GMM)有个缺陷:

必须提前指定 K(类别数)。

但你不知道驾驶员到底有 5 种、10 种,还是 18 种 primitive。

于是 DP 出场了。


通俗解释 DP

想象:

  • 有一家餐厅,桌子无限多(= 模式数量无限)。

  • 第一个客人坐第一桌。

  • 第二个客人选择:

    • 坐已有桌子(概率 ∝ 已有人的数量)

    • 开一张新桌子(概率 ∝ 超参数 α)

结果就是:

  • 你不需要设定桌子数量(模式数量)

  • 由数据自动决定到底用了多少桌子(primitive 数)

也就是说:

DP 可以从"无限多模式"中自动选择实际需要的模式数量。

DP 的本质是一个"生成式过程(generative process)"。

它规定:

数据是这样产生的:
先从一个"类别分布 G"中抽取一个类别,再生成数据。而 G 自己来自一个 DP。

G ~ DP(α, H)

θ_n ~ G

x_n ~ F(θ_n)

  • G 是一个无限类别的菜单(由 DP 生成)

  • θₙ 是该数据点选了哪道菜(类别)

  • xₙ 是该类别生成的数据

DP 就是一个让"类别数量可以自动生长"的聚类机制。

当旧类别够用,就继续用旧的;当旧类别不能解释新数据,就新开一个。


🟩 3、HDP 是什么?(生活化解释)

把 HDP 想象成一个"两层结构的无限菜单系统"。


① 全局菜单 G₀(所有人共享)

G₀ 是一个"无限的菜品列表",比如:

复制代码
菜1:炒饭  
菜2:烤串  
菜3:拉面  
菜4:寿司  
菜5:披萨  
... 无限多

你不需要决定"这个菜单里有多少个菜",
HDP 会自己决定实际上用到哪些菜。

这就是"Dirichlet Process(DP)"的作用。

② 每个人自己的菜单 Gᵢ(每位驾驶员的风格)

虽然大家共享同一个"无限菜库",

但每个人的"点菜偏好"不同。

比如:

  • 驾驶员 A 喜欢"保持车距 + 温和加速"

  • 驾驶员 B 喜欢"激进接近 + 急刹"

  • 驾驶员 C 喜欢"巡航 + 偶尔跟车"

HDP 让每个人的 Gᵢ:

  • 从全局 G₀ 中抽取

  • 但抽到的权重不同(体现不同驾驶风格)

🟧 所以 HDP =(全体共享 + 个体偏好) + 无限可能类别

你可以理解成:

全体驾驶员共享同一套 primitive(驾驶模式),
但每位驾驶员使用这些 primitive 的频率不同。

这就是 HDP 的本质。


🟥 HDP 为什么如此重要?(特别在驾驶行为分析里)

驾驶行为模式本身具有三个特征:

✔(1)模式数量未知

我们不知道有几种 primitive:

  • 是 3 个?(closing / keeping / falling)

  • 是 10 个?(不同程度的加速/刹车)

  • 是 20 个?(微观变化更多)

✔(2)不同驾驶员使用的模式不同

激进驾驶员 vs 温和驾驶员

→ 使用 primitive 的比例不同

✔(3)多个驾驶员应该共享同一套 primitive

否则你没法比较风格、没法聚类驾驶员。

HDP 结构 驾驶行为意义
G₀ = 全局 primitive 集合 所有驾驶员共享的行为模式
Gᵢ = 个体 primitive 分布 该驾驶员偏好的行为风格
模式数量无限但前几个最重要 primitive 实际不会太多
可能创建新模式 数据中出现新行为时自动建模

|----------------|------------------|
| DP(狄利克雷过程) | 只处理"一个序列"的无限类别问题 |

|----------------|---------------------|
| HDP(层次 DP) | 处理"多个序列共享类别"的无限类别问题 |

------小狗照亮每一天

20251209

相关推荐
Shawn_Shawn2 小时前
mcp学习笔记(一)-mcp核心概念梳理
人工智能·llm·mcp
33三 三like4 小时前
《基于知识图谱和智能推荐的养老志愿服务系统》开发日志
人工智能·知识图谱
芝士爱知识a4 小时前
【工具推荐】2026公考App横向评测:粉笔、华图与智蛙面试App功能对比
人工智能·软件推荐·ai教育·结构化面试·公考app·智蛙面试app·公考上岸
腾讯云开发者5 小时前
港科大熊辉|AI时代的职场新坐标——为什么你应该去“数据稀疏“的地方?
人工智能
工程师老罗5 小时前
YoloV1数据集格式转换,VOC XML→YOLOv1张量
xml·人工智能·yolo
yLDeveloper5 小时前
从模型评估、梯度难题到科学初始化:一步步解析深度学习的训练问题
深度学习
Coder_Boy_6 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
啊森要自信6 小时前
CANN ops-cv:面向计算机视觉的 AI 硬件端高效算子库核心架构与开发逻辑
人工智能·计算机视觉·架构·cann
2401_836235866 小时前
中安未来SDK15:以AI之眼,解锁企业档案的数字化基因
人工智能·科技·深度学习·ocr·生活