# Champs de Markov: Metropolis-Hastings et recuit simule # Rappels $P(X=x)$ => variable aleatoire - $x$: ne pas lister toutes les valeurs possibles pour $X$ $$ P(X=x\underbrace{,}_{\text{et}} Z=z) $$ On le notait $\cap$ au lycee $$ P(A\cap B) = P(A).P(B) $$ :::info - $X = (X_1,\dots,X_n)$ est un vecteur aleatoire - $x = (x_1,\dots,x_n)$ est une realisation ::: ## Sudoku Il existe une solution dediee mais on ne la connait pas |$\color{red}{x_1}$|$\color{red}{x_2}$||| |-|-|-|-| |$\color{red}{x_4}$|$2\color{green}{\rightarrow y_1}$||| ||||| ||||| $$ P(\begin{vmatrix}1\vert&1 \\ 1\vert&\end{vmatrix}) = ? \begin{cases} x_1 =1\\ x_2=1\\ x_4=1 \end{cases} $$ Dans ce cas, on ne regard que 3 realisations et on va les evaluer $$ P(\begin{vmatrix}1\vert&1 \\ 3\vert&\end{vmatrix}) = ? \begin{cases} x_1 =1\\ x_2=1\\ x_4=3 \end{cases}\\ P(\begin{vmatrix}1\vert&3 \\ 4\vert&\end{vmatrix}) = ? \begin{cases} x_1 =1\\ x_2=3\\ x_4=4 \end{cases}\\ P(\begin{vmatrix}3\vert&1 \\ 4\vert&\end{vmatrix}) = ? \begin{cases} x_1 =3\\ x_2=1\\ x_4=4 \end{cases}\\ P(\begin{vmatrix}1\vert&1 \\ 1\vert&\end{vmatrix})\color{green}{\lt}P(\begin{vmatrix}1\vert&1 \\ 3\vert&\end{vmatrix})\color{green}{\lt}P(\begin{vmatrix}1\vert&3 \\ 4\vert&\end{vmatrix})\color{green}{=}P(\begin{vmatrix}3\vert&1 \\ 4\vert&\end{vmatrix})\\ \color{red}{\boxed{L(X=x\vert Y=y) = P(Y=y\vert X=x)}}\\ $$ On veut reecrire $f(x,y)=\cos(x)\sin(\frac{1}{y})$ en $g(y,x)$ $$ g(a,b)=\cos(b)\sin(\frac{1}{a}) $$ Retour au sudoku: on sait parler des probas et des vraisemblances :::success On lit les donnees a un espace de recherche ::: Pour avoir des vraisemblances: $$ \begin{aligned} &L(\begin{vmatrix}1\vert&1 \\ 1\vert&\color{red}{2}\end{vmatrix})\color{red}{} &L(\begin{vmatrix}1\vert&1 \\ 3\vert&\color{red}{2}\end{vmatrix})\color{red}{} &L(\begin{vmatrix}1\vert&3 \\ 4\vert&\color{red}{2}\end{vmatrix})\color{red}{=} &L(\begin{vmatrix}3\vert&1 \\ 4\vert&\color{red}{2}\end{vmatrix})\\ &\overbrace{L(\begin{vmatrix}2\vert&1 \\ 1\vert&\color{red}{2}\end{vmatrix})}^{\downarrow}&\uparrow&& \end{aligned} $$ :::info **Rappel : Bayes** $$ \begin{aligned} x_{\text{sol}} = \text{arg max}_x&\underbrace{P(X=x\vert Y=y)}\\ &=\color{blue}{\frac{L(X=\boxed{x}\vert Y=y)P(X=\boxed{x})}{P(Y=y)}} \end{aligned} $$ ::: ## La meteo de Gulli Le retour de `rand()` $$ \begin{cases} P(\text{beau}) = 0.5 &\color{red}{\varnothing}\\ P(\text{pourri}) = 0.3 &\color{red}{1}\\ P(\text{couvert}) = 0.2 &\color{red}{2} \end{cases} \leftarrow P(T=t)\quad t\in{\text{\{beau}}, \text{pourri}, \text{couvert\}} $$ |$\varnothing\dots\varnothing$|$1\vert\color{red}{1}\dots1$|$2\dots2$| |-|-|-| :::danger C'est pareil pour le sudoku: **tout depend de tout** ::: On va voir comment calculer des probas ou les variables ne sont **pas** independantes $$ \begin{aligned} y&\rightarrow\\ u&\rightarrow \end{aligned} \bigcirc\rightarrow x_{\text{sol}} = \text{arg max}_xP(X=x\vert Y=y) $$ $$ \begin{cases} P(\text{beau}) = 0.4 \\ P(\text{pluie}) = 0.1 \\ P(\text{couvert}) = 0.2 \\ P(\text{orage}) = 0.2 \\ P(\text{neige}) = 0.2 \end{cases}\\ \color{red}{x_{sol} = beau} $$ On a un *echantilloneur:* $$ P\rightarrow \bigcirc \rightarrow x $$ :::warning Il y a plus de chances que l'echantilloneur ne nous donne **pas** la bonne solution ::: # Hypothese $$ U\to P?\\ \text{hypothese}: \not\exists x, P(x)=\varnothing\\ P(X=x)=\boxed{\color{red}{\frac{1}{Z}}e^{-U(x\color{green}{,y})}}\Rightarrow U(x)=-\log(Z.\underbrace{P(X=x)}_{\color{red}{\text{ouf}\neq\varnothing}})\\ \sum_xP(X=x)=1\Rightarrow Z=\sum_xe^{-U(x)}\gt\varnothing\text{ une constante} $$ # Un algo: Metropolis-Hastings Il a ete invente en meme temps par 2 chercheurs $$ x^{(0)} = \begin{vmatrix} 1&1\\ 1&\not 2 \end{vmatrix} = \color{red}{\begin{pmatrix} 1\\ 2\\ 1 \end{pmatrix}}\\ x^{(1)} = \begin{vmatrix} 2&1\\ 3&\not 2 \end{vmatrix} = \color{red}{\begin{pmatrix} 2\\ 1\\ 3 \end{pmatrix}}\\ \vdots\\ x^{(t)}= \begin{vmatrix} \bullet&\bullet\\ \bullet& \bullet \end{vmatrix} $$ :::info **Initialisation:** 1. $x^{0}$ tire aleatoirement avec loi uniforme 2. $t\leftarrow\varnothing$ 3. Repeter jusqu'a l'infini (un algo... a l'infini) ![](https://i.imgur.com/YMmYgR5.png) > On fait juste un tres grand nombre d'iterations **Repeter jusqu'a l'infini:* - $$x_{\text{rand}}$$ tire avec loi uniforme - $$P_{\text{trans}} = \frac{P(X=x_{\text{candidat}})}{P(X=x^{(t)})}$$ - Si $$P_{\text{trans}}\gt 1\color{red}{\Leftrightarrow P(X=x_{\text{candidat}})\gt P(X=x^{(t)})}$$ - Alors $$x^{(t+1)}\leftarrow x_{\text{candidat}}\color{green}{\equiv\text{ MIEUX = ON GARDE}}$$ - Sinon on fait $$\color{green}{\boxed{x^{(t+1)}\leftarrow x_{\text{candidat}}}}\color{red}{\Leftrightarrow P(x_{\text{candidat}})\lt P(x^{(t)})}$$ avec la proba $$P_{\text{trans}}\le 1$$ - Sinon $x^{(t+1)}\leftarrow x^{(t)}$ - $t\leftarrow t+1$ ::: *Quel est cet algo ?* :::success C'est un **algorithme de descente** ::: Cet algo est tel que la fonction $P(x^{(t+1)})\ge P(x^{(t)})$, quand $t$ augmente, $P(x^{(t)})$ augmente aussi. :::warning C'est un optimiseur **hyper sous-efficace** ::: > Surtout compare a des algos de descente ## Exemple ![](https://i.imgur.com/W8GTSO6.png) $0$|$1\dots\color{green}{\boxed{1}}1$|$0\dots0$|`RANDMAX` |-|-|-|-| $$ i_{\text{trans}} = 0.8 \times \text{RANDMAX} $$ - Si `rand()` $$\lt P_{\text{trans}}\times$$ `RANDMAX` - $x^{(t+1)}\leftarrow x_{\text{candidat}}$ - Sinon $x^{(t+1)}\leftarrow x^{(t)}$ $$ \begin{aligned} P(X=x) &= \frac{1}{Z}e^{-U(x)}\\ P_{\text{trans}} &= \frac{\not{\frac{1}{Z}}e^{-U(x_{\text{candidat}})}}{\not{\frac{1}{Z}}e^{-U(x^{(t)})}}\\ &= e^{-(\underbrace{U(x_{\text{candidat}}) - U(x^{(t)})}_{\color{red}{\Delta U}})} \end{aligned} $$ # Recuit simule Comme les forgerons qui chauffe la lame d'une epee, qui la mette dans l'eau le temps de manger, la rechauffe en revenant et la laisse refroidir lentement a l'air libre apres avoir ete formee - Apres avoir ete dans l'eau, l'epee est cassante - On atteint l'etat le plus stable possible en lassant refroidir lentement, l'epee est la plus solide possible :::info C'est un etat de basse energie qui pourrait etre trouve dans la nature ::: ## Algorithme :::info **Initialisation** 1. $T^{(\varnothing)}\leftarrow$ elevee 2. On repete: - $\not P\to P_{T^{(t)}}$ - $T^{(t+1)}\simeq T^{(t)-}$ - $t\leftarrow t+1$ ::: $$ P_{\color{red}{T}}(X=x) = \frac{1}{Z_{\color{red}{T}}}e^{-U(x)}\\ P(X=x)\propto e^{-U(x)}\\ P_{\color{red}{T}}(X=x)\propto e^{-\frac{U(x)}{T}}\\ U_T(x)=\frac{U(x)}{T} $$ ## Exemples d'utilisation - On prend une image en niveau de gris qu'on stylise - On prend une image qu'on veut binariser, avec le moins de regions blanches/noires possibles mais les plus grandes possibles *Est-ce qu'on a la meilleure solution ?* > On en a pas la moindre idee ## Retour sur l'algo :::info **Initialisation:** 1. ~~$\not x^{(0)}$ tire aleatoirement~~ (avec loi uniforme) 2. $t\leftarrow\varnothing$ $\quad\color{blue}{T^{(0)}\leftarrow \text{elevee}}$ 3. Repeter jusqu'a l'infini (un algo... a l'infini) **Repeter jusqu'a l'infini:** - $$x_{\text{rand}}$$ tire avec loi uniforme - $$P_{\text{trans}} = \frac{P_{\color{blue}{T}}(X=x_{\text{candidat}})}{P_{\color{blue}{T}}(X=x^{(t)})}=e^{\frac{-(U(x_{\text{candidat}}-U(x^{(t)})))}{\color{blue}{T^{(t)}}}}$$ - Si $$P_{\text{trans}}\gt 1$$ - Alors $$x^{(t+1)}\leftarrow x_{\text{candidat}}\color{green}{\equiv\text{ MIEUX = ON GARDE}}$$ - Sinon on fait $$\color{green}{\boxed{x^{(t+1)}\leftarrow x_{\text{candidat}}}}$$ avec la proba $$P_{\text{trans}}\le 1$$ - Sinon $x^{(t+1)}\leftarrow x^{(t)}$ - $\color{blue}{T^{(t+1)}\leftarrow\propto T^{(t)}\text{ ou } \propto=1^{-}}$ - $t\leftarrow t+1$ ::: Si on fait un tirage aleatoire, *est-ce que c'est intelligent de mettre que des $1$ dans une grille vide d'un sudoku ?* > Non, c'est la meme proba de mettre des $1$ que n'importe quel autre chiffre |$\color{blue}{1}$|$\color{blue}{1}$|$\color{blue}{1}$|$\color{blue}{2}$| |-|-|-|-| |$\color{blue}{2}$|$\boxed{2}$|$\boxed{3}$|$\color{blue}{2}$| |$\color{blue}{3}$|$\color{blue}{3}$|$\color{blue}{3}$|$\boxed{4}$| |$\boxed{1}$|$\color{blue}{4}$|$\color{blue}{4}$|$\color{blue}{4}$| *C'est quoi l'interet de ce tirage "moins con"? (et pas du tout aleatoire)* > On peut changer $x^{(t)}$ aleatoirement (en echangeant des cases par exemples) |$\color{blue}{1}$|$\color{blue}{1}$|$\color{blue}{1}$|$\color{red}{\boxed{3}}$| |-|-|-|-| |$\color{blue}{2}$|$\boxed{2}$|$\boxed{3}$|$\color{blue}{2}$| |$\color{blue}{3}$|$\color{red}{\boxed{2}}$|$\color{blue}{3}$|$\boxed{4}$| |$\boxed{1}$|$\color{blue}{4}$|$\color{blue}{4}$|$\color{blue}{4}$| :::success On met de l'intelligence dans cet algo qui a vraiment besoin d'etre aleatoire ::: $$ P_{T\to+\infty}(X=x)=\frac{1}{Z}e^{-\frac{U(x)}{T}}\\ \color{red}{P_{+\infty}(x) = \frac{1}{Z}}\quad\text{uniforme}\\ \color{green}{P_1(x)=P(x)\\ P_0(x)=\varnothing\quad\forall x} $$ :::warning Ce n'est pas une loi de probabilite car la somme des probas $=0$ ::: On va determiner la loi de probas autrement, en regardant par exemple un ratio: $$ \frac{P_T(X=x_{\text{solution}})}{P_T(X=x)}=e^{\boxed{\frac{-(\overbrace{U(x)-U(x_{\text{solution}})}^{\color{red}{\text{positif}}})}{T\color{green}{\to 0^+}}}}_{\color{blue}{\to-\infty}}\to 0^+\\ \frac{P_0(x\neq x_{\text{solution}})}{P_0(x_{\text{solution}})} = \varnothing\\ \begin{cases} \forall x\neq x_{\text{solution}}, P_0(x)=\varnothing\\ P_0(x_{\text{solution}}) = 1 \end{cases} $$ ![](https://i.imgur.com/OdWzH55.png) $$ \downarrow\\ P_0(x)=\begin{cases} 1&\text{si } x=x_{\text{solution}}\\ \varnothing &\text{sinon} \end{cases} $$