深圳Yolo 视觉
深圳
立即加入
词汇表

隐马尔可夫模型 (HMM)

探索用于统计AI的隐马尔可夫模型(HMM)。了解HMM如何与Ultralytics YOLO26协同工作,以实现行为识别、序列分析和时间逻辑。

隐马尔可夫模型 (HMM) 是一种统计框架,用于建模内部过程不直接可见(因此“隐藏”)但可以通过一系列可观测事件推断出的系统。尽管现代深度学习已发展到能够处理复杂序列,但 HMM 仍然是 统计AI 和概率论中的一个基础概念。它在分析事件顺序提供关键上下文的 时间序列分析 数据时特别有效,其核心原理是未来状态的概率仅取决于当前状态,而不取决于之前的历史。

HMM的核心机制

要理解隐马尔可夫模型(HMM)的工作原理,区分模型的两个不同层至关重要:隐状态和可见输出。模型假设系统根据特定概率在隐状态之间转换,并在每一步发出一个观测值。

HMM 由一组控制这些转换和发射的参数定义:

  • Hidden States: 它们代表了系统在给定时间点的潜在真实状态。在语音模型中,隐藏状态可能代表一个特定的音素或单词。
  • 可观测事件: 这些是传感器或输入实际收集的数据点。在语音示例中,观测值将是音频波形或频谱图数据。
  • 转移概率: 该矩阵描述了从一个隐藏状态转移到另一个隐藏状态的可能性。例如,天气从“多雨”变为“晴朗”的概率。
  • 发射概率: 它们定义了在给定当前隐藏状态下观察到特定观测值的可能性。
  • Initial Probabilities: 决定系统最可能开始所处状态的分布。

训练HMM通常涉及 Baum-Welch算法,以从训练数据中估计这些参数。一旦训练完成,Viterbi算法常用于从一组新的观测值中解码出最可能的隐藏状态序列。

HMM与其他序列模型对比

尽管隐马尔可夫模型(HMM)与其他序列处理工具具有相似之处,但它们在架构和应用上存在显著差异:

  • 隐马尔可夫模型(HMM)与循环神经网络(RNN)RNN 和长短期记忆(LSTM)网络是能够捕获长程依赖和非线性模式的深度学习模型,而 HMM 是更简单的概率模型,受马尔可夫假设(短期记忆)的限制。然而,HMM 需要的数据量显著减少,并且更具可解释性。
  • 隐马尔可夫模型(HMM)与卡尔曼滤波器(KF)两者都用于状态估计。然而,卡尔曼滤波器专为连续状态设计(例如跟踪移动汽车的精确位置),而 HMM 则用于离散状态(例如判断汽车是“停放”、“行驶”还是“停止”)。

实际应用

尽管深度学习(DL)兴起,隐马尔可夫模型仍广泛应用于需要对序列进行概率推断的场景。

语音和手写识别

历史上,HMM是语音识别系统的支柱。在此背景下,口语词是“隐藏”状态,而麦克风记录的音频信号是观测值。HMM有助于确定产生音频信号的最可能的词序列。同样,它们通过建模字符笔画之间的转换来帮助识别草书手写。

生物序列分析

生物信息学领域,隐马尔可夫模型 (HMMs) 对基因预测和蛋白质比对至关重要。它们分析DNA或氨基酸序列以识别功能区域,例如基因组中的基因。“隐藏”状态可能代表编码或非编码区域,而特定的核苷酸 (A, C, G, T) 则作为观测值。

计算机视觉中的行为识别

在现代计算机视觉中,隐马尔可夫模型(HMM)可以与YOLO26等模型结合,以执行动作识别。尽管YOLO在单个帧中detect对象或姿势,但HMM可以分析这些姿势随时间的序列,以classify一个动作,例如“行走”、“跑步”或“跌倒”。

视觉与状态分析集成

对于使用Ultralytics Platform管理数据集和模型的开发者而言,理解序列逻辑至关重要。视觉模型提供原始观测值(detections),这些观测值随后可以输入到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

在现代人工智能中的重要性

尽管Transformer和大型语言模型 (LLMs) 已在自然语言处理 (NLP)等任务中取代了HMMs,但HMMs在边缘计算和低延迟环境中仍然具有相关性。其计算效率使其成为资源有限且不适合大量GPU使用的系统的理想选择。此外,由于它们基于透明的概率矩阵,与许多神经网络的“黑盒”特性相比,它们提供了更高的可观测性

让我们一起共建AI的未来!

开启您的机器学习未来之旅