Bonjour et bienvenue dans ce tutoriel.
D'accord.
Ainsi, dans les tutoriels précédents, nous avons créé le cerveau ou, si vous voulez que le cerveau du A-3 soit visible,
nous devons le former.
Mais pour former son cerveau, nous avons besoin d'un optimiseur utilisant cet outil et collant une cigarette
au centre pour prendre le poids en fonction de leur contribution à l'erreur entre les prédictions et
les cibles.
Et ce que nous avons fait jusqu'à présent dans les premier et deuxième modules, nous avons utilisé l'optimiseur d'atomes à la torche lors de
la formation.
Mais comme je vous l'ai dit, nous avons affaire à un problème très complexe qui se pose et l'algorithme A-380 en
lui-même n'est pas suffisant pour résoudre ce problème.
Nous avons besoin d’optimiseurs personnalisés et de nombreuses astuces pour résoudre ce problème sans
attendre.
C’est l’objectif de cette tâche et c’est la raison pour laquelle nous avons un optimiseur distinct basé sur
l’optimiseur d’atomes.
Et cela est contenu dans cette classe d'ennemis partagés et pourquoi atome partagé.
C'est parce que c'est en fait l'optimiseur d'atomes mais que cela fonctionnera sur des états partagés.
Donc, nous allons expliquer comment cela fonctionne et c'est à la toile. Donc, nous allons passer
en revue les différentes fonctions ici sans les tuer, car vous savez que nous voulons garder de l'énergie pour le
prochain et en plus, c'est le train que je est tombé qui prendra plus de cent lignes de code.
Alors soyez prêt pour ça.
Nous allons donc essayer d’expliquer ce qui se passe ici dans un Statoil Statoil.
Et commençons maintenant.
Très bien, commençons par introduire cet atome de partage de classe qui contiendra trois fonctions: la fonction init, la
fonction de mémoire partagée et la fonction step.
Donc, ce que nous faisons en premier lieu, c’est que nous héritons de optin cet atome qui est bien sûr l’optimiseur d’atomes et que
nous obtenons du module Upton à partir de la bibliothèque de torches.
Nous avons donc tout à fait hérité d’obtenir les outils liés à l’optimiseur d’atomes et nous commençons par
la fonction init.
Alors qu'est-ce qui se passe ici.
Tout d'abord, nous utilisons la superfonction pour hériter de tous les outils et de tous les paramètres de base de l'atome. La
classe Atom et ces paramètres de base se trouvent ici.
Les harams apprennent les baiters de course Epsilon et la perte de poids.
Et puis on commence un suivi.
Ce premier Foluke pour le groupe lui-même que les groupes Paramo.
Donc, pour nous, ce qui est défini par groupes de groupes autour de groupes contient tous les attributs de l'optimiseur.
Et parmi ces attributs, nous avons les paramètres dont nous avons besoin pour optimiser
ces paramètres que nous voulons atomiser d’autres manières du réseau qui sont peut-être contenues dans des groupes auto parum.
Le groupe appartient donc aux groupes d’entraide.
Et nous avons ici le deuxième Faltu qui obtiendra ces paramètres que nous voulons optimiser et
qui sont peut-être exactement contenus dans des groupes parum douteux.
Donc, fondamentalement, nous parcourons des groupes d’entraide qui contiennent tous les paramètres. Pour chaque groupe de paramètres et
d’auto-conversation de groupes, nous allons passer en revue les paramètres que nous voulons optimiser.
Par conséquent, pour le groupe, Paramo signifie ici pour chaque Tancer des poids que nous voulons optimiser.
Donc, pour chaque capteur, nous voulons optimiser les poids, puis ce qui se passe dans ce groupe avec ces
quatre lignes de code.
En gros, la mise à jour effectuée par l'optimiseur est basée sur une moyenne mobile exponentielle
du gradient.
C'est cette ligne de code ici.
C'est la moyenne mobile exponentielle du gradient du premier instant d'ordre 1.
Mais les objets créés par atome ne sont pas uniquement basés sur le fait qu’ils reposent également sur une moyenne
mobile exponentielle du carré du gradient.
C'est une moyenne mobile exponentielle du gradient d'inertie à ou deux.
Voici donc la moyenne mobile exponentielle de l’ensemble.
Et voici la moyenne mobile exponentielle de deux pour chacun d’eux que les EMJ ont dégradé.
Alors que ce qui se passe ici.
Et maintenant, si vous voulez avoir plus de détails sur le fonctionnement de la moyenne
mobile exponentielle, je vous encourage vivement à jeter un coup d'œil à cette méthode de recherche d'Adam pour
l'optimisation stochastique, car l'optimiseur atomique que nous implémentons est basé sur l'algorithme un ici.
Donc, si vous voulez avoir plus de détails sur le fonctionnement de l'algorithme, cet article vous sera certainement utile.
Et puis vous avez d'autres explications sur l'algorithme avec les atomes et les règles.
Et donc, vous savez que ce n’est que si vous voulez attaquer cela avant d’attaquer la fonction de gros
train qui fera ensuite.
OK, revenons à bison.
Et maintenant passons à la deuxième fonction de mémoire partagée.
Alors maintenant, je vais juste dire quelques mots.
L'idée de cette fonction de mémoire partagée est un peu comme un tenseur que kuda, vous savez, est un accélérateur basé
sur une vue.
Et donc, fondamentalement, ce qui se passe ici est que nous avons ces tenseurs des états qui partagent la mémoire
ici et ici et qui se comportent un peu comme des dizaines qui pourraient accélérer le calcul accéléré.
Mais la différence est qu’ici les capteurs qui partagent la mémoire envoient le calcul à une
partie du GP qui est accessible à toute la menace paralysée.
Donc, c'est essentiellement ce qui est fait ici.
C'est un peu comme 10 à ce kuda mais il est seulement envoyé à une partie du GP pour
être accessible aux menaces parallélisées.
D'accord.
Et puis nous avons la dernière étape de la fonction.
Donc, vous savez que cette fonction ressemble à la méthode par étapes de l'optimiseur d'atomes que nous utilisons dans ce cours.
Et encore une fois, cela est basé sur l'algorithme un du même papier que nous avons vu auparavant.
Donc, cet algorithme.
Encore une fois, vous voulez comprendre en détail les lignes de code suivantes.
Encore une fois, je vous invite à regarder cet algorithme.
Et en plus, ce qui est fait ici n’est pas totalement obligatoire car il s’agit en fait d’un copier-coller de la
méthode des étapes agissant dans cette classe d’atomes.
Donc, fondamentalement, ce qui est fait ici, nous aurions pu le faire en
utilisant notre héritage, car ici, nous héritons d’Acton, Adam, et ainsi d’utiliser
notre héritage. La superfonctionnement que nous appliquons à notre classe Adam commune correspond à notre objet
et nous ajoutons ici étape par parenthèse. La méthode de l'acte de cette classe est
exactement la même.
C'est pourquoi je disais simplement qu'il ne s'agit que d'un copier-coller de la méthode des étapes de la loi
en classe Atom.
Donc, je pense que si vous remplacez tout cela par cette super fonction appliquée au partage d'Adam et de la méthode d'étape,
vous obtiendrez exactement la même chose.
D'accord, donc c'était intéressant d'y jeter un coup d'œil.
Fondamentalement, vous pouvez voir cela comme l'optimiseur Adam.
C'est comme si nous l'avions examiné plus en profondeur.
Mais encore une fois, si vous voulez entrer plus dans les détails de tout cela et si vous voulez comprendre
ce qui se passe en coulisse, je vous encourage à consulter ce document de recherche.
Je vais mettre le lien dans les commentaires ici.
Vous savez, rappelez-vous que tout le code sera connecté dans les moindres détails.
C'est donc vraiment bien si vous pouvez y jeter un coup d'œil.
Et maintenant, j'espère que vous avez une bonne énergie car nous allons passer au fichier train qui contiendra cette fonction de
train énorme et qui entraînera essentiellement notre cerveau, ce que nous pouvons maintenant faire
grâce à notre optimiseur.
Alors, bonne pause maintenant.
Dormez bien et chaque fois que vous vous sentez en pleine forme.
Passons à l'étape suivante.
Jusque-là, profitez de l'IA.