WEBVTT

00:00.450 --> 00:05.700
Bonjour et bienvenue sur le Statoil et pour parler, nous avons initialisé la carte.

00:05.850 --> 00:12.090
Et maintenant, passons aux choses excitantes que nous créons la voiture et nous le faisons avec un cours, bien sûr.

00:12.090 --> 00:18.660
Vous verrez que la classe est très pratique pour créer des choses qui ont beaucoup de propriétés, car vous pouvez

00:18.660 --> 00:25.300
voir non seulement trouver des variables dans ma voiture, mais aussi des fonctions qui, bien sûr, sont celles qui feront que

00:25.300 --> 00:30.270
la voiture passe à la position suivante. de gauche à droite ou aller tout droit.

00:30.720 --> 00:35.970
Nous avons donc deux variables importantes pour décrire l’environnement. Par exemple, l’angle

00:35.970 --> 00:42.590
qui correspond à l’angle entre l’axe des x et l’axe de la direction de la voiture.

00:42.630 --> 00:50.040
Nous avons ensuite la rotation qui correspond à sa dernière rotation, soit 0 degré 20 degrés ou

00:50.040 --> 00:51.550
moins 20 degrés.

00:51.570 --> 00:57.690
Nous avons ensuite la vitesse, la coordonnée x du vecteur vitesse et les coordonnées y du vecteur

00:57.690 --> 00:58.320
vitesse.

00:58.470 --> 01:05.740
Et puis le vecteur de coordonnées vitesse x et vitesse Y puis nous avons les capteurs et les signaux.

01:05.830 --> 01:12.280
Et c’est très important car notre appel aura trois capteurs: un capteur, deux capteurs et

01:12.310 --> 01:18.240
trois capteurs, un capteur détectera s’il ya un sens devant la voiture.

01:18.420 --> 01:25.070
Ensuite, le capteur 2 est le capteur qui détectera s'il y a un sens à gauche de la voiture et les capteurs 3

01:25.080 --> 01:29.640
est le capteur qui détectera s'il y a un sens à droite de la voiture.

01:29.950 --> 01:37.080
Et puis à partir de ces trois capteurs, nous obtenons les signaux que les signaux reçus par chacun des capteurs.

01:37.290 --> 01:43.320
Donc, le signal 1 est le signal reçu par le capteur 1, le signal to est le signal reçu par le capteur 2

01:43.330 --> 01:46.370
et le signal 3 est celui reçu par les capteurs 3

01:46.380 --> 01:47.700
Et alors comment ça marche.

01:47.770 --> 01:54.310
Le signal 1 est la densité d'envoi autour du capteur. Un signal est la densité du centre autour du capteur. Le

01:54.820 --> 02:00.560
signal 3 est la densité d'envoi autour de la sensibilité et comment calculer cette densité de sable.

02:00.670 --> 02:01.690
Eh bien c'est très simple.

02:01.700 --> 02:06.110
Nous prenons de grands carrés autour de chacun des capteurs.

02:06.130 --> 02:12.490
Ce sont en réalité des carrés de 200 sur 200 et pour chacun des carrés, nous divisons le nombre de uns dans le

02:12.490 --> 02:17.840
carré par le nombre total de cellules dans le carré qui est 22 et 20 est égal à 400.

02:18.070 --> 02:22.530
Et cela nous donne la densité de sable car celles-ci correspondent au centre.

02:22.630 --> 02:27.790
Nous faisons cela pour chaque capteur et cela nous donne la densité de sable autour de chaque capteur.

02:27.790 --> 02:29.550
Ce sont les signaux.

02:29.650 --> 02:35.450
Très bien, nous avons maintenant tout pour détecter le capteur, puis nous avons la fonction de déplacement.

02:35.450 --> 02:40.660
Et bien sûr, la fonction de déplacement est ce qui permettra au noyau d'aller à gauche en allant tout droit

02:40.660 --> 02:41.530
ou à droite.

02:41.920 --> 02:43.360
Alors passons en revue rapidement.

02:43.360 --> 02:50.410
Nous avons ici la mise à jour de la position de la voiture avec sa dernière position qui est ici le passe

02:50.740 --> 02:52.400
et le vecteur vitesse.

02:52.540 --> 02:58.720
Donc, grâce au vecteur vitesse, la position sera mise à jour dans la direction du vecteur vitesse.

02:58.930 --> 03:05.320
Ensuite, nous obtenons la rotation que nous verrons plus loin dans le code ici.

03:05.320 --> 03:08.040
La rotation est égale à l'action à la rotation.

03:08.040 --> 03:11.400
Il sélectionnera l'action puis se lancera dans la rotation.

03:11.410 --> 03:15.580
Et donc cette autoprotection équivaut à une rotation ici.

03:15.610 --> 03:21.130
C'est cette rotation que nous apprenons à savoir comment nous devons faire pivoter la voiture qui tourne à

03:21.130 --> 03:22.360
gauche ou à droite.

03:22.420 --> 03:28.510
Ensuite, nous mettons à jour l'angle que je rappelle est l'angle entre l'axe des x et l'axe de la direction

03:28.510 --> 03:29.560
de la voiture.

03:29.620 --> 03:35.350
Et puis, une fois que la voiture a bougé, nous devons mettre à jour les capteurs et le signal

03:35.350 --> 03:41.380
car, bien sûr, lorsque la voiture vient de pivoter alors que les capteurs ont également pivoté, nous devons donc les

03:41.380 --> 03:45.500
faire pivoter à l'aide de la fonction de rotation. la nouvelle position.

03:45.790 --> 03:48.950
Et pourquoi avons-nous ce vecteur de 30 0.

03:49.090 --> 03:54.070
C'est simplement parce que 30 est la distance entre la voiture et le capteur.

03:54.130 --> 03:59.080
Vous savez est la distance entre la voiture et ce que la voiture détecte.

03:59.230 --> 04:04.210
Et puis, une fois les capteurs mis à jour, il est temps de mettre à jour les signaux.

04:04.270 --> 04:07.110
Et donc ici, nous faisons exactement ce que je vous ai expliqué.

04:07.240 --> 04:13.780
Nous donnons les coordonnées x de notre capteur puis nous prenons toutes les cellules de Manston à plus 10, puis nous procédons

04:13.780 --> 04:19.070
de même pour la coordonnée y, en prenant toutes les cellules de Madison à plus 10.

04:19.090 --> 04:27.040
Ainsi, nous obtenons donc le carré de 20 x 20 pixels entourant le capteur et à l’intérieur du carré,

04:27.130 --> 04:28.280
certains anciens.

04:28.300 --> 04:35.170
Donc, fondamentalement, avec certaines des cellules parce que les cellules contiennent 0 ou 1 et comme dans un carré de 20 sur 20,

04:35.170 --> 04:38.060
il y a 20 fois 20 = 400 cellules.

04:38.200 --> 04:45.520
Eh bien, nous le divisons par 400 pour obtenir la densité des unités à l'intérieur du carré et c'est ainsi que nous obtenons le signal de

04:45.730 --> 04:52.090
la densité des centres autour du capteur et nous procédons de la même manière pour le deuxième capteur et le troisième capteur pour

04:52.360 --> 04:54.870
obtenir le deuxième signal et le troisième signal.

04:55.060 --> 04:55.340
D'ACCORD.

04:55.360 --> 05:00.220
Donc, c'est pour prendre le capteur et ensuite ces trois lignes de code sont très importantes.

05:00.220 --> 05:05.710
C’est une autre raison pour laquelle nous souhaitons nous rendre à notre voiture lorsqu'elle atteint l’un des bords de

05:05.710 --> 05:06.290
la carte.

05:06.290 --> 05:11.830
Vous savez que nous ne voulons pas que la voiture se précipite contre certains murs et nous voulons donc la pénaliser

05:11.830 --> 05:16.380
pour la punir lorsqu'elle se rapproche trop de Wall et c'est donc ce que nous faisons ici.

05:16.630 --> 05:24.970
Si le premier capteur est plus grand que plus long moins 10, il est plus grand qu'ici parce que plus long est cette distance ici,

05:24.970 --> 05:27.580
donc plus long moins 10 est ici.

05:27.580 --> 05:33.550
Donc, si le capteur 1 agit plus que plus longtemps, Manison concerne tous les points qui sont ici.

05:33.550 --> 05:40.930
C'est-à-dire si la voiture se rapproche du bord droit de la carte ou si le capteur de cellule agit moins que 10,

05:40.950 --> 05:48.250
c'est ici si la voiture se rapproche du bord gauche de la carte ou si le capteur Y est plus grand

05:48.250 --> 05:55.870
que plus grand moins 10 c'est le bord supérieur de la carte et / ou si Y est autocensuré inférieur à 10,

05:55.870 --> 05:58.670
c'est le bord inférieur de la carte.

05:58.720 --> 06:06.370
Et donc, si le capteur 1 atteint l'une de ces quatre arêtes, nous allons mettre le signal du capteur

06:06.490 --> 06:08.760
lorsque le signal est envoyé.

06:08.800 --> 06:10.290
Nous allons le définir pour être un.

06:10.540 --> 06:11.610
Et qu'est ce que ca veut dire.

06:11.650 --> 06:15.390
Cela signifie un son plein comme la pleine densité de sable.

06:15.580 --> 06:17.270
C'est comme le pire et vous pourriez avoir.

06:17.330 --> 06:19.540
Il y a tellement de sens que ça va arrêter votre voiture.

06:19.660 --> 06:24.480
Donc, le signal sera un et donc la voiture recevra une terrible récompense.

06:24.490 --> 06:24.830
D'accord.

06:24.820 --> 06:30.190
Et puis nous faisons la même chose pour le signal aussi et signalons trois à partir du capteur deux instances trois.

06:30.410 --> 06:30.790
D'accord.

06:30.800 --> 06:36.470
Ensuite, nous créons la classe de jeu. C’est donc la classe qui crée le jeu, car jusqu’à présent, nous

06:36.470 --> 06:40.720
n’avons créé que la voiture et nous devons bien sûr créer la carte.

06:40.820 --> 06:42.310
Nous devons créer le jeu lui-même.

06:42.410 --> 06:47.750
Donc, nous ne jouerons pas le jeu, c’est notre IA qui jouera le jeu et le jeu consiste

06:47.750 --> 06:52.240
en fait à éviter les obstacles et à aller de l’aéroport au centre-ville et vice-versa.

06:52.520 --> 06:59.610
Donc, dans cette classe de jeu, nous devons créer des objets comme la voiture, puis définir la fonction de mise

06:59.630 --> 07:00.540
à jour.

07:00.590 --> 07:05.330
C’est le plus important et nous allons nous concentrer sur cela maintenant car c’est

07:05.330 --> 07:12.250
dans cette fonction de mise à jour que l’action que la voiture doit effectuer est sélectionnée et que chaque but est atteint.

07:12.350 --> 07:16.880
Et cette action est exactement la sortie de notre réseau de neurones.

07:16.880 --> 07:20.860
La nouvelle volonté de ce travail sera au cœur de notre intelligence artificielle.

07:20.930 --> 07:27.550
Et ainsi, cette action est renvoyée par le cerveau de la voiture qui reste l’objet de notre classe humaine qui

07:27.560 --> 07:29.780
se formera dans notre fichier d’IA.

07:29.930 --> 07:36.500
Et cet objet a une méthode qui s'appelle update et qui prend en entrée le dernier mot et le

07:36.500 --> 07:37.590
dernier signal.

07:37.610 --> 07:43.250
Ainsi, le dernier mot est bien sûr le dernier mot atteint

07:43.250 --> 07:50.480
par la voiture et le dernier signal est bien sûr le dernier signal des trois

07:50.480 --> 07:51.240
capteurs.

07:51.440 --> 07:56.870
Mais ensuite, j'ajoute deux autres entrées, à savoir l'orientation de la voiture par rapport à l'objectif.

07:56.900 --> 08:01.540
Ainsi, par exemple, si la voiture se dirige vers l'objectif, l'orientation sera égale à zéro.

08:01.730 --> 08:06.730
Si elle va légèrement à droite, l'orientation sera proche de 45 degrés.

08:06.920 --> 08:11.820
Et si elle va légèrement à gauche, l’orientation sera proche de moins 45 degrés.

08:11.900 --> 08:15.380
Voilà donc la force d'entrée de nos états d'entrée.

08:15.410 --> 08:18.950
Et puis il y a une leçon posée qui est moins d'orientation.

08:19.010 --> 08:25.250
Donc, généralement, les entrées du réseau neuronal sont indépendantes. Il n'y a pas de multicolinéarité, mais peu importe si c'est

08:25.250 --> 08:29.360
le cas, c'est que le réseau neuronal corrigera cela avec les poids.

08:29.480 --> 08:35.450
Mais je remarque quand même que l’ajout de cette orientation moins permet à la voiture

08:35.450 --> 08:37.840
d’entraîner la voiture pour stabiliser l’accélération.

08:37.940 --> 08:43.460
Vous savez que ce que nous faisons, c'est que l'IA n'explore pas toujours dans la même direction en ajoutant

08:43.460 --> 08:44.390
cette orientation moins.

08:44.390 --> 08:48.680
Nous nous assurons qu'il explore dans les deux sens à droite ou à gauche.

08:48.920 --> 08:55.780
Et ainsi ce sont les trois signaux plus l’orientation et l’orientation moins sont les

08:55.810 --> 09:03.020
cinq entrées de notre vecteur codé qui ira dans le réseau et notre vecteur d’entrée qui

09:03.050 --> 09:09.560
ira dans le réseau et ensuite, dans le réseau est l'action à jouer.

09:09.650 --> 09:15.290
Et chaque fois et la sortie est renvoyée par cette fonction de mise à jour qui contient

09:15.290 --> 09:20.450
le réseau lui-même et la sortie du réseau. C’est pourquoi nous devons entrer le dernier

09:20.450 --> 09:26.110
signal qui est l’état d’entrée et le dernier mot car l’action à jouer aussi dépend du dernier mot.

09:26.950 --> 09:33.700
D'accord, puis nous mettons à jour la partition principale des mots que nous mettons à jour la rotation. Nous utilisons la fonction

09:33.700 --> 09:37.500
de déplacement pour faire pivoter la voiture en fonction de l'action sélectionnée.

09:37.510 --> 09:44.230
Nous prenons la distance de la voiture à la route et nous obtiendrons les positions des capteurs une balle sur deux dans

09:44.230 --> 09:48.490
les deux réponses Rieker aux billes qui représenteront les capteurs sur la carte.

09:48.530 --> 09:49.880
Vous verrez cela très rapidement.

09:50.550 --> 09:56.230
Et puis ici, cette partie est très importante car c’est là que nous pénalisons la voiture si

09:56.230 --> 10:04.060
cela prend un certain sens car, comme vous pouvez le constater, cela signifie que si la voiture a un bon sens, elle sera ralentie.

10:04.150 --> 10:06.550
Nous réduisons donc sa vitesse.

10:06.590 --> 10:10.020
Vous savez que sa vitesse est généralement de 6 comme vous pouvez le voir ici.

10:10.150 --> 10:14.410
Et si cela continue dans un sens, ce sera celui qui sera ralenti à 1.

10:14.430 --> 10:17.810
Vous verrez comment la voiture sera ralentie une fois que cela aura pris un sens.

10:18.030 --> 10:19.090
Donc, c'est lent.

10:19.210 --> 10:23.610
Et en plus, il reçoit une mauvaise récompense, il en obtient un moins que nous voulons.

10:23.920 --> 10:26.140
Et c'est en fait la pire récompense que vous puissiez obtenir.

10:26.140 --> 10:32.100
La meilleure récompense est une, le pire, selon nous, est moins une et la récompense est comprise entre moins 1 et plus 1.

10:32.530 --> 10:33.450
Et puis sinon.

10:33.570 --> 10:35.770
Et la voiture n'est pas sur du sable.

10:35.980 --> 10:41.000
Eh bien, il conserve sa vitesse habituelle de vitesse du sexe et nous ajoutons autre chose.

10:41.080 --> 10:45.710
S'il se rapproche de l'objectif, il obtiendra une récompense légèrement positive.

10:45.910 --> 10:53.410
Et si on s’éloigne de l’objectif, on obtient une récompense légèrement négative moins 0. 2

10:53.590 --> 10:54.830
Et puis dernier.

10:54.830 --> 10:57.280
Conditions qui sont liées à la récompense.

10:57.470 --> 11:02.840
Eh bien, c’est si la voiture se rapproche trop de l’un des bords, comme nous en avons parlé plus tôt.

11:02.910 --> 11:04.990
Rappelez-vous quand nous avons parlé de capteur de carburant.

11:05.220 --> 11:11.840
Eh bien, si la voiture s'approche trop du bord gauche de la carte, elle obtient moins un mot si elle s'approche trop

11:11.840 --> 11:15.440
du bord droit de la carte, elle est récompensée moins un.

11:15.710 --> 11:20.220
Et si vous vous approchez trop près du bord inférieur de la carte, vous en obtenez une ou moins une.

11:20.360 --> 11:25.230
Et si vous vous approchez trop en haut à gauche de la carte, vous obtenez des récompenses moins une.

11:25.230 --> 11:27.620
Donc, c'est une punition terrible.

11:27.620 --> 11:31.910
Et vous verrez à quel point il est plein et rapide de ne pas se précipiter pour autre chose.

11:31.940 --> 11:36.600
Très bien et ensuite, il s’agit de mettre à jour le départ lorsque l’objectif est atteint.

11:36.620 --> 11:41.390
Donc, vous savez quand la voiture atteint l'aéroport qui est le premier à aller est le coin supérieur gauche de

11:41.390 --> 11:41.920
la carte.

11:41.930 --> 11:45.990
Tandis que l’objectif change en bas à droite de la carte, qui est au centre-ville.

11:46.250 --> 11:51.080
Et c’est exactement ce que nous faisons ici: nous mettons à jour la coordonnée x du Crow et

11:51.140 --> 11:55.870
les coordonnées blanches de l’appel, puis nous actualisons la distance entre la voiture et la voiture.

11:55.880 --> 11:56.260
D'accord.

11:56.270 --> 11:58.320
Et puis c'est moins important.

11:58.340 --> 12:04.130
C'est juste une classe qui ajoutera les outils de peinture que vous connaissez pour que nous puissions peindre certaines routes ou certains obstacles sur

12:04.130 --> 12:10.790
la carte qui sont davantage liés à K. V. pouvez jeter un oeil si vous voulez, je

12:10.790 --> 12:16.370
vais vous fournir la version condensée de ce code et quelques références si vous voulez aller plus loin dans la façon de

12:16.370 --> 12:17.570
faire cela avec skivvy.

12:17.570 --> 12:22.730
Mais nous nous éloignons de l'intelligence artificielle, je ne vais donc pas entrer dans les détails.

12:22.910 --> 12:30.110
Et c'est la même chose pour la dernière section de code avec la classe car, qui correspond exactement aux boutons d'API qui permettent de

12:30.110 --> 12:31.320
sauvegarder et de charger.

12:31.520 --> 12:32.810
C'est ce que nous faisons ici.

12:32.820 --> 12:34.900
Toile transparente sécuritaire.

12:34.940 --> 12:40.220
Et c’est très important pour nous de pouvoir sauver la journée que je sais sauver le cerveau afin que

12:40.700 --> 12:46.520
vous puissiez le réutiliser plus tard en prenant la fonction de chargement qui est un autre outil que nous ajoutons sur la

12:46.520 --> 12:52.010
carte pour charger le cerveau de la voiture est de charger la mémoire de la voiture comment naviguer dans la carte.

12:52.250 --> 12:57.830
Et enfin, nous avons enfin la dernière de la dernière section de code qui gère tout

12:57.830 --> 13:00.660
ce qui concerne la carte et l'IA elle-même.

13:00.980 --> 13:03.340
Et en fait, c'est ce que nous allons faire maintenant.

13:03.590 --> 13:07.020
Regardons tout ce que nous avons fait dans ce code.

13:07.040 --> 13:10.520
Donc pour l'instant, l'IA n'est pas implémentée.

13:10.520 --> 13:13.910
Le code aura donc un mouvement très aléatoire.

13:13.940 --> 13:17.810
Cela ressemblera en réalité à un insecte, mais ne vous inquiétez pas, nous allons y remédier.

13:17.810 --> 13:24.860
Normalement, nous allons l’entraîner à se déplacer comme une vraie voiture et l’entraîner à naviguer en suivant certaines routes et

13:24.920 --> 13:26.380
en évitant certains obstacles.

13:26.660 --> 13:27.710
Faisons cela.

13:27.710 --> 13:32.240
Je vais tout sélectionner et exécuter.

13:32.510 --> 13:33.900
Et voici la carte.

13:33.950 --> 13:35.270
Et voici la voiture.

13:35.690 --> 13:36.070
D'accord.

13:36.080 --> 13:41.600
Voilà donc la petite chose que vous voyez ici qui ressemble à un insecte dans notre voiture.

13:41.630 --> 13:45.960
Comme je vous l'ai dit, les actions sont totalement aléatoires.

13:46.220 --> 13:53.890
Ainsi, chaque fois que la voiture sélectionne une action au hasard, elle doit aller directement à gauche ou à droite.

13:53.930 --> 13:59.260
C'est pourquoi il fait des mouvements insensés et ressemble à un insecte.

13:59.450 --> 14:01.460
Nous allons donc résoudre ce problème, bien sûr.

14:01.730 --> 14:09.500
Et bien sûr, puisque l'IA est activée, ce n'est pas l'objectif qui est l'aéroport ici ou le centre-ville

14:09.500 --> 14:12.930
en bas à droite de la carte.

14:13.760 --> 14:21.850
Et nous allons réparer tout cela en faisant les IA qui implémenteront l'IA dans cette voiture ou cet insecte afin que vous puissiez

14:21.860 --> 14:26.480
voir les trois balles ici, la jaune, la rouge et la blanche.

14:26.630 --> 14:28.190
Ce sont nos trois capteurs.

14:28.220 --> 14:30.020
Donc, c'est ce que nous allons détecter.

14:30.020 --> 14:32.580
Il y a un parfum autour.

14:32.810 --> 14:35.720
Et en parlant de parfum Eh bien, jetons-en.

14:35.720 --> 14:45.510
Donc, pour ce faire, il me suffit de faire un clic gauche ici et vous savez en quelque sorte en enseignant encore à gauche.

14:45.510 --> 14:50.240
Donc maintenant, j'ajoute du sable, nous pouvons en ajouter encore.

14:50.250 --> 14:57.360
Donc, chaque fois que vous êtes fou, comme vous pouvez le voir, en mettre un dans le tableau central pour envoyer

14:57.360 --> 15:00.100
un tableau contenant les coordonnées 00 de l'origine.

15:00.180 --> 15:01.990
Et ici, il y en a beaucoup.

15:02.080 --> 15:04.720
Et comme vous pouvez le voir, c’est bien de voir la voiture.

15:04.770 --> 15:07.240
Nous venons de descendre et nous avons ralenti.

15:07.620 --> 15:12.230
Donc, comme vous pouvez le constater maintenant, le rythme est très lent parce que cela va dans le sable.

15:12.510 --> 15:14.820
Et maintenant, il essaie de s'échapper.

15:16.310 --> 15:23.030
Et pour que vous sachiez ce que nous ferons, nous allons dessiner des routes et des routes de l’aéroport

15:23.030 --> 15:28.490
au centre-ville et former la voiture pour rester sur la route et éviter les obstacles.

15:28.490 --> 15:28.830
D'accord.

15:28.850 --> 15:35.690
Et comme vous pouvez le voir, il y a un bouton pour effacer le sable, il y a un bouton de sauvegarde pour sauver

15:35.690 --> 15:37.230
le cerveau de la voiture.

15:37.310 --> 15:43.640
Et en fait, nous avons parlé de cette courbe fondamentale qui évite à votre modèle de préserver le

15:43.640 --> 15:50.270
cerveau de votre voiture. Vous pouvez alors savoir quand vous laissez votre rhume ou éteindre votre ordinateur et que

15:50.270 --> 15:51.680
vous souhaitez y revenir.

15:51.920 --> 15:59.290
Vous pouvez utiliser le bouton de chargement pour charger votre mode qui consiste à charger le cerveau et à obtenir

15:59.360 --> 16:01.760
les trains AI de votre voiture.

16:01.820 --> 16:06.030
D'accord, je suis maintenant impatient de commencer à fabriquer l'IA.

16:06.080 --> 16:07.450
Ce sera très amusant.

16:07.490 --> 16:13.910
Nous allons créer notre réseau de neurones et punir la voiture dès qu’elle ne fera pas ce que nous voulons.

16:14.120 --> 16:16.290
Faisons cela à partir du prochain tutoriel.

16:16.400 --> 16:18.140
Et jusque-là, profitez-en.
