Esplora i modelli Hidden Markov (HMM) per l'intelligenza artificiale statistica. Scopri come funzionano gli HMM con Ultralytics per il riconoscimento delle azioni, l'analisi delle sequenze e la logica temporale.
Un modello di Markov nascosto (HMM) è un quadro statistico utilizzato per modellare sistemi in cui il processo interno non è direttamente visibile, quindi "nascosto", ma può essere dedotto attraverso una sequenza di eventi osservabili. Sebbene il deep learning moderno si sia evoluto per gestire sequenze complesse, l'HMM rimane un concetto fondamentale nell' intelligenza artificiale statistica e nella teoria della probabilità. È particolarmente efficace per l'analisi dei dati di analisi delle serie temporali in cui l'ordine degli eventi fornisce un contesto cruciale, basandosi sul principio fondamentale che la probabilità di uno stato futuro dipende esclusivamente dallo stato attuale, non dalla storia che lo ha preceduto.
Per comprendere il funzionamento di un HMM, è essenziale distinguere tra i due livelli distinti del modello: gli stati invisibili e gli output visibili. Il modello presuppone che il sistema passi da uno stato nascosto all'altro in base a probabilità specifiche, emettendo un'osservazione ad ogni passo.
Un HMM è definito da un insieme di parametri che regolano queste transizioni ed emissioni:
L'addestramento di un HMM comporta generalmente l' algoritmo di Baum-Welch per stimare questi parametri dai dati di addestramento. Una volta addestrato, l' algoritmo di Viterbi viene comunemente utilizzato per decodificare la sequenza più probabile di stati nascosti da un nuovo insieme di osservazioni.
Sebbene gli HMM condividano somiglianze con altri strumenti di elaborazione delle sequenze, differiscono in modo significativo nell'architettura e nell' applicazione:
Nonostante l'ascesa del deep learning (DL), i modelli di Markov nascosti sono ancora ampiamente utilizzati in scenari che richiedono inferenze probabilistiche su sequenze.
Storicamente, gli HMM erano la spina dorsale dei sistemi di riconoscimento vocale. In questo contesto, le parole pronunciate sono gli stati "nascosti" e i segnali audio registrati dal microfono sono le osservazioni. Gli HMM aiutano a determinare la sequenza più probabile di parole che ha prodotto il segnale audio. Allo stesso modo, aiutano a decifrare la scrittura corsiva modellando la transizione tra i tratti dei caratteri.
Nel campo della bioinformatica, gli HMM sono fondamentali per la previsione genica e l'allineamento delle proteine. Analizzano sequenze di DNA o aminoacidi per identificare regioni funzionali, come i geni all'interno di un genoma. Gli stati "nascosti" possono rappresentare regioni codificanti o non codificanti, mentre i nucleotidi specifici (A, C, G, T) fungono da osservazioni.
Nella visione artificiale moderna, gli HMM possono essere combinati con modelli come YOLO26 per eseguire il riconoscimento delle azioni. Mentre YOLO oggetti o pose in singoli fotogrammi, un HMM può analizzare la sequenza di queste pose nel tempo per classify , come "camminare", "correre" o "cadere".
Per gli sviluppatori che utilizzano la Ultralytics per gestire set di dati e modelli, è fondamentale comprendere la logica sequenziale. Un modello di visione fornisce le osservazioni grezze (rilevamenti), che possono poi essere inserite in un modello spazio-stato come un HMM per dedurre il contesto temporale.
L'esempio seguente mostra come generare una sequenza di osservazioni utilizzando la stima della posa YOLO26. Questi punti chiave possono fungere da input di "eventi osservabili" per un HMM a valle o una logica simile per classify nel tempo.
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
Sebbene i trasformatori e i modelli linguistici di grandi dimensioni (LLM) abbiano superato gli HMM per attività come l' elaborazione del linguaggio naturale (NLP), gli HMM rimangono rilevanti nell'edge computing e negli ambienti a bassa latenza. La loro efficienza computazionale li rende ideali per sistemi con risorse limitate in cui l' GPU . Inoltre, poiché si basano su matrici di probabilità trasparenti, offrono una maggiore osservabilità rispetto alla natura "black box" di molte reti neurali.