Programming lesson
Hidden Markov Modelle in der Praxis: ASL-Worterkennung mit Python (CS6601 Assignment 6)
Lerne, wie du mit Hidden Markov Modellen (HMM) amerikanische Gebärdensprache (ASL) erkennst – basierend auf dem CS6601 Assignment 6. Schritt-für-Schritt-Anleitung mit Codebeispielen und Trendbezügen.
Einleitung: Warum Hidden Markov Modelle heute wichtiger sind denn je
Stell dir vor, du entwickelst eine App, die Gebärden in Echtzeit übersetzt – genau das ist das Ziel von CS6601 Assignment 6: Hidden Markov Models. HMMs sind nicht nur ein theoretisches Konstrukt aus der KI-Vorlesung, sondern treiben moderne Spracherkennung, Bioinformatik und sogar Finanzmarktprognosen an. Mit dem aktuellen Hype um KI-Assistenten wie ChatGPT und multimodale Modelle, die Video und Audio verstehen, sind probabilistische Modelle wie HMMs der Schlüssel zu robuster Mustererkennung.
Grundlagen: Was ist ein Hidden Markov Model?
Ein Hidden Markov Model (HMM) beschreibt ein System mit verborgenen Zuständen, die nur indirekt durch Beobachtungen sichtbar werden. Stell dir vor, du beobachtest die Y-Koordinaten der rechten Hand eines Gebärdensprechers – die tatsächliche Gebärde („ALLIGATOR“, „NUTS“ oder „SLEEP“) ist der verborgene Zustand, die Koordinaten sind die Beobachtung. Jeder Zustand hat eine Wahrscheinlichkeitsverteilung für die nächste Beobachtung, und die Zustände wechseln nach festen Regeln.
Die drei Säulen eines HMM
- Übergangswahrscheinlichkeiten: Wie wahrscheinlich ist es, von Zustand 1 zu Zustand 2 zu wechseln oder im selben Zustand zu bleiben?
- Emissionswahrscheinlichkeiten: Mit welcher Wahrscheinlichkeit wird in einem Zustand eine bestimmte Beobachtung (z.B. Y-Koordinate = 45) erzeugt?
- Startwahrscheinlichkeiten: Mit welchem Zustand beginnt die Sequenz? (In unserem Fall immer Zustand 1)
Trendbezug: HMMs in der heutigen KI-Welt
Aktuell erleben wir einen Boom bei generativer KI und multimodalen Modellen. Plattformen wie TikTok nutzen HMM-ähnliche Algorithmen zur Bewegungserkennung in Filtern, und Spracherkennungssysteme wie Siri oder Alexa basieren auf den gleichen Prinzipien. In der Finanzwelt werden HMMs genutzt, um Aktienkursbewegungen zu modellieren – versteckte Marktphasen (Bullenmarkt, Bärenmarkt) werden aus beobachteten Kursdaten geschätzt. In der Bioinformatik helfen HMMs, Gensequenzen zu analysieren.
Praktische Umsetzung: ASL-Worterkennung mit HMM
In diesem Tutorial konzentrieren wir uns auf die Part 1a des Assignments: Die Kodierung der HMM-Parameter für die Wörter ALLIGATOR, NUTS und SLEEP. Jedes Wort hat genau drei versteckte Zustände. Die Trainingsdaten bestehen aus Y-Koordinaten der rechten Hand über mehrere Frames hinweg.
Schritt 1: Datenstruktur verstehen
Die Trainingssequenzen sind bereits in drei Zustände unterteilt (siehe Tabelle im Assignment). Zum Beispiel für ALLIGATOR mit 17 Frames:
- Zustand 1: Frames 1–6 (31, 28, 28, 37, 68, 49)
- Zustand 2: Frames 7–12 (64, 66, 22, 17, 53, 73)
- Zustand 3: Frames 13–17 (81, 78, 48, 49, 47)
Wichtig: Jeder Zustand muss mindestens eine Beobachtung enthalten. Falls beim Training ein Zustand „leer“ zu werden droht, behältst du die letzte Beobachtung bei.
Schritt 2: Parameter schätzen
Für jeden Zustand berechnest du Mittelwert (mean) und Standardabweichung (std) der Beobachtungen. Die Übergangswahrscheinlichkeiten werden aus der Anzahl der Übergänge zwischen Zuständen geschätzt. Da nur Übergänge zu sich selbst oder zum nächsten Zustand erlaubt sind, ist die Matrix einfach:
- Von Zustand 1: zu 1 oder 2
- Von Zustand 2: zu 2 oder 3
- Von Zustand 3: zu 3 (Endzustand, bleibt dort)
Die Prior-Wahrscheinlichkeit (Start) ist immer 1 für Zustand 1, 0 sonst.
Schritt 3: Beispielrechnung für ALLIGATOR (erstes Sample)
Berechnen wir die Emissionsparameter für Zustand 1 aus dem ersten Sample (17 Frames):
Beobachtungen: 31, 28, 28, 37, 68, 49
Summe = 31+28+28+37+68+49 = 241, Mittelwert = 241/6 ≈ 40.167, gerundet auf 3 Dezimalstellen: 40.167
Varianz = ((31-40.167)^2 + (28-40.167)^2 + ...)/6, dann Wurzel für std. (Hier nicht vollständig gerechnet, da Platz.)
Runden: 0.1 bleibt 0.1, 0.1234 → 0.123, 0.2345 → 0.235, 0.3456 → 0.346, 0.0123 → 0.012, 0.0125 → 0.013.
Die Übergangswahrscheinlichkeiten: In diesem Sample gibt es 5 Übergänge von Zustand 1 (Frame 1→2, 2→3, 3→4, 4→5, 5→6). Alle bleiben in Zustand 1, also Übergang 1→1 = 5/5 = 1.0, 1→2 = 0.0. (Beachte: Über alle Samples gemittelt ergeben sich andere Werte.)
Schritt 4: Integration über alle Trainingssamples
Du musst die Parameter über alle drei Trainingsbeispiele pro Wort mitteln. Dazu zählst du alle Übergänge und Beobachtungen zusammen. Achte darauf, dass die Anzahl der Frames pro Zustand variieren kann.
Häufige Fehler und Tipps
- Zustandsgrenzen nicht verschieben, wenn ein Zustand leer würde: Die Anleitung gibt ein klares Beispiel – immer mindestens eine Beobachtung pro Zustand lassen.
- Rundung nicht mit round(): Implementiere eine eigene Rundungsfunktion, die kaufmännisch rundet (0.5 aufrunden).
- Keine Submissions verschwenden: Teste lokal mit
python hmm_submission_tests.py, bevor du auf Gradescope einreichst. - Nutzung von numpy erlaubt?: Ja, aber die Parameter müssen hardcoded werden – du kannst sie aber mit numpy berechnen und dann als Konstanten einsetzen.
Ausblick: Was kommt in Part 2?
In Part 2 erweiterst du das Modell auf zwei Dimensionen: Y-Koordinaten der rechten Hand und des rechten Daumens. Das macht das Modell robuster, da zwei unabhängige Beobachtungen pro Zeitschritt die Zustandsunterscheidung verbessern. Die Prinzipien bleiben gleich – du berechnest nun einen Mittelwertvektor und eine Kovarianzmatrix für jeden Zustand.
Fazit: HMMs sind der Einstieg in moderne KI
Obwohl HMMs inzwischen oft von Deep Learning überholt wurden, sind sie ideal, um probabilistisches Denken zu lernen. In Bereichen mit kleinen Datenmengen oder klaren Zustandsstrukturen (wie ASL) sind sie immer noch State-of-the-Art. Mit diesem Wissen kannst du dich an komplexere Modelle wie CRFs oder Attention-Mechanismen wagen. Viel Erfolg bei deinem Assignment!
„Hidden Markov Models sind wie die Schatten an der Wand – du siehst nur die Bewegung, aber du weißt, dass dahinter eine Hand steckt.“ – Adaptiert aus der KI-Vorlesung