WEBVTT

00:00.480 --> 00:03.160
Cześć i witamy w tutorialu Python.

00:03.180 --> 00:03.520
W porządku.

00:03.520 --> 00:08.810
W tym oleju zrobimy funkcję, która wybierze właściwą akcję i za każdym razem.

00:08.810 --> 00:13.650
Zasadniczo zamierzamy wdrożyć część, która sprawi, że samochód będzie właściwym posunięciem.

00:13.740 --> 00:18.780
I za każdym razem, gdy idzie w lewo, idzie prosto lub idzie w prawo, aby osiągnąć cel

00:18.780 --> 00:20.640
i uniknąć przeszkód, które spadają.

00:21.000 --> 00:22.350
Zróbmy to teraz.

00:22.370 --> 00:28.320
Zaczniemy jak zwykle od osób niesłyszących w celu zdefiniowania funkcji, a następnie nadamy

00:28.320 --> 00:36.370
nazwę naszej funkcji, którą nazwiemy akcją select, a nie jakiemukolwiek nawiasem, a ta funkcja wyboru działania przyjmie dwa

00:36.550 --> 00:37.410
argumenty.

00:37.450 --> 00:43.960
Pierwszy to samo, kiedy dorastasz, by odnieść się do przedmiotu i drugiego argumentu, który według

00:43.960 --> 00:46.150
ciebie będzie tym, który.

00:46.390 --> 00:47.860
Cóż to może być.

00:47.860 --> 00:54.220
Jeśli się nad tym zastanowić, to akcja, którą wybieramy, pochodzi z wyjścia sieci neuronowej, ponieważ wynik

00:54.220 --> 00:59.890
sieci neuronowej lub q wartości dla każdej z trzech możliwych akcji, a zatem akcji,

00:59.890 --> 01:05.980
w którą gramy akcję, która będzie wynikiem działania sieć neuronowa zależy od stanu wejścia, a

01:05.980 --> 01:11.610
stany wejściowe są dokładnie drugim argumentem, którego potrzebujemy z funkcją wyboru akcji.

01:11.680 --> 01:16.310
Dzieje się tak dlatego, ponieważ dosłownie zamierzamy pobrać dane wyjściowe sieci neuronowej.

01:16.510 --> 01:22.180
Oczywiście wynik sieci neuronowej zależy bezpośrednio od wejścia sieci neuronowej.

01:22.360 --> 01:24.010
Więc to będzie nasz argument.

01:24.280 --> 01:31.720
A teraz możemy nadać mu dowolną nazwę, którą faktycznie nazwiemy stanem, ponieważ wejście sieci neuronowych to stany

01:31.960 --> 01:38.280
wejściowe, które są i są kodowane przez wektor pięciu wymiarów do trzech orientacji sygnału

01:38.480 --> 01:39.920
i orientacji ujemnej.

01:40.120 --> 01:42.120
Teraz wszystko będzie łatwe.

01:42.160 --> 01:47.860
Będziemy przekazywać stan wejściowy do sieci neuronowej, który budujemy tuż powyżej z

01:47.860 --> 01:54.520
następną klasą, a następnie otrzymamy wyniki, które są kluczowymi wartościami dla każdej z trzech możliwych

01:54.520 --> 01:59.530
akcji, a następnie używając miękkiej metody Max, którą wyjaśnię w tym

01:59.530 --> 02:00.360
samouczku.

02:00.400 --> 02:03.140
Dostaniemy ostatnią akcję do zagrania.

02:03.280 --> 02:08.460
Zróbmy to, przejdźmy do funkcji i zaimplementujmy to wszystko.

02:08.470 --> 02:14.980
Tak więc pierwszą rzeczą, od której musimy zacząć, jest to, o czym właśnie wspomniałem. Max pomyślał,

02:14.980 --> 02:20.590
że Max ma wrażenie, że zamierzamy spróbować za każdym razem uzyskać najlepszą akcję.

02:20.740 --> 02:25.000
Ale jednocześnie będziemy badać różne działania.

02:25.000 --> 02:25.950
I jak to robimy.

02:25.960 --> 02:31.080
W jaki sposób możemy uzyskać najlepszą akcję do odegrania, wciąż badając pozostałe działania.

02:31.270 --> 02:39.250
Użyliśmy tego pomysłu, który polega na wygenerowaniu rozkładu prawdopodobieństw dla każdej z wartości

02:39.250 --> 02:40.370
q.

02:40.420 --> 02:42.100
Działanie Q States.

02:42.160 --> 02:46.600
Teraz mamy jedną wartość Q dla każdej akcji w lewo idź prosto lub idź w prawo.

02:46.850 --> 02:49.680
Ale ta wartość q zależy również od stanu wejścia.

02:49.690 --> 02:52.720
Taka jest funkcja Q na wykładach intuicyjnych.

02:52.870 --> 02:56.280
Ta funkcja Q jest funkcją stanu i akcji.

02:56.320 --> 03:02.540
Skoro mamy tutaj jeden stan wejściowy, który jest tutaj stanem i trzy możliwe

03:02.540 --> 03:09.070
akcje, mamy trzy nowe wartości Q. Działanie państwa 1 Działanie stanu Q 2 i dwa

03:09.070 --> 03:13.760
działanie 3 i będziemy generować rozkład prawdopodobieństw w odniesieniu do tych trzech kluczowych wartości.

03:13.930 --> 03:19.420
Oznacza to, że będziemy mieć jedno prawdopodobieństwo dla pierwszej wartości Q, jedno z prawdopodobieństwa dla

03:19.420 --> 03:25.490
drugiej wartości Q i trzecie prawdopodobieństwo dla trzeciego Q, a wszystkie trzy prawdopodobieństwa będą sumować do 1.

03:25.670 --> 03:31.840
I tak zrobimy to wszystko z soughed Max, a soughed Max przypisze duże prawdopodobieństwo do

03:32.170 --> 03:33.530
najwyższego Q wokół.

03:33.820 --> 03:41.050
Dlatego alternatywą dla miękkiego Maxa jest prosty RMX no bezpośrednio przyjmujący maksymalne wartości q, ale w

03:41.530 --> 03:44.860
tym przypadku nie badamy innych działań.

03:44.920 --> 03:50.500
Dzięki tym prawdopodobieństwom możemy zbadać gdzie indziej, używając parametru temperatury, który będziemy

03:50.500 --> 03:51.900
widzieć bardzo szybko.

03:52.210 --> 03:55.990
Wciąż możemy je badać, konfigurując ten parametr temperatury.

03:56.020 --> 04:03.380
Dlatego ogólnie rzecz biorąc dla bezpieczeństwa zdecydowanie zalecam używanie raczej miękkiego x niż zwykłego RMX.

04:03.460 --> 04:06.990
W porządku, więc zastosujmy X, a zatem tak, jak to rozumieliście.

04:07.060 --> 04:12.990
Od soughed Max zwraca prawdopodobieństwa każdej z trzech wartości Q dla trzech możliwych działań.

04:13.180 --> 04:20.120
Cóż, pierwsza zmienna, którą zamierzamy stworzyć, prawdopodobnie odnosi się oczywiście do tych prawdopodobieństw.

04:20.450 --> 04:26.680
Więc rekwizyty są równe, a teraz mamy zamiar wziąć naszą kolejną funkcję i według ciebie, skąd

04:26.680 --> 04:28.070
mamy ją wziąć.

04:28.330 --> 04:31.600
Cóż, oczywiście, pamiętajmy, że zaimportowaliśmy.

04:31.700 --> 04:38.130
A następnie działa funkcjonalny moduł, o którym przypominam, to moduł, który zawiera większość akcji służących do

04:38.140 --> 04:39.790
implementacji sieci neuronowej.

04:39.820 --> 04:44.980
Daliśmy mu skrót F, a więc faktycznie z tego funkcjonalnego submodułu, że

04:44.980 --> 04:46.990
przejmiemy naszą następną funkcję.

04:47.290 --> 04:53.830
Ponieważ jednak nadaliśmy mu skrót f, zaczynamy tutaj od funkcji reprezentującej Neph, od

04:54.040 --> 04:56.080
której bierzemy następną funkcję.

04:56.080 --> 04:56.920
Oto jest.

04:56.980 --> 04:59.540
To jest pierwszy i nawias.

04:59.770 --> 05:00.160
W porządku.

05:00.200 --> 05:03.920
Teraz, co musimy wprowadzić w następnej funkcji.

05:04.150 --> 05:10.020
Cóż, to oczywiście podmioty, dla których chcemy wygenerować rozkład prawdopodobieństwa.

05:10.190 --> 05:11.430
A jakie są te istoty.

05:11.550 --> 05:13.870
Cóż, są to oczywiście kluczowe wartości.

05:13.870 --> 05:16.790
Teraz pytanie brzmi: jak możemy uzyskać wartości q.

05:16.960 --> 05:22.720
Oczywiście wartości q są wynikiem działania sieci neuronowej i uzyskania tych wyników sieci

05:22.720 --> 05:23.410
neuronowej.

05:23.590 --> 05:24.560
No to idziemy.

05:24.610 --> 05:26.830
Musimy wziąć naszą nową sieć.

05:27.100 --> 05:33.520
Ale w rzeczywistości już to mamy, ponieważ to jest to, co zostało zainicjowane w końcu, to funkcja.

05:33.530 --> 05:39.980
Wiemy, że stworzyliśmy model samouka, który nie jest niczym innym, co nie zadziała, ponieważ jest nowym

05:40.290 --> 05:41.540
obiektem klasy sieci.

05:41.600 --> 05:42.820
I to jest idealne.

05:42.830 --> 05:49.040
Możemy po prostu wziąć nasz model tutaj i dalej zastosować ten model do stanu wejściowego, który

05:49.040 --> 05:52.950
jest tutaj argumentem i który zwróci wyniki, których szukamy.

05:53.090 --> 05:54.440
To są kluczowe wartości.

05:54.560 --> 06:00.260
I tak teraz twoja intuicja, dlaczego musieliśmy wziąć model tutaj, aby wprowadzić go w funkcji, może się

06:00.260 --> 06:00.840
poprawić.

06:00.920 --> 06:06.410
Ci z was, którzy zaczynają od programowania obiektowego, zobaczą, że wszystko to stanie się wtedy

06:07.100 --> 06:08.780
naturalne i tak miękkie.

06:08.870 --> 06:16.840
Tak więc bierzemy model własny model, ponieważ musi to być model obiektu, który tutaj stworzyliśmy.

06:17.180 --> 06:24.350
Ale wtedy musimy uzyskać wynik naszego modelu sieci neuronowej, a zatem usłyszymy nawiasy, w

06:24.350 --> 06:30.400
których mamy zamiar wprowadzić tutaj stan wejściowy o nazwie state.

06:30.620 --> 06:39.350
Więc na początku chcemy wprowadzić stan, ale teraz musimy uważać, aby coś wyglądało jak prosty

06:39.350 --> 06:40.560
zestaw.

06:40.790 --> 06:46.850
Należy jednak pamiętać, że stan faktycznie będzie czujnikiem pochodni, ponieważ później użyjemy tej komórki

06:46.920 --> 06:52.190
w stanie mniejszym, aby umieścić ją jako argument funkcji Wybierz akcję.

06:52.190 --> 06:57.430
Argument państwa, który jest tutaj, w rzeczywistości stanie się później tym samoukiem mniejszego stanu.

06:57.680 --> 07:01.680
A ponieważ jest to torturowany świat odpowiedzi, model go zaakceptuje.

07:01.760 --> 07:02.690
To w porządku.

07:02.810 --> 07:05.000
Ale teraz możemy ulepszyć algorytm.

07:05.180 --> 07:12.490
Tak więc, jak tylko stan jest czujnikiem palnika i jak powiedzieliśmy wcześniej, większość czujników jest zapakowana do

07:12.500 --> 07:13.260
wojewody.

07:13.320 --> 07:15.640
To również będzie zawierało gradient.

07:15.650 --> 07:22.110
Więc teraz, co zrobimy najpierw, zawijamy ten stan wejściowy, który jest tensorem w latarkę,

07:22.110 --> 07:27.990
ale ponieważ jest to stan wejściowy Cóż, nie będzie żadnego zróżnicowania.

07:28.160 --> 07:34.700
Nie będziemy używać gradientu tego wojewody torchów, a mogą to być

07:34.880 --> 07:45.530
stacje i dlatego to, co teraz zrobimy, przekształci ten stan czujnika pochodni w zmienną palnika, tak jak to.

07:45.780 --> 07:51.400
Ale potem, aby określić, że nie chcemy, aby gradienty na wykresie były w ogóle dostępne dla drapieżników na

07:51.400 --> 07:52.380
końcu Mudgala.

07:52.570 --> 07:57.800
Cóż, w tym momencie zmienimy volatile jest prawdą.

07:58.150 --> 08:06.160
Tak więc teraz mamy nasz stan podpięty czujnik do latarki bardzo dobrze, ale dzięki temu Votel równa się

08:06.160 --> 08:07.200
prawdziwy barometr.

08:07.390 --> 08:14.950
Cóż, uwzględnimy gradienty związane z tymi stanami wejściowymi do wykresu wszystkich warunków końca w

08:15.100 --> 08:16.530
tym modelu.

08:16.840 --> 08:18.530
To kolejna techniczna sztuczka.

08:18.550 --> 08:23.130
Pozwoli to zaoszczędzić nam trochę pamięci, a to poprawi wydajność.

08:23.170 --> 08:27.850
Dlatego bardzo polecam to zrobić, a teraz dodamy coś fajniejszego.

08:27.910 --> 08:30.640
Chodzi o ten parametr temperatury, o którym właśnie wspomniałem.

08:30.850 --> 08:36.190
Tak więc ten parametr temperatury jest parametrem, który pozwoliłby nam modulować, w jaki

08:36.190 --> 08:40.040
sposób sieć neuronowa będzie pewna, którą akcję należy podjąć.

08:40.210 --> 08:47.290
Tak więc ten parametr temperatury będzie liczbą dodatnią i im bliżej jest do zera, tym mniej pewne, że sieć

08:47.290 --> 08:53.200
neuronowa będzie grała w akcji, a im wyższy parametr temperatury, tym większa pewność, że sieć neuronowa

08:53.410 --> 08:56.540
będzie działaniem, w którym decyduje się grać .

08:56.890 --> 09:04.480
I żeby dodać ten parametr, pomnożę wyjścia, które są Kuganami używanymi przez ten parametr

09:04.480 --> 09:05.250
temperatury.

09:05.500 --> 09:13.440
Zacznijmy, na przykład, od 7, a tu opiszę mały komentarz T równy 7.

09:13.460 --> 09:15.610
To jest parametr temperatury.

09:15.690 --> 09:17.210
Przepraszam, idź do 7.

09:17.260 --> 09:21.010
Zamierzamy wypróbować inne, ale chcę zacząć od małej, ponieważ zobaczysz

09:21.010 --> 09:22.470
to z małym.

09:22.510 --> 09:28.150
Nasz samochód nadal będzie się zachowywał jak jakiś owad, ale potem zwiększając parametr temperaturowy nasz

09:28.510 --> 09:34.340
kod będzie wyglądał bardziej jak samochód i zdecyduje się sprzedać prowadzenie samochodu będzie o wiele lepszy.

09:34.480 --> 09:40.450
I to ma sens, ponieważ im wyższy jest ten parametr temperatury,

09:40.450 --> 09:48.010
tym większe będzie prawdopodobieństwo wygranej Juval me, ponieważ na przykład jeśli mamy miękkie maksimum q wartości.

09:48.190 --> 09:54.850
Weźmy kilka prostych liczb jeden dwa trzy, jeśli wypchane maks. Jeden do trzech równa się.

09:54.850 --> 10:01.150
Na przykład 0. 04 0. 11 i otwórz osiemdziesiąt pięć.

10:01.270 --> 10:05.650
Następnie zwiększając temperaturę, przyjmując wyższą temperaturę.

10:05.680 --> 10:13.360
W tej chwili temperatura jest równa jednej przez wzięcie wysokiej temperatury, jak na przykład odejmowanie Tussaud,

10:13.360 --> 10:22.210
skopiujmy to i pomnóżmy przez np. Dwa lub trzy, aby następnie uzyskać te same wartości, ale pomnożyć przez

10:22.210 --> 10:24.110
parametr temperatury trzech.

10:24.370 --> 10:31.390
Cóż, otrzymamy coś w rodzaju zera dla pierwszej wartości Q, ponieważ miało to bardzo małe prawdopodobieństwo, że

10:31.530 --> 10:38.020
coś około zera, a następnie coś bardzo małego dla drugiego prawdopodobieństwa, ponieważ było to wciąż

10:38.020 --> 10:39.260
małe prawdopodobieństwo.

10:39.410 --> 10:42.910
Powiedzmy na przykład lub punkt 0 2.

10:43.320 --> 10:49.910
Ale to trzecie prawdopodobieństwo, ponieważ było największe i dość wysokie.

10:50.140 --> 10:55.180
Wraz ze wzrostem temperatury prawdopodobieństwo to będzie jeszcze większe, ponieważ będziemy jeszcze

10:55.180 --> 11:02.230
bardziej pewni, że jest to właściwa wartość Q odpowiadająca akcji, którą musimy grać, a zatem będzie to

11:02.230 --> 11:05.630
coś w rodzaju 0. 2 98.

11:05.980 --> 11:11.800
Teraz, zwiększając parametr temperatury Cóż, teraz jesteśmy jeszcze bardziej pewni, że trzecia akcja tutaj powinna

11:11.800 --> 11:17.530
być akcją do grania, ponieważ prawdopodobieństwo wartości q tego działania jest nie tylko największe,

11:17.530 --> 11:19.590
ale także bardzo wysokie.

11:19.840 --> 11:22.600
Właśnie o to chodzi w tym parametrze temperatury.

11:22.660 --> 11:27.340
Chodzi o pewność, w którym kierunku powinniśmy grać.

11:27.340 --> 11:27.610
W porządku.

11:27.610 --> 11:29.450
Więc usunę ten komentarz.

11:29.470 --> 11:31.000
To było tylko wyjaśnienie.

11:31.200 --> 11:33.490
A teraz podejmijmy naszą akcję.

11:33.490 --> 11:35.370
Jak zamierzasz to zrobić?

11:35.560 --> 11:41.440
Zasada następnej metody polega nie tylko na wygenerowaniu rozkładu prawdopodobieństwa dla każdej z kluczowych

11:41.440 --> 11:46.390
wartości, ale także i jest to drugi etap miękkiej metody następnej.

11:46.480 --> 11:51.820
Pobieramy losowe losowanie z tej dystrybucji, aby uzyskać ostateczną akcję.

11:52.010 --> 11:57.310
I oczywiście będziemy mieli dużą szansę na uzyskanie akcji, która odpowiada wartości Q,

11:57.310 --> 12:01.660
która ma największe prawdopodobieństwo, ponieważ właśnie tak działa dystrybucja.

12:01.660 --> 12:02.550
Więc idziemy.

12:02.560 --> 12:04.040
Przyjmijmy naszą akcję.

12:04.060 --> 12:11.380
Więc zamierzamy wprowadzić nowego Wojewodę, który nazwiemy akcją, a ta akcja będzie losowym

12:11.380 --> 12:17.460
losowaniem rozkładu prawdopodobieństwa, który właśnie stworzyliśmy w tym czasie.

12:17.510 --> 12:20.100
Jak więc uzyskać takie losowe losowanie.

12:20.200 --> 12:26.410
No cóż, weźmiemy pod uwagę prawdopodobieństwo każdego z kluczowych wartości, które pobieramy,

12:26.650 --> 12:34.120
a następnie dart, a następnie użyjemy funkcji multi Gnomeo, która da nam losowy wynik z

12:34.120 --> 12:36.030
tego procesu dystrybucji.

12:36.160 --> 12:38.420
Więc to wszystko spowoduje jego reakcję.

12:38.470 --> 12:39.280
Idealny.

12:39.490 --> 12:42.790
A teraz oczywiście zamierzamy zwrócić akcję.

12:42.790 --> 12:44.730
Tu jest mała sztuczka.

12:44.810 --> 12:51.460
Co to jest fakt, że to Propst, że wielomian zwraca PI w kierunku rentowności z fałszywą odznaką.

12:51.490 --> 12:57.210
Znasz te fałszywe diamenty i odpowiadające partii, a zatem, aby uzyskać prawidłowy wynik, chcemy, aby

12:57.220 --> 13:00.540
było to działanie w 0 1 lub 2.

13:00.820 --> 13:08.200
Musimy tylko dodać tutaj dane, a następnie kilka nawiasów, a akcje tutaj to jeden lub

13:08.230 --> 13:13.100
dwa, których szukamy, a zawartość to 0 i 0.

13:13.570 --> 13:14.000
W porządku.

13:14.000 --> 13:14.730
I oto idziemy.

13:14.740 --> 13:21.420
Teraz mamy naszą akcję dzięki tej funkcji wyboru akcji, którą AI będzie teraz wiedzieć, którą akcję odegrać.

13:21.490 --> 13:22.440
I za każdym razem.

13:22.810 --> 13:23.460
Przerażający.

13:23.500 --> 13:27.430
Teraz możemy przejść do następnej funkcji, która będzie funkcją uczenia się.

13:27.520 --> 13:32.410
I tutaj będziemy trenować całą sieć neuronową, którą znamy z całą propagacją do przodu,

13:32.410 --> 13:35.790
a następnie propagacja wsteczna jest kategoryzacją w tym sensie.

13:35.950 --> 13:41.500
Zasadniczo wdrożymy cały trening modelu głębokiego uczenia się, który jest sercem

13:41.560 --> 13:43.340
naszej sztucznej inteligencji.

13:43.480 --> 13:44.680
Więc nie mogę się doczekać, aby to zrobić.

13:44.680 --> 13:49.290
To będzie ekscytujący samouczek, więc do zobaczenia w następnym Statoil.

13:49.510 --> 13:50.670
Do tego czasu ciesz się.

13:50.720 --> 13:51.000
JA.
