praca_magisterska/pytania/odpowiedzi/20-hmm-vs-deep-learning-mowa.md

222 lines
8.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Pytanie 20: Rozpoznawanie mowy - HMM vs Deep Learning
## Pytanie
**"Przedstawić klasyczną metodę rozpoznawania mowy opartą o HMM (Ukryte Modele Markowa). Porównać ją z metodami korzystającymi z głębokich sieci neuronowych."**
Przedmiot: EASAR (Elementy Automatycznego Sterowania i Rozpoznawania)
---
## 📚 Odpowiedź główna
### 1. System rozpoznawania mowy - architektura
```
┌─────────────────────────────────────────────────────────────────┐
│ Sygnał audio │
│ ↓ │
│ [Ekstrakcja cech] ──→ MFCC/Filterbanks │
│ ↓ │
│ [Model akustyczny] ──→ HMM / DNN / Hybrid │
│ ↓ │
│ [Model językowy] ──→ N-gram / RNN-LM │
│ ↓ │
│ [Dekoder] ──→ Wyszukiwanie najlepszej hipotezy │
│ ↓ │
│ Tekst │
└─────────────────────────────────────────────────────────────────┘
```
---
### 2. HMM (Hidden Markov Model) - klasyczne podejście
#### Struktura HMM dla fonemu
```
a₁₂ a₂₃ a₃₄
┌────────→ ┌────────→ ┌────────→
│ │ │
┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌───┐
│ 1 │ │ 2 │ │ 3 │ │ 4 │
│ │ │ │ │ │ │END│
└─┬─┘ └─┬─┘ └─┬─┘ └───┘
│ │ │
└──────────┴──────────┘
a₁₁ a₂₂ a₃₃ (self-loops)
Każdy stan emituje obserwacje (MFCC) według rozkładu GMM:
b_j(o) = Σ_m c_{jm} N(o; μ_{jm}, Σ_{jm})
```
#### Parametry HMM
| Symbol | Opis |
|--------|------|
| **A** | Macierz przejść (a_ij) |
| **B** | Rozkłady emisji (GMM) |
| **π** | Rozkład początkowy |
#### Trzy problemy HMM
| Problem | Algorytm | Zastosowanie |
|---------|----------|--------------|
| **Ewaluacja:** P(O\|λ) | Forward-Backward | Scoring |
| **Dekodowanie:** argmax P(Q\|O) | Viterbi | Rozpoznawanie |
| **Uczenie:** argmax P(O\|λ) | Baum-Welch (EM) | Trening |
#### Algorytm Viterbi
```
Znajdź najbardziej prawdopodobną sekwencję stanów:
α_t(j) = max_{i} [α_{t-1}(i) · a_{ij}] · b_j(o_t)
Backtrace: ψ_t(j) = argmax_{i} [α_{t-1}(i) · a_{ij}]
t=1 t=2 t=3 t=4
s=1 ●──────●──────●──────●
│╲ │╲ │╲ │
s=2 ●──────●──────●──────●
│╲ │╲ │╲ │
s=3 ●──────●──────●──────●
Viterbi trellis
```
---
### 3. Deep Learning w rozpoznawaniu mowy
#### DNN-HMM Hybrid (2012+)
```
┌─────────────────────────────────────────────────────────────────┐
│ Klasyczne GMM-HMM: │
│ Cechy MFCC → GMM → P(o|stan) → HMM → dekodowanie │
│ │
│ Hybrid DNN-HMM: │
│ Cechy → DNN → P(stan|o) → P(o|stan) = P(stan|o)/P(stan) │
│ ↓ │
│ HMM → dekodowanie │
│ │
│ DNN zastępuje GMM jako model emisji! │
└─────────────────────────────────────────────────────────────────┘
```
#### End-to-End Models (2014+)
```
CTC (Connectionist Temporal Classification):
┌──────────────────────────────────────────────────────────────┐
│ Audio → [LSTM/Transformer] → P(y_t|x) → CTC Loss → Tekst │
│ │
│ CTC pozwala na różne wyrównania: │
│ "h-e-l-l-o" = "hh-ee-ll-lo" = "-h-e-l-l-o-" │
│ (blank = '-') │
└──────────────────────────────────────────────────────────────┘
Attention-based (Seq2Seq):
┌──────────────────────────────────────────────────────────────┐
│ Audio → [Encoder] → [Attention] → [Decoder] → Tekst │
│ ↓ │
│ Wyrównanie uczone │
│ │
│ Modele: LAS (Listen Attend Spell), Transformer ASR │
└──────────────────────────────────────────────────────────────┘
```
#### Transformer ASR (2020+)
```
Whisper, Wav2Vec 2.0, Conformer:
Audio waveform
[CNN Feature Encoder]
[Transformer Encoder] × N
[CTC / Attention Decoder]
Tekst
Pre-training: Self-supervised na dużych danych
Fine-tuning: Supervised na labeled data
```
---
### 4. Porównanie HMM vs DNN
| Aspekt | GMM-HMM | DNN-HMM | End-to-End |
|--------|---------|---------|------------|
| **Model akustyczny** | GMM | DNN | DNN |
| **Model czasowy** | HMM | HMM | CTC/Attention |
| **Wyrównanie** | Viterbi | Viterbi | Uczone/CTC |
| **Trening** | EM (Baum-Welch) | Backprop | Backprop |
| **Interpretowalność** | Wysoka | Średnia | Niska |
| **Dane treningowe** | Małe | Średnie | Duże |
| **WER (Word Error Rate)** | ~15-20% | ~8-12% | ~3-5% |
| **Latencja** | Niska | Średnia | Zmienna |
---
### 5. Ewolucja wydajności
```
WER na Switchboard (telefon):
Rok Model WER
2010 GMM-HMM ~18%
2012 DNN-HMM ~12%
2015 LSTM-HMM ~8%
2017 LAS (Seq2Seq) ~6%
2020 Conformer ~4%
2023 Whisper Large ~3%
Poziom ludzki ~4%
```
---
## 🧠 Mnemoniki
### "HMM = Hidden states + Markov + Model":
Ukryte stany, przejścia markowskie, emisje obserwacji
### "Viterbi = Find best path":
Dynamiczne programowanie dla najlepszej ścieżki
### "CTC = Collapse The Characters":
Usuwa powtórzenia i blanki → tekst
---
## ❓ Pytania dodatkowe
### Q1: "Co to jest forced alignment?"
**Odpowiedź:** Viterbi z ograniczeniem do znanej transkrypcji. Wyznacza granice czasowe fonemów/słów. Używane do tworzenia danych treningowych i TTS.
### Q2: "Dlaczego DNN jest lepszy od GMM?"
**Odpowiedź:** DNN może modelować złożone, nieliniowe zależności. GMM zakłada mieszaninę Gaussianów (często niewystarczające). DNN korzysta z kontekstu (wiele ramek na wejściu).
### Q3: "Co to jest language model fusion?"
**Odpowiedź:** Łączenie modelu akustycznego z językowym: P(W|O) ∝ P(O|W)·P(W)^α. Shallow fusion (podczas dekodowania) lub deep fusion (wspólny trening).
---
## 🎯 Kluczowe punkty
1. **HMM:** Stany ukryte, GMM emisje, Viterbi dekodowanie
2. **DNN-HMM Hybrid:** DNN zastępuje GMM, HMM dla czasu
3. **End-to-End:** CTC lub Attention, bez HMM
4. **Trend:** Większe modele, więcej danych, mniej inżynierii cech
---
## 📖 Źródła
1. Rabiner - "A Tutorial on HMM"
2. Hinton et al. - "Deep Neural Networks for Acoustic Modeling" (2012)
3. Graves et al. - "CTC" (2006)
4. Chan et al. - "LAS" (2016)