génération aléatoire et modèle de boltzmann expressivité ... · cycle c= cyc(a) c(x) = log(1...

22
Génération Aléatoire et Modèle de Boltzmann Expressivité et Effectivité Michèle Soria LIP6 – UPMC Journées ALEA 2011 CIRM, Marseille, 7 Mars 2011 1 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann

Upload: others

Post on 06-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Génération Aléatoire et Modèle de BoltzmannExpressivité et Effectivité

Michèle SoriaLIP6 – UPMC

Journées ALEA 2011

CIRM, Marseille, 7 Mars 2011

1 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 1/22

Page 2: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Génération Aléatoire

Experimenter→ Analyser et ConjecturerTest de conjectures, estimation d’ordres de grandeurvisualisation de formes et propriétés limites.

Validation de modèlesTest de modèles (graphes de terrain), signification dephénomènes observés (séquences biologiques).

Tests logicielscorrection, benchmark, robustessecouverture typique, génération intensive et automatique

Passage à l’échelle→ Efficacitéstructures de grande taille : 106 −−109

mots, arbres, graphes, pavages. . .

2 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 2/22

Page 3: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Méthodes génériques et automatiquesClasse combinatoire C

C : SpécificationCombinatoire

Objet aléatoireγ ∈ C

Random Number Gen.

Généricité : Classes Combinatoires→ Spécifications,Spécifications→ Équations fonctionnelles de SG,Effectivité : Générateur compilé à partir des spécifications, algorithmesprobabilistes simples

Méthode récursiveFlajolet, Van Cutsem, Zimmerman

Taille fixée, Génération uniforme

ΓC(n) ; P (γn) = 1/cn

Calcul et stockage des coef.

Complexité de génération :O(n log n)

Méthode de BoltzmannDuchon, Flajolet, Louchard, Schaeffer

Taille = v.a. ; mais unif. vs taille

ΓC(x) ; P (γ) ∝ e|γ|/C(x)

Calcul de valeurs de SG C(x)

Complexité linéaire pourgénération en taille approchée

3 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 3/22

Page 4: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Cadre : Combinatoire Analytique (FlSe09)

Classe combinatoire C, objets étiquetésSérie génératrice exponentielle C(z) =

∑γ∈C

z|γ||γ|! =

∑n≥0

cnzn

n!

SPÉCIFICATION DE C EQUATION FONCTIONNELLE S.G. C(z)

Construction Notation SG. exponentielleε 1 1

atome Z zUnion C = A ∪ B C(z) = A(z) + B(z)

Produit C = A× B C(z) = A(z)× B(z)

Séquence C = SEQ(A) C(z) = (1− A(z))−1

Ensemble C = SET(A) C(z) = exp(A(z))

Cycle C = CYC(A) C(x) = −Log (1− A(z))

Analogue pour classes non étiquetées, avec séries génératrices ordinaires.

4 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 4/22

Page 5: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Générateurs de Boltzmann (DuFlLoSc04)

Générateur d’objets étiquetés : Px (γ) = x|γ||γ|!C(x) , avec C(x) =

∑ x|γ||γ|! (x < ρ)

SPÉCIFICATION DE C ALGORITHME DE GÉNÉRATION ΓC(x)

Construction Algorithme de générationC = ∅ or Z ΓC(x) := ε or atom

C = A ∪ B ΓC(x) := Bernouilli(

A(x)A(x)+B(x)

); return ΓA(x) or ΓB(x)

C = A× B ΓC(x) := return < ΓA(x); ΓB(x) >etiq appels indépendants

C = SEQ(A) ΓC(x) := k ← Geometric(A(x)); return < ΓA(x), . . . , ΓA(x)︸ ︷︷ ︸k fois

>etiq

C = SET(A) ΓC(x) := k ← Poisson(A(x)); return < ΓA(x), . . . , ΓA(x)︸ ︷︷ ︸k fois

>etiq

C = CYCLE(A) ΓC(x) := k ← Logarithmic(A(x)); return < ΓA(x), . . . , ΓA(x)︸ ︷︷ ︸k fois

>etiq

α ∈ A ∪ B → Px (α) =A(x)

A(x)+B(x)x|α||α|!A(x) = x|α|

|α|!A(x)

γ ∈ C = A× B → Px (γ) = x|α||α|!A(x) ·

x|β||β|!B(x) · (α + β)! = x|α|+|β|

(|α|+|β|)!A(x)B(x) = x|γ||γ|!C(x)

γ = (α1, · · · , αk ) ∈ SEQ(A)→ Px (γ) = A(x)k (1−A(x)) · x|α1||α1|!A(x)

· · · x|αk ||αk |!A(x)

· (α1 + · · ·+αk )! =x|γ||γ|!C(x)

5 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 5/22

Page 6: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Exemples

Arbres binaires :B = Z + B × B

B(z) = z + B(z)2 = 1−√

1−4z2

Algorithm : ΓT (x)

if Bernoulli xB(x) then

Return �else

Return 〈 ΓB(x) , ΓB(x) 〉etiq ;end if

Arbres planaires :T = Z × SEQ(T )

T (z) = z1−T (z) = 1−

√1−4z2

Algorithm : ΓT (x)

k ← Geom(T (x)) ;forest ← 〈 ΓT (x), . . . , ΓT (x)︸ ︷︷ ︸

k times

〉etiq ;

Return �× forest ;

6 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 6/22

Page 7: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Générateurs de Boltzmann (DuFlLoSc04)

Génération libre, paramètre x

Algorithmes probabilistes : choix aléatoire selon lois de paramètre A(x)

Évaluation numérique des séries génératrices : calcul de l’oracle

Générateur aléatoire uniforme [0,1] + manipulation de réels

Théorème ( Complexité de la génération libre – DuFlLoSc04)

Le générateur de Boltzmann ΓC(x) d’une classe C, spécifiée récursivementsur les opérateurs ε , Z, ∪, ×, Seq, Set, Cycle, a une complexité arithmétiquelinéaire en la taille du résultat (sous hypothèse oracle en O(1)).

Algorithm : Geom-Poisson-Loga(x)

U ← uniform(); S ← 0; k ← 0 ;while U < S doS ← S + pk ; k ← k + 1 ; odReturn k ; O(k + 1)

Z × Seq 4

ZSeq 2

ZSeq 3

Z Z Z

Z

Z ZSeq 3

Z ZSeq 2

Z Z

Z

Z

7 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 7/22

Page 8: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Générateurs de Boltzmann non étiqueté (FlFuPi07)

Théorème (FlFuPi07)

Pour une classe C non étiquetée, spécifiée recursivement par desopérateurs ε , Z, ∪, ×, Seq, Set, Cycle, le générateur de Boltzmann ΓC(x) aune complexité arithmétique linéaire en la taille du résultat.

Thanks to Carine Pivoteau8 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 8/22

Page 9: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Distribution de la taille

Générateur libre→ taille objet engendré = v. aléatoire N

Px (N = n) =cnxn

n!C(x)et Ex (N) = x

C′(x)

C(x)

mais uniformité à taille donnée : Px (γn) = xn

n!C(x)

Distribution taille dépend de x , 0 < x < ρet du type de singularité SG

x=0.2

x=0.25

x=0.3

x=0.35

x=0.4

partitionsd'ensemble

x=0.38

x=0.48

x=0.58

x=0.68

surjections x=0.05 arbres

x=0.25

x=0.15

C(x) = e(ex−1) C(x) = 12−ex C(x) = 1−

√1−4x2

9 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 9/22

Page 10: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Contrôle de la taille

Contrôle de la taille : générer objets de taille exacte n, ou de de tailleapprochée [n(1− ε), n(1 + ε)],

Rejet : si la taille ne convient pas, rejeter et lancer une autre génération

Taille approchée : complexité moyenne (essentiellement) linéaire

Complexité de la génération contrôlée (DuFlLoSc04, FlFuPi07)

Soit C une classe combinatoire, spécifiée recursivement à l’aide desopérateurs ε , Z, ∪, ×, Seq, Set, Cyc. Le générateur avec rejet ΓC(x , n, ε) aune complexité moyenne en O(n) :

Distributions en cloche : 1 essai en moyenne pour engendrer un objetde taille ∈ [n(1− ε), n(1 + ε)]

Distributions plates : O(1) essais en moyenne pour engendrer un objetde taille ∈ [n(1− ε), n(1 + ε)]

Distributions piquées : O(n) essais mais pointage pour se ramener àdistribution plate

Mais O(n2) pour taille exacte (O(n) pour distributions en cloche).

10 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 10/22

Page 11: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Chaîne de traitement – Automatisation

EXPRESSIVITÉ

CALCULS

SpécificationCombinatoire

Taillevisée

Générateur

Oracle

Compilateur

Paramètres Objetaléatoire

11 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 11/22

Page 12: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Expressivité

Extensions à d’autres opérateurs combinatoiresCycle pointé non-étiqueté(BoFuKaVi07, PaSt07)Langages Réguliers avec Shuffle (DaPaRoSo10 )Produit Boite (RoSo09)Opérateurs différentiels (Roussel, BoSoRo11)Produit d’Hadamard O(n

√n)(BoGaRo10 )

. . .

Extensions à d’autres univers combinatoiresSemi-étiquetés et colorés (BoJa09)Classes multiplicatives Boltzmann-Dirichlet (BoBa11). . .

Génération BiaiséeBoltzmann multicritère (BoPo10)Boltzmann "uniforme biaisé". . .

12 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 12/22

Page 13: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Calculs, certification, implantation

Calculs de sériesOracle pour systèmes combinatoires récursifs etdifférentiels (Salvy, PiSaSo11)Rayon de convergence ?Paramètre en fonction de la taille visée ?Systèmes combinatoires multivariés ?. . .

Certificationarithmétique réelle :impact des erreurs (Duchon)arithmétique discrète : générateurs de Boltzman binaires(FlPeSo11). . .

ImplantationGénérateurs automatiquesBibliothèques dédiéesbio, tests, automates, arbres, réseaux. . .

13 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 13/22

Page 14: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

I - Modèle de Boltzmann Discret

C : SpécificationCombinatoire

Random BIT Gen.

Objet aléatoireγ ∈ C

Lois discrètes

Généricité et EffectivitéComplexité moyenne booléenne en O(|γ|)

Simulateur parfait de v.a. discrètesX : Géométrique, Poisson, LogarithmiqueP (X = k) nécéssite O(k) bits en moyenne

14 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 14/22

Page 15: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Bernoulli et Géométrique

Algorithm : Bernoulli(p)

i ← 1 + Geom(1/2) ;Return Biti(p) ;

Algorithm : Geométrique(p)

k ← 0 ;do i ← 1 + Geom(1/2) ;if Biti(p) = 1 then Return k ;

else k ← k + 1 ;fi ;od ;

P (#bits = i) = 2−(i+1), µ = 2# bits indépendant de pBiti(p) : accès avec proba 1

2(i+1)

O(k+1) bits pour Geom(p)= k

15 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 15/22

Page 16: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Poisson et Logarithmique ( Machine de Buffon)

SGE (P) : P(x) =∑

Pnxn

n!

Algorithm : Schema Von Neuman (x ,P)

doN ← Geom(x) ;Tirer U1, . . . ,UN v.a. indep. unif. [0,1] ;if σ(U1, . . . ,UN) ∈ P then Return N ;od ;

P (VN(x ,P) = n) = 1P(x)

Pnxn

n! Boltz

U1 < . . . < Un

Pn = 1→ P(x) = ex

=⇒ Poisson

U1 < {U2, . . . ,Un}Pn = (n − 1)!→ P(x) = log 1

1−x=⇒ Logarithmique

Générateur discret (FlPeSo11) : Ui =∑

j>0 bj2−j , bj ∈ {0,1}Générer (U1, . . . ,UN ) avec le minimum de bits pour lesdifférencierConstruction d’un trie :

LC = nombre de bits consommés1 seul registre

16 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 16/22

Page 17: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Complexité binaire Schéma Von Neuman

Théorème (FlPeSo11)

– P classe de permutations et x paramètre, Schema von Neumann→

exactement v.a. discrete P (N = n) =1

P(λ)

Pnλn

n!.

– Nombre moyen d’itérations 1s , s = (1− x)P(x), et distrib. 1 + Geom(s).

– S.G. probabilités du nombre C de flips consommés par l’algorithme :

E(qC) =qH+(x , q)

1− qH−(x , q),

H+(z, q) = (1− z)∑∞

n=0Pnn! hn(q)zn, H−(z, q) = (1− z)

∑∞n=0

(1− Pn

n!

)hn(q)zn.

– Queues de distribution exponentielles.

En cours :• Extension autres lois• Intégration dans générateur de Boltzmann

17 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 17/22

Page 18: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

II - Boltzmann Uniforme Biaisé

Générateur de Boltzmann Biaisé : ΓA(x)→ ΓA(ux)

Soit ΓA(x) gen. Boltzmann engendre α avec probabilité pα(x).Soit δA,x (t) densité de probabilité sur σ.Alors le générateur biaisé ΓA(ux), avec u tiré selon δA,x (t),engendre α avec probabilité qα(x) =

∫σ pα(tx)δA,x (t) dt .

ΓA( x) apa(x)

ΓA( x) apa(x)

qa(x)UδA,x (t)18 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 18/22

Page 19: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Générateur exponentiel Γ̂→ Générateur ordinaire Γ

ΓA(x) = Γ̂A(ux)

Générateur exponentiel : Γ̂A(x)

pα(x) = x |α||α|!

1AE (x)

, avec AE (x) =∑

α∈Ax |α||α|!

Générateur ordinaire : ΓA(x)

qα(x) = x |α|AO(x) , avec AO(x) =

∑α∈A x |α|

Biais : δA,x (t) = AE (xt)AO(x) e−t sur [0,∞)

P(ΓA(x) = α/n

)=

∫ ∞0

P(

Γ̂A(xt) = α). δA,x (t)dt

=

∫ ∞0

(xt)n

n!AE (xt)· AE (xt)

AO(x)e−tdt

=xn

AO(x)

∫ ∞0

tn

n!· e−tdt

=xn

AO(x)

19 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 19/22

Page 20: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Générateur pointé Γ̇→ Générateur de base Γ (sgE et sgO)

ΓA(x) = Γ̇A(ux)

Générateur pointé Γ̇A(x) : pα(x) = αx |α|xA′(x)

Générateur non pointé ΓA(x) : qα(x) = x |α|A(x)

Biais δA,x (t) = xA′(xt)A(x)−A(0) sur [0,1]

P(ΓA(x) = α/n>0

)=

∫ 1

0

n(xt)n

xtA′(xt)· xA′(xt)

A(x)− A(0)dt

=xn

A(x)− A(0)

∫ 1

0ntn−1du =

xn

A(x)− A(0)

• Générateur base Γ→ Générateur intégré Γ̄A(x) = ΓA(ux)

pα(x) = x |α|A(x) , qα(x) = x |α|+1

(|α|+1)∫ x

0 A(v), δA,x (t) = xA(xt)∫ x

0 A(v)sur [0,1]

20 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 20/22

Page 21: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Exemple : Arbres de Cayley

Enracinés : A = Z× SET(A) A(z) =∑

nn−1 zn

n!

ΓA(x) := k ← Poisson(A(x)),return Z × 〈 ΓA(x), ..., ΓA(x)︸ ︷︷ ︸

k

Non enracinés B(z) =∑

nn−2 zn

n!→ zB′(z) = A(z)

ΓB(x) := tirer u sur [0, 1] selon densité A(tx)tB(x) ;

return ΓA(ux)

Enracinés croissants C = Z�× SET(C)→ C′(z) = eC(z)

→ C(z) = −Log (1− z)

ΓC(x) := tirer u sur [0, 1] selon densité xC′(tx)C(x)

k ← Poisson(C(ux)),

return Z × 〈 ΓC(ux), ..., ΓC(ux)︸ ︷︷ ︸k

21 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 21/22

Page 22: Génération Aléatoire et Modèle de Boltzmann Expressivité ... · Cycle C= CYC(A) C(x) = Log(1 A(z)) Analogue pour classes non étiquetées, avec séries génératrices ordinaires

Nouveaux opérateurs

Combinaison de GB Biaisés : (ΓB(ux), ΓC(ux))→ ΓA(x)

ΓB(x) et ΓC(x) générateurs de Boltzmann pour B et C,δB,C,x (t) densité de probabilité sur σ ; A = B ? Cu tiré selon δB,C,x (t), (ΓB(ux), ΓC(ux))→ ΓA(x).

Produit Boîte :

A = B� × C → A(z) =

∫ z

0B′(t)C(t)dt

ΓA(x) := tirer u selon δ(t) = xB′(tx)C(tx)A(x) , sur [0,1]

β ← ΓB′(xu) ; γ ← ΓC(xu)return α = ProduitBoite(β, γ)

Produit ordonné :

A = B • C → A(z) =

∫ z

0B′(z − t)C(t)dt

ΓA(x) := tirer u selon δ(t) = B′(x−t)C(t)A(x) , sur [0,x]

β ← ΓB′(x − u) ; γ ← ΓC(u)return α = ProduitOrdonne(β, γ)

Généralisation :GB pour équationdifférentielle du 1er ordreT ′ = F(Z, T ) (BoRoSo11)

Application : GB pourlangages réguliers avecShuffle (DaPaRoSo10)

22 / 22 Michèle Soria Génération Aléatoire sous Modèle de Boltzmann 22/22