Bonjour et bienvenue dans la partie super excitante de notre création, la partie où nous la rendons intelligente.
C'est donc exactement ce qui se passe lors de l'entraînement de l'air.
Je formerai son intelligence pour atteindre l'objectif que nous voulions accomplir.
Et pour ce faire, nous allons essentiellement former le réseau de neurones à produire les bonnes prédictions.
Et puis tout est déjà prêt car ces signaux de sortie du cerveau ont déjà la bonne
transmission au corps pour jouer les actions finales.
Donc, fondamentalement, ce que nous sommes sur le point de faire est quelque chose que nous avons déjà fait auparavant.
Nous allons simplement prendre des lots aléatoires de la mémoire, obtenir notre entrée à partir de ces échantillons, obtenir
la sortie, obtenir la cible, obtenir les prédictions, calculer la dernière erreur entre les prédictions et la cible,
puis effectuer une propagation en arrière était pour obtenir la descente du gradient pour mettre à jour les poids
en fonction de leur contribution à cette dernière erreur.
Alors faisons tout ça.
Vous allez voir comment ça va être si facile car nous avons déjà tous les outils pour mettre en œuvre
cela.
Non seulement nous avons le chemin vers des outils comme l'optimiseur et les fonctions de perte, mais nous avons également toutes
les classes que nous avons créées auparavant, comme notre cerveau, bien sûr, que nous allons utiliser pour obtenir
les prédictions.
Ensuite notre expérience, rejouer la trace d'éligibilité de la mise en œuvre et tous ces outils combinés au
pilote, quels outils rendront la formation super performante et donc finalement nous obtiendrons un
A. JE. Alors faisons en sorte que cette formation se réalise.
Rendons nos yeux intelligents.
Et la première chose que nous allons faire maintenant est d'obtenir la dernière fonction que nous utiliserons pendant la
formation lors du calcul de l'erreur et de l'optimiser.
C'est la première chose que nous ferons.
Créons donc une variable pour la dernière fonction.
Nous allons appeler cela la perte.
Et ce sera égal à la fonction de perte MSE du module d'extrémité.
Et puis ce Mercilus.
C'est la dernière fonction que nous utiliserons car nos prédictions sont essentiellement des valeurs.
Vous savez, nous prédisons les valeurs fondamentales des différentes actions.
Et par conséquent, puisque ce sont des nombres réels, eh bien, nous faisons en quelque sorte un réseau de neurones pour la régression
et donc la fonction de perte est le moyen d'erreur.
C'est la fonction de perte que nous utilisons en général pour la régression.
D'accord.
Alors maintenant que nous avons notre dernière fonction, optimisons notre optimiseur ici.
C'est la variable que nous créons pour l'optimiseur.
Et nous allons prendre comme d'habitude.
Quant à la voiture autonome, l'optimiseur d'atome, c'est un optimiseur très puissant qui fera des merveilles pour
l'entraînement.
Alors, amenons celui-ci à cet atome.
Et rappelez-vous, c'est exactement ce que la voiture autonome dont nous avons à introduire deux arguments essentiels.
Le premier est celui qui fera le lien entre l'optimiseur et les paramètres de notre réseau de
neurones, c'est-à-dire les poids des neurones de notre cerveau.
Et pour ce faire, nous prenons notre cerveau, que nous avons appelé CNN.
C'est l'objet que nous avons créé pour notre cerveau.
Et donc CNN qui se souvient des paramètres que nous allons et quelques parenthèses.
Cela fait donc le lien entre l'optimiseur et les poids des neurones dans le
cerveau de notre A. JE. Et puis le deuxième argument est un taux d'apprentissage, et c'est donné par l. R.
Et donc ici, nous devons prendre un taux d'apprentissage plus petit car nous ne voulons pas converger trop vite et nous voulons avoir un
peu d'exploration et donc un bon moyen d'apprentissage que nous pouvons dire ici est un petit qui est de quatre points
ou un qui est égal à 0. 01 pour cent.
Je pense que c'est la même chose que nous avons utilisée pour la voiture autonome.
Très bien, nous avons maintenant un optimiseur de fonction perdu, nous sommes donc presque prêts à démarrer la boucle complète.
Eh bien, en fait, nous allons commencer la boucle complète dès maintenant.
Mais juste avant de le faire, nous allons décider de la taille du nombre d'époques dans
lesquelles nous allons devenir et donc créer une nouvelle variable ici qui répondra à ce nombre d'époques.
Et définissons-le égal à cent.
Ce sera assez bien pour entraîner l'air et je parie même que l'air parviendra à atteindre le meilleur
chemin avant cent comme vingt ou trente.
Voyons voir.
Mais pour l'instant, prenons cent.
Et si nous en avons besoin, nous l'augmenterons.
Mais je ne pense pas que ce sera nécessaire.
OK, maintenant que nous avons notre nombre d'aéroports, nous pouvons commencer à faire la boucle complète, vous
savez, cette boucle principale complète de la formation lorsque nous nous entraînons au-dessus des aéroports.
Alors pour alors tout le volleyball va être au travail.
C'est ce que nous choisissons pour revenir.
Maintenant, bien sûr, nous allons utiliser la fonction range pour dire que nous voulons passer du
premier au nombre d'env.
Plus un, car, rappelez-vous, la limite supérieure d'une plage n'est pas incluse, et donc, si vous
voulez aller jusqu'à 100, eh bien, nous devons spécifier et être un plus un pour aller jusqu'à 100.
D'accord.
Alors, Colin.
Et maintenant, entrons dans la boucle.
D'accord.
Donc, la première chose que nous allons faire est de faire 200 séries de dix étapes.
Ainsi, chaque époque sera de 200 pistes, l'une après l'autre de 10 étapes.
Et pour ce faire, nous avons cette fonction one steps de notre classe d'expérience et donc d'utiliser cette fonction,
qui est en fait une méthode car nous allons l'obtenir à partir de notre objet mémoire,
qui est un objet de la classe de remplacement pour générer ces deux exécutions de dix étapes.
Eh bien, nous devons prendre notre objet mémoire que je vous rappelle que nous avons créé ici même.
La mémoire est un objectif pour rejouer la classe de mémoire avec Insteps.
C'est 10 étapes et une capacité de dix mille.
Nous avons créé cet objet et à partir de cet objet nous prenons bien, cette fonction Rundstedt exécute des étapes et nous
spécifions deux cents tours successifs de dix étapes de sorte que nous allons juste à chacun exécuter essentiellement 200 étapes.
Et maintenant que nous avons ces 200 étapes en cours d'exécution à chaque apoc, eh bien, il est temps d'échantillonner certains lots
de ces analyses et d'échantillonner ces lots.
Nous avons une autre fonction de notre mémoire, qui est le lot d'échantillons, et qui générera exactement des lots
à partir de ces 200 analyses.
Mais rappelez-vous, ces lots sont cette fois des lots d'une série de transitions qui consistent en une série de dix étapes par opposition
à avant où les lots n'étaient que quelques lots de transitions uniques ici.
Cette fois, ce seront des lots de dix étapes, dix transitions, et il est donc maintenant
temps de récupérer ces lots aléatoires de notre mémoire et de les obtenir.
Nous avons utilisé la fonction de lot simple à laquelle nous devons appliquer la taille du lot et pour la
taille du lot où nous pouvons prendre trente-deux ou même soixante-quatre ou même cent vingt-huit.
N'oubliez pas, pour cette taille, c'est une pratique courante d'utiliser trente-deux.
C'est ce que vous verrez en général dans les architectures des réseaux de neurones lors de l'apprentissage par lots.
Mais cette fois, c'est assez différent.
Nous, nous échantillonnons juste des lots de 10 étapes, il est donc préférable de prendre des lots de plus grandes tailles.
C'est donc là que nous pouvons prendre soixante-quatre, cent vingt-huit.
Nous allons donc en prendre cent vingt-huit.
Et en fait, cela va être à l'intérieur de la boucle car nous voulons prendre plusieurs lots et nous les prenons dans ce qui
est retourné par cette simple fonction de traitement par lots.
Donc, cette boucle complète pour un lot dans un lot d'échantillons en mémoire, cent vingt huit signifie que tous
les cent vingt-huit pas, eh bien notre mémoire nous donnera un lot de taille, cent vingt-huit,
qui contiendra en fait le dernier cent vingt-huit étapes que nous venons de parcourir.
Nous recevons juste des lots de six, cent vingt-huit et l'apprentissage va se faire sur
ces lots.
Et en plus de ces lots, nous aurons des plateaux d'éligibilité en cours d'exécution, vous savez, pour apprendre toutes les
10 étapes.
D'accord.
Alors maintenant, dans cette boucle, qui se produit encore à une époque, mais maintenant cette fois, nous sommes dans un lot
spécifique.
Et donc maintenant, la première chose que nous allons faire est de recueillir nos contributions et notre objectif séparément.
Et ça, comme je vous l'ai dit, c'est très facile.
Nous pouvons le faire avec l'un des outils que nous avons mis en place, qui est le suivi de l'éligibilité.
Comme vous pouvez le voir ici, cette fonction de trace d'éligibilité prend comme entrées et maintenant nous avons le
lot et retourne en sortie, les entrées et les cibles.
Donc maintenant, ce que nous pouvons simplement faire, c'est créer deux nouvelles variables, qui seront les entrées et
la cible.
Et si ces entrées arrivent à des cibles, cela équivaut exactement à ce que cette fonction de suivi d'éligibilité s'applique à un
lot.
Nous allons donc appliquer cette fonction au lot de notre boucle.
Et donc, ce que nous ferons, c'est simplement l'admissibilité.
Trace appliquée au lot de notre espoir.
D'accord, cela nous permet d'obtenir les intrants et les objectifs, mais dans les vagues, il y a toujours quelque chose de plus
à faire.
Et bien sûr, il s'agit de convertir l'entrée du réseau neuronal et également la cible en certaines variables
tahj.
Mais il n'y a rien de nouveau non plus.
Nous savons comment le faire.
Nous pouvons le faire de cette façon.
Nous prenons nos apports, puis nos objectifs et bien, ils seront égaux au verbal.
Contributions.
C'est pour l'entrée et le verbal.
Cibles, et c'est pour les cibles.
Très bien, donc les entrées du cerveau sont converties en certaines variables tahj et les cibles sont également converties en
certaines variables tahj.
Alors maintenant, nous pouvons obtenir les entrées dans le réseau neuronal.
Et pourquoi devons-nous faire cela?
Parce que la prochaine étape consiste à obtenir les prédictions, nous avons les entrées que nous devons cibler.
Maintenant, bien sûr, nous avons besoin de nos prédictions, car alors ce qui se passe, c'est que nous allons calculer
la perte entre les prédictions et les cibles.
Alors prenons ces prédictions pour les obtenir.
Eh bien, encore une fois, c'est si simple.
Maintenant, nous devons simplement prendre notre cerveau, qui est CNN, notre réseau neuronal convolutif, et
l'appliquer à nos entrées.
On y va.
Les entrées vont dans le réseau neuronal et le réseau neuronal produira les prédictions.
Parfait, donc maintenant nous avons les prédictions, nous avons les objectifs pour que nous puissions obtenir les lois
et c'est la prochaine étape, nous allons en introduire un nouveau parce que maintenant nous allons avoir la dernière erreur,
qui est différente que la dernière fonction, car nous l'utilisons comme fonction pour obtenir la dernière erreur.
Donc moins d'erreur ici et que nous l'obtiendrons avec moins de fonction appliquée à nos prédictions et aux cibles que
nous allons voir comment tout se passe maintenant.
Tout est logique.
Nous obtenons d'abord l'entrée, les cibles, puis grâce à l'entrée, nous obtenons les prédictions.
Et puis grâce aux prédictions et aux cibles que nous obtenons, moins d'erreur.
Alors très logique et fluide, et maintenant quelle est la prochaine étape?
Eh bien, même chemin logique maintenant que nous avons le dernier, nous pouvons propager cette erreur moins en arrière dans le nouveau
réseau pour mettre à jour les poids.
Et nous faisons cela avec une descente de gradient stochastique et pour effectuer une descente de gradient stochastique.
Nous avons besoin de notre optimiseur, mais nous l'avons déjà.
Voici Adam Optimizer.
Mais maintenant, à ce stade, rappelez-vous ce que nous devons faire.
Nous devons l'initialiser et l'initialiser.
Rappelez-vous, nous prenons notre objet optimiseur, puis nous appliquons la méthode du zéro grad.
Voilà, nous n'oublions pas les parenthèses qui l'initialisent, et maintenant l'étape suivante consiste à propager la
dernière erreur dans le nouveau réseau et à faire cela là où nous prenons notre dernière erreur
et nous y appliquons la méthode inverse.
C'est donc exactement pour appliquer la propagation vers l'arrière.
Et puis enfin, maintenant que la dernière erreur est de retour, propagez-la dans le nouveau réseau.
Eh bien, nous pouvons mettre à jour les poids avec la descente de gradient Cassi.
Et pour ce faire, rappelez-vous, nous prenons notre optimiseur puis nous appliquons la méthode step.
On y va.
Les poids sont maintenant mis à jour.
Comme je vous l'ai dit, non seulement nous l'avons déjà fait, mais maintenant cela semble si simple et si naturel.
Alors maintenant, nous allons faire quelque chose d'amusant.
Nous allons imprimer la récompense moyenne à chaque apoc.
Donc, vous savez, nous pouvons suivre comment le A. JE. va, comment se déroule la formation.
Nous voulons voir la récompense moyenne augmenter au fil des étapes, au fil de la boîte.
Et au début, bien sûr, il y a cette phase d'exploration.
Ainsi, la récompense moyenne pourrait ne pas augmenter au début, mais une fois qu'elle aura atteint
la phase d'exploitation, nous verrons la récompense moyenne augmenter définitivement et elle augmentera jusqu'à un certain niveau, c'est-à-dire lorsqu'elle
atteindra l'ouest aussi vite que possible.
Commençons donc par l'impression.
Vous savez, nous faisons cela dans un seul, donc nous devons revenir à l'impression plus bouclée
et ensuite nous allons bien imprimer, d'abord environ une colonne, puis le pourcentage.
S, parce que nous allons tout convertir en une chaîne qui est meilleure et ensuite nous
allons ajouter la récompense moyenne.
Et puis nous ajoutons également un pourcentage, puis nous allons fermer le devis.
Et puis nous ajoutons un pourcentage et de l'autre côté, vous savez, nous entrons les variables qui vont être
la première personne car c'est l'épopée ici et la deuxième variable correspondant à la récompense moyenne, qui va calculer
tout de suite.
La variable de récompense moyenne n'existe donc pas encore.
Nous allons le créer maintenant.
Nous allons donc utiliser ETR au travail.
Même si Époque est le nombre, nous le convertirons en chaîne.
C'est mieux et.
Nous allons ajouter, Estie, est-ce que cela va être la récompense moyenne et nous allons
donc créer une variable que nous allons appeler une grande récompense et maintenant nous allons créer cette variable et la calculer ?
OK, alors faisons ça.
C'est la seule chose qu'il nous reste à faire.
Alors Époque, nous l'avons déjà.
Maintenant, calculons le monde moyen et nous devons le calculer ici.
Toujours dans la boucle, mais hors de la boucle, car maintenant nous avons notre lot échantillonné et nous avons notre formation qui se passe
dans le lot.
Mais maintenant, la propagation vers l'avant plus la propagation vers l'arrière sont effectuées dans le lot.
Nous nous remettons donc dans la boucle et nous pouvons maintenant calculer les récompenses cumulatives que nous pouvons faire avec
notre objet Insteps.
Parce que notre objet cou-de-pied contient cette fonction, nous utiliserions des étapes qui nous permettent d'obtenir les récompenses cumulatives se produisant
dans les étapes, vous savez, lors de l'exécution du cou-de-pied.
Nous allons donc l'utiliser dès maintenant pour mettre à jour les nouvelles récompenses des étapes.
Ensuite, nous mettrons à jour l'objet moyenne mobile en ajoutant les récompenses cumulées à l'objet quotidien en mouvement,
puis recalculons la moyenne.
Et c'est ainsi que nous allons obtenir la récompense moyenne.
Alors faisons ça.
La première chose dont nous avons besoin, ce sont les données de récompenses DARABA.
Alors appelons-les récompenses.
Etapes et puis, comme nous l'avons dit, nous prenons notre objet d'étapes de fin, qui a été, je le rappelle, créé ici un objet de
la classe de progrès instantané de notre expérience nous encrassons un sujet si sensible.
Ensuite, nous ajoutons des récompenses, des étapes et ensuite des parenthèses.
D'accord.
Cela nous donnera les nouvelles récompenses cumulatives des étapes.
D'accord.
Mais ensuite, nous devons ajouter ces nouvelles récompenses cumulatives dans nos objets de moyenne mobile.
Et pour ce faire, nous avons une méthode cette fois dans la classe moyenne mobile, qui est cette méthode publicitaire très
simple.
Nous prenons notre objet moyenne mobile, que nous avons créé ici avec une centaine de pas.
Ensuite, nous allons utiliser notre méthode ADD, puis dans l'atmosphère, nous entrons nos étapes de récompense et cela ajoutera
les récompenses des étapes dans la moyenne mobile.
D'accord.
Et enfin, on peut calculer la récompense moyenne et c'est bien, vous savez, c'est la même variable ici.
C'est donc ce qui va être égal à la récompense moyenne.
Et pour l'obtenir, il suffit d'utiliser la méthode de la moyenne cette fois à partir de notre objet de moyenne mobile.
Et c'est ce que nous faisons et une moyenne de points comme ça, parce que notre moyenne mobile a déjà été mise à jour avec les nouvelles
étapes de récompenses que nous venons d'ajouter des choses à la méthode ADD.
Génial.
Nous avons donc maintenant notre prix moyen, donc c'est très populaire ici et cela va être imprimé chaque année.
Très bien, alors nous avons terminé.
Je suis donc ravi de voir les résultats.
Et en fait, je vais avoir une surprise pour vous dans le prochain tutoriel en regardant les résultats.
Ça va donc être assez excitant.
Et maintenant, je suppose qu'il est temps de jouer avec l'air et de s'amuser.
D'accord.
Alors préparez-vous un bon café ou un bon thé.
Il est maintenant temps de s'asseoir confortablement dans notre fauteuil et de regarder des vidéos très cool de notre avion pour voir, c'est
dans le prochain tutoriel.
Et jusque-là, profitez-en.