# CMKV: Introduction aux Chaines de Markov
> Savoir echantilloner c'est bien mais on veut optimiser
# Rappels
:::info
Quand on a une loi de proba $P(x)$
$$
\begin{aligned}
P(X&=x)\to P_{\underbrace{T}_{\text{temperature}}}(X=x)=\frac{1}{Z_T}e^{-\frac{U(x)}{T}}\\
&\downarrow\\
P(X=x)&=\frac{1}{Z}e^{-U(x)}
\end{aligned}
$$
:::
$$
\color{red}{
\lim_{T\to+\infty}P_T=P_{\text{uniF}}\\
\lim_{T\to0^+} P_T=P_0\\
P_0(X=x)\begin{cases}
1 &\text{si } x=x_{\text{solution}}\\
\varnothing &\text{sinon}
\end{cases}
}
$$
## Marche aleatoire
:::warning
Notre echantillonneur va realiser une **marche aleatoire**
:::
*Comment on affecte $x^{(t+1)}$ a partir du $x$ courant ?*
:::info
On a un échantiolloneur Metropolis-Hastings:
- $x^{(0)}\leftarrow \text{aléatoire}$
- Boucle:
- On se trouve un $x_{\text{candidat}}$
- $x^{(t+1)}\leftarrow$ soit $x^{(t)}$ soit $x_{\text{candidat}}$ $\to\color{red}{\text{dépend de }} P_{\color{blue}{T^{(t)}}}(X=x)$
- $\color{blue}{T^{(t+1)}\leftarrow\underbrace{\alpha}_{\equiv 1^-} T^{(t)}}$
- $t\leftarrow t+1$
:::warning
C'est un algo de *recuit simulé*
> Alterner entre cycle de refroidissement lent et réchauffement pour un métal
:::
:::
*C'est quoi un algo brute force ?*
> C'est un algo qui va explorer tout l'espace pour trouver la solution
:::success
On cherche le **minimum energetique**
:::
|$\color{red}{\{2,4\}}$|$\color{red}{\{2,3,4\}}$|||
|-|-|-|-|
||$\boxed{1}$|$\boxed{2}$||
|||||
|$\boxed{3}$|||$\boxed{4}$|
D'apres le dernier cours, si on regarde l'echantilloneur, il y a une possibilite de faire un echantillonneur tres simple mais *sous-optimal*
:::info
$$
\color{red}{\forall t, u(x^{(t+1)})\le u(x^{(t)})}
$$
loop:
- $x_{\text{candidat}}\leftarrow$ aleatoire
- si $x_{\text{candidat}}$ ameliore
- on le garde comme $x^{(t+1)}$
:::
![](https://i.imgur.com/QFgeGa7.png)
*Combien de temps ca va prendre pour atteindre la solution ?*
> On peut viser la fin de l'univers apres l'extinction des hommes
:::warning
Au final, le tirage aleatoire est **moins efficace que le bruteforce**
:::
> C'est con hein ?
# Backtracking
On va toujours empiler les boucles. Par exemple:
- On met $1$ dans la premiere case, sauf que ce n'est pas possible donc on break
- On met $2$ a la place
- On fait pareil pour la $2^e$ case, $1$ et $2$ ne sont pas possibles donc on met $3$
- On fait pareil pour la $3^e$ case, on met $4$
- $\vdots$
- On arrive a un blocage !
|$2$|$3$|$4$|$1$|
|-|-|-|-|
|$4$|$\boxed{1}$|$\boxed{2}$|$3$|
|$1$|$2$|$3$||
|$\boxed{3}$|||$\boxed{4}$|
*Mais ou est-ce qu'on s'est trompe ??*
- On backtrack et on change nos valeurs
- $1$, $2$, $3$ et $4$ ne sont pas possibles donc on supprime la valeur et on revient a la case precedente
- On change $2$, $3$ c'est pas possible donc on met $4$
|$2$|$3$|$4$|$1$|
|-|-|-|-|
|$4$|$\boxed{1}$|$\boxed{2}$|$3$|
|$1$|$4$|||
|$\boxed{3}$|||$\boxed{4}$|
Pour resoudre le sudoku, imaginons d'avoir une fonction $U$ a 16 variables:
$$
U(\begin{matrix}
\boxed{}&\boxed{}&\boxed{}&\boxed{}\\
\boxed{}&\boxed{}&\boxed{}&\boxed{}\\
\boxed{}&\boxed{}&\boxed{}&\boxed{}\\
\boxed{}&\boxed{}&\boxed{}&\boxed{}\\
\end{matrix})
$$
|$\{2, 4\}$||||
|-|-|-|-|
||$\boxed{1}$|$\boxed{2}$||
|||||
|$\boxed{3}$|||$\boxed{4}$|
:::warning
Ici on reduit l'espace des possibilites
:::
En premiere iteration:
$$
U(\begin{matrix}
\boxed{1}&\boxed{1}&\boxed{1}&\boxed{1}\\
\boxed{1}&\boxed{1}&\boxed{1}&\boxed{1}\\
\boxed{1}&\boxed{1}&\boxed{1}&\boxed{1}\\
\boxed{1}&\boxed{1}&\boxed{1}&\boxed{1}\\
\end{matrix})\\
\vdots\\
U(\begin{matrix}
\boxed{1}&\boxed{1}&\boxed{1}&\boxed{1}\\
\boxed{1}&\boxed{1}&\boxed{1}&\boxed{1}\\
\boxed{1}&\boxed{1}&\boxed{1}&\boxed{1}\\
\boxed{1}&\boxed{2}&\boxed{1,2,3,4}&\boxed{1,2,3,4}\\
\end{matrix})\\
$$
:::success
On obtient un arbre des possibilites
![](https://i.imgur.com/h2u4Nji.png)
:::
- Bruteforce: parcours en largeur
- Backtrack: parcours en longueur
:::danger
Il y a des problemes ou **on ne peut pas backtracker**
:::
# Autre methode
On se donne une fonction $U_1(x)$
![](https://i.imgur.com/Hzsb1Is.png)
$$
P(X=x)=\frac{1}{Z}e^{-U(x)}\\
\downarrow +T\\
P_T(X=x)=\frac{1}{Z_T}e^{-\underbrace{\frac{U(x)}{T}}_{\color{red}{U_T(x)}}}
$$
:::warning
On va chercher le $x$ qui **maximisme**
:::
![](https://i.imgur.com/vavFypp.png)
On a un *espace discret*.
:::success
On chercher le $\color{green}{P_{\infty}}$ qui a la meme aire que notre fonction $\color{blue}{P(X=x)}$
![](https://i.imgur.com/B7hYdqN.png)
:::
On dessine $\color{blue}{P(5)}$
![](https://i.imgur.com/jDn2PKL.png)
On dessine $\color{black}{P(1)}$
![](https://i.imgur.com/aSPkien.png)
$$
\vdots
$$
![](https://i.imgur.com/ROkquo0.png)
Imaginons qu'on a une bille. Il ne faut pas qu'elle se fasse coincer dans un minimum local et elle se deplace de proches en proches.
![](https://i.imgur.com/M7HD5Uu.gif)
:::success
La bille aura de plus en plus de mal a "remonter" du creux et va se retrouver "coincee" dans le creux contenant la solution
:::
*Quel est le cout pour aller d'une position a une autre ?*
![](https://i.imgur.com/pRUhpfx.png)
> Dans ce cas la bille doit avoir assez d'energie pour remonter la pente
# Ratio
$$
P(X_{t+1}=x_{t+1}\vert X_t=x_t)=\text{ratio}\\
X_t\color{green}{\text{ influence }} X_{t+1}\\
X_{t+1}\color{red}{\text{ depend de }} X_t
$$
:::info
Si on a $P(A=a\vert B=b,C=c)$, $B$ et $C$ influencent $A$.
:::
$$
\color{green}{X_0\to X_1\dots X_{t-2}\to X_{t-1}\to} \overbrace{X_t\to X_{t+1}}^{\text{modele}}\color{green}{\to X_{t+2}}
$$
## La meteo de Gulli
En supposant qu'on soit a Paris:
$$
\color{green}{
P(X_{t+1}=\text{pourri}) = 0.6\\
P(X_{t+1}=\text{pourri}) = 0.4
}
$$
|$x_{t+1}$ \ $x_t$|beau|pourri|total|
|-|-|-|-|
|beau|$\color{red}{0.4}$|$\color{red}{0.2}$|$\color{green}{0.6}$|
|pourri|$\color{red}{0.1}$|$\color{red}{0.3}$|$\color{green}{0.4}$|
$$
\color{green}{X_0\to X_1\dots X_{t-2}\to X_{t-1}\to} \overbrace{X_t\to X_{t+1}}^{\text{modele}}\color{green}{\to X_{t+2}}\\
\color{red}{
x_{t-2}\leftarrow x_{t-1}\overbrace{\leftarrow}^{\text{dependance}} x_t\overbrace{\leftarrow}^{\text{dependance}} ?x_{t+1}}
$$
*Le modele ne semble pas simpliste ?*
> On est influence que par le temps d'avant d'une facon directe
:::warning
Le temps de demain depend du temps qu'il fait aujourd'hui mais egalement du temps d'hier
:::
:::success
Le tableau devient **3D**
:::
On a defini:
$$
P(X_{t+1}=x_{t+1}\vert X_{t-1}=x_{t-1}, X_t=x_t)
$$
On a decide d'ignorer le temps d'avant avant-hier, et la journee encore avant, etc.
:::danger
Le modele le plus **general** pour connaitre le temps de demain est:
$$
P(X_{t+1}=x_{t+1}\vert X_t=x_t, X_{t-1}=x_{t-1},\dots, X_0=x_0)\quad\text{(tous les jours)}
$$
:::
$$
P(\underbrace{X_{t+1}}_{\color{green}{\text{var. alea}}}=x_{t+1}\vert X_t=x_t, X_{t-1}=x_{t-1},\underbrace{\dots, X_0=x_0}_{\color{green}{\text{independante de}}})
$$
:::danger
On a ecrit des **dependances indirectes** qui ne vont pas etre modelisees
$$
\color{green}{X_0\to X_1\dots X_{t-2}\to X_{t-1}\to} \overbrace{X_t\to X_{t+1}}^{\text{modele}}\color{green}{\to X_{t+2}}
$$
- En vert: dependances indirectes
**C'est une *chaine de Markov***
:::
Prenons une chaine de niveau $2$:
$$
\color{green}{\underbrace{X_{t-4}}_{\to \color{black}{X_{t-2}}}\to \underbrace{X_{t-3}}}_{\color{black}{\to X_t}}\to \underbrace{X_{t-2}}_{\to X_t}\color{green}{\to} X_{t-1}\to X_t
$$
Prenons une image en niveaux de gris:
![](https://i.imgur.com/pkLSxTq.png)
$$
X=(X_1,\dots,X_{\underbrace{N}_{\text{pixel}}})\\
x = (x_1,\dots,x_N)\\
U_L(x_i, y_i)=\begin{cases}
y_i &\text{si } x_i=\text{noir}\\
1-y_i&\text{sinon}
\end{cases}
$$
![](https://i.imgur.com/gT1kzxs.png)
$$
\begin{aligned}
\color{blue}{U_{\text{prior}}(x_i,x_{i-l},x_{i-1},x_{i+1},x_{i+l})}&=\sum_{v}\vert x_i-x_{iv}\vert\\
&=\sum_{v}\delta_{x_i\neq x_{iv}}
\end{aligned}
$$
:::info
**Qu'est-ce qu'un champ de Markov ?**
Un modele graphique avec des fleches $A- B$ ($A$ et $B$ sont dependantes mutuellement)
:::
:::warning
On veut que notre graphe soit le plus **incomplet possible**
:::
> cad avoir le moins de variables possibles
$$
P(X_{t+1}=x_{t+1}\vert \{X_u=x_u\}_{u\le t})=-(\{X_u=x_u\}_{u\in[t-h,t]})\\
$$
:::info
**Propriete Markovienne**
$$
P(X_i=x_i\vert \{X_j=x_j\}_{[1,N]\setminus {i}}) = P(X_i=x_i\vert \{X_j=x_j\}_{\text{ ou } j\in V(i)})
$$
:::