WEBVTT

00:00.420 --> 00:03.950
Cześć, witam ponownie w naszym autem do samodzielnego prowadzenia Maggio.

00:03.960 --> 00:10.200
Tak więc w samym toile zamierzam wyjaśnić środowisko, w którym będziemy implementować naszą sztuczną inteligencję i która będzie

00:10.410 --> 00:16.500
zawierała Oczywiście samochód, który będzie trenował, aby sam jeździć i ominąć przeszkody, i na których narysuje kilka

00:16.500 --> 00:20.950
dróg i kilka bloków dla nasze samochody do poruszania się po nich.

00:21.210 --> 00:28.170
Później skonstruujemy tę sztuczną inteligencję, aby wyszkolić ten samochód, aby jeździł po drogach, które znasz,

00:28.170 --> 00:33.830
bez przekraczania granic i unikania przeszkód, które zostaną wprowadzone na drogę.

00:34.140 --> 00:35.870
To jest ekscytujące wyzwanie.

00:35.910 --> 00:42.000
W rzeczywistości istnieją dwa oddzielne pliki, ponieważ można zobaczyć, że jest apeks i ptactwo, które są

00:42.000 --> 00:47.090
sztuczną inteligencją, która zrobi całe szkolenie, aby wyszkolić samochód, jak sprzedać dysk.

00:47.280 --> 00:52.080
I mamy mapę, którą znaleźliśmy, która jest kodem, który tworzy całe to środowisko.

00:52.110 --> 00:57.090
Oto kod, który w rzeczywistości zawiera 200 linii kodu.

00:57.090 --> 01:00.460
Więc ten kod nie jest zazwyczaj związany z sztuczną inteligencją.

01:00.510 --> 01:03.380
Jest to tylko kod, który sprawia, że środowisko tworzy mapę.

01:03.420 --> 01:08.430
Przejdę więc przez poszczególne sekcje, aby wyjaśnić, ale nie zamierzamy implementować tej

01:08.430 --> 01:13.610
linii kodu po linii od zera, ponieważ chcemy skupić się na sztucznej inteligencji.

01:13.740 --> 01:17.160
Ale przejdźmy kolejno przez poszczególne sekcje, aby zrozumieć, co się dzieje.

01:17.370 --> 01:22.020
Tak więc najpierw importujemy biblioteki centralne, które są dla dowolnego kodu.

01:22.110 --> 01:28.770
Potrzebujemy trochę bibliotek, aby wykonać pewne zadanie wydajniej niż importujemy wszystkie pakiety cavy.

01:28.890 --> 01:35.140
Nie jest to bardzo ważne, ponieważ to wszystko jest właściwe dla Cavey'ego, używamy cavy do tworzenia mapy.

01:35.190 --> 01:41.010
Dlatego importujemy wiele klas i obiektów, aby móc wykonać tę mapę i dodać kilka narzędzi

01:41.010 --> 01:42.210
do mapy.

01:42.210 --> 01:44.420
W porządku, ta linia jest ważna.

01:44.430 --> 01:53.130
Ta linia jest powiązana, ponieważ w zasadzie to tutaj importujemy nasz mózg do mózgu samochodu, który będzie kolejnym

01:53.220 --> 01:57.760
odrzutowcem tego w klasie i nauczycielu w klasie.

01:57.820 --> 02:00.570
Czy nasza sztuczna inteligencja jest sama w sobie.

02:00.570 --> 02:04.680
Zobaczysz, że wprowadzimy korektę w klasie w poniższych samouczkach.

02:04.680 --> 02:09.650
I jak mogłeś się domyślić instancji piszącej dla głębokich sieci Q.

02:09.650 --> 02:15.450
Więc zaimplementujemy sieć uczenia się z kolejki, a kiedy będzie gotowa,

02:15.540 --> 02:21.910
zaimportujemy ją tutaj z tej linii z AI, a oczy oczywiście są plikami Pythona.

02:21.990 --> 02:22.310
W porządku.

02:22.320 --> 02:24.450
Więc nie mogę się doczekać, aby to wdrożyć.

02:24.450 --> 02:29.520
To będzie dość podróż, ale przekonasz się, że będzie to bardzo ekscytujące,

02:29.520 --> 02:33.200
bo dzięki I samochód będzie mógł sam jeździć.

02:33.270 --> 02:33.880
W porządku.

02:33.880 --> 02:39.060
A teraz zanim przejdę do następnej sekcji, musimy wyjaśnić, jak będziemy trenować ten samochód.

02:39.060 --> 02:43.880
Nie zamierzam teraz wyjaśniać sieci neuronowej, ale zamierzam wyjaśnić, w jaki

02:43.920 --> 02:48.080
sposób możemy wyszkolić samochód do jazdy i unikania przeszkód.

02:48.360 --> 02:54.130
Więc wiesz w prawdziwym życiu, jeśli chcesz trenować prawdziwy samochód, aby uniknąć niektórych murów lub przeszkód.

02:54.390 --> 02:55.580
Cóż byś zrobił.

02:55.830 --> 03:01.130
Na pewno nie wziąłbyś prawdziwych murów ani prawdziwych dużych przeszkód i nie zmiażdżysz ich samochodem.

03:01.200 --> 03:02.710
To by kosztowało cię dużo pieniędzy.

03:02.850 --> 03:10.170
Zamiast tego bardziej inteligentnym pomysłem byłoby ukaranie samochodu nie wtedy, gdy rozbije ścianę lub przeszkodę, ale

03:10.410 --> 03:12.690
kiedy przejdzie na piasek.

03:12.810 --> 03:14.220
Więc masz pole.

03:14.220 --> 03:19.680
Na tym polu znajdują się drogi, na których samochód musi się znajdować, a drogi są ograniczone przez piasek.

03:19.860 --> 03:25.500
Za każdym razem, gdy samochód jedzie do centrum, dzieje się tak, jakby działo się to z przeszkodą, ponieważ

03:25.500 --> 03:31.050
gdy samochód wjedzie na piasek, zostanie spowolniony, a my upewnimy się, że samochód jest karany, jest karany za

03:31.050 --> 03:31.630
to.

03:31.860 --> 03:35.200
I to jest jeden istotny punkt sztucznej inteligencji.

03:35.220 --> 03:40.210
Złe słowo pojawia się za każdym razem, gdy samochód w pewnym sensie ulega spowolnieniu.

03:40.230 --> 03:40.770
W porządku.

03:40.770 --> 03:45.160
I dlatego tutaj wprowadzam ostatni tekst i właśnie dlatego.

03:45.300 --> 03:50.650
Jakie są współrzędne ostatniego punktu w pamięci, kiedy narysujemy jakiś zapach na mapie.

03:50.760 --> 03:51.110
W porządku.

03:51.120 --> 03:57.720
A potem otrzymujemy naszą sztuczną inteligencję, którą nazywamy mózgiem i która zawiera naszą sieć neuronową, a my

03:57.900 --> 04:03.020
nazwiemy ją mózgiem, ponieważ jest to w rzeczywistości mózg samochodu i zawiera naszą

04:03.030 --> 04:03.920
Noodle Network.

04:04.350 --> 04:04.730
W porządku.

04:04.770 --> 04:10.200
Więc w tym wierszu kodu, jak widzisz, tworzę obiekty na nauczycielu w klasie.

04:10.230 --> 04:17.000
Przypominam, że klasy i przedmioty są tylko obiektem Brenny, który dehumanizuje klasę i 5: 3

04:17.010 --> 04:19.660
i 0. 9 to dane wejściowe klasy.

04:19.680 --> 04:26.880
To bardzo proste pięć odpowiada stanom, które są zakodowanymi wektorami pięciu wymiarów, zobaczymy, jak doskonale

04:26.880 --> 04:31.710
opisują to, co dzieje się w środowisku na mapie.

04:31.830 --> 04:38.820
Następnie trzy to liczba akcji, które będą trzy możliwe działania idź w lewo idź prosto lub

04:39.330 --> 04:44.190
idź w prawo i 0. 9 jest znowu parametrem w algorytmie uczenia się zapisywania.

04:44.220 --> 04:46.900
W porządku, a potem mamy akcję przez rotację.

04:46.980 --> 04:50.910
Zatem akcja rotacji jest wektorem trzech elementów.

04:50.910 --> 04:53.290
020 i minus 20.

04:53.300 --> 05:01.820
Musimy to zrobić, ponieważ akcje są kodowane przez trzy liczby 0 1 i 2 i odpowiada to indeksom

05:01.820 --> 05:04.700
tego wektora obrotu dwóch akcji.

05:04.710 --> 05:11.160
Na przykład, jeśli akcja wybrana w czasie t wynosi zero.

05:11.270 --> 05:18.990
Dobrze zero odpowiada indeksowi tego działania dwóch wektorów obrotu, a wartość wskaźnika 0 wynosi zero.

05:19.150 --> 05:24.490
I dlatego pójdziemy prosto, jeśli wybrana akcja to 1.

05:24.770 --> 05:30.380
Cóż, jeden odpowiada wskaźnikowi tej akcji, dwa dodatkowe wektor, a wartość tego wektora,

05:30.380 --> 05:32.810
który ma następny, wynosi 20.

05:32.810 --> 05:38.580
Tak więc 20 odpowiada obrotowi o 20 stopni, co oznacza, że kod będzie przechodził

05:39.260 --> 05:46.500
20 stopni w prawo, a następnie, jeśli wybrane działanie będzie dobrze odpowiadać indeksowi tego działania względem wektora obrotu.

05:46.700 --> 05:52.570
I dlatego kod wykona obrót o minus 20 stopni, a zatem będzie on przesuwany w lewo.

05:52.580 --> 06:00.200
W porządku, wtedy wprowadzamy lewostronnego Wojewodę, ponieważ na każdym etapie otrzymamy ostatnie słowo.

06:00.200 --> 06:04.970
Więc pamiętaj, że jeśli karta nie ma jakiegoś sensu, to nagroda będzie pozytywna.

06:05.180 --> 06:11.780
A jeśli kod dojdzie do pewnego sensu, otrzyma złą nagrodę i za każdym razem ta zmienna

06:11.780 --> 06:15.270
będzie zawierała tę nagrodę, że dostaje H20.

06:15.500 --> 06:20.760
Następnie inicjujemy wyniki, które są wektorami, które będą zawierały nagrodę.

06:20.780 --> 06:22.780
Nie wszystkie, ale nagroda.

06:22.800 --> 06:28.340
Na przesuwanym oknie, abyś wiedział, że możemy krzywa średniej przysadzić nagrodę w odniesieniu

06:28.340 --> 06:29.440
do czasu.

06:29.450 --> 06:34.520
W porządku w tej sekcji kodu zainicjujemy mapę, abyśmy ją zainicjowali.

06:34.520 --> 06:36.170
Na przykład wspomniana zmienna.

06:36.170 --> 06:37.220
To ważne.

06:37.220 --> 06:42.710
Drugą zmienną będzie faktycznie tablica, w której komórki będą pikselami mapy, aw

06:43.250 --> 06:45.880
każdej komórce będziemy mieć 1.

06:45.980 --> 06:52.120
Jeśli jest zero w sensie, jeśli na początku nie ma centrum, nie będziemy niczego rysować.

06:52.160 --> 06:57.840
Więc nie będzie żadnego sensu i dlatego wszystkie komórki tablicy centralnej będą miały zero.

06:57.860 --> 07:02.990
Wszędzie będą zera i jak tylko zaczniemy rysować sens, podczas gdy komórki,

07:02.990 --> 07:10.290
na których narysujemy sens, dostaną jeden, a my zainicjujemy wyścig z wszystkimi zerami tutaj wysłanymi równymi i zerami.

07:10.370 --> 07:13.510
Następnie mamy tę ważną rzecz, która jest celem.

07:13.520 --> 07:17.630
Tak więc celem jest punkt na mapie, który pociągnie samochód do osiągnięcia.

07:17.630 --> 07:19.850
To jest jak miejsce docelowe.

07:19.850 --> 07:21.460
Jaki więc będzie ten cel?

07:21.560 --> 07:27.380
Cóż, to będzie lewy górny róg mapy, aby wszyscy trenowali samochód, aby przejść do lewego górnego

07:27.380 --> 07:28.480
rogu mapy.

07:28.550 --> 07:33.290
A potem, gdy dojdzie do lewego górnego rogu mapy, będziemy mieli tendencję do przejścia w

07:33.290 --> 07:36.590
prawy dolny róg mapy, abyśmy mogli sobie wyobrazić następujący scenariusz.

07:36.590 --> 07:42.620
W lewym górnym rogu mapy znajduje się lotnisko miasta, a prawy dolny róg mapy

07:42.620 --> 07:44.320
to śródmieście miasta.

07:44.570 --> 07:50.180
I będziemy trenować taksówkę lub Uber, aby odbyć kilka podróży między lotniskiem a centrum miasta.

07:50.210 --> 07:55.610
Oczywiście utrudnimy zadanie tej taksówce, rysując coraz trudniejsze drogi i dodając coraz

07:55.700 --> 08:01.190
więcej przeszkód na ulicy, aby sprawdzić, czy taksówkarzowi uda się dotrzeć z lotniska

08:01.190 --> 08:02.760
do centrum miasta.

08:02.990 --> 08:04.170
To będzie dobra zabawa.

08:04.190 --> 08:11.030
I dlatego właśnie ustawiam współrzędne pierwszego celu, czyli lotniska, które znajduje się w lewym

08:11.030 --> 08:12.640
górnym rogu ekranu.

08:12.830 --> 08:20.000
Mapa będzie więc podobna do kwadratu, a współrzędne punktu współrzędnych 00

08:20.090 --> 08:22.090
są właśnie tutaj.

08:22.340 --> 08:25.250
A większy jest tutaj ten dystans.

08:25.310 --> 08:32.640
Zatem współrzędne 20 i Najah minus 20 będą w tym miejscu w lewym górnym rogu mapy.

08:32.790 --> 08:35.650
I dlaczego wybrałem 20, a nie zero.

08:35.850 --> 08:40.300
Cóż, to dlatego, że chcemy wyszkolić samochód, żeby nie rzucał się w ściany.

08:40.320 --> 08:45.450
Wiesz, że chcemy również trenować w ścianach, a zatem nie jest to zero, ponieważ nie chcemy, aby

08:45.450 --> 08:48.120
samochód dotykał miejsca, do którego chcemy się zbliżyć.

08:48.180 --> 08:53.910
Musimy więc umieścić to tutaj, a potem dopiero wprowadzam ostatnią zmienną odległości, która właśnie podaje

08:53.910 --> 08:58.200
aktualną odległość od samochodu do drogi i zaczynam od zera.

08:59.020 --> 08:59.470
W porządku.

08:59.480 --> 09:02.220
A teraz czas na samochód i grę.

09:02.370 --> 09:06.650
Zrobimy więc dwie klasy jedną klasę dla samochodu i jedną klasę dla gry.

09:06.850 --> 09:10.850
I w tych klasach będą już pewne połączenia z naszą sztuczną inteligencją.

09:11.170 --> 09:13.170
Więc zrobimy to w następnym Statoil.

09:13.180 --> 09:15.000
I do tego czasu ciesz się.
