Hidden Markov Model (HMM)
探索用于统计 AI 的隐马尔可夫模型 (HMM)。了解 HMM 如何与 Ultralytics YOLO26 协作进行动作识别、序列分析和时序逻辑分析。
隐马尔可夫模型 (HMM) 是一个统计框架,用于对内部过程不可直接可见(因此被称为“隐”)但可以通过可观测事件序列推断出来的系统进行建模。虽然现代深度学习已发展到能够处理复杂的序列,但 HMM 仍然是统计 AI 和概率论中的一个基础概念。它对于分析时间序列分析数据特别有效,在这些数据中事件的顺序提供了至关重要的上下文,它依赖于核心原则,即未来状态的概率完全取决于当前状态,而与之前历史无关。
HMM 的核心机制#
要理解 HMM 的运作方式,必须区分该模型的两个不同层:不可见的隐状态和可见的输出。该模型假设系统根据特定概率在隐状态之间转换,并在每一步发出一个观测结果。
HMM 由一组控制这些转换和发射的参数定义:
- 隐状态: 这些代表了系统在给定时间的底层现实。在语音模型中,隐状态可能代表特定的音素或单词。
- 可观测事件: 这些是由传感器或输入实际收集的数据点。在语音示例中,观测结果将是音频波形或频谱图数据。
- 转移概率: 此矩阵描述了从一个隐状态移动到另一个隐状态的可能性。例如,天气从“下雨”变为“晴天”的概率。
- 发射概率: 这些定义了在给定当前隐状态的情况下看到特定观测结果的可能性。
- 初始概率: 决定系统最可能开始的状态的分布。
训练 HMM 通常涉及使用鲍姆-韦尔奇算法从训练数据中估计这些参数。训练完成后,通常使用维特比算法从一组新的观测值中解码出最可能的隐状态序列。
HMM 与其他序列模型对比#
虽然 HMM 与其他序列处理工具有相似之处,但它们在架构和应用上存在显著差异:
- HMM 与循环神经网络 (RNN): RNN 和长短期记忆 (LSTM) 网络是能够捕获长期依赖关系和非线性模式的深度学习模型,而 HMM 是受马尔可夫假设(短期记忆)限制的更简单的概率模型。然而,HMM 需要的数据明显更少,并且可解释性要高得多。
- HMM 与卡尔曼滤波 (KF): 两者都用于状态估计。然而,卡尔曼滤波专为连续状态设计(如跟踪移动汽车的精确位置),而 HMM 用于离散状态(如确定汽车是“停放”、“行驶”还是“停止”)。
实际应用#
尽管深度学习 (DL) 兴起,隐马尔可夫模型仍广泛用于需要对序列进行概率推理的场景中。
语音和手写识别#
从历史上看,HMM 是语音识别系统的支柱。在此背景下,口语单词是“隐藏”状态,麦克风记录的音频信号是观测值。HMM 有助于确定产生音频信号的最可能单词序列。类似地,它们通过对字符笔画之间的过渡进行建模,帮助破译草书手写。
生物序列分析#
在生物信息学领域,HMM 对于基因预测和蛋白质比对至关重要。它们分析 DNA 或氨基酸序列以识别功能区域,例如基因组内的基因。 “隐藏”状态可能代表编码或非编码区域,而特定的核苷酸(A、C、G、T)充当观测值。
计算机视觉中的动作识别#
在现代计算机视觉中,HMM 可以与诸如 YOLO26 之类的模型结合使用来执行动作识别。虽然 YOLO 检测单个帧中的对象或姿态,但 HMM 可以随着时间的推移分析这些姿态的序列,以对诸如“走路”、“跑步”或“摔倒”之类的动作进行分类。
整合视觉与状态分析#
对于使用 Ultralytics 平台 来管理数据集和模型的开发者来说,理解序列逻辑至关重要。视觉模型提供原始观测值(检测结果),然后可以将其输入到状态空间模型(如 HMM)中以推断时间上下文。
以下示例演示了如何使用 YOLO26 姿态估计生成观测序列。这些关键点可以作为下游 HMM 或类似逻辑的“可观测事件”输入,以对随时间的行为进行分类。
from ultralytics import YOLO
# Load the YOLO26n-pose model for efficient keypoint detection
model = YOLO("yolo26n-pose.pt")
# Run inference on a video source (the 'observable' sequence)
# stream=True creates a generator for memory efficiency
results = model.predict(source="path/to/video.mp4", stream=True)
# Iterate through frames to extract observations
for result in results:
# Each 'keypoints' object is an observation for a potential HMM
keypoints = result.keypoints.xyn.cpu().numpy()
if keypoints.size > 0:
print(f"Observation (Normalized Keypoints): {keypoints[0][:5]}...")
# In a full pipeline, these points would be fed into an HMM decoder在现代 AI 中的重要性#
尽管transformer和大型语言模型 (LLM) 在自然语言处理 (NLP)等任务中已经超越了 HMM,但 HMM 在边缘计算和低延迟环境中仍然具有相关性。它们的计算效率使其非常适合资源有限且无法进行繁重 GPU 使用的系统。此外,由于它们基于透明的概率矩阵,与许多神经网络的“黑盒”性质相比,它们提供了更高的可观测性。






