Home CMKV: Implementation d'algorithme
Post
Cancel

CMKV: Implementation d'algorithme

Lien de la note Hackmd

\[T_{t+1}\leftarrow T_{t+1}\times\alpha\]

L’algorithme

On fait une marche aléatoire

1
2
3
T_∅ <- ?
loop i_cond <- ?
    tirage

On tire un $x_{candidat}$, on preserve tous les $x\neq x_{candidat}$

\(x=(x_1^{(t)},\dots,\color{blue}{x_{candidat}}, x_{candidat+1}^{(t)}, x_{N}^{(t)})\) Au lieu de changer touT le vecteur, on ne change qu’une valeure (le $x_{candidat}$), l’algorithme convergera plus vite

\[\begin{matrix} &x_{candidat}=(&\text{idem},&\boxed{i_{random}},&\text{idem},&\boxed{i_{random}},&\text{idem})\\ &&\updownarrow &\searrow&\updownarrow&\swarrow&\updownarrow\\ &&&\nearrow&&\nwarrow&\\ &x^{(t)} = (& &\boxed{} & &\boxed{} &) \end{matrix}\]

Comment choisir alpha ? On le prend très proche de 1

Algorithme de descente - principe :

  • parcourir toutes les variables
  • Et pour chacunes des variables on parcourt toutes les valeurs possibles et on minimise l’energie (U) : Ca converge forcement mais ca converge vers un minimum local (et c’est pas ce qu’on cherche)
\[x^{(t+1)}=(\text{arg}\min_{\omega_1\in\Omega_1}U(\omega_1,x_2^{(t)}), x_2^{(t)})\quad\text{var #}1\\ x^{(t+2)}=(x_1^{(t+1)}, \text{arg}\min_{\omega_2\in\Omega_2}U(\omega_2,x_2^{(t+1)}))\quad\text{var #}2\\\]

Ici, la solution (le x que l’on retient) est le x tel que $U_{courant} = min$

1
2
3
4
5
6
7
8
9
∞ loop
    Umin
    pour toutes les variables
        ... descente
    Ucourant
    si Ucourant = Umin
        conv. or
    sinon
        Umin = Ucourant

Notre algo n’est PAS une descente, c’est un optimiseur ! (On cherche minimum global, pas local)

\[P_{T_{\varnothing}}=\lim_{T\to\infty}P_T\\\]

Loi aléatoire avec une marche uniforme : c’est le CHAOS

Comment on choisi $T_0$ ? On prend une grande et une petite valeur de temperature et on fait une dichotomie. On mesure le nombre de fois ou on a monte et descendu en energie, ces mesure doivent etre equivalentes.

Si on a une temperature trop faible ? Alors ce n’est pas une loi uniforme.

$—–>T$ Plus T élevée (on va vers la droite) plus on se rapproche d’une loi uniforme

\[\begin{matrix} T_{min} &T_{cherche} &T_{max}\\ &\equiv&\\ &\text{uniforme}& \end{matrix}\]

Si $T_{min}$ et $T_{max}$ loi uniforme alors on est trop a droite. Inversement, on sera trop à gauche. On veut donc : $T_{max}$ grand et $T_{min}$ petit mais pas trop.

Comment on fait la dichotomie ? Il ne faut pas uniforme ou pas uniforme, il faut du suffisemment uniforme.

Recap On cherche $T_0$ tq $P(T_0)$ suit une loi suffisemment uniforme Il faut donc prendre un $T_{min}$ et $T_{max}$ avec une loi pas uniforme pour le min et uniforme pour le max. On fait donc une dichotomie qui nous ramenera a 2 lois suffisemment uniforme pour trouver le $T_0$

Peu de montées par rapport aux descentes énergétiques $=$ on converge

Si je n’arrive pu à monter alors je suis proche de ma solution

Comment on optimise des tirages aleatoires ? Ou

\[i_{\text{candidat swap }1}\quad i_{\text{candidat swap }2}\]

On va utiliser un tableau circulaire.

1
2
loop
    icandidat <- aleatoire

On a un tableau de valeurs $x_{candidat}$ de longueur $L$:

$\dots$$a_i$$\dots$
   

$L$ est tres grand et nombre premier

On va faire un damier, $x^{(t)}=$

$1$$11$$2$$12$$3$
$13$$4$$14$$5$$15$
$6$$16$$7$ $8$
 $9$ $10$ 

Par exemple, $4$ depend des valeurs qui l’entoure:

 $11\updownarrow$ 
$13\leftrightarrow$$4$$\leftrightarrow14$
 $16\updownarrow$ 
\[P_T(X=x)=\frac{1}{Z_T}e^{-\frac{U(x)}{\color{blue}{T}}}\]\[X_{\nu_i}=(X_{\nu_1^i},\dots,X_{\nu_w^i})\]\[\to \overbrace{X_{t-2}\to \underbrace{X_{t-1}\to X_t}_{P(X_t=x_t\vert X_{t-1}=x_{t-1})}}^{\color{blue}{P(X_t\vert X_{t-2})}}\]

La propriété Markovienne est équivalente à celle des chaines de Markov

\[\mathcal N(e)\text{ verifie}\begin{cases} e\not\in \mathcal N(e)\\ e\in\mathcal N(e')\Rightarrow e'\in\mathcal N(e) \end{cases}\]

E est un ensemble de sommet 2 à 2 voisins

un singleton est une clique, on dit que c’est une clique d’ordre 1

Une clique d’ordre n c’est un ensemble de n sommet 2 a 2 voisins

1
2
3
4
5
4 ord 1
4 ord 2
1 ord 3
----
9

Un graphe complet que l’on reduit aux voisins permet de reduire la dependance des variables.

\[P(X=x)=\Pi_{\text{c clique}}\phi(x_c)\]
  • $\phi(x_c)$: fonction potentiel pour la clique $c$

Toujours vrai si $\not\exists x, P(X=x)=\varnothing$

\[\begin{aligned} P(X=x)&=\frac{1}{Z}e^{-U(x)}\\ &= \frac{1}{Z}e^{-\sum_{c}E_c(x_c)} \end{aligned}\]
  • Avec $U_c=\phi_c$ fonction potentielle pour la clique $c$

Modele graphique qui est un champs de Gibbs ?

$\bar c$: ordre de la clique

Exemple

Sur une image en niveau de gris

\[P(X=x\vert Y=y)=e^{-\sum_cU_c(x_c,y)}\]

$X_i$ depend de $X_{i+1}$, $X_{i-1}$, $X_{i+nc}$, $X_{i-nc}$

Probabilité équiprobable -> U vaut 0

on a une vraissemblance quand on melange X et Y \(L(X=x_i|Y=y_i) \text{ proportionnelle à } e^{-U_{L}(x_i,y_i)}\) Avec $U_L(…)$ une clique d’ordre 2

\[U(X_i=\underbrace{x_i}_{\text{ordre }1})=\frac{1}{2}\\ U_1(\underbrace{\text{noir}}_{\text{dans }x})=\frac{1}{2}\\ U_1(\text{blanc})=\frac{1}{2}\quad\forall\text{ probabilite}\] \[U_2(\underbrace{x_i,x_j}_{\text{ordre }2} = 1_{x_i\neq x_j})\]

Avec $i$ et $j$:

  • voisins
  • independants

Definissons $U_L$

\[U_L(x_i,y_i) = \begin{cases} 255-y_i&\text{si } x_i=\text{blanc et } j\text{ voisins et inde}\\ y_i&\text{sinon} \end{cases}\]

Tadaaa commande magique :clap: :clap: :cake: :cactus: :call_me_hand: :jack_o_lantern: :cat: :heart:

\[\begin{aligned} U(x,y)&=\sum_cU_c(x_c,y)\\ &=\sum_iU_1(x_i)+\overbrace{\sum_{i,j_{voisins}}U_2(x_i,x_j)}^{\sum_i\sum_{j\in\mathcal N(i)}U_2(x_i,x_j)}+\sum_iU_2(x_i,y_i)\\ &= \sum_i\biggr(\overbrace{ U_2(x_i,y_i) }^{\color{blue}{L(X\vert Y) }} +\overbrace{ \underbrace{ U_1(x_i) }_{\text{ordre } 1}+ \underbrace{ \sum_{j\in\mathbb N(i)}U_2(x_i,x_i) }_{\text{ordre } 2} }^{P_{(\text{a priori})}}\biggr)\\ \Rightarrow U(x,y)&=\sum_iU_i(x_i,x_{\nu_i},y_i) \end{aligned}\]

Les énergies sont liées au proba P appriori = P sachant … Produit de P = Somme U (Car exp)

This post is licensed under CC BY 4.0 by the author.