Former des réseaux de neurones profonds à partir de zéro n'est pas une tâche facile.
Cela prend beaucoup de données et de temps à apprendre, mais certaines astuces peuvent aider à accélérer le processus, dont je parlerai sous la coupe.
Démonstration du passage d'un labyrinthe simple à l'aide de tours. Durée de la formation en réseau: 1 heure 06 minutes. Enregistrement accéléré de 8 fois.
Pour chaque tâche, vous devez développer votre propre ensemble d'astuces pour accélérer l'apprentissage en réseau. Je vais partager quelques astuces qui m'ont aidé à former le réseau beaucoup plus rapidement.
Pour les connaissances théoriques, je recommande de passer au canal
sim0nsays .
Et je parlerai de mes modestes succès dans la formation des réseaux de neurones.
Énoncé du problème
Pour approximer la fonction de convergence en minimisant la fonction de perte quadratique par la propagation en arrière de l'erreur par les réseaux de neurones profonds.J'avais un choix stratégique sur la façon de former un réseau neuronal.
Encouragez la réussite de la tâche ou encouragez-la à l'approche de la fin de la tâche.
J'ai choisi la deuxième méthode, pour deux raisons:
- La probabilité que le réseau atteigne lui-même la ligne d'arrivée est très faible, il sera donc condamné à recevoir beaucoup de renforcement négatif. Cela réinitialisera les poids de tous les neurones et le réseau ne sera pas en mesure de poursuivre la formation.
- Les réseaux de neurones profonds sont puissants. Je n'exclus pas que la première méthode aurait réussi si j'avais une puissance de calcul énorme et beaucoup de temps pour la formation. J'ai pris le chemin du moindre coût en développant des astuces.
Architecture de réseau neuronal
L'architecture se développe expérimentalement, basée sur l'expérience de l'architecte et bonne chance.
Architecture pour résoudre le problème:
- 3 neurones d'entrée - les coordonnées de l'agent et la valeur de la cellule passée (nous normalisons dans la plage de 0 à 1).
- 2 couches cachées de 256 et 128 neurones (on réduit la dimension des couches vers la sortie réseau).
- 1 couche supprimant des neurones aléatoires pour un réseau d'apprentissage durable.
- 4 neurones de sortie - la probabilité de décider quel côté choisir pour l'étape suivante.
- Fonction d'activation des neurones: sigmoïde. Optimiseur: adam.
sigmoid donne 4 probabilités à la sortie dans la plage de 0 à 1, en choisissant le maximum, nous obtenons le côté pour la prochaine étape: [jumpTop, jumpRight, jumpBottom, jumpLeft].
Développement d'architecture
Le recyclage se produit lors de l'utilisation de modèles trop complexes.
C'est à ce moment que le réseau a mémorisé les données de formation et pour les nouvelles données que le réseau n'a pas encore vues, cela fonctionnera mal car le réseau n'a pas eu besoin de rechercher des généralisations, car il avait suffisamment de mémoire pour mémoriser.
Manque d'éducation - avec des modèles insuffisamment complexes. C'est alors que le réseau avait peu de données d'entraînement pour trouver des généralisations.
Conclusion: plus il y a de couches et de neurones, plus il faut de données pour l'entraînement.
Terrain de jeu

Règles du jeu
0 - En entrant dans cette cellule, l'agent est détruit.
1..44 - Cellules dont les valeurs augmentent à chaque étape.
Plus l'agent va loin, plus il recevra de récompense.
45 - Terminer. Dans le même temps, la formation ne se produit pas, c'est seulement lorsque tous les agents sont détruits, et la ligne d'arrivée est une exception qui utilise simplement le réseau déjà formé pour les prochaines prévisions dès le tout début du labyrinthe.
Description des paramètres
L'agent possède une "antenne" dans quatre directions - elles jouent le rôle de l'intelligence environnementale et sont une description des coordonnées de l'agent et de la valeur de la cellule sur laquelle il se trouve.
La description joue le rôle de prédire la prochaine direction pour le mouvement de l'agent. C'est-à-dire que l'agent scanne en avant ce qui est suivant et, en conséquence, au fil du temps, le réseau apprend à se déplacer dans le sens d'une augmentation de la valeur de la cellule et à ne pas dépasser les limites du mouvement autorisé.
Le but du réseau neuronal: obtenir plus de récompenses.
Objectif d'apprentissage: pour encourager des actions correctes, plus l'agent est proche de résoudre la tâche, plus la récompense pour le réseau neuronal est élevée.
Astuces
Les premières tentatives d'apprentissage sans artifices ont nécessité plusieurs heures d'entraînement et le résultat était loin d'être complet. En appliquant certaines techniques, le résultat a été obtenu en seulement une heure et six minutes!
Bouclage d'agent
Pendant la formation, le réseau a commencé à prendre des décisions, à faire des allers-retours - le problème de «l'utilisation». Les deux mouvements donnent au réseau une récompense positive, ce qui a stoppé le processus d'exploration du labyrinthe et n'a pas permis de sortir du minimum local.
La première tentative de solution a été de limiter le nombre de mouvements de l'agent, mais ce n'était pas optimal, car l'agent a passé beaucoup de temps dans une boucle avant de s'autodétruire. La meilleure solution était de détruire l'agent s'il se rendait dans la cellule avec une valeur inférieure à celle sur laquelle il se trouvait - l'interdiction d'aller dans la direction opposée.
Recherche ou utilisation
Une simple astuce a été utilisée pour explorer les chemins autour de la position actuelle de l'agent: à chaque étape, 5 agents seront des chercheurs «volontaires». Le cours de ces agents sera choisi au hasard et non par la prévision du réseau neuronal.
Ainsi, nous avons une probabilité accrue que l'un des cinq agents avance plus que les autres et aide à former le réseau avec de meilleurs résultats.
Algorithme génétique
Chaque époque, 500 agents participent sur le terrain. Les prédictions pour tous les agents sont effectuées en mode asynchrone pour tous les agents à la fois, de plus, les calculs sont délégués à gpu. Ainsi, nous obtenons une utilisation plus efficace de la puissance de calcul de l'ordinateur, ce qui conduit à une réduction du temps pour prédire un réseau neuronal pour 500 agents en même temps.
La prédiction fonctionne plus rapidement que l'entraînement, de sorte que le réseau a plus de chances de progresser dans le labyrinthe avec le moins de temps et les meilleurs résultats.
Apprendre le meilleur de la génération
Tout au long de l'ère, pour 500 agents, les résultats de leur progression dans le labyrinthe sont préservés. Lorsque le dernier agent est détruit, les 5 meilleurs agents sur 500 sont sélectionnés - qui ont atteint le labyrinthe le plus loin.
Sur la base des meilleurs résultats de l'époque, un réseau de neurones sera formé.
Ainsi, nous réduirons la quantité de mémoire utilisée en ne sauvegardant pas et en ne formant pas le réseau sur des agents qui ne font pas avancer le réseau.
Achèvement
N'étant pas un spécialiste dans ce domaine, j'ai réussi à obtenir un certain succès dans la formation du réseau neuronal, et vous réussirez - allez-y!
Efforcez-vous d'apprendre plus vite que les ordinateurs, pendant que nous faisons mieux.
Matériaux
Référentiel avec codeLancer la formation sur le navigateurLa documentation tensorflow.js , où vous pouvez également trouver des ressources supplémentaires pour l'apprentissage.
Livres
- Apprentissage profond. Immersion dans le monde des réseaux de neurones
S. Nikolenko, A. Kadurin, E. Arkhangelskaya
- Apprentissage automatique et TensorFlow
N. Shakla
- Systèmes d'auto-apprentissage
S. I. Nikolenko, A. L. Tulupyev
- Formation de renforcement
R.S. Sutton, E.G. Barto
- Cartes auto-organisées
T. Kohonen
Merci de votre attention!