la source PARL trajet - en utilisant l'algorithme de gradient de politique pour résoudre la chasse au trésor des problèmes de labyrinthe

Il n'y a pas longtemps, Baidu a publié la profondeur du cadre d'apprentissage de renforcement PaddlePaddle à base de PARL.

Comme une attitude apprentissage par renforcement blanc, je chéris l'apprentissage, installer et exécuter le PARL dans le démarrage rapide. Ne pas l'expérience ne sais pas, une expérience tressaillement, est en effet une équipe de championnat chef-d'oeuvre NeurIPS 2018, une bonne lisibilité du code, la fonction est très claire, un couplage faible entre les modules, cohérents et forts. Non seulement pour le blanc DRL base zéro rapidement mis en place l'environnement, mais aussi très approprié pour les chercheurs de reproduire les résultats du document.

Ado, nous apprenons le plus de renforcer l'exemple classique - le début du trésor labyrinthe (communément appelé monde grille GridWorld), avec un gradient de politique algorithme (Politique-Gradient) à l'expérience d'une PARL.

Environnement de simulation

La prise de décision intelligente pour résoudre les problèmes d'apprentissage de renforcement. Comme on le voit, étant donné comme suit labyrinthe, carré noir représente le mur, trésors jaune, rouge pour le robot, un démarrage, le robot est dans une position quelconque, puisque le pouvoir d'aller un peu plus loin, après avoir heurté le mur dans le besoin de réparation, nous avons donc besoin de former un modèle, de dire au robot comment éviter de frapper le mur, et donne la meilleure chasse au trésor de chemin.

Ensuite, définir les différents éléments nécessaires pour renforcer l'environnement d'apprentissage: Etat de l'Etat, l'action d'action, récompense de récompense et ainsi de suite.

état dans lequel la position du robot est, par (ligne, colonne) élément de ce groupe est représenté, tandis que la paroi peut être exprimée:

self.wallList = self.start = (0,4) self.end = (4,0)

En utilisant la stratégie de démarrage aléatoire pour atteindre la fonction remise à zéro pour augmenter le caractère aléatoire de l'état initial:

defreset (auto-): pour _ dans la plage (0,1024): i = np.random.randint (self.row) j = np.random.randint (self.col) if (i, j) ne pas en self.wallList et (i, j) = self.end !: self.pos = (i, j) pause self.pos de retour

action action définie, il est clair que le robot peut marcher dans quatre directions:

action_dim = 4 Drow = dCol =

Définir la récompense d'incitations, des incitations pour atteindre la ligne d'arrivée 10, prendre l'autre puissance des besoins de la grille, des incitations à -1:

récompense def (self, s): si le self.end de s: retour 10.0 autre: retour -1,0

De plus, transfrontalière, appuyez sur la nécessité de mur pour donner peine plus sévère:

sinon CheckBounds (nextRow, nextCol): # Transfrontalière self.pos de retour, -5,0, Faux, { 'code': - 1, 'MSG': '! OutOfBounds'} nextPos = (nextRow, nextCol) si meetWall (self.wallList, nextPos): # mur self.pos de retour, -10,0, Faux, { 'code': - 1, 'MSG': '! MeetWall'}

Jusqu'à présent, l'état nécessaire pour améliorer l'apprentissage, l'action, la récompense sont définis. Ensuite, regardez le principe de l'algorithme de gradient de politique de simple déduction.

Quel gradient de stratégies d'algorithme (Politique-gradient)?

Nous savons que l'objectif de l'apprentissage est de renforcer donné un processus de décision de Markov, pour trouver la stratégie optimale. Fait référence à un état appelé opération de cartographie des politiques, des symboles communs représentent , il se réfère à une distribution de, jeu d'action d'un État donné, qui est:

approche gradient stratégie est très simple, directe pour trouver la stratégie optimale de modélisation paramétrique, stratégie p (a | s) à partir d'une collection de probabilité devient une p fonction de densité de probabilité (a | s, ), à savoir:

Cette fonction de stratégie représente, dans le cas où un état donné s et le paramètre de probabilité de prise de toute action possible, ce qui est une fonction de densité de probabilité, dans l'application pratique de la politique lorsque, conformément à l'action de l'opération de distribution de probabilité échantillonnés cette distribution peut être discrète (tels que la distribution de Bernoulli), il peut être considéré comme continu (par exemple gaussienne). La façon la plus intuitive, nous pouvons utiliser un modèle linéaire indique que la fonction politique:

Dans laquelle (s) représentant les caractéristiques des uvres sur l'état s, est les paramètres de formation requis. Une telle modélisation à quoi bon? En fait, le plus grand avantage est que nous pouvons apprendre toujours une stratégie aléatoire, amélioré l'exploration exploratoire.

Pourquoi peut augmenter Exploratoire il?

Une telle chasse au trésor labyrinthe, supposons une position de départ du robot dans le coin en haut à gauche, puis p (a | s, ) peut être initialisé , montrer le robot sur le haut, le bas, à gauche, à droite, la probabilité est de 0,25. Lorsque le modèle de la formation dans une certaine mesure, p (a | s, ) devient , à ce moment, en baisse la probabilité maximale, 0,6, les robots sont les plus susceptibles de descendre, cette étape a montré l'utilisation de l'exploitation, mais la stratégie optimale est en fait tout de suite, 0,2 est susceptible d'être sélectionné, cette étape a montré explorer l'exploration, par rapport à 0,6 et 0,2, en haut, à gauche deux actions beaucoup plus faible probabilité, mais il est également susceptible d'être sélectionné. Si le modèle continue à suivre une formation, p (a | s, ) est susceptible de Converge à A ce moment, le robot fondamentalement juste ou à droite pour sélectionner haut, la gauche la possibilité de sur la très petite. Tel est le cas le plus position de coin supérieur gauche (état) et d'autres Etats, avec le modèle de formation vont converger vers la solution optimale.

Avec le modèle, nous nous attendons à gradient de la demande, alors, comment construire la perte de la fonction? Qu'est-ce que l'étiquette y-cible est?

Est-ce une idée très simple: récompense si une action pour obtenir plus, il augmente la probabilité, ou réduire, de sorte que vous pouvez construire un état pertinent - la fonction f (s, a) l'action en fonction de la perte des poids, la fonction de pondération peut être un rendement à long terme G (t), la valeur d'état peut être une fonction V (s), ou peut être l'état - la fonction de comportement Q (s, a), bien sûr, il peut être fonction avantageuse A. Toutefois, les fonctions de pondération et les paramètres indépendants de [theta], [theta] est égal à 0 le gradient, comme p | coefficients (a s, ) de.

Considérons maintenant la sortie du modèle (a | s, ), qui représente la distribution de probabilité d'action, nous savons que l'agent Après chaque épisode tour, formera une Trajectoire de piste complète:

Parmi eux, l'état

Et, quel que soit le paramètre de la probabilité de transition d'état P (S'| s, a) il est déterminé par l'environnement, et également indépendant du paramètre . Par conséquent, notre objectif est de simplifier: paramètres d'optimisation [theta], de telle sorte que le produit des probabilités de chaque action

Le maximum, même si trop

La probabilité que multiplie le maximum disponible formulé comme suit:

Ceci est évidemment familier problème d'estimation du maximum de vraisemblance, dans la fonction log-vraisemblance:

Par le poids f (s, a), a été construit comme suit fonction objectif, la fonction objective et la fonction de la perte que nous voyons habituellement au contraire, il a besoin d'utiliser une montée de gradient pour trouver la valeur maximale:

Notes, aTrue est l'étiquette y-cible, montrant ici un agent de l'Etat prend $ s_ {t} $ fonctionnement en temps réel, peuvent être obtenus en fonction de la trajectoire de la piste échantillonné. apprentissage des élèves de la machine ont appris tout savoir, avec la fonction objectif général moyenne au lieu de la somme, en tant que nouvelle fonction objectif:

La moyenne est l'espérance mathématique, de sorte que la fonction objective peut être exprimée comme suit:

Avec la fonction objectif, il est facile de calculer le gradient, étant donné que

Le coefficient de , il formule gradient est comme suit:

Alors, comment la manifestation concrète de la politique? A été mentionné précédemment, la politique peut être discrète ou continue, tenez compte de la stratégie discrète. Parce que nous devons résoudre le problème de maximum, ce qui est le problème de la pente ascendante, le gradient pensera naturellement du problème de la descente de pente ascendante en question, de manière à faire le contraire de la fonction objective est réduite au minimum, et quel genre de fonctions peut être descente de gradient et logarithmique fonction associer? nous sommes évidemment au courant de l'entropie croisée, de sorte que la perte finale est déterminée en fonction de:

stratégies continues et discrètes stratégie de dérivation est similaire au lecteur intéressé peut se référer à la documentation pertinente.

Depuis lors, la formule de dérivation peut venir à une fin. L'algorithme de gradient de la stratégie de base est Renforce, également connu comme stratégie de gradient Monte Carlo, appelé MCPG, algorithme de politique gradient officiel de PARL est basé sur le cadre suivant pour la mise en uvre:

structure source PARL

Avant de construire le modèle, nous analysons d'abord les principaux modules de PARL:

1. env: environnement, où l'environnement est la chasse au trésor labyrinthe.

2. Modèle: modèle, peut être un modèle linéaire simple, il peut être CNN, RNN et autre modèle d'apprentissage en profondeur.

3. algorithme: algorithme, la couche de modèle est encapsulé en utilisant Predict modèle (prévue), tandis que la fonction de perte construit apprentissage (apprentissage), des formes spécifiques de mise en uvre peuvent être DQN, PG, GPDD analogues.

4. Agent: Agent pour l'algorithme de la couche d'encapsulation, comprenant généralement prévoir, savoir deux fonctions en même temps, étant donné que l'agent en même temps EXPLORATION à explorer l'utilisation de l'exploitation, qui comprend souvent une fonction d'échantillonnage qui est déterminée à la fin randomSelect (la sélection aléatoire ou une fonction de distribution de l'action de sélection), ou argmax (100% gourmand, toujours sélectionner l'opération de vraisemblance maximum).

5. train: la formation et les tests pour l'agent et l'environnement interagissent pour atteindre, lorsque la convergence du modèle, vous pouvez tester la précision de l'agent.

6. utils: D'autres fonctions auxiliaires.

Le schéma d'architecture suivante qui peut nous aider à mieux comprendre PARL:

La lecture du code source &

Après avoir compris le cadre de chaque module, nous pouvons remplir le code selon le modèle, appris MVC, ORM cadres tels que les élèves savent, c'est une chose très agréable.

1, MazeEnv. environnement Maze, héritée de gym.Env, pour parvenir à une remise à zéro, étape, récompense, rendre quatre méthodes principales, ne pas les répéter ici.

2, MazeModel. modèles de la couche, pour construire un réseau de neurones que la liaison ensemble, l'état d'entrée est l'état de l'entrée, la sortie est une fonction de l'action sur la politique, étant donné que la fonction de distribution de probabilité est une opération de politique, de sorte que l'utilisation en tant que fonction d'activation softmax, il existe plusieurs couche cachée intermédiaire.

Code mise en uvre est très simple, si MazeModel hériter de la classe officielle modèle, puis construire un modèle à Zhaomaohuahu:

classe MazeModel (modèle): def__init __ (self, act_dim): self.act_dim = act_dim hid1_size = 32 hid2_size = 32 self.fc1 = layers.fc (taille = hid1_size, act = 'tanh') self.fc2 = layers.fc (taille = hid2_size, act = 'tanh') self.fcOut = layers.fc (taille = act_dim, act = 'softmax') defpolicy (self, obs): out = self.fc1 (obs) out = self.fc2 (out) out = self.fcOut (out) retour sur

3, policy_gradient. couche algorithme, dépôt officiel fournit un certain nombre d'algorithmes d'apprentissage de renforcement classique, on n'a pas besoin de me répéter à écrire, bibliothèque d'algorithmes d'algorithme de PolicyGradient de réutilisation directe (parl.algorithms) à l'intérieur!

Policy_gradient une simple analyse de la mise en uvre du code source.

fonction define_predict, le obs d'état de réception, la méthode politique modèle d'appel, l'état de sortie de l'action correspondante:

def define_predict (self, obs): « » « Modèle de politique Utilisez self.model pour prédire la actionprobability « » " self.model.policy de retour (obs)

fonction define_learn, l'état réception obs, l'action en direct action, récompense de rendement à long terme, le premier modèle de la méthode pocliy d'appel, l'état prédit la probabilité d'action obs act_prob de distribution correspondant, le coût fonction de perte configuration entropie croisée et produit récompense, et effectue finalement descente de gradient France, l'optimiseur à Adam, pour compléter la fonction d'apprentissage:

def define_learn (self, obs, action, récompense): « » « Modèle de politique de mise à jour self.model avec la politique gradientalgorithm « » " act_prob = self.model.policy (obs) log_prob = layers.cross_entropy (act_prob, action) coût = log_prob * récompense coût = layers.reduce_mean (coût) optimiseur = fluid.optimizer.Adam (self.lr) optimizer.minimize (coût) coût retour

4, MazeAgent. Agent. Dans laquelle package simple, self.pred_program define_predict dans l'algorithme, package simple self.train_program dans l'algorithme de define_learn, on peut se référer à l'CartpoleAgent officiel atteint, remplissage dans le cadre correspondant selon le code de format de modèle.

Ici, seule l'analyse self.pred_program, self.train_program libellé similaire:

self.pred_program = fluid.Program () # libellé fixe avec fluid.program_guard (self.pred_program): obs = layers.data ( name = 'obs', forme = , DTYPE = 'float32') # entrant recevoir le statut externe obs self.act_prob = self.alg.define_predict (obs) # Algorithme d'appel probabilité de define_predict, self.act_prob pour les opérations de la distribution

fonction échantillon, attention à cette phrase:

agir = np.random.choice (plage (self.act_dim), p = act_prob)

Cette phrase montre une distribution de probabilité correspondant à l'action choisie au hasard, l'hypothèse, le bas, à gauche et à droite, respectivement probabilité , alors la probabilité est maximale est sélectionnée, la sélection droite la probabilité est minime, donc la fonction échantillon à la fois d'exploration, mais aussi l'exploitation, l'exploration reflète l'apprentissage amélioré - l'utilisation de l'équilibre.

Différentes fonctions prédisent, et la fonction échantillon est qu'il est toujours avide de sélectionner la possibilité maximale d'action, souvent pour les étapes d'essai:

act = np.argmax (act_prob)

apprendre la fonction, en obs, action, récompense, descente de gradient de charge, le rendement coût de la fonction de perte.

5, TrainMaze. Laissez environnement env Interact et d'agent d'agent, le plus important est le code suivant, ce qui reflète le processus MCPG:

# Itératives cent mille épisode for i in range (1,100001): # échantillon obs_list, action_list, reward_list = run_train_episode (env, agent) # En utilisant la moyenne mobile calculée d'une manière récompense attendue MeanReward = MeanReward + (somme (reward_list) -MeanReward) / i batch_obs = np.array (obs_list) batch_action = np.array (action_list) # Calcul G (t) au moyen de sauvegarde et normalisé batch_reward = calc_discount_norm_reward (reward_list, GAMMA) # apprentissage agent.learn (batch_obs, batch_action, batch_reward)

Parmi eux, la moyenne mobile peut choisir une formule, des estimations non biaisées représentent la moyenne réelle, biaisée estimer le prix moyen après une plus grande convergence:

estimation non biaisé:

estimation biaisés:

[Alpha] est le taux d'apprentissage, 0,1, 0,01, et ainsi de prendre

D'autres codes sont des fonctions auxiliaires, telles que l'enregistrement journal, le dessin, ce qui rend l'environnement et ainsi de suite.

Exécutez le programme et observer les résultats

Exécuter TrainMaze, nous pouvons voir la sortie suivante.

1, avant la formation, le robot ne sait pas comment trésor, donc transfrontalier, le nombre de frapper le mur beaucoup, mais autour de beaucoup de détours, le prix moyen est relativement faible.

ErrorCountBeforeTrain: 25052 # nombre de mur transfrontalier +

La courbe de récompense moyenne:

2, le modèle de formation. Itératives cent mille épisode, observez la courbe d'apprentissage suivant, et l'axe vertical représente la prime moyenne, vous pouvez le voir, le modèle a convergé:

3, la précision du modèle de test. Phase de test, nous itération 128, l'agent est guère transfrontalier ou le comportement de mur, car il est démarrage aléatoire, donc il y a peu d'incitation sur les fluctuations moyennes, mais stabilisé à 5-7.

ErrorCountAfterTrain: 0 # n'a pas de mur ou transfrontalier

Le prix moyen après la formation:

Adresse source Git

https://github.com/kosoraYintai/PARL-Sample

références:

· CS 294-112 à l'UC Berkeley, DeepReinforcement apprentissage.

· Deepmind, Silver.D, Apprentissage par renforcement classe ouverte.

· Feng Chao. Apprentissage par renforcement Essentials . Pékin: Electronic Industry Press, 2018.

Guo Xian Fang Yong pur. L'apprentissage de renforcement Layman . Pékin: Electronic Industry Press, 2018.

Didi voitures de luxe Avis: consommation minimale de voiture 108 yuans dans la valeur de fin?
Précédent
Bip huissier de carte miles dans une mise à jour majeure, 22 jours par mois à l'échelle nationale 2G + libre flux de trafic directionnel
Prochain
Le conducteur était un tour en cuir passager arrière piétiné, gouttes seulement 20 yuans de compensation? !
Pourquoi pas aussi bon que la capacité de l'ordinateur à l'homme de lecture?
« H » sur la barre de signal de téléphone cellulaire, « 4G » veut dire?
Hardcore histoire: De l'idée au produit, AI Quel étage pour aller à la douane?
Google a publié une nouvelle conférence Pixel 3 / fils 3XL, apparition surprise de la configuration du système déçu
Express Technology 2018: prix annuels articles Périphériques portables
Code détaillé: porte Numpy-- menant à l'intelligence artificielle
Huawei Mate20 configurer l'apparence d'une exposition plein prix
Express Technology 2018: prix annuels papiers drives mémoire
Hearthstone légende du Codex Alimentarius résumés regrouper groupe duel de carte duel recommandé la carte la plus forte
changements majeurs Tencent dans la structure organisationnelle, mais peut-être nuage Tencent est encore difficile de retardataires
panneau AGON ne plus reculer l'attaque AG272FCX amour évaluation d'affichage de jeu