this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Continue rapport

+35 -48
+35 -48
rapport/context.typ
··· 55 55 56 56 === L'entraînement 57 57 58 - #todo[Expliquer exploration vs exploitation et $gamma$] 59 - 60 58 Une fois que ce cadre est posé, il reste à savoir _comment_ l'on va trouver la fonction qui associe un état de l'environnement à une action. 61 59 62 60 Une première approche naïve, mais suffisante dans certains cas, consiste à faire une recherche exhaustive et à stocker dans un simple tableau la meilleure action à faire en fonction d'un état de l'environnement: ··· 88 86 89 87 #exhaustive_memory_table( 90 88 filled: false, 91 - )[ Exemple d'agent à mémoire exhaustive pour un "C'est plus ou c'est moins" dans ${ 0, 1, 2 }$, avec pour solution 2 ] 89 + )[ Mémoire exhaustive initiale pour un "C'est plus ou c'est moins" dans ${ 0, 1, 2 }$, avec pour solution 2 ] 92 90 93 91 L'entraînement consiste donc ici en l'exploration de l'entièreté des états possibles de l'environnement, et, pour chaque état, le calcul du coût associé à chaque action possible. 94 92 ··· 119 117 120 118 / État actuel: devient la couche d'entrée 121 119 / Meilleure action: devient la couche de sortie 122 - / Coûts associés: deviennent les neurones des couches cachées 120 + / Coûts associés: la fonction à optimiser par le réseau. Il peut s'agir d'une fonction qui permet au réseau de neurones d'approximer une autre fonction par supervision. 123 121 / Le remplissage du tableau: devient la rétropropagation pendant l'entraînement 124 122 123 + ==== Mise à jour (_Q-learning_) 124 + 125 + Le score associé à un état $s_t$ et une action $a_t$, appelée $Q(s_t, a_t)$ ici pour "quality" @qlearning-etymology ou "action-value" @actionvalue, est mis à jour avec cette valeur @maxq: 126 + 127 + $ 128 + (1 - alpha) underbrace(Q(s_t, a_t), "valeur actuelle") + alpha ( underbrace(R_(t+1), "récompense\npour cette action") + gamma underbrace(max_a Q(S_(t+1), a), "récompense de la meilleure\naction pour l'état suivant") ) 129 + $ 130 + 131 + L'expression comporte deux hyperparamètres: 132 + 133 + / Learning rate $alpha$: contrôle à quel point l'on favorise l'évolution de $Q$ ou pas. // Il est commun de progressivement baisser $alpha$, ce qui donne lieu à des phases plus "exploratives" ($alpha$ élevé, exploration de nouvelles actions) ou "exploitative" ($alpha$ faible, exploitation des récompenses connues) #refneeded 134 + / Discount factor $gamma$: contrôle l'importance que l'on donne aux récompenses futures. Il est utile de commencer avec une valeur faible puis l'augmenter avec le temps @maxq-discount. 135 + 125 136 === Difficultés liées à l'implémentation de la fonction coût 126 137 127 138 ==== Tendances à la "tricherie" des agents ··· 136 147 137 148 Un exemple populaire est l'expérience de pensée du Maximiseur de trombones @trombones: un agent avec pour environnement le monde réel, pour actions "prendre des décisions"; "envoyer des emails"; etc. et pour fonction récompense (une fonction à maximiser au lieu de minimiser) "le nombre de trombones existant sur Terre", finirait possiblement par réduire en escalavage tout être vivant capable de produire des trombones: la fonction coût est sous-spécifiée 138 149 139 - ==== Bug dans l'implémentation de l'environnement 140 - 141 - 142 - Bien évidemment, pour l'agent, tant qu'un bug n'est pas explicitement découragé par sa prise en compte dans la fonction coût. Si une action est favorable à l'amélioration du score, l'agent la prendra. 143 - 144 - 145 150 ==== La validation comme méthode de mitigation <why_multiple_simulators> 146 - #comment[ça se dit mitigation en français?] 147 151 148 152 Comme ces bugs sont des comportements non voulus, il est très probables qu'ils ne soient pas exactement les mêmes d'implémentation à implémentation du même environnement. 149 153 ··· 159 163 160 164 161 165 162 - == Entraînement par _curriculum_ 163 - 164 - == Mise à jour de la politique 166 + #todo[== Entraînement par _curriculum_] 165 167 166 - // #let section = content => pad(y: 1.5em, x: 3em, align(center, grid(align: horizon, columns: 3, gutter: 1em, line(length: 2em, stroke: 0.5pt), content, line(length: 2em, stroke: 0.5pt)))) 167 - 168 - === _Q-learning_ 169 - 170 - Le score associé à un état $s_t$ et une action $a_t$, appelée $Q(s_t, a_t)$ ici pour "quality" @qlearning-etymology ou "action-value" @actionvalue, est mis à jour avec cette valeur @maxq: 171 - 172 - $ 173 - (1 - alpha) underbrace(Q(s_t, a_t), "valeur actuelle") + alpha ( underbrace(R_(t+1), "récompense\npour cette action") + gamma underbrace(max_a Q(S_(t+1), a), "récompense de la meilleure\naction pour l'état suivant") ) 174 - $ 175 - 176 - L'expression comporte deux hyperparamètres: 177 - 178 - / Learning rate $alpha$: contrôle à quel point l'on favorise l'évolution de $Q$ ou pas. // Il est commun de progressivement baisser $alpha$, ce qui donne lieu à des phases plus "exploratives" ($alpha$ élevé, exploration de nouvelles actions) ou "exploitative" ($alpha$ faible, exploitation des récompenses connues) #refneeded 179 - / Discount factor $gamma$: contrôle l'importance que l'on donne aux récompenses futures. Il est utile de commencer avec une valeur faible puis l'augmenter avec le temps @maxq-discount. 180 - 181 - === Évaluation de la performance d'une politique 168 + == Évaluation de la performance d'une politique 182 169 183 170 #let cL = $cal(L)$ 184 171 #let proba = $bb(P)$ ··· 196 183 / $Pi: S -> A$: une politique 197 184 / $Pi^*: S -> A$: la meilleure politique possible, celle que l'on cherche à approcher 198 185 / $R: S -> RR^+$: sa fonction de récompense // d'une politique $p$ 199 - / $Q_p: S times A -> [0, 1]$: sa distribution de probabilité, qu'on suppose Markovienne (elle ne dépend que de l'état dans lequel on est). $Q_p (s_t, a_t)$ est la probabilité que $p$ choisisse $a_t$ _quand on est dans l'état_ $s_t$ ($s_t$ est l'état *pré*-action, et non post-action) 186 + / $Q_pi: S times A -> [0, 1]$: sa distribution de probabilité, qu'on suppose Markovienne (elle ne dépend que de l'état dans lequel on est). $Q_pi (s_t, a_t)$ est la probabilité que $pi$ choisisse $a_t$ _quand on est dans l'état_ $s_t$ ($s_t$ est l'état *pré*-action, et non post-action) 200 187 / $Q$ et $Q^*$: $Q_Pi$ et $Q_(Pi^*)$, pour alléger les notations 201 188 // $R$: $R_Pi$ 202 189 ··· 209 196 $ 210 197 211 198 212 - ==== Chemins d'états possibles $cal(C)$ 199 + === Chemins d'états possibles $cal(C)$ 213 200 214 201 215 202 ··· 251 238 252 239 253 240 $ 254 - cal(C)_p := setbuilder( 241 + cal(C)_pi := setbuilder( 255 242 (s_t, a_t)_(t in NN) " avec " 256 243 cases( 257 244 & a_0 & = p(s_0), ··· 280 267 281 268 On notera que, selon $M$, on peut avoir $cal(C) subset.neq (S times A)^NN$: par exemple, certains états de l'environnement peuvent représenter des "impasses", où il est impossible d'évoluer vers un autre état, peut importe l'action choisie. 282 269 283 - On note aussi que $cal(C)$ (et donc $cal(C)_p$ aussi) est dénombrable, étant construit à partir de $(S times A)^NN$ et $S$, $A$ et $NN$ étant aussi dénombrables#footnote[ 270 + On note aussi que $cal(C)$ (et donc $cal(C)_pi$ aussi) est dénombrable, étant construit à partir de $(S times A)^NN$ et $S$, $A$ et $NN$ étant aussi dénombrables#footnote[ 284 271 On a $card cal(C) <= card((S times A)^NN) = card(S times A)^(card NN) = (card S card A)^(card NN) <= (aleph_0)^(card NN) = attach(aleph_0, tl: 2) = aleph_0$ 285 272 ] 286 273 ··· 289 276 ] 290 277 #comment[pas sûre de cette phrase] 291 278 292 - ==== Récompense attendue $eta$ 279 + === Récompense attendue $eta$ 293 280 294 - $eta$ représente la récompense moyenne à laquelle l'on peut s'attendre pour une politique $p$ avec fonction de récompense $r$. 281 + $eta$ représente la récompense moyenne à laquelle l'on peut s'attendre pour une politique $pi$ avec fonction de récompense $r$. 295 282 296 283 Elle prend en compte le _discount factor_ $gamma$ : les récompenses des actions deviennent de moins en moins#footnote[En supposant $gamma < 1$, ce qui est souvent le cas #refneeded #todo[Mettre dans la def de $gamma$]] importantes avec le temps. $eta$ est définie ainsi @trpo 297 284 ··· 303 290 sum_((c_t)_(t in NN) in cal(S)) 304 291 underbracket( 305 292 rho_0(s_0) 306 - product_(t=0)^oo Q_p (c_t), "probabilité du chemin" 293 + product_(t=0)^oo Q_pi (c_t), "probabilité du chemin" 307 294 ) 308 295 quad 309 296 underbracket(sum_(t=0)^oo gamma^t r(c_t), "récompense associée"), ··· 322 309 323 310 324 311 325 - ==== Avantage $A$ 312 + === Avantage $A$ 326 313 327 314 328 - // L'avantage $A_(p, r)(s, a)$ représente l'écart entre la récompense (au sens de $r$) attendue _après avoir choisi $a$_ et la récompense attendue _en considérant toutes les actions possibles depuis $s$_. 315 + // L'avantage $A_(pi, r)(s, a)$ représente l'écart entre la récompense (au sens de $r$) attendue _après avoir choisi $a$_ et la récompense attendue _en considérant toutes les actions possibles depuis $s$_. 329 316 330 - L'avantage $A_(p, r)(s, a)$ mesure à quel point il est préférable de choisir l'action $a$ quand on est dans l'état $s$ (pour la politique $p$, avec "préférable" au sens de $(r(S), >=)$) 317 + L'avantage $A_(pi, r)(s, a)$ mesure à quel point il est préférable de choisir l'action $a$ quand on est dans l'état $s$ (pour la politique $pi$, avec "préférable" au sens de $(r(S), >=)$) 331 318 332 319 On peut visualiser ce calcul ainsi: 333 320 ··· 373 360 node((5, -0.5)) 374 361 }) 375 362 376 - Pour calculer $A_(p, r)(s, a)$, on regarde l'espérance des récompenses cumulées pour tout chemin commençant par $s$, et on la compare à celle pour tout chemin commençant par $M(s, a)$ 363 + Pour calculer $A_(pi, r)(s, a)$, on regarde l'espérance des récompenses cumulées pour tout chemin commençant par $s$, et on la compare à celle pour tout chemin commençant par $M(s, a)$ 377 364 378 365 $ 379 - A_(p, r)(s, a) := 366 + A_(pi, r)(s, a) := 380 367 underbracket( 381 368 exp_((s_t, a_t)_(t in NN) op(~) p op(in) cal(S) \ s_0 = s \ s_1 = M(s_0, a)) sum_(t=0)^oo gamma^t r(s_t), 382 369 Q(s, a) ··· 395 382 396 383 En suite, il suffit de faire la différence, pour savoir l'_avantage_ que l'on a à choisir $a_t$ par rapport au reste. 397 384 398 - ==== Lien entre $eta$ et $A$ 385 + === Lien entre $eta$ et $A$ 399 386 400 387 Pour une fonction de récompense $r$ donnée, $A$ permet de calculer $eta$ pour une politique $p$ en fonction de la valeur de $eta$ pour une autre politique $p'$ @trpo-advantage-eta-link 401 388 ··· 404 391 405 392 406 393 $ 407 - eta(p', r) & = eta(p, r) + policyexp(p') sum_(t=0)^oo gamma^t A_(p, r)(c_t) \ 394 + eta(p', r) & = eta(p, r) + policyexp(p') sum_(t=0)^oo gamma^t A_(pi, r)(c_t) \ 408 395 & #[Qui se simplifie en @trpo] \ 409 396 & = eta(p, r) + sum 410 397 $ 411 398 412 399 413 - ==== _Surrogate advantage_ $cL$ 400 + === _Surrogate advantage_ $cL$ 414 401 415 402 Il est théoriquement possible d'utiliser $A$ pour optimiser une politique, en maximisant sa valeur à un état donné: 416 403 ··· 446 433 Le _surrogate advantage_ détermine la performance d'une politique par rapport à une autre 447 434 448 435 $ 449 - cL_r (p', p) := exp_((s_t, a_t)_(t in NN) in cal(C)) sum_(t=0)^oo (Q_p (s_t, a_t)) / (Q_p' (s_t, a_t)) A_(p, r)(s_t, a_t) 436 + cL_r (pi', pi) := exp_((s_t, a_t)_(t in NN) in cal(C)) sum_(t=0)^oo (Q_pi (s_t, a_t)) / (Q_pi' (s_t, a_t)) A_(pi, r)(s_t, a_t) 450 437 $ 451 438 452 439 453 - 440 + == Méthodes d'optimisation de politique 454 441 455 442 === _Trust Region Policy Optimization_ 456 443 ··· 489 476 $ 490 477 491 478 492 - En notant $Q_p (s, dot) := a |-> Q_p (s, a)$. On a donc ici "$cal(X) = A$" dans la définition de $D_"KL"$ 479 + En notant $Q_pi (s, dot) := a |-> Q_pi (s, a)$. On a donc ici "$cal(X) = A$" dans la définition de $D_"KL"$ 493 480 494 481 ==== Pourquoi faire le maximum sur chaque $s in S$ ? 495 482