WEBVTT

00:00.330 --> 00:05.940
Cześć, witam w tym samouczku ta specjalna zabawka będzie bardzo ekscytująca, ponieważ zbliżamy się do

00:05.940 --> 00:08.540
A. S. DO. algorytm.

00:08.700 --> 00:14.190
Zobaczycie, że to, co zamierzamy zaimplementować i które nazywa się Śledzenie kwalifikowalności, lub Sarsour

00:14.520 --> 00:20.380
jest tak naprawdę algorytmem algorytmów aktywnych agentów krytycznych agentów, że nie możemy tego wziąć pod uwagę.

00:20.380 --> 00:25.290
I widzimy, ponieważ nadal będziemy mieć jednego agenta, ale nadal zobaczycie,

00:25.290 --> 00:32.010
że to, co zamierzamy zaimplementować, zostało zaczerpnięte z poniższej publikacji, która jest tym dokumentem, jako

00:32.130 --> 00:38.280
metoda Synchronossa do nauki głębokiego wzmacniania. w tym artykule znajdziesz algorytmy A-3, które zaimplementujemy

00:38.280 --> 00:40.840
jako ostateczną premię tego kursu.

00:41.010 --> 00:47.580
Ale jak już mówiłem, zbliżamy się do tego, ponieważ model, który teraz zostanie wdrożony, jest

00:48.420 --> 00:55.620
w rzeczywistości tym synchronicznym i zsekularyzowanym, to ten, który jest prawie A3 C, który robi to później,

00:55.620 --> 01:03.490
ale z jednym agentem i silną stroną tego jest to i krok Cunanan zamierzamy nauczyć się gromadzić nagrody

01:03.490 --> 01:09.520
i uczyć się kumulatywnego celu na końcowych etapach zamiast jednego kroku, jak Priestley.

01:09.690 --> 01:15.250
Dzięki temu trening stanie się o wiele skuteczniejszy i dzięki temu o wiele mocniejszy.

01:15.300 --> 01:21.080
Tak więc mamy pseudo kod dla tego algorytmu, to jest ten algorytm, jak tutaj.

01:21.180 --> 01:23.230
Klikajmy na niego i zaczynamy.

01:23.250 --> 01:25.740
Taki algorytm mamy zaimplementować.

01:25.890 --> 01:30.960
Ale pamiętaj, że tylko z jednym agentem różnica polega na tym, że podejmują akcję.

01:30.990 --> 01:37.380
80 zgodnie z polityką prezydenta Greely'ego opartą na wartościach q dla obecnego stanu i rozgrywającej się

01:37.380 --> 01:38.020
akcji.

01:38.190 --> 01:42.050
Ale w naszym przypadku nie wdrożyliśmy doskonałej zielonej polityki.

01:42.090 --> 01:43.770
Zaimplementowaliśmy miękki Max.

01:43.890 --> 01:46.110
Ale reszta jest taka sama, jak widać.

01:46.110 --> 01:50.210
Zamierzamy obliczyć sumę, na której pracowaliśmy, i faktycznie wykonamy 10 kroków.

01:50.220 --> 01:52.340
Pamiętaj, że kroki są równe 10.

01:52.440 --> 01:58.170
W związku z tym zaimplementujemy tę linię kodu w naszym algorytmie, który teraz zaimplementujemy.

01:58.170 --> 01:59.010
Dostaniemy to.

01:59.010 --> 02:02.150
I głównie zamierzamy to również wdrożyć.

02:02.160 --> 02:07.590
Zobaczysz, że otrzymamy maksimum wartości q dla bieżącego stanu i bieżącej akcji w

02:07.590 --> 02:08.820
tym theta.

02:08.820 --> 02:11.150
Oto tylko parametr docelowy.

02:11.430 --> 02:15.350
Zróbmy to, zaatakujmy ten algorytm.

02:15.360 --> 02:18.730
Ten nazywa się uczeniem synchronicznym i kijkiem.

02:18.900 --> 02:24.490
Ale nie mamy prawa mówić synchronicznie, jeśli chodzi o nas, ponieważ mamy tylko jeden silnik.

02:24.670 --> 02:29.830
Ale możemy to nazwać i nauczyć się śladu kwalifikowalności, a nawet Sarsour.

02:30.270 --> 02:31.780
W porządku, więc zróbmy to.

02:31.800 --> 02:33.080
To będzie niezła zabawa.

02:33.090 --> 02:37.460
Zasadniczo możemy postępować zgodnie z kodem tutaj i to właśnie zamierzamy zrobić.

02:37.460 --> 02:43.980
I tak, jak widać parametr, który będzie nam potrzebny, ponownie pojawi się parametr, który

02:44.280 --> 02:50.820
jest parametrem zaniku, a zatem zaczniemy od wprowadzenia zmiennej dla tego parametru Gahanna i wybrania ich.

02:50.820 --> 02:51.840
Zróbmy to.

02:51.900 --> 02:57.040
W rzeczywistości nie potrzebujemy ogromnej klasy Możemy to zaimplementować z funkcją, ponieważ wiemy,

02:57.040 --> 03:01.830
że tak naprawdę nie musimy tworzyć obiektów, aby to był model śledzenia,

03:02.190 --> 03:08.500
wystarczy funkcja, ponieważ w zasadzie to, co chcemy zrobić, to Zwróć dane wejściowe i cel, aby później

03:08.500 --> 03:14.460
podczas szkolenia AI byliśmy gotowi zminimalizować odległość między przewidywaniami a celem, a żeby uzyskać prognozy, potrzebujemy

03:14.470 --> 03:19.950
danych wejściowych, ponieważ będziemy stosować nasz mózg na danych wejściowych, aby uzyskać wynik sygnały, które

03:19.950 --> 03:21.300
będą naszymi przewidywaniami.

03:21.300 --> 03:26.730
A kiedy już mamy nasze przewidywania i nasze cele, będziemy gotowi szkolić SI, starając

03:26.730 --> 03:30.680
się zminimalizować tak wielki dystans między przewidywaniami a toaletami.

03:30.690 --> 03:32.780
Więc o to właśnie teraz chodzi.

03:32.880 --> 03:38.130
Wdrażamy tę funkcję, aby móc zwrócić te dane wejściowe w Sowietach, abyśmy mogli być

03:38.130 --> 03:43.010
przygotowani na szkolenie, aby zminimalizować przewidywane odległości w kwadracie, aby zarządzać toaletami.

03:43.020 --> 03:46.400
W porządku, zróbmy to, jak powiedzieliśmy, chcemy wprowadzić funkcje.

03:46.410 --> 03:47.910
Zaczynamy od tego.

03:47.940 --> 03:52.680
Będziemy to nazywać zakwalifikowaniem jako ślad.

03:52.860 --> 03:54.210
Możesz również nazwać to Sarsour.

03:54.240 --> 04:00.660
Możesz też nazwać to krokiem, aby zadzwonić, co chcesz, ale nazwijmy to wykresem kwalifikacyjnym, a

04:00.660 --> 04:07.530
ta funkcja będzie miała jeden argument, który będzie serią, i dlaczego to dlatego, że zamierzamy uzyskać

04:07.530 --> 04:13.460
pewne dane wejściowe i cele, ponieważ będziemy trenować sztuczną inteligencję w partiach.

04:13.530 --> 04:19.170
W związku z tym dane wejściowe i cele trafią do niektórych partii, a zatem argumentem wejściowym

04:19.410 --> 04:25.090
jest tutaj ta partia, która będzie zawierać kilka danych wejściowych, a następnie kilka celów, które będą obliczane.

04:25.500 --> 04:26.730
Więc idziemy.

04:26.730 --> 04:28.310
To jedyny argument, którego potrzebujemy.

04:28.500 --> 04:32.280
Przejdźmy teraz do funkcji i określmy, co powinniśmy zrobić.

04:32.370 --> 04:40.140
Tak jak widzieliśmy w Bazylice papieru, potrzebujemy ponownie parametrów, tak jak powiedzieliśmy, że zaczynamy od wprowadzenia

04:40.440 --> 04:45.390
tego parametru gamma semi-close i możemy już odcyfrować wartość.

04:45.450 --> 04:51.780
Wybieramy cztery punkty dziewięćdziesiąt dziewięć, które są klasyczną wartością dla Ghany i Norreys.

04:51.780 --> 04:55.640
Sprawdziłem, czy jest to dobra wartość dla naszej sztucznej inteligencji.

04:55.650 --> 05:04.120
W porządku, następnym krokiem jest przygotowanie naszych danych wejściowych i celów, ponieważ właśnie to chcemy

05:04.120 --> 05:05.260
zwrócić.

05:05.260 --> 05:08.980
Chcemy zwrócić dane wejściowe na cele, aby przygotować szkolenie.

05:08.980 --> 05:15.520
I tak możemy już zainicjować je z pustą listą, ponieważ oczywiście te dane wejściowe Wewnątrz wszystkiego, co

05:15.790 --> 05:21.130
najlepsze, będziemy mieć kilka danych wejściowych do listy i to jest, gdy inicjalizujemy dane

05:21.430 --> 05:25.000
wejściowe jako listę, a także cele, do których zmierzamy.

05:25.000 --> 05:31.420
Więc zainicjowaliśmy nasze i wprowadziliśmy nasze cele, a na koniec funkcja śledzenia kwalifikowalności zwróci dokładnie

05:31.540 --> 05:33.320
te dane wejściowe.

05:33.330 --> 05:36.180
A te tak, oczywiście, były Filton.

05:36.290 --> 05:42.300
Mamy kilka wejść i powiązanych z nimi kilka celów, które zostaną zwrócone przez funkcję.

05:42.300 --> 05:48.820
Następnym krokiem jest uruchomienie pętli i to właśnie dlatego, że śledzimy powolny

05:48.880 --> 05:50.290
kod papieru.

05:50.290 --> 05:51.400
Ten rodzaj kodu.

05:51.490 --> 05:58.420
I jak widać, jest to powtórzenie sekcji kodu i powtórzona dokładnie pełna pętla w kodzie.

05:58.470 --> 06:03.870
Zamierzamy obliczyć skumulowaną nagrodę tutaj zgromadzoną na 10 etapach.

06:03.940 --> 06:05.130
I jak to jest obliczane.

06:05.290 --> 06:10.480
Cóż, w każdym kroku, który nie jest ostatnim krokiem, uzyskamy maksimum podstawowych wartości waluty, w której

06:10.480 --> 06:13.070
się znajdujemy podczas tej czynności i kroków.

06:13.240 --> 06:17.790
A jeśli osiągniemy ostatni stan z 10 kroków, to będzie to zero.

06:17.890 --> 06:19.810
To nie chcemy tego więcej robić.

06:20.080 --> 06:23.320
A potem mamy tę pętlę for, która będzie druga.

06:23.470 --> 06:28.390
Nie powtarzają tutaj, ale to jest druga pełna pętla w naszym algorytmie.

06:28.600 --> 06:34.570
Cóż, będziemy mieli to w ten sposób, pomnażając go przez parametr gamma zaniku i dodając

06:34.840 --> 06:35.660
słowo.

06:36.010 --> 06:41.510
Zróbmy to, wróćmy do Pythona i zacznijmy od tego.

06:41.980 --> 06:44.920
I jaka będzie zmienna iteracyjna.

06:45.070 --> 06:47.820
Cóż, to będzie nasza 10-stopniowa seria.

06:47.890 --> 06:55.510
Znasz naszą serię 10 przejść, więc nazwiemy tę serię zmiennych, które reprezentują serię 10 przejść,

06:55.600 --> 06:58.820
takich jak sekwencja 10 przejść.

06:58.860 --> 07:00.910
Więc dla serii w.

07:01.210 --> 07:02.400
A co myślisz?

07:02.620 --> 07:05.570
Cóż, nasza seria sprowadza się do naszej partii.

07:05.680 --> 07:12.040
Są partie, na których będzie się trenować sztuczna inteligencja i kolejne serie w partii, która jest dla wszystkich

07:12.040 --> 07:14.540
serii 10 przejść w naszej partii wejściowej.

07:14.800 --> 07:20.710
Cóż, gdzie zamierzamy zrobić dobrze, aby uzyskać łączną nagrodę, zobaczysz w krzemionce, że

07:20.950 --> 07:26.560
potrzebujemy stanu pierwszego przejścia serii, a także stanu ostatniej zmiany serii.

07:26.740 --> 07:33.040
To, co musimy teraz zrobić, to uzyskać te stany wejściowe, więc zamierzamy wprowadzić te dwa stany

07:33.130 --> 07:39.380
w stan gotowości, które miały wywołać wejście, a my otrzymamy te dwa stany wejściowe.

07:39.400 --> 07:46.590
Pierwsza z serii i ostatnia, którą zamierzamy wprowadzić do zestawu niepilotowego, ale bez obaw, nie pozostanie

07:46.800 --> 07:51.880
z tym, a Ampyra oczywiście zmieni to w okropne, ale pierwszym krokiem

07:51.880 --> 07:56.930
jest postawienie tych dwóch wypowiada pierwszą w ostatniej w imperium.

07:57.240 --> 08:03.850
I właśnie tutaj w tej tablicy dodajemy pierwsze wejście, które jest wejściowym etapem pierwszego przejścia

08:03.850 --> 08:10.820
szeregu i to jest Serialem, a następnie, aby je przyjąć dla przejścia przyjmujemy indeks zerowy szeregu, który

08:10.820 --> 08:17.780
jest pierwszym przejściem, a następnie możemy uzyskać do niego dostęp, biorąc jego atrybuty, które są stanem i

08:18.290 --> 08:24.200
tym, ponieważ w naszym pliku powtórzenia doświadczenia znaleźliśmy specjalną strukturę dla każdego przejścia i

08:24.440 --> 08:25.660
znacie strukturę.

08:25.730 --> 08:29.380
Każde przejście składa się ze stanu i słowa akcji.

08:29.570 --> 08:34.970
Ale ostatni element, który jest wykonywany, więc ta specjalna struktura, którą możemy teraz użyć,

08:35.240 --> 08:39.250
pochodzi ze sposobu, w jaki zdefiniowaliśmy przejście i powtórne doświadczenie.

08:39.290 --> 08:45.380
W porządku, otrzymujemy stan wejściowy pierwszego przejścia, a teraz dostajemy również

08:45.380 --> 08:48.640
etap wejściowy ostatniego przejścia serii.

08:48.800 --> 08:57.200
I żeby to zrobić, to znaczy, że możemy po prostu skopiować i wkleić go i zastąpić, jak jesteś tutaj, przez

08:57.200 --> 09:04.040
ostatni indeks serii, do której możemy uzyskać dostęp za pomocą tej sztuczki minus jedna seria minus jedna,

09:04.100 --> 09:07.420
która otrzyma stan wejściowy ostatniego przejście serii.

09:08.210 --> 09:16.310
W takim razie musimy umieścić te dwa elementy w nawiasach kwadratowych, ponieważ tego oczekuje od

09:16.310 --> 09:23.120
sędziego funkcja, a następnie ważna rzecz, ponieważ zamierzamy przekształcić to w odpowiedź

09:23.210 --> 09:26.140
pochodni w zmiennej pochodni.

09:26.330 --> 09:31.810
Pamiętajmy, że tensor palnika jest z definicji specjalną tablicą zawierającą jeden typ.

09:31.940 --> 09:34.640
A więc musimy wymusić posiadanie jednego rodzaju.

09:34.760 --> 09:42.020
I jak zwykle wybierzemy typ float, a więc dodając ten parametr tutaj D typ jest

09:42.750 --> 09:45.030
równy i P pływa.

09:45.320 --> 09:52.380
Abyś mógł wziąć to, a teraz możemy to zamienić na tensor palnika w wojewodzie pochodni.

09:52.550 --> 09:54.640
Zróbmy to.

09:54.770 --> 09:57.470
Najpierw zamieńmy to na czujnik palnika.

09:57.590 --> 10:06.880
I pamiętajmy, że możemy użyć torche, które od początku do końca, a my umieścimy całą tablicę dwóch stanów wejściowych

10:06.900 --> 10:15.180
wewnątrz tego pochodni tancerza z pochodnią od nich przez funkcję idealną, która zamieni te tablice z dwóch

10:15.250 --> 10:18.230
stanów wejściowych na latarkę czujnik.

10:18.420 --> 10:26.560
A teraz wkładamy tę pochodnię w latarkę bardzo dobrze, używając klasy zmiennej, więc wejście będzie

10:26.560 --> 10:28.400
obiektem cennej klasy.

10:28.480 --> 10:35.380
W rzeczywistości, jak rozumieliście, ta klasa zmiennych bierze to wszystko za argument i

10:35.380 --> 10:36.680
tworzy obiekt.

10:36.680 --> 10:38.420
W porządku, więc teraz powinniśmy być dobrzy.

10:38.450 --> 10:41.000
Mamy dwa nasze wejścia, których potrzebujemy.

10:41.000 --> 10:45.440
Jest to stan wejściowy pierwszego przejścia, a następnie wejście oznacza ostatnie przejście.

10:45.770 --> 10:51.890
A teraz, gdy mamy dane wejściowe Cóż, co możemy uzyskać możemy uzyskać sygnał wyjściowy mózgu

10:51.890 --> 10:52.560
AI.

10:52.640 --> 10:56.160
To jest prognoza, którą będziemy nazywać wyjściami.

10:56.630 --> 10:57.950
To jest sygnał wyjściowy.

10:58.130 --> 10:59.280
I uzyskać wyniki.

10:59.330 --> 11:04.670
Teraz to bardzo proste, ponieważ mamy już stworzony mózg, który jest naszą splotową siecią

11:04.670 --> 11:05.330
neuronową.

11:05.570 --> 11:14.120
I tak możemy po prostu wziąć nasz mózg CNN zastosowany do wejść, które zwrócą prognozę, która jest

11:14.120 --> 11:16.650
wyjściem tak prostym jak to.

11:16.820 --> 11:19.510
A teraz jesteśmy już gotowi, aby przejść do następnego kroku.

11:20.730 --> 11:24.890
Następnym krokiem jest zacząć obliczać tę społeczność, jeśli chcesz.

11:25.090 --> 11:30.690
Więc teraz zrobimy dokładnie to samo, co nasz algorytm Sarsoura, czy też powinniśmy go nazwać

11:30.760 --> 11:32.300
i kroki do nauki.

11:32.290 --> 11:39.990
Zamierzamy wprowadzić skumulowaną zmienną nagrody, która będzie łączną nagrodą, wróćmy do artykułu, ponieważ teraz widzicie, co

11:39.990 --> 11:45.120
musimy zrobić, aby uzyskać nagrodę dla społeczności, która jest naszą

11:45.210 --> 11:46.000
tutaj.

11:46.170 --> 11:53.160
No i na każdym kroku z 10 kroków musimy go zaktualizować, dodając zero do tej społeczności,

11:53.160 --> 11:59.910
jeśli osiągnęlibyśmy ostatni etap serii lub maksimum wartości podstawowych, jeśli nie osiągnęliśmy ostatniego etapu seria,

12:00.000 --> 12:03.410
która jest dla wszystkich statyki, która trwała.

12:03.750 --> 12:05.890
To po prostu bonanzas.

12:06.000 --> 12:07.580
Wróćmy do Pisceana.

12:07.650 --> 12:16.490
Więc ta nagroda społeczności, jak właśnie widzieliśmy, będzie równa zero zero, jeśli osiągniemy ostatni stan i możemy

12:16.490 --> 12:23.070
zapisać ten warunek w ten sposób, jeśli seria indeksu minus 1.

12:23.070 --> 12:25.940
To jest ostatnie przejście serii.

12:26.250 --> 12:32.280
Następnie dodajemy, że zrobione, ponieważ w rzeczywistości jest to atrybut tego, że wiesz, że ta przejściowa

12:32.280 --> 12:38.400
struktura, którą zdefiniowaliśmy w doświadczeniu, odegrała naszą powtórkę doświadczenia, a to, co zrobiliśmy, pochodzi z rzeczywistych

12:38.400 --> 12:44.550
struktur otwierających, ponieważ jeśli przejdziemy do otwartej strony Allergan, która jest w rzeczywistości właściwa tutaj to

12:44.550 --> 12:45.240
przygotowałem.

12:45.280 --> 12:47.160
To dobrze lub wezyrze.

12:47.340 --> 12:52.300
A jeśli przejdziemy do dokumentacji, a następnie, jeśli my.

12:52.380 --> 12:55.240
Oto samouczek, który naprawdę zachęcam do obejrzenia go.

12:55.470 --> 13:01.530
Możesz uruchomić środowisko, które Knowsley zobaczysz, że nasze obserwacje, że są to

13:01.950 --> 13:04.690
przejścia, są określone przez obserwację.

13:04.790 --> 13:12.150
Chcemy to zrobić tutaj, a to zrobione oznacza dokładnie to, że przejście lub krok się skończył.

13:12.150 --> 13:15.440
I dlatego użyjemy tego tutaj dla naszego warunku IF.

13:15.610 --> 13:23.460
Dlatego szaleństwo iSeries, gdy to zrobione oznacza, że zakończono ostatnie przejście serii.

13:23.730 --> 13:29.290
I tak ta skumulowana nagroda będzie równa zeru, jeśli ostatnie przejście serii zostanie wykonane.

13:29.330 --> 13:37.290
Inaczej, jeśli nie osiągnęliśmy ostatniej transformacji, nagroda skumulowana zostanie zaktualizowana, tak

13:37.290 --> 13:40.950
jak powiedzieliśmy maksimum kluczowych wartości.

13:41.220 --> 13:47.460
A ponieważ ten wynik tutaj jest wyjściem mózgu, który jest prognozą sieci neuronowej.

13:47.520 --> 13:53.640
I jak wiesz prognozy sieci neuronowej są przewidywanymi wartościami Cóż, to wyjście

13:53.920 --> 13:55.040
zawiera wartości.

13:55.110 --> 14:01.130
A ponieważ musimy przyjąć maksimum wartości q, musimy najpierw dodać ten indeks, ponieważ ta

14:01.130 --> 14:04.620
struktura zawiera dwie kluczowe wartości i następną.

14:04.620 --> 14:07.830
A następnie musimy dodać dane, aby uzyskać dostęp do danych.

14:07.830 --> 14:12.150
Ta struktura wyjściowa, którą znasz, ma specjalną strukturę wojewody pochodni.

14:12.270 --> 14:17.910
W ten sposób otrzymujemy nasze podstawowe wartości, a następnie chcemy maksymalnie wykorzystać nasze wartości

14:17.910 --> 14:20.470
cue, więc dodajemy, że Max.

14:20.490 --> 14:27.820
A teraz otrzymujemy dokładnie to, czego chcemy, jak w dokumencie, to maksimum wartości kostki dla stanów

14:27.820 --> 14:30.240
nieterminowych, co jest idealne.

14:30.280 --> 14:33.460
A więc teraz zrobimy drugi raz.

14:33.930 --> 14:40.830
To jest dla 10 etapów serii, które zamierzamy zaktualizować kumulatywną drogą w ten sposób, mnożąc najpierw

14:40.830 --> 14:46.170
przez Gamma parametr zaniku, który już mamy, a następnie dodajemy słowo B.

14:46.410 --> 14:47.540
Zróbmy to.

14:47.610 --> 14:52.260
W rzeczywistości będziemy robić dokładnie to samo, co w kodzie pseudokodowym, ponieważ można zauważyć, że zaczynają się

14:52.260 --> 14:52.970
od prawej.

14:53.040 --> 14:59.010
Więc nie zaczynają się od pierwszego kroku i przechodzą do ostatniego testu zaczynającego się od ostatniego kroku.

14:59.040 --> 15:02.280
T-minus 1 do pierwszego kroku, aby rozpocząć.

15:02.340 --> 15:06.520
Dokładnie to zamierzamy zrobić, a to dlatego, że chcemy uzyskać

15:06.610 --> 15:15.840
w końcu skumulowaną nagrodę równą naszym równym lub zero plus gamma lub 1 plus gamma do kwadratu lub dwa plus które dodają

15:15.840 --> 15:24.420
plus gamma o mocy 10 lub 10 gdzie są 1 lub 2, które są 10 są słowem uzyskanym w każdym z

15:24.420 --> 15:25.580
etapów serii.

15:25.590 --> 15:29.870
Zróbmy więc krótką przerwę przed wykonaniem drugiej pełnej pętli, a do zobaczenia w następnym samouczku.

15:30.030 --> 15:31.530
Do tego czasu ciesz się AI.
