MAP 572 - Mise en oeuvre de méthodes numériques.
Apprentissage par renforcement
1 Renforcement sans mémoire : le bandit à 2 bras
Considérons le problème suivant : un annonceur a le choix d’afficher sur une page web une publicité choisie parmi{A, B}, l’annonceur est payé au clic et l’objectif est d’afficher la publicité la plus attractive. On modélise le problème de la façon suivante : chaque utilisateur se comporte de façon indépendante des autres et clique sur la publicitéA(resp.B) avec probabilitépA(resp.
pB), on suppose que pA, pB sont inconnues.
On pose Xi = 1 si le i-ème client clique, 0 sinon. On note Ei ∈ {A, B} la publicité affichée sur le site lorsque lei-ème client se connecte, de sorte que
Xi ∼Bernoulli(pEi).
La stratégieEià l’instantiest une fonction (éventuellement aléatoire) de(E1, X1), . . . ,(Ei−1, Xi−1).
On cherche à définir une stratégie efficace pour l’annonceur, c’est-à-dire qu’asymptotiquement on propose la meilleure publicité :
X1+· · ·+Xn
n
n→+∞→ max{pA, pB}
(convergence presque-sûre ou en probabilité). Encore mieux : on souhaite maximiser les gains moyens à horizon finiE[X1+· · ·+Xn].
1.1 Une méthode sous-optimale : la ε-exploration Considérons la stratégie suivante :
— On choisitE1=A, E2 =B.
— Pouri≥3, on note Mi la publicité qui a eu le meilleur "taux de clic" jusque-là.
— Avec proba1−ε, on prend Ei=Mi,
— Avec probaεon prend Ei = non(Mi).
(On considère qu’avec probabilité εon "explore", alors qu’avec probabilité 1−εon "exploite".) Question 1. (Maths) Intuitivement, quelle est la limite de (X1+· · ·+Xn)/n? Asymptoti- quement (enn), quel semble être le meilleur choix pourε?
Question 2. (python)On fixe n= 1000, pA = 0.4,pB = 0.6. Choisir quelques valeurs de ε et tracer quelques trajectoires
i∈ {1, . . . , n} 7→ 1
i(X1+· · ·+Xi).
Question 3. (python)Évaluer par méthode de Monte-Carlo des estimations de courbes
i∈ {1, . . . , n} 7→ 1
iE[X1+· · ·+Xi].
Question 4. (python)Pour le même choix des paramètres, essayer de déterminer la "meilleure"
valeur deε.
1.2 Une stratégie asymptotiquement optimale ?
On fait maintenant varier la probabilité d’exploration. L’algorithme est le même que précé- demment sauf qu’on remplace εpar une suite(εi)i≥3 d’éléments de(0,1). On pourra essayer
(i) εi = 1/i2 (ii) εi = 1/√
i (iii) εi = 1/logi
Question 5. (python)On fixe à nouveau n = 1000,pA = 0.4, pB = 0.6. Pour les exemples de suites (i),(ii),(iii) ci-dessus, tracer quelques trajectoires de courbes
i∈ {1, . . . , n} 7→ 1
i(X1+· · ·+Xi). Question 6. (Maths) Que doit vérifier la suite(εi) pour que l’on ait
X1+· · ·+Xn
n
n→+∞→ max{pA, pB}?
2 Renforcement avec mémoire : Pierre-Feuille-Ciseaux
On considère 2 joueurs X, Y qui jouent à Pierre-Feuille-Ciseaux. Pour t ≥ 1 on note Xt ∈ {Pi,Fe,Ci}le choix du joueur à l’instant t etYt le choix de son adversaire.
On suppose que l’adversaire Y tire à chaque instant son choix Yt entre {Pi,Fe,Ci} avec des probabilités(p, q, r). Ce triplet peut être constant (typiquement,(1/3,1/3,1/3)) ou dépendre de ce qu’a joué X dans le passé.
Pour simplifier on suppose que Y fait ses choix suivant une chaîne de Markov avec une mémoire "courte" :
— Y1, Y2 sont arbitraires.
— pour toutt≥2, le nouveau triplet(p, q, r)dépend uniquement de
Xt−1, Xt, Yt−1, Yt. (1)
On introduit donc une fonction (p, q, r) 7→ ReponseStrategie(p, q, r) ∈ [0,1]3 de la façon suivante :
ReponseStrategie(p, q, r) = argmax(x,y,z)E[Gain pour X siX tire selon (x, y, z) etY tire selon(p, q, r)].
(Dans cette espérance on considère qu’un victoire vaut 1 et une défaite−1.)
L’interprétation est la façon suivante. Si la stratégie (p, q, r) est connue, alors c’est le vecteur (x, y, z)des probabilités de jeu deXqui maximise le gain deXpour let-ème coup.(Par exemple, si (p, q, r) = (0.01,0,0.99) alors cela signifie queY va jouer "Ci" presque à coup sûr et donc X joue "Pi" : ReponseStrategie(0.01,0,0.99) = (1,0,0).)
Question 1. (Maths) Calculer et implémenter la fonctionReponseStrategie(p, q, r).
2.1 L’algorithme d’apprentissage
On considère la stratégie suivante. Pour un paramètreε >0(petit),
— Sit= 1,2,3on tire au hasard uniformément entre Pi,Fe,Ci.
— Sinon
1. avec probabilité 1−ε on "exploite" : on renvoie ReponseStrategie(p, q, r) calculée sur les stats deY dans l’historique. Plus précisément
— En notant (Xt−2 = xt−2, Xt−1 =xt−1) et(Yt−2 =yt−2, Yt−1 =yt−1), on regarde toutes les fois oùY s’est retrouvé dans la situationXs−2 =xt−2, Xs−1 =xt−1) et (Ys−2=yt−2, Ys−1=yt−1). On calcule alors les fréquencesp,ˆ q,ˆ rˆavec lesquellesY a joué Pi-Fe-Ci.
— On renvoieReponseStrategie(ˆp,q,ˆ r)ˆ
2. avec probabilité εon "explore" : on tire au sort uniformément au hasard.
Question 2. (python)Simuler un jeu entre X qui joue avec la stratégie d’apprentissage ci- dessus et Y qui tire des coups i.i.d. avec probas (0.4,0.3,0.3). Qu’observe-t-on pour les gains de X?
Question 3. (python) Simuler un jeu entre X et Y qui jouent tous les deux la stratégie d’apprentissage. Converge-t-on vers l’équilibre attendu ?
Références
[1] V.Rivoirard, G.Stoltz.Statistiques en Action. Vuibert (2006).
[2] R.Sutton, A.Barto. Reinforcement learning : An introduction. MIT press, (2018).