Relecture prioritaire, que fait vraiment l'échantillonnage d'importance?

10

Je ne peux pas comprendre l'objectif des poids d'échantillonnage d'importance (IS) dans la lecture prioritaire (page 5) .

Une transition est plus susceptible d'être échantillonnée à partir de l'expérience rejouée plus son «coût» est élevé. Ma compréhension est que «IS» aide à abandonner en douceur l'utilisation de la relecture prioritaire après que nous nous soyons entraînés assez longtemps. Mais qu'utilisons-nous à la place, un échantillonnage uniforme?

Je suppose que je ne peux pas réaliser comment chaque composante d'un tel coefficient affecte le résultat. Quelqu'un pourrait-il l'expliquer avec des mots?

wi=(1N1P(i))β

Il est ensuite utilisé pour atténuer le gradient, que nous essayons d'obtenir à partir des transitions.

Où:

  • wi est "EST"
  • N est la taille du tampon Experience Replay
  • P (i) est la chance de sélectionner la transition i, en fonction de "la masse grasse de son coût".
  • β commence à partir de 0 et se déplace de plus en plus près de 1 à chaque nouvelle époque.

Ma compréhension de ces paramètres est-elle également correcte?

Modifier Quelque temps après l'acceptation de la réponse, j'ai trouvé une source supplémentaire, une vidéo qui pourrait être utile pour les débutants - MC Simmulations: 3.5 Importance Sampling


Modifier Comme @avejidah l'a dit dans le commentaire de sa réponse "1/N est utilisé pour faire la moyenne des échantillons selon la probabilité qu'ils seront échantillonnés " .

Pour comprendre pourquoi c'est important, supposez βest fixé à 1, nous avons 4 échantillons, chacun aP(i) comme suit:

0.1  0.2   0.3     0.4

Autrement dit, la première entrée a 10% d'être choisie, la seconde est 20% etc. Maintenant, en les inversant, nous obtenons:

 10   5    3.333   2.5

Moyennage via 1/N (qui dans notre cas est 1/4) on a:

2.5  1.25  0.8325  0.625     ...which would add up to '5.21'

Comme nous pouvons le voir, ils sont beaucoup plus proches de zéro que les versions simplement inversées (10,5,3.333,2.5). Cela signifie que le gradient de notre réseau ne sera pas agrandi autant, ce qui entraînera beaucoup moins de variance lorsque nous entraînerons notre réseau.

Donc, sans ça 1Navons-nous eu la chance de sélectionner l'échantillon le moins probable (0.1), le gradient serait mis à l'échelle 10 fois. Ce serait encore pire avec des valeurs plus petites, disons0.00001 chance, si notre replay d'expérience a plusieurs milliers d'entrées, ce qui est assez habituel.

Kari
la source

Réponses:

11

DQN souffre intrinsèquement de l'instabilité. Dans l'implémentation d'origine, plusieurs techniques sont utilisées pour améliorer la stabilité:

  1. un réseau cible est utilisé avec des paramètres en retard sur le modèle entraîné;
  2. les récompenses sont coupées dans la plage [-1, 1];
  3. les dégradés sont coupés dans la plage [-1, 1] (en utilisant quelque chose comme Huber Loss ou gradient clipping);
  4. et le plus pertinent pour votre question, un grand tampon de relecture est utilisé pour stocker les transitions.

En continuant au point 4, l'utilisation d'échantillons entièrement aléatoires à partir d'un grand tampon de relecture aide à décorréler les échantillons, car il est tout aussi probable d'échantillonner des transitions de centaines de milliers d'épisodes dans le passé que d'en échantillonner de nouveaux. Mais lorsque l'échantillonnage prioritaire est ajouté au mixage, l'échantillonnage purement aléatoire est abandonné: il y a évidemment un biais vers les échantillons à haute priorité. Pour corriger ce biais, les poids correspondant aux échantillons de haute priorité sont très peu ajustés, tandis que ceux correspondant aux échantillons de basse priorité sont de relativité inchangée.

Intuitivement, cela devrait avoir un sens. Les échantillons hautement prioritaires sont susceptibles d'être utilisés à plusieurs reprises lors de la formation. Réduire les poids sur ces échantillons souvent vus dit essentiellement au réseau, "entraînez-vous sur ces échantillons, mais sans trop l'accent; ils seront revus bientôt". Inversement, lorsqu'un échantillon de faible priorité est vu, les pondérations IS indiquent essentiellement au réseau: "cet échantillon ne sera probablement plus jamais revu, donc entièrement mis à jour". Gardez à l'esprit que ces échantillons de faible priorité ont de toute façon une faible erreur TD et qu'il n'y a donc probablement pas grand-chose à en tirer; cependant, ils sont toujours utiles à des fins de stabilité.

En pratique, le paramètre bêta est recuit jusqu'à 1 sur la durée de l'entraînement. Le paramètre alpha peut être recuit simultanément, ce qui rend l'échantillonnage priorisé plus agressif tout en corrigeant plus fortement les poids. Et dans la pratique, d'après l'article que vous avez lié, le maintien d'un alpha fixe (0,6) tout en recuisant la bêta de 0,4 à 1 semble être le point idéal pour l'échantillonnage basé sur les priorités (page 14).

En passant, d'après mon expérience personnelle, le simple fait d'ignorer les poids IS (c'est-à-dire de ne pas corriger du tout) se traduit par un réseau qui s'entraîne bien au début, mais ensuite le réseau semble s'adapter, oublie ce qu'il a appris (aka l'oubli catastrophique) et réservoirs. Sur Atari Breakout, par exemple, les moyennes augmentent au cours des 50 premiers millions de trames environ, puis les moyennes complètement réservées. Le document que vous avez lié en discute un peu et fournit quelques graphiques.

avejidah
la source
Je vous remercie! Je me demande pourquoi les auteurs devraient équilibrer1N quand ils ont déjà 1P(i)(à l'intérieur du poids «IS»). N'est-ce pas1P(i)déjà basé sur la taille de la collection de toute façon?
Kari
2
Je vous en prie. Pour répondre à la question dans le commentaire, non,1N n'est pas roulé dans le 1P(i). P(i)est la probabilité de sélectionner l'échantillon i. C'est calculé en utilisantprioikpriok C'est-à-dire la priorité de l'échantillon i sur la somme de toutes les priorités. (Lorsque les priorités sont généralement calculées comme(td_error+ε)α). Sans entrer dans trop de détails, le1Nexiste-t-il pour faire la moyenne (mot-clé) des échantillons selon la probabilité qu'ils soient échantillonnés.
avejidah
1
@ user3180 Le point important de l'échantillonnage n'est pas d'obtenir un estimateur non biaisé du rendement attendu - il est biaisé par sa nature même. Le fait est que certains échantillons ont plus d'impact sur la formation que d'autres, et devraient donc être échantillonnés plus fréquemment. La pondération corrige le biais en diminuant les ajustements de poids par rapport aux priorités des échantillons. Cette pondération devient de plus en plus importante à mesure que le réseau commence à converger, donc le recuit est utilisé. Ignorer la pondération ou corriger complètement le biais est quelque chose que le papier PER couvre (voir figure 12).
avejidah
2
@ user3180 En ce qui concerne votre deuxième question sur l'utilisation du poids total (β = 1): je soupçonne que dans ce cas, vous verrez généralement un avantage pour PER, mais généralement la formation sera plus lente qu'avec le recuit bêta. Gardez à l'esprit qu'il existe deux paramètres, α et β, et même si vous fixez β à 1, le paramètre α dicte le nombre de priorité des échantillons. Autrement dit, les échantillons sont toujours extraits de manière biaisée et, même si le biais est entièrement corrigé, la solution sur laquelle votre réseau converge différera du cas uniforme. Encore une fois, voir la figure 12 dans le document PER.
avejidah
1
@ user3180 Je ne suis pas sûr de pouvoir fournir une bonne réponse mathématique; cependant, la raison pratique est qu'en priorisant les trains du réseau sur un ensemble de données qui diffère du cas uniforme. Avec 0 <α <= 1, les échantillons sont priorisés, ils sont donc non uniformes et biaisés. Bien sûr, vous pouvez ajuster les poids pour corriger ce biais, mais les échantillons sont toujours radicalement différents du cas uniforme. La formation sur un ensemble différent d'échantillons donne une solution différente, quels que soient les ajustements de poids.
avejidah
0

J'ai un doute. Comme papier PER,

Pour des raisons de stabilité, nous normalisons toujours les poids de 1 / maxi wi afin qu'ils ne modifient que la mise à jour vers le bas

Le facteur 1 / N ne devient-il donc pas inefficace? par exemple, considérons le dernier échantillon,

case 1 without N : 0.25/10 = 0.25
case 2 with N=4; 0.625/2.5 = 0.25.

donc,

Wi = pow(N,-beta) * pow(Pi, -beta)
Wmax = pow(N,-beta) * pow(Pmin,-beta)

en normalisant,

Wi/Wmax will cancel out the pow(N, -beta).

Veuillez m'aider si ma compréhension est fausse.

Karthikeyan Nagarajan
la source
Vous en avez toujours besoin. Par exemple, envisagez d'avoir 100 entrées et une valeur maximale d'une entrée comme, disons 5. Imaginez maintenant passer à 1 billion d'entrées.
Kari
Désolé, je ne t'ai pas compris. J'ai mis à jour la formule. Veuillez vérifier et me faire part de votre réponse.
Karthikeyan Nagarajan