Salut et bienvenue.
Dans la dernière conférence, vous avez vu comment nous utilisons nos fonctions d'assistance pour vraiment mettre en place le cœur de nos fonctionnalités afin
de former nos modèles.
Nous avions donc notre état terminal, notre emplacement de départ, notre prochaine action, notre prochain emplacement et le
chemin le plus court définissant vraiment la majorité du fonctionnement de notre agent ou de notre environnement.
La dernière chose que nous devons faire est d'utiliser notre formation afin d'utiliser notre formation.
C'est assez simple dans le sens de ce que nous devons inclure, mais la façon dont nous procédons est une autre
histoire.
Cela étant dit, également, si vous utilisez une approche différente ou si vous souhaitez personnaliser cela
et expérimenter, c'est fortement recommandé.
En plus de cela, si vous utilisez une approche différente et que vous souhaitez en discuter, n'hésitez pas à
partager les questions et réponses.
Plus qu'heureux d'en discuter avec vous.
C'est une excellente idée car il y a tellement de façons de résoudre ce problème et vous pourriez trouver
un moyen bien meilleur, plus avantageux.
Nous pourrions à nouveau examiner les avantages et les inconvénients, plus qu'heureux d'en discuter.
Très bien.
Alors que devons-nous faire ?
Nous devons lancer notre formation.
Pour notre formation.
Nous voulons utiliser l'Epsilon.
Donc, fondamentalement, le pourcentage que nous allons prendre pour la meilleure action pour R au lieu d'une action aléatoire.
Alors définissons notre epsilon et mettons-le à 0. 9 et nous allons faire quelque chose de similaire avec nos valeurs
pour notre facteur d'actualisation et notre taux d'apprentissage.
Faisons donc un facteur d'actualisation égal à 0. 9.
Prenons également notre taux d'apprentissage et fixons-le à 0. 9.
Ce sera le taux que notre agent va ou devrait apprendre.
Et nous voulons également prendre le nombre d'épisodes de formation, appelons-le, et d'épisodes de formation.
Nous avons donc un certain nombre d'épisodes de formation.
Mettons-le à mille.
Combien de fois va-t-il s'entraîner ou sur combien d'épisodes cela va-t-il s'entraîner ?
Génial.
Maintenant, essentiellement, ce que nous voulons faire, c'est parcourir chaque épisode.
Nous voulons prendre la plage de notre nombre d'épisodes de formation et définir notre epsilon.
Nous voulons trouver notre différence temporelle.
Pour définir cela, nous devons examiner certaines valeurs Q précédentes.
Nous devons calculer notre position de départ dans notre index d'action.
Alors, commençons.
Prenons une grosse boucle for.
Nous avons donc nos quatre épisodes.
Dans la gamme de notre nombre d'épisodes de formation.
Nous y voilà.
Sauf erreur de syntaxe de ma part, nous voulons prendre l'index de ligne et l'index de colonne de notre grille pour
notre Ms. indice de colonne.
Et dit un emplacement de départ cible, nous avons besoin d'un emplacement de départ.
Alors passons cette mauvaise heure à chaque épisode.
Nous pouvons maintenant définir l'état de notre terminal while.
Pas.
Est l'état terminal.
Nous voulons regarder l'index de ligne et l'index de colonne.
D'accord.
Ensuite, définissons notre index d'action pour notre prochaine action.
Nous avons donc besoin de notre prochaine action.
Au fur et à mesure que cet agent parcourt les moyens de notre index d'action, nous pouvons utiliser notre action suivante.
Et nous pouvons utiliser notre index de colonne d'index de ligne et appelons notre epsilon.
Nous voulons donc avoir ceci au lieu de notre action aléatoire, utilisons l'index de colonne.
Et nous avons besoin d'Epsilon.
Génial.
Si je pouvais épeler correctement.
Ici, nous voulons Epsilon.
Très bien, permettez-moi de supprimer ceci.
D'accord.
Laissez-moi saisir le reste du code et nous allons le parcourir pour que vous n'ayez pas à me regarder taper
chaque ligne.
Mais gardez cela à l'esprit comment nous voulons aborder cela.
En compensant l'ancienne ligne, nous aurions besoin d'un ancien index de ligne.
Nous voudrions également avoir les récompenses pour nos colonnes et nos lignes.
Nous devons examiner les valeurs de file d'attente et les anciennes valeurs de file d'attente, et nous devons calculer notre
différence temporelle.
D'accord.
Vous voyez donc le changement de code ou la mise à jour du code.
Nous prenons notre ancien index de ligne et notre ancien index de colonne pour examiner notre index de ligne et notre index de colonne.
Notre index de colonne d'index de ligne est égal à notre prochain emplacement.
Et notre prochain emplacement aurait besoin de l'index de ligne, de la colonne, de l'index et de l'action.
Enfin, nous envisageons une récompense.
Nos anciennes valeurs Q seraient des valeurs Q avec l'ancien index de ligne, l'ancien index de colonne, et encore une fois, faisant
référence à notre index d'action et au calcul de notre différence temporelle, qui est notre récompense, plus le facteur
de remise multiplié par les valeurs Q avec la ligne index et index de colonne moins l'ancienne valeur Q de la valeur Q
précédente.
Presque terminé là où nous avons besoin de notre nouvelle valeur Q, qui est notre ancienne valeur de repère, plus le
taux d'apprentissage, les temps, la différence temporelle et nos valeurs de repère avec l'ancien index de ligne dans notre ancien index de colonne égal à la nouvelle
valeur de repère.
Si vous voulez en discuter davantage, encore une fois, je vous recommande vivement le Q&A.
N'hésitez pas à imprimer.
Essayez d'expérimenter avec toutes les variables utilisées ici.
Si vous voulez voir leur forme, voir comment ils peuvent être utilisés, à quoi il fait référence, je le recommande vivement
et je serai plus qu'heureux d'en discuter davantage.
Une dernière chose que nous pouvons faire, nous avons donc une petite notification.
Ajoutons une déclaration d'impression afin que nous sachions quand la formation est terminée pour nos mille lignes.
Très bien.
S'il n'y a pas d'erreurs de syntaxe de ma part, nous devrions être prêts à partir.
Le carnet de colonnes est initialisé.
J'ai tout relancé, alors laissez-moi lancer ça.
Cela devrait être très rapide puisque nous n'utilisons que numpy.
C'est un modèle très optimisé dans un sens.
Laissez-moi cliquer dessus et nous chercherons ensuite le chemin le plus court.
Très bien.
Nous avons terminé notre formation.
Imprimons également le chemin le plus court pour certaines options de démarrage.
Nous commençons donc une ligne trois, colonne neuf avec l'option de chemin le plus court avec notre chemin le plus court.
Nous voulons examiner les rangées cinq et zéro et commencer par la rangée neuf et la colonne numéro cinq.
Imprimons-les.
Génial.
Nous avons le chemin le plus court, mais nous n'avons pas fini.
Nous y sommes presque.
Nous pouvons voir notre facteur obtenir automatiquement le chemin le plus court entre un lieu légal que nous pouvons envisager de notre ville
à la zone d'emballage de l'article.
Mais qu'en serait-il de l'inverse du scénario opposé, en se référant essentiellement à, vous savez, notre facteur peut-il
livrer un article de n'importe où dans la ville à la zone d'emballage ?
Mais après l'article, il devrait alors aller de cette zone, de la zone d'emballage à un autre endroit de
la ville, car il devrait ramasser l'article suivant.
Alors, que pouvons-nous faire pour résoudre ce problème ?
Et c'est en fait assez simple.
Vous pourriez réviser l'ordre du chemin le plus court.
Essayez d'y penser une seconde et ce serait alors la solution.
Nous pouvons utiliser le chemin le plus court.
Prenons donc écrit cinq et la colonne deux, puis tout ce que vous auriez à faire est d'utiliser l'option inverse
avec Python.
Nous utilisons path dot reverse et nous pourrions imprimer le chemin.
Nous envisageons donc cinq et deux.
Et voilà.
Nous avons le chemin le plus court.
Et c'est vraiment utile si vous voulez saisir l'image dans la cellule et la faire descendre pour comparer et regarder
ces chemins.
Mais vous pouvez réellement voir le chemin si vous prenez le relevé imprimé, regardez la colonne de
la commande et voyez comment le vendeur se déplace.
Tellement génial le travail que vous utilisez.
Q Apprentissage.
Ce que nous avons appris de ce cours a un petit bonus et un scénario amusant dans la section pour résoudre
ce genre de problème essentiellement de voyageur de commerce.
Nous regardons le facteur pour livrer des colis et des articles dans la ville pour trouver les options les plus courtes et les chemins
les plus courts.
Je vous recommande fortement de personnaliser, de tester d'autres options, de modifier les hyper paramètres, et si vous
découvrez quelque chose de mieux, si vous découvrez des paramètres optimisés ou meilleurs à utiliser, n'hésitez pas à les partager
dans le Q&A.
Étonnante.
J'espère que vous avez vraiment apprécié cela.
Veuillez personnaliser, expérimenter et continuer à apprendre.
C'est tellement amusant de travailler avec vous.
Apprendre et apprécier I.