Hidden Markov Model (HMM)
探索用于统计 AI 的隐马尔可夫模型(HMM)。了解 HMM 如何与 Ultralytics YOLO26 协同用于动作识别、序列分析和时序逻辑。
隐马尔可夫模型 (HMM) 是一种统计框架,用于对内部过程不可直接观测的系统进行建模——因此称为“隐”,但可以通过一系列可观测事件推断出来。尽管现代深度学习已经发展到能够处理复杂序列,HMM 仍然是统计人工智能和概率论中的基础概念。它特别适合分析时间序列分析数据,因为事件顺序提供了关键上下文,并依赖这样一个核心原则:未来状态的概率仅取决于当前状态,而不取决于此前的历史。
HMM 的核心机制#
要理解 HMM 的工作方式,必须区分模型的两个不同层次:不可见状态和可见输出。该模型假设系统根据特定概率在隐状态之间转移,并在每一步生成一个观测值。
HMM 由一组控制这些转移和输出的参数定义:
- 隐状态: 这些状态表示系统在特定时间点的底层真实情况。在语音模型中,隐状态可能表示某个特定音素或单词。
- 可观测事件: 这些是传感器或输入实际采集的数据点。在语音示例中,观测值可能是音频波形或频谱图数据。
- 转移概率: 该矩阵描述从一个隐状态转移到另一个隐状态的可能性。例如,天气从“下雨”变为“晴朗”的概率。
- 输出概率: 这些概率定义了在给定当前隐状态的情况下,看到特定观测值的可能性。
- 初始概率: 该分布决定系统最有可能从哪个状态开始。
HMM 的训练通常涉及使用 Baum-Welch 算法从训练数据中估计这些参数。训练完成后,通常使用 Viterbi 算法从一组新的观测值中解码出最有可能的隐状态序列。
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 Platform 管理数据集和模型的开发者而言,理解序列逻辑至关重要。视觉模型提供原始观测值(检测结果),随后可以将其输入 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 和大型语言模型 (LLMs) 已在 自然语言处理 (NLP) 等任务中超越 HMM,但 HMM 在 边缘计算 和低延迟环境中仍具有相关性。它们的计算效率使其非常适合资源受限且无法进行大量 GPU 使用的系统。此外,由于它们基于透明的概率矩阵,因此与许多神经网络的“黑箱”特性相比,能够提供更高的 可观测性。









