WEBVTT

00:00.360 --> 00:06.030
Bonjour et bienvenue dans la première partie de cette première partie de la mise en œuvre de l’IA, qui consiste à construire l’IA.

00:06.120 --> 00:12.570
Et comme vous pouvez le voir, j’ai déjà ajouté une dimension à la structure de cette empreinte avec ces trois sections composant

00:12.660 --> 00:16.620
la partie 1, qui montrent clairement comment nous allons construire cette IA.

00:16.620 --> 00:18.750
Nous allons d'abord faire le cerveau.

00:18.840 --> 00:23.760
Il n'y a rien d'autre que le réseau de neurones alors nous allons faire le corps qui va définir

00:23.760 --> 00:25.400
comment les actions vont être jouées.

00:25.590 --> 00:31.620
Et ensuite, une fois que nous aurons le cerveau et le corps, nous les assemblerons pour créer l'IA qui sera dans

00:31.620 --> 00:33.840
la dernière partie de cette première partie.

00:33.840 --> 00:37.890
Alors maintenant, vous pouvez déjà avoir une bonne vision de la structure de cette implémentation.

00:37.890 --> 00:42.760
Nous fabriquons d'abord le cerveau, puis le corps, puis nous assemblons les deux pour créer l'IA.

00:43.050 --> 00:48.520
Et puis c’est tout ce que nous allons commencer par la première section qui concerne la fabrication du cerveau.

00:48.810 --> 00:51.330
Et cela va nous prendre pour des tutoriels.

00:51.360 --> 00:54.810
Vous pouvez imaginer que faire un cerveau n'est pas comme faire un gâteau.

00:54.900 --> 00:57.100
Donc, cela nécessitera plus d'un tutoriel.

00:57.270 --> 01:03.690
Et bien sûr, comme d'habitude, nous allons représenter ce cerveau avec une classe, car nous aurons

01:03.690 --> 01:10.200
besoin de plusieurs fonctions et afin d'avoir une structure de plusieurs fonctions qui sera organisée en quelque

01:10.200 --> 01:11.160
sorte d'instructions.

01:11.310 --> 01:16.010
Bien sûr, nous avons besoin d’un cours, c’est Berkeley, car jadis, nous avons créé ce cours.

01:16.080 --> 01:22.080
Nous pourrons créer autant de cerveaux que nous le voulons en créant simplement des objets de cette classe.

01:22.080 --> 01:28.050
Encore une fois, les classes en Python et, en général, les langages de programmation orientés objet sont très

01:28.200 --> 01:33.510
pratiques car vous faites un modèle de quelque chose que vous voulez construire, puis vous êtes capable

01:33.510 --> 01:37.820
de créer autant d’objets que vous voulez et définir dans la classe.

01:38.010 --> 01:40.470
Et pour notre cerveau, les caractéristiques seront bien sûr.

01:40.500 --> 01:45.930
Tout d’abord, l’architecture du réseau de neurones que je rappellerai sera celle de CNN et bien entendu de

01:45.930 --> 01:51.780
deux fonctions différentes, telles que, par exemple, la transmission des signaux des neurones d’entrée aux neurones de sortie qui

01:51.780 --> 01:55.520
seront bien entendu la fonction de Ford qui en sera chargée.

01:55.920 --> 01:58.940
Alors faisons ceci, commençons à fabriquer le cerveau.

01:58.950 --> 02:00.600
Cela va être très excitant.

02:00.650 --> 02:02.380
C'est l'une de mes parties préférées.

02:02.520 --> 02:04.860
Et donc allons droit au but.

02:04.890 --> 02:10.880
Nous allons donc commencer par présenter la classe de cours et appeler cette classe.

02:10.950 --> 02:18.570
Eh bien, j’ai hésité à appeler cela cerveau mais soyons plus directs et appelons CNN car en réalité le cerveau

02:18.570 --> 02:20.570
est un réseau CNN.

02:20.580 --> 02:22.510
Réseau neuronal convolutionnel.

02:22.530 --> 02:27.440
Donc, pendant que vous regardez, vous pouvez appeler le cerveau si vous voulez, mais au moins, maintenant, nous savons ce que nous construisons.

02:28.710 --> 02:35.040
Et CNN Quant au réseau de la voiture autonome, il va hériter de la fin de Mudgal.

02:35.220 --> 02:42.870
Donc, rappelez-vous que la fin du module correspond à ce que nous avons mis ici et que nous voulons pouvoir utiliser

02:42.870 --> 02:49.050
tous les outils de ceci et un module. Nous voulons donc utiliser cette technique dans la programmation

02:49.050 --> 02:55.870
orientée objet qui est un héritage et qui nous permet de vous bien utiliser tous les outils d'une

02:55.900 --> 02:59.970
classe parente et cette classe même sera sur ce module.

02:59.970 --> 03:00.830
Nous y voilà.

03:00.930 --> 03:05.510
Et maintenant, nous pouvons utiliser tous les outils et objets à la fin de ce module.

03:05.510 --> 03:12.100
Très bien, maintenant que nous avons notre héritage, nous pouvons entrer dans la classe pour faire notre première fonction.

03:12.150 --> 03:18.360
Et comme vous le savez probablement, la première fonction est la fonction finale qui définira toutes les variables

03:18.720 --> 03:20.330
des futurs objets cérébraux.

03:20.370 --> 03:23.440
Vous connaissez l'avenir et les objets qui seront créés.

03:23.700 --> 03:24.890
Très bien alors faisons ceci.

03:24.900 --> 03:29.800
Def alors deux soulignés dans les scores à nouveau.

03:29.910 --> 03:31.910
Et maintenant, nous devons mettre quelques variables.

03:32.100 --> 03:37.460
Donc tout d’abord, je voulais être moi-même, bien sûr, faire référence à l’objet.

03:37.490 --> 03:42.380
Maintenant, je suppose que vous êtes assez à l'aise avec cela, alors nous allons ajouter une autre

03:42.380 --> 03:45.310
variable qui sera le nombre d'actions dans l'environnement de Dumah.

03:45.500 --> 03:48.900
Nous allons donc appeler ce numéro actions.

03:49.010 --> 03:50.380
Nombre d'actions.

03:50.570 --> 03:54.390
Et en réalité, cette variable n’est pas obligatoire pour la fonction.

03:54.500 --> 03:59.360
C'est juste que si vous voulez tester l'idée, nous allons construire sur d'autres environnements.

03:59.540 --> 04:06.100
Eh bien, ce sera très pratique car nous allons importer ce nombre d’actes horribles de Doom et

04:06.120 --> 04:12.290
de wrappers Varman avec deux discrets et, ce faisant, vous saurez que le nom de

04:12.510 --> 04:13.980
l’environnement saisit zéro.

04:14.180 --> 04:21.050
Et donc, si vous voulez savoir comment expérimenter cela sur d'autres environnements et bien jouer à d'autres jeux, vous

04:21.050 --> 04:26.300
n'aurez rien à faire car ce nombre d'actions obtiendra directement le nombre d'actions dans

04:26.300 --> 04:27.470
l'environnement Dumor.

04:27.470 --> 04:28.650
Tu vas jouer avec.

04:29.110 --> 04:32.710
OK, voilà pour les deux arguments de cette fonction.

04:32.780 --> 04:36.500
Alors maintenant, nous pouvons aller à l'intérieur et maintenant nous rappeler ce que nous devons faire.

04:36.530 --> 04:41.560
La première chose à faire est d'activer l'héritage avec le super-fonctionnement.

04:41.570 --> 04:43.840
Donc, c'est exactement comme pour la voiture autonome.

04:43.970 --> 04:50.940
Nous prenons la superfonction puis à l'intérieur, nous commençons par entrer la classe qui définira le

04:51.470 --> 04:53.330
réseau de neurones: CNN

04:53.690 --> 04:56.950
Ensuite, nous devons entrer self pour faire référence à l'objet.

04:57.190 --> 05:05.230
Mais souvenez-vous que ce n’est pas tout ce que nous devons ajouter ici à DOT, puis la fonction init avec des parenthèses.

05:05.270 --> 05:07.880
Et en faisant cela, nous activons l'héritage.

05:07.950 --> 05:11.470
Et maintenant, nous pouvons utiliser tous les outils de la fin et du module.

05:11.510 --> 05:17.070
Bon maintenant, je pense qu'il est temps de construire l'architecture du réseau de neurones.

05:17.270 --> 05:23.330
Et donc, comme vous vous en souvenez, nous allons construire un réseau de neurones convolutionnels de CNN simplement

05:23.330 --> 05:30.290
parce que cette fois, l'IA aura des yeux et les yeux de l'œil seront les couches convolutionnelles de ce réseau neuronal

05:30.290 --> 05:31.220
de convolution.

05:31.520 --> 05:38.240
Et ensuite, après que ai ai visualisé les images avec les couches convolutives, il transmettra les signaux à

05:38.330 --> 05:41.040
un réseau classique de neurones visuels.

05:41.180 --> 05:44.510
C'est donc celui que nous avions auparavant avec des couches entièrement connectées.

05:44.660 --> 05:50.730
Et c’est là qu’il essaiera de prédire les valeurs du cube pour chaque action possible que nous pouvons jouer.

05:51.290 --> 05:56.930
Vous avez donc l’architecture en tête. Nous aurons d’abord des couches convolutives, puis des

05:56.930 --> 06:01.270
couches entièrement connectées, qui constitueront le cerveau de notre IA.

06:01.550 --> 06:07.530
Donc, ce que nous allons faire pour pouvoir faire un pas en arrière par rapport à ce que nous faisons.

06:07.670 --> 06:11.840
Eh bien, faisons simplement cette architecture avec les variables que nous voulons créer.

06:11.840 --> 06:18.890
Donc, en parlant de cette architecture, nous allons construire un CNN avec trois couches convolutives.

06:18.920 --> 06:24.530
Et puis après cette couche cachée, cela signifie que nous aurons besoin de trois connexions convolutives et

06:24.530 --> 06:26.020
de deux connexions complètes.

06:26.180 --> 06:31.340
Et en parlant de connexions, c’est exactement ce que nous sommes sur le point de définir. Ce sont les

06:31.370 --> 06:35.030
variables de la classe CNN. Par conséquent, je vais maintenant définir cinq variables.

06:35.150 --> 06:39.100
Trois pour les connexions convolutionnelles et deux connexions politiques.

06:39.350 --> 06:40.100
Alors faisons ceci.

06:40.100 --> 06:42.570
Nous allons commencer par les connexions de convolution.

06:42.770 --> 06:47.250
Je vais donc les appeler convolution autodidacte.

06:47.540 --> 06:53.620
On va copier cela et basé sur le bas.

06:54.020 --> 07:01.640
Et puis nous passons à la conviction de soi et à la conviction de soi trois qui

07:01.640 --> 07:08.450
sont des connexions de convolution à cette première conclusion. Nous allons appliquer une certaine convolution

07:08.460 --> 07:15.860
aux images d'entrée pour obtenir une première couche de convolution. couche en entrée et en appliquant

07:15.860 --> 07:21.180
à nouveau une convolution, une seconde convolution est créée et cette convolution

07:21.180 --> 07:25.920
obtient de nouvelles images, chacune détectant une caractéristique spécifique.

07:26.030 --> 07:32.840
Nous allons donc obtenir ces nouvelles images dans une convolution puis appliquer cette convolution à ici pour

07:32.870 --> 07:39.740
connecter ces nouvelles images de cette première couche de convolution à de nouvelles images d'une seconde couche de

07:39.740 --> 07:40.300
convolution.

07:40.430 --> 07:46.120
Et ces nouvelles images détecteront à nouveau certaines caractéristiques des images de la première convolution.

07:46.220 --> 07:52.100
Il s’agit donc simplement de renforcer la détection future, puis l’émergence de la deuxième

07:52.100 --> 07:52.650
convolution.

07:52.790 --> 07:57.000
Nous avons appliqué la troisième convolution ici pour l'obtenir pour chacun d'eux.

07:57.050 --> 08:01.900
Quelques images supplémentaires qui détectent encore plus de fonctionnalités dans les images d'entrée.

08:02.050 --> 08:07.300
Et donc plus nous le faisons, plus nous appliquons des convolutions aux différentes couches d’images.

08:07.520 --> 08:13.580
Plus nous sommes en mesure de détecter certaines caractéristiques, et c’est comme cela que l’œil comprendra où se trouvent les

08:13.580 --> 08:18.360
monstres sur lesquels il doit tirer pour les tuer et où il devrait aller.

08:18.500 --> 08:21.290
Il détectera également les murs des obstacles.

08:21.440 --> 08:28.100
Eh bien, littéralement, il faut y aller et c'est grâce à ce que toutes ces couches convolutives détectent

08:28.130 --> 08:29.680
dans les images d'origine.

08:30.450 --> 08:34.980
D'accord, c'est donc pour la partie convolution de CNN.

08:35.100 --> 08:42.720
Mais rappelez-vous qu'après les couches convolutives, nous devons aplatir tous les pixels obtenus par les différentes séries de

08:42.720 --> 08:48.660
convolutions appliquées et en aplatissant tous les tableaux de pixels, nous obtenons cet énorme

08:48.810 --> 08:53.260
vecteur qui deviendra l'entrée d'un réseau de neurones artificiels classique.

08:53.490 --> 08:58.600
Et c'est là que nous obtenons nos lettres parfaitement connectées et donc nos connexions.

08:58.710 --> 09:04.560
Et maintenant, nous devons créer deux nouvelles variables, car nous allons en avoir une ici et là dans

09:04.810 --> 09:09.330
ce réseau de neurones artificiels classique et nous avons donc besoin d’une

09:09.330 --> 09:16.260
connexion complète de cet énorme vecteur Flaten à celui-ci ici et là et une deuxième connexion complète entre celle-ci ici et

09:16.260 --> 09:21.620
là et la couche de sortie composée des neurones de sortie qui sont les valeurs clés.

09:21.960 --> 09:27.090
Faisons donc ces deux premières connexions et ensuite nous définirons toutes ces connexions.

09:27.240 --> 09:36.200
Alors demandez la bande son dans le code que nous allons appeler eux-mêmes celui-là puis C autodidacte aussi.

09:36.240 --> 09:41.010
Bon maintenant nous avons tous nos objets de valeur et savoir ce que nous devons faire est

09:41.250 --> 09:44.300
bien entendu défini ensuite avec les classes du module moteur.

09:44.310 --> 09:49.110
Cela signifie donc que nous allons créer l’architecture du réseau de neurones et c’est ce que

09:49.190 --> 09:50.340
nous ferons demain.

09:50.490 --> 09:51.920
Jusque là je
