WEBVTT

00:00.300 --> 00:05.940
Hallo en weer welkom bij onze zelfrijdende auto-module, dus in deze tutorial ga ik de omgeving uitleggen

00:05.970 --> 00:11.730
waarin we onze kunstmatige intelligentie zullen implementeren en dat zal natuurlijk doorgaan met de auto die we zullen

00:11.730 --> 00:17.910
trainen om zelf te rijden en om obstakels te vermijden en waarop we enkele wegen en enkele blokken zullen

00:17.910 --> 00:20.630
tekenen zodat onze auto eromheen kan navigeren.

00:21.060 --> 00:28.090
Dus we zullen later deze kunstmatige intelligentie bouwen om deze auto te trainen, om op de weg te rijden, weet je, zonder

00:28.110 --> 00:33.430
de limiet te overschrijden en enkele obstakels te vermijden die we op de weg zullen plaatsen.

00:34.020 --> 00:35.760
Dit is dus een behoorlijk spannende uitdaging.

00:35.760 --> 00:37.920
En eigenlijk zijn er twee aparte bestanden.

00:37.920 --> 00:44.490
Zoals je kunt zien, is er de APACS en voelde dat onze kunstmatige intelligentie die alle training zal doen om de auto te

00:44.730 --> 00:46.800
trainen, hoe te verkopen, te rijden.

00:47.100 --> 00:49.050
En we hebben de kaart die mooi gevonden heeft.

00:49.050 --> 00:51.620
Dat is de code die deze hele omgeving maakt.

00:51.990 --> 00:53.130
Dus hier is die code.

00:53.130 --> 00:56.660
Dat zijn eigenlijk tweehonderd regels code, iets meer.

00:56.970 --> 01:02.580
Dus deze code is niet typisch gerelateerd aan A. L. Het is slechts een code om de omgeving te maken om de kaart

01:02.580 --> 01:02.960
te maken.

01:03.300 --> 01:06.960
Dus ik ga elk van de secties één voor één doornemen om het uit te leggen.

01:07.080 --> 01:12.510
Maar we gaan deze code niet regel voor regel implementeren omdat we ons willen focussen op

01:12.510 --> 01:13.230
kunstmatige intelligentie.

01:13.650 --> 01:16.810
Maar laten we de secties nog steeds één voor één doornemen om te begrijpen wat er gebeurt.

01:17.220 --> 01:20.460
Dus eerst importeren we de essentiële bibliotheken.

01:20.460 --> 01:21.810
Dat is voor elke code.

01:21.930 --> 01:25.560
We hebben enkele bibliotheken nodig om sommige taken efficiënter uit te voeren.

01:26.370 --> 01:28.530
Dan importeren we alle cavey-pakketten.

01:28.710 --> 01:32.850
Dat is dus niet zo belangrijk, want dit is allemaal specifiek voor Caveh.

01:33.150 --> 01:38.790
We gebruiken Cavey om de kaart te maken en daarom importeren we veel klassen en objecten om deze kaart te kunnen maken

01:38.790 --> 01:41.340
en wat tools aan de kaart toe te voegen.

01:42.030 --> 01:44.120
Oké, dan is deze regel belangrijk.

01:44.280 --> 01:52.290
Deze regel is verwant omdat dit in feite is waar we ons brein importeren, het brein van de auto, dat

01:52.560 --> 01:55.980
een object zal zijn van deze ontstemde klasse.

01:56.280 --> 02:00.120
En de DeQuan-klasse is onze kunstmatige intelligentie zelf.

02:00.420 --> 02:04.200
U zult zien dat we de GQ in de klas zullen implementeren in de volgende tutorials.

02:04.500 --> 02:09.270
En zoals je misschien al geraden had, staat DeQuan voor deep cube-netwerken.

02:09.540 --> 02:12.180
Dus gaan we een deep learning netwerk implementeren.

02:12.420 --> 02:19.020
En als het klaar is, importeren we het hier met deze regel uit de A. L. En de ogen zijn

02:19.020 --> 02:21.060
natuurlijk een pythonbestand.

02:21.810 --> 02:22.230
Oke.

02:22.240 --> 02:24.230
Dus kan niet wachten om dit te implementeren.

02:24.300 --> 02:25.620
Dit wordt een hele reis.

02:25.920 --> 02:31.650
Maar je zult zien dat dit heel spannend gaat worden want dankzij de A. L. , zal de auto zelf

02:31.650 --> 02:32.520
kunnen rijden.

02:33.120 --> 02:33.660
Oke.

02:33.690 --> 02:38.580
En nu, voordat ik verder ga met de volgende secties, moeten we uitleggen hoe we deze auto gaan trainen.

02:38.850 --> 02:43.620
Ik ga het neurale netwerk nu niet uitleggen, maar ik ga het idee uitleggen van hoe

02:43.620 --> 02:47.690
we de auto gaan trainen om zelf te rijden en obstakels te vermijden.

02:48.240 --> 02:53.840
Dus, weet je, in het echte leven, als je een echte auto wilt trainen om muren of obstakels te vermijden, wat zou

02:54.240 --> 02:55.300
je dan doen?

02:55.680 --> 03:00.750
Je zou zeker geen echte muren of echte grote obstakels nemen en je auto erop slaan.

03:01.050 --> 03:02.460
Dat zou je veel geld kosten.

03:02.670 --> 03:09.990
In plaats daarvan zou een intelligenter idee zijn om je auto te straffen, niet wanneer hij tegen een muur of een obstakel botst, maar

03:10.260 --> 03:12.320
wanneer hij op wat zand belandt.

03:12.690 --> 03:13.890
Dus het is alsof je een veld hebt.

03:14.100 --> 03:19.500
Dit veld heeft enkele wegen waarop de auto moet blijven staan en de wegen zijn begrensd door wat zand.

03:19.680 --> 03:25.440
En elke keer dat de auto het zand op gaat, is het alsof hij een obstakel oprijdt, want als de auto

03:25.440 --> 03:30.990
eenmaal in het zand gaat, wordt hij afgeremd en zullen we ervoor zorgen dat de auto wordt bestraft, daarvoor wordt

03:30.990 --> 03:31.410
gestraft.

03:31.680 --> 03:34.920
En dat is een essentieel punt van kunstmatige intelligentie.

03:35.070 --> 03:39.480
De slechte beloning komt wanneer de auto in het zand gaat en wordt afgeremd.

03:40.050 --> 03:40.530
Oke.

03:40.620 --> 03:44.100
En daarom introduceer ik hier de laatste tekst.

03:44.100 --> 03:50.000
En daarom zijn dat de coördinaten van het laatste punt in het geheugen als we wat zand op de kaart tekenen.

03:50.580 --> 03:51.060
Oke.

03:51.060 --> 03:57.720
En dan krijgen we onze kunstmatige intelligentie, die we hersenen noemen, en dat bevat ons neurale netwerk.

03:57.720 --> 04:02.970
En we zullen het brein noemen, want dit is eigenlijk het brein van de auto en dat bevat ons neurale

04:02.970 --> 04:03.430
netwerk.

04:04.170 --> 04:04.640
Oke.

04:04.650 --> 04:10.080
Dus in deze regel code, zoals je kunt zien, maak ik een object van de leraar in de klas.

04:10.080 --> 04:14.190
Ik zal eraan herinneren wat klassen en objecten zijn, maar de hersenen zijn het object.

04:14.310 --> 04:19.490
DeJuan is de klas en vijf, drie en open negen zijn de ingangen van de klas.

04:19.500 --> 04:20.570
Dus dat is heel eenvoudig.

04:20.910 --> 04:26.730
Vijf komt overeen met de toestand die gecodeerde vectoren van vijf dimensies zijn.

04:26.730 --> 04:31.230
We zullen zien wat ze perfect beschrijven, wat er gebeurt in de omgeving op de kaart.

04:31.680 --> 04:38.340
Dan is drie het aantal acties. Er zullen drie mogelijke acties zijn: ga naar links, ga rechtdoor of ga

04:38.340 --> 04:40.020
naar rechts en open.

04:40.020 --> 04:43.500
Negen is de GEMAP-parameter in het deep learning-algoritme.

04:44.040 --> 04:44.430
Oke.

04:44.430 --> 04:46.650
En dan hebben we de actie om te draaien.

04:46.830 --> 04:52.710
Dus actie naar rotatie is een vector van drie elementen, nul twintig en min 20.

04:53.130 --> 04:58.890
En dus moeten we dit doen omdat de acties worden gecodeerd door drie cijfers.

04:59.070 --> 04:59.640
Nul.

04:59.760 --> 05:04.620
Eén op twee, en dat komt overeen met de indexen van deze actie tot rotatievector.

05:04.660 --> 05:12.930
Dus, bijvoorbeeld, als de actie die is geselecteerd op tijdstip T nul is, welnu, nul komt overeen met de index

05:12.930 --> 05:18.660
van deze actie tot rotatievector en de waarde van index nul is nul.

05:18.930 --> 05:26.610
En daarom gaan we rechtdoor als de geselecteerde actie er een is waarbij één overeenkomt met de index van deze

05:26.760 --> 05:32.330
actie tot rotatievector en de waarde van deze vector met index één twintig is.

05:32.670 --> 05:38.550
Dus twintig komt overeen met een rotatie van twintig graden en dat betekent dat de auto 20 graden naar rechts gaat.

05:39.090 --> 05:45.810
En als de geselecteerde actie te goed is om overeen te komen met de index, twee van deze actie naar

05:45.810 --> 05:52.010
rotatievector en daarom zal de auto een rotatie van min 20 graden maken en daarom naar links gaan.

05:52.380 --> 05:52.740
Oke.

05:52.740 --> 05:59.830
Vervolgens introduceren we de laatste beloningsvariabele, omdat we in elke staat de laatste beloning krijgen.

06:00.060 --> 06:04.680
Dus onthoud, als de auto niet in het zand gaat, zal de beloning positief zijn.

06:05.010 --> 06:09.200
En als de auto op wat zand gaat, nou, dan krijgt hij een slechte beloning.

06:09.450 --> 06:14.790
En elke keer zal deze variabele deze beloning bevatten die hij krijgt bij elke 20.

06:15.360 --> 06:21.600
En dan initialiseren we de scores, wat een vector is die de beloning zal bevatten, niet allemaal, maar de beloningen

06:21.600 --> 06:26.910
op een schuifvenster zodat, weet je, we een curve kunnen maken van de gemiddelde score van de

06:26.910 --> 06:28.680
beloning met betrekking tot tijd.

06:29.280 --> 06:29.760
Oke.

06:29.760 --> 06:32.550
Vervolgens initialiseren we in deze codesectie de kaart.

06:32.550 --> 06:35.840
Dus initialiseren we bijvoorbeeld de zandvolleybal.

06:36.000 --> 06:37.080
Dus dat is belangrijk.

06:37.080 --> 06:42.690
De zandvolleybal wordt eigenlijk een array waarin de cellen de pixels van de kaart zullen zijn.

06:43.080 --> 06:45.800
En in elke cel zullen we een hebben.

06:45.810 --> 06:52.040
Als er wat zand is en een nul als er in het begin geen zand is, zullen we niets tekenen.

06:52.050 --> 06:53.760
Er zal dus helemaal geen zin zijn.

06:53.760 --> 06:57.620
En daarom zullen alle cellen van centrumrechts een nul hebben.

06:57.630 --> 06:59.130
Er zullen dus overal nullen zijn.

06:59.310 --> 07:04.830
En zodra we wat zand trekken, nou, de cellen waarop we het zand trekken, krijgen een één en

07:04.830 --> 07:07.470
we initialiseren de race met alle nullen hier.

07:07.680 --> 07:09.620
Zand is gelijk aan en nullen.

07:10.200 --> 07:13.100
Dan hebben we dit belangrijke ding, dat is het doel.

07:13.380 --> 07:17.220
Het doel is dus een punt op de kaart waar we de auto naartoe zullen trainen.

07:17.490 --> 07:19.190
Dus het is als een bestemming.

07:19.710 --> 07:21.210
Dus wat wordt dit doel?

07:21.420 --> 07:24.870
Dit wordt de linkerbovenhoek van de kaart.

07:24.870 --> 07:28.200
Dus we draaien de auto om naar de linkerbovenhoek van de kaart te gaan.

07:28.350 --> 07:33.270
En zodra het de linkerbovenhoek van de kaart bereikt, zullen we trainen om naar de rechterbenedenhoek van de

07:33.270 --> 07:36.320
kaart te gaan, zodat we ons het volgende scenario kunnen voorstellen.

07:36.450 --> 07:42.540
De linkerbovenhoek van de kaart is de luchthaven van de stad en de rechterbenedenhoek van de kaart is het

07:42.540 --> 07:44.010
centrum van de stad.

07:44.370 --> 07:49.990
En we zullen een taxi of Ugur inschakelen om wat rondritten te maken tussen de luchthaven en het centrum.

07:50.010 --> 07:55.050
En natuurlijk zullen we de taak voor deze taxi moeilijk maken door steeds moeilijkere wegen te tekenen en

07:55.050 --> 08:01.020
steeds meer obstakels op straat toe te voegen om te zien of de taxi er nog in slaagt om van het vliegveld

08:01.020 --> 08:02.490
naar het centrum te gaan.

08:02.850 --> 08:03.930
Dit wordt dus leuk.

08:04.050 --> 08:08.940
En daarom bepaal ik hier de coördinaten van het eerste doel.

08:08.940 --> 08:12.270
Dat is de luchthaven, die zich linksboven in het scherm bevindt.

08:12.720 --> 08:15.900
Dus de kaart zal een vierkant zijn zoals dit.

08:16.710 --> 08:21.570
En de coördinaten van de oorsprong, dat wil zeggen de coördinaten nul nul, zijn hier.

08:22.110 --> 08:24.910
En dan is deze afstand hier groter.

08:25.170 --> 08:31.560
Dus de coördinaten, twintig A. J. min 20 zal daarom precies hier zijn, de linkerbovenhoek van de

08:31.560 --> 08:31.890
kaart.

08:32.640 --> 08:35.310
En waarom heb ik 20 gekozen en niet nul?

08:35.670 --> 08:40.200
Dat is omdat we de auto willen trainen, niet om tegen de muren op te rennen.

08:40.230 --> 08:42.360
Weet je, we willen het trainen om ook de wielen te vermijden.

08:42.600 --> 08:46.420
En daarom mag het doel niet nul zijn, omdat we niet willen dat de auto de muur raakt.

08:46.620 --> 08:47.850
We willen de go raken.

08:48.030 --> 08:49.200
Dus we moeten het hier neerzetten.

08:50.010 --> 08:55.140
En dan introduceer ik gewoon de laatste afstand volleybal, die alleen de huidige afstand van de auto tot

08:55.140 --> 08:57.990
het doel geeft en die ik initialiseer naar nul.

08:58.860 --> 09:04.440
Oké, en nu tijd om de auto en het spel te maken, dus we gaan twee klassen maken, een klasse voor de

09:04.440 --> 09:06.290
auto en een klasse voor het spel.

09:06.660 --> 09:12.330
En binnenin zullen deze klassen al enkele connecties maken met onze A. L. Dus dat doen we in de

09:12.330 --> 09:13.010
volgende tutorial.

09:13.020 --> 09:14.940
En tot die tijd, geniet van I.
