# Algorithme de Baum-Welch

L'algorithme de Baum-Welch est un algorithme utilisé pour réestimer les paramètres d'un modèle de Markov caché. Il utilise l'algorithme forward-backward et porte les noms de Leonard E. Baum et Lloyd Welch (en).

## Présentation

L'algorithme de Baum-Welch est un cas particulier d'une généralisation de l'algorithme espérance-maximisation (GEM).
Un des problèmes liés aux modèles de Markov cachés (HMM) est de trouver un modèle $\mu$ qui maximise la probabilité d'une séquence d'observations $O=(o_{1},o_{2},\ldots ,o_{T})$, c'est-à-dire de déterminer le modèle qui explique le mieux la séquence. Le problème est qu'il n'est pas possible de trouver un tel modèle de façon analytique. L'algorithme de Baum-Welch est un algorithme itératif, qui permet d'estimer les paramètres du modèle qui maximisent la probabilité d'une séquence d'observables.
L'algorithme de Baum-Welch converge vers un maximum local.

## Description de l'algorithme
### Calculs préliminaires

Avant de décrire le processus d'estimation, nous avons besoin de savoir cela:
* le nombre prévu de transitions d'un état $i$ en $O$ et
* le nombre prévu de transitions d'un état i à l'état j dans $O$
Définissons d'abord $\xi _{t}{(i,j)}$ la probabilité d'être dans l'état $i$ à l'instant $t$ et dans l'état $j$ à l'instant $t+1$, étant donné une observation $O$ et le modèle $\mu$.
$\xi _{t}{(i,j)}=P(q_{t}=i,q_{t+1}=j|O,\mu )$
$\xi _{t}{(i,j)}={\frac {P(q_{t}=i,q_{t+1}=j,O|\mu )}{P(O|\mu )}}={\frac {\alpha _{t}{(i)}a_{ij}b_{j}(o_{t+1})\beta _{t+1}(j)}{P(O|\mu )}}$
$\xi _{t}{(i,j)}={\frac {\alpha _{t}{(i)}a_{ij}b_{j}(o_{t+1})\beta _{t+1}(j)}{\displaystyle \sum _{k=1}^{N}\displaystyle \sum _{l=1}^{N}{\alpha _{t}(k)a_{kl}b_{l}(o_{t+1})\beta _{t+1}(l)}}}$
avec $a_{ij}$ la probabilité de transition de l'état $i$ vers l'état $j$, et $b_{j}(o)$ la probabilité d'observer $o$ lorsque l'on est dans l'état $j$, et où les valeurs $\alpha _{t}(i)$ et $\beta _{t}(i)$ définies ci après peuvent se calculer simplement avec l'algorithme forward-backward.
$\alpha _{t}(i)=P(o_{1},o_{2},\ldots ,o_{t},q_{t}=i|\mu )$
$\beta _{t}(i)=P(o_{t+1},o_{t+2},\ldots ,o_{T}|q_{t}=i,\mu )$
La figure montre une vue schématique partielle des éléments nécessaires pour le calcul de $\xi (i,j)$.
Nous définissons aussi $\gamma _{t}(i)$ la probabilité d'être dans l'état $i$ à l'instant $t$,
$\gamma _{t}(i)=\displaystyle \sum _{j=1}^{N}{\xi _{t}(i,j)}$
En sommant $\gamma _{t}(i)$ sur le temps, on obtient:
* le nombre prévu de transitions d'un état $i$ dans l'observation $O$
$\displaystyle \sum _{t=1}^{T-1}{\gamma _{t}(i)}$
Et en faisant la même chose avec $\xi _{t}(i,j)$, nous obtenons:
* le nombre prévu de transitions d'un état $i$ à l'état $j$ dans l'observation $O$
$\displaystyle \sum _{t=1}^{T-1}{\xi _{t}(i,j)}$

### Réestimation

Le fonctionnement de la procédure itérative est le suivant :
* Partir d'un modèle initial qui peut être choisi aléatoirement.
* Réaliser le calcul des transitions et symboles émis qui sont les plus probables selon le modèle initial.
* Construire un nouveau modèle dans lequel la probabilité des transitions et des observations déterminée à l'étape précédente augmente. Pour la séquence des observables en question, le modèle aura désormais une probabilité plus élevée que le modèle précédent.
Ce processus de formation est répétée plusieurs fois jusqu'à ce qu'il n'y ait plus d'amélioration entre le modèle recalculé et l'ancien.
Probabilité d'être dans l'état $i$ à l'instant $t=1$ :
${\bar {\pi }}_{i}=\gamma _{1}(i)$
$1\leq i\leq N$
Re-estimation des probabilités de transition. Le numérateur correspond au nombre attendu de transitions de $i$ à $j$, et le dénominateur représente le nombre attendu de transitions de $i$ :
${\bar {a}}_{ij}={\frac {\displaystyle \sum _{t=1}^{T-1}{\xi _{t}(i,j)}}{\displaystyle \sum _{t=1}^{T-1}{\gamma _{t}(i)}}}$
$1\leq i\leq N$, $1\leq j\leq N$
Re-estimation des probabilités d'émission. Le numérateur correspond au nombre de fois où l'on est passé dans l'état $j$ et que l'on a observé $o_{k}$, et le dénominateur représente le nombre de fois où l'on est passé dans l'état $j$ :
${\bar {b}}_{j}(o_{k})={\frac {\displaystyle \sum _{t=1:o_{t}=o_{k}}^{T}{\gamma _{t}(j)}}{\displaystyle \sum _{t=1}^{T}{\gamma _{t}(j)}}}$
$1\leq j\leq N$, $1\leq k\leq N$