Bonjour et bienvenue dans ce tutoriel sur Python.
D'accord.
Maintenant, dans la prochaine fonction que nous allons implémenter, nous allons former le réseau de
neurones profonds de notre intelligence artificielle.
Donc, fondamentalement, nous allons faire tout le processus de propagation, puis de retour.
Donc, nous allons obtenir notre production.
Nous allons obtenir la cible.
Nous allons comparer la sortie de la cible pour calculer la dernière erreur, puis nous allons propager cette
dernière en arrière dans le nouveau réseau.
Et en utilisant la descente de gradient suggérée, qui devra attendre en fonction de son apport à la
dernière erreur.
Faisons donc tout cela pour ceux d'entre vous qui viennent des profondeurs du Marine Corps.
Ce sera une bonne chose, mais pour les autres, ne vous inquiétez pas, je vais l'élargir à nouveau.
Nous allons donc appeler cette nouvelle fonction learn et learn va prendre plusieurs arguments.
Premier moi bien sûr qui fera référence à l'objet du diplôme en classe.
Ensuite, nous allons prendre notre état de lot pour l’état actuel, puis notre prochain état de
lot, puis notre action Cette récompense et enfin Arbat.
Alors, pourquoi prenons-nous cela.
Vous avez probablement reconnu quelle est cette série.
Eh bien, c’est bien sûr une transition, une transition du processus de décision du marché qui est à la base.
Avez-vous appris.
Et pourquoi les prenons-nous tous en lots?
Eh bien, c’est parce que vous savez que nous ne considérons pas les transitions en fonction d’une série d’activités de l’état
actuel ou supérieur de la récompense actuelle et de l’action en cours.
Nous avons créé ici des lots simples grâce à la fonction simple.
Et maintenant, nos transitions sont sous la forme d'un premier lot pour cet état.
Un deuxième lot pour la prochaine date, un lot pour la récompense et un lot pour l'action.
C'est la forme de notre transition maintenant et ils sont tous bien alignés dans le temps grâce
à cette concaténation que nous avons faite ici par rapport à la première dimension.
Donc, le point est maintenant que nous avons ces lots de transition, un lot pour chacun des états les jours suivants, nous le
regardons en action et nous faisons tout cela parce que nous utilisons cette astuce de rejeu d'expérience.
Ainsi, notre réseau neuronal profond peut apprendre quelque chose.
N'oubliez pas que si vous aviez uniquement une transition, il s'agirait d'un apprentissage instantané.
Ou si vous voulez apprendre très peu de mémoire et que la taupe n’apprendra rien.
Nous devons donc prendre ces lots de la mémoire qui deviennent nos transitions, puis nous obtiendrons éventuellement les différentes sorties
pour chacun des états des états d'entrée et nous le ferons pour les États et pour
les prochains États, car nous aurons besoin des deux. pour calculer la perte.
Je rappellerai bientôt l'équation de la balance qui est au cœur de l'algorithme d'apprentissage.
Alors maintenant, passons à la fonction et obtenons d’abord les sorties de l’état de la boîte.
Je vais donc appeler cela les premiers résultats viables, puis nous dirons bien sûr que notre auto-dialogue
n’est pas tout à fait naturel.
Non, car nous voulons obtenir les sorties de notre modèle des états d'entrée de l'état.
Et puisque notre modèle attend en réalité un lot d’états d’entrée.
Eh bien, nous pouvons totalement entrer cet état maintenant pour l’entrée de tous.
C'est exactement comme cela que nous avons initialisé les états qui entrent dans le réseau avec la torture
répondons avec cette dimension vague pour le lot parfait.
Nous obtenons maintenant les résultats de tous.
Mais il existe un autre truc technique si nous ne vendons que cet état de modèle, nous obtiendrons les résultats de toutes les actions possibles
que vous connaissez 0 1 et 2, mais ce n'est pas ce que nous souhaitons.
Nous ne nous intéressons qu'aux actions choisies.
Les actions qui ont été décidées par le
réseau à jouer à chaque fois et pour les intéresser sont
les actions bien jouées. nous ajoutons cette action à celle-ci.
Et dans cette section, nous allons rassembler chaque fois la meilleure action à jouer pour chacun des états d'entrée
de l'état.
Nous ne voulons pas que l'action qui a été jouée soit l'action choisie, et nous obtenons cette information
avec celle-ci.
Mais alors faites attention.
L’état d’ici a ces faux diamants et cette graisse dans le lot et cette section ne les a pas.
Backstay l'a parce que nous avions l'habitude d'utiliser Unsworth ici, mais nous n'avons pas utilisé de compression des
bras pour les actions. Nous devons donc l'ajouter ici pour que l'action Bache ait exactement la même dimension que l'état.
Donc, nous allons ajouter un point et presser votre droite ici et en réalité ce n'est pas zéro mais un parce que zéro
réponse à Faith n'est pas l'état et un correspondra à l'examen des actions.
Et enfin, la dernière chose que nous devons faire ici est de tuer ce faux lot avec un squeeze.
Pourquoi avons-nous besoin de faire cela?
Parce que maintenant nous sommes hors du réseau de neurones.
Nous avons nos résultats mais nous ne voulons pas qu'ils reviennent.
Nous les voulons.
Et la réponse simple est simple vecteur.
Un vecteur de sortie des lots juste au moment où nous travaillons dans le réseau de neurones, car le
réseau de neurones attend le format de capteurs dans un lot.
Mais maintenant, nous avons nos résultats et, dans la prochaine équation de baluns de l'apprentissage en profondeur, nous n'en aurons pas besoin
dans un lot.
Donc, je tue cela ici et tue la dimension de la foi pour retrouver la forme simple de nos sorties.
Donc, j'ajoute simplement ici Point, puis Squeeze, puis, depuis que je veux tuer le faux stratifié correspondant
au dos de l'action.
Eh bien, puisque le moteur d'espace-temps a l'index un, j'en ajoute un ici.
D'accord.
Et maintenant on y va on a nos sorties.
D'ACCORD.
Nous avons un petit avertissement sur le fait que la sortie de la variable locale est affectée mais n’est jamais utilisée.
C'est bon.
Nous allons l'utiliser très rapidement.
Voilà donc nos résultats.
Et maintenant, nous voulons avoir nos prochaines sorties. Alors maintenant, vous vous demandez peut-être pourquoi nous avons besoin des prochains résultats.
Pour bien comprendre cela, nous devons revenir à l’algorithme d’apprentissage en profondeur qui se trouve ici et
qui fait partie du manuel de Letak.
Voilà donc tout le processus de diffusion.
Au début, nous initialisions toutes les valeurs de clé, puis à chaque instant t.
Et bien voilà, nous sélectionnons l'action avec Max soughed, c'est ce que nous avons fait avec la fonction select action
Ensuite, nous avons ouvert la transition et, comme vous pouvez le constater, nous obtenons la prédiction, nous obtenons la cible et nous pouvons
être les derniers.
Alors, pourquoi avons-nous également besoin de la prochaine sortie?
En raison de la cible, la cible est égale au Ghana multipliée par le résultat suivant et le résultat souhaité.
Nous calculons ensuite les objectifs, car nous avons besoin du résultat suivant.
Calculons ceci en premier.
Donc, encore une fois, pour que la prochaine mise à jour soit très simple, la prochaine sortie sera le résultat
de notre réseau de neurones lorsque l’état suivant mis en lots l’entrera en tant qu’entrée.
Nous prenons donc très simplement notre modèle, notre réseau de neurones, puis cette fois-ci, l’entrée du réseau de neurones
sera l’état en lots suivant qui sera mis en lots par la suite.
Mais rappelez-vous maintenant si nous revenons à l'algorithme précédent. Vous pouvez voir que la sortie suivante est le maximum des valeurs
q pour l'état suivant par rapport à toutes les actions.
Donc maintenant, pour obtenir le prochain résultat, nous devons obtenir le maximum de cette valeur q et par conséquent, je vais
le faire ici.
Détachez-vous pour détacher toutes les sorties du modèle car nous avons plusieurs états dans ce lot next états qui est le
lot de tous les états suivants dans toutes les transitions prises à partir de l'échantillon aléatoire de
notre mémoire.
Je les détache donc tous à l'aide de la fonction de détachement, puis je prends le maximum de toutes ces
deux valeurs.
Et puisque nous prenons le maximum de ces deux valeurs en ce qui concerne l'action, nous devons préciser que
c'est en ce qui concerne l'action.
Et puisque l'action est représentée par l'index.
Encore une fois, nous devons placer ici la suivante, puis spécifier que nous
prenons les valeurs de repère comme étant T plus 1, ce qui correspond à la prochaine
étape. par conséquent, nous devons ici ajouter des parenthèses d'indice 0.
De cette façon, nous obtenons le maximum des valeurs de clé des états suivants représentés par
le zéro suivant en fonction de toutes les actions représentées par l'index. Nous obtenons maintenant les résultats suivants.
Ce sont un nouvel ensemble.
C'est quand nous avons eu l'avertissement.
Mais c'est bon.
Nous allons l'utiliser maintenant pour calculer la cible.
Et en parlant de la cible qui est la prochaine étape de cette fonction connue.
Alors on y va.
La cible est égale.
Revenons maintenant à notre manuel sur l'IA.
La cible est égale au mot plus les temps gamma, la sortie suivante correspond au maximum des valeurs de cube du
jour suivant.
Selon les actions que nous pouvons calculer cela.
C'est donc égal à moi que gamma et moi que Gamma a été initialisé.
Voici un exemple qui est une variable Virgin Q Un objet est automatiquement transmis à Times les prochaines sorties, comme nous venons
de le dire, et voulons-nous que ce soit le meilleur.
Nous travaillons avec des lots ici, donc nous voulons un lot et c’est la cible.
Dans un échantillon du gamma mémoire multiplié par les sorties suivantes Plus la récompense.
D'accord.
Parfait.
Nous avons donc maintenant nos résultats.
Nous avons également nos objectifs et nous pouvons donc calculer la perte qui représente l’erreur de
la prévision.
Alors appelons cela les dernières deux est bien sûr pour la différence temporelle.
C’est encore une fois au cœur de l’apprentissage Q et ce tiddy va être égal à la version qui améliore
beaucoup le Cunanan.
C'est la dernière fonction que nous choisirons pour notre intelligence artificielle.
Pour ceux d'entre vous qui viennent du parcours vert profond, c'est vraiment le dernier que je recommande.
Si vous voulez implémenter la Coonerty et comment allez-vous l'obtenir.
Encore une fois, nous allons prendre une fonction du module fonctionnel représenté par F
et donc ici, je vais utiliser notre module fonctionnel f canards et le Hubble nous peut être
obtenu grâce à la fonction Smoots L-1 aime celui-là.
Donc en appuyant sur entrer.
Et c'est vraiment la meilleure fonction perdue que je recommande pour un apprentissage en profondeur.
Cela améliore vraiment la Culin.
Mais c'est une fonction donc j'ajoute des parenthèses.
Et maintenant, rien de plus simple.
Les arguments que nous devons entrer sont les prédictions et les cibles.
Donc, bien sûr, les prédictions sont des sorties parce que c'est la sortie du réseau de neurones.
Non, la sortie du réseau de neurones correspond à ce que prédit le réseau de neurones.
Donc, c'est la prédiction.
Le premier argument ici est donc les sorties et le second argument est bien entendu la cible.
La chose que nous essayons d'obtenir et qui est déjà calculée est parfaite.
Nous pouvons directement entrer la cible.
Parfait.
Nous venons de nous dire que nous avons juste un petit thé
Nous y voilà.
Maintenant, l'avertissement devrait disparaître.
Oui.
Parfait.
Et maintenant que nous avons la dernière erreur, nous pouvons remonter l’erreur des propagateurs dans le réseau pour mettre à jour les
poids avec une descente de gradient stochastique et c’est exactement ce que nous allons faire à l’étape suivante.
Donc, bien sûr, ce que nous devons faire maintenant, comme vous pouvez le deviner, est d’optimiser notre optimiseur que
nous vous présentons à nouveau.
Et c’est un optimiseur d’atomes qui est en fait un objet de la classe Atom et il est déjà
équipé des paramètres de notre modèle.
Et nous avons déjà choisi un taux d’apprentissage de 0. 1 pour cent de perfectionner notre optimiseur est prêt, mais nous devons
maintenant jouer sur la dernière erreur pour effectuer une grille stochastique dans le sens et les poids de données.
Ainsi, lorsque vous travaillez avec des combattants, la première chose à faire est de le réinitialiser à chaque itération de la
boucle.
Nous devons réinitialiser l'optimiseur d'une interaction à l'autre dans la boucle pour obtenir le réseau
dans l'ensemble et le réinitialiser.
Et chaque itération de la boucle.
Eh bien, nous allons utiliser la méthode suivante qui est zéro.
Et c'est parti.
Zéro grad réinitialisera l'optimiseur à chaque itération de la boucle.
Alors n'oublions pas la parenthèse.
Parfait.
Et maintenant qu'il est réinitialisé, nous pouvons effectuer une propagation en arrière avec notre optimiseur.
Et comment faisons-nous cela.
Eh bien, nous nous en tenons aux lois et nous allons le propager dans le réseau et le
propager dans le réseau.
Nous devons utiliser la fonction backward et à l'intérieur de cette fonction backward, il est recommandé d'entrer des variables de soulignement
de maintien et de la définir comme étant vraie
Je recommande de le faire car cela améliorera la propagation en arrière.
L'utilisation de variables écrites est égale à true, c'est libérer de la mémoire et nous devons libérer
de la mémoire car nous allons passer plusieurs fois sur la dernière, ce qui va certainement améliorer les performances de l'entraînement.
Enfin, la dernière étape de cette fonction est d’avoir des poids de données en fonction de la propagation en arrière.
C'est en fonction de combien les poids ont contribué à l'erreur.
Et pour ce faire, nous reprenons notre optimiseur qui a été initialisé en réinitialisation et nous utilisons la fonction step et
simplement avec cette ligne de code en utilisant la fonction step.
Cela mettra à jour les poids.
C'est cette ligne de code qui met à jour les poids.
Cette ligne de code qui propage l'erreur dans le réseau de neurones et cette ligne de code utilise l'optimiseur pour mettre
à jour les pondérations et c'est parti.
Nous avons un réseau de neurones d'apprentissage, alors félicitations.
C’était probablement la partie la plus technique et la plus difficile de toute cette dispute ou de ce lendemain.
Je sais que mon flambeau peut être difficile parfois avec facilité, mais à la fin,
je vous promets que vous obtiendrez un réseau de neurones très fonctionnel et, partant, un modèle particulier et, éventuellement,
une grande intelligence artificielle.
Passons maintenant à l’étape suivante ou enseignant et modèle, qui sera la fonction de mise à jour qui sera
évidemment mise à jour lorsque l’intelligence artificielle découvrira le nouvel état.
Donc, vous savez qu'il va découvrir le nouvel état et ensuite il recevra la récompense.
En fonction de l'action affichée, ce nouvel état s'en chargera avec la fonction de mise à jour
et le fera dans le prochain tutoriel.
Jusque-là profiter.
JE.