WEBVTT

00:00.630 --> 00:03.170
Cześć i witamy w tutorialu Python.

00:03.170 --> 00:03.500
W porządku.

00:03.510 --> 00:09.120
Teraz w następnej funkcji, którą zamierzamy wdrożyć Będziemy szkolić głęboką sieć neuronową, która

00:09.120 --> 00:11.470
jest wewnątrz naszej sztucznej inteligencji.

00:11.490 --> 00:16.980
Zasadniczo zamierzamy przeprowadzić cały proces propagacji, a następnie propagacji wstecznej.

00:16.980 --> 00:19.140
Tak więc zamierzamy uzyskać nasze wyniki.

00:19.200 --> 00:20.850
Dostaniemy cel.

00:20.890 --> 00:26.020
Porównamy dane wyjściowe celu, aby obliczyć ostatni błąd, a następnie cofniemy propagację tego

00:26.130 --> 00:28.410
ostatniego błędu do nowej sieci.

00:28.680 --> 00:33.960
I za pomocą sugerowanego spadku gradientu, który będzie musiał czekać, w zależności od tego, ile przyczyniły się do

00:33.960 --> 00:34.780
ostatniego błędu.

00:35.190 --> 00:39.030
Zróbmy to wszystko dla tych, którzy pochodzą z głębokiego korpusu piechoty morskiej.

00:39.030 --> 00:43.850
To będzie dobre rzeczy, ale dla innych nie martw się, zamierzam rozwinąć to jeszcze raz.

00:44.160 --> 00:51.630
Więc nazwiemy tę nową funkcję, funkcja uczenia się i uczenia się będzie wymagała kilku argumentów.

00:51.630 --> 00:57.350
Najpierw oczywiście, co będzie odnosić się do przedmiotu stopnia w klasie.

00:57.510 --> 01:08.770
Następnie weźmiemy stan w batalii dla bieżącego stanu, a następnie nasz kolejny wsad,

01:08.860 --> 01:15.570
następnie naszą Nagrodę, a wreszcie akcję Arbata.

01:15.590 --> 01:16.960
Dlaczego więc to przyjmujemy.

01:16.970 --> 01:19.770
Prawdopodobnie rozpoznałeś, czym jest ta seria.

01:19.880 --> 01:26.350
Cóż, to oczywiście jest przejście procesu decyzyjnego na rynku, który leży u podstaw.

01:26.360 --> 01:27.440
Czy nauczyłeś się.

01:27.500 --> 01:30.420
I dlaczego wszyscy weźmiemy ich do kilku partii.

01:30.560 --> 01:36.200
Cóż, to dlatego, że wiesz, że nie bierzemy pod uwagę przejść przez serię najlepszych

01:36.200 --> 01:39.630
lub aktualnych stanów bieżącego nagrania i bieżącej akcji.

01:39.650 --> 01:44.050
Stworzyliśmy tutaj kilka prostych partii dzięki prostej funkcji.

01:44.210 --> 01:48.430
I tak teraz nasze przejścia są w formie pierwszej partii dla tego stanu.

01:48.500 --> 01:53.520
Druga partia dla następnej daty partia dla nagrody i partia dla akcji.

01:53.510 --> 01:59.090
Taka jest obecnie forma naszego przejścia i są one dobrze dostosowane do czasu

01:59.090 --> 02:04.150
dzięki tej konkatenacji, którą uczyniliśmy tutaj w odniesieniu do pierwszego wymiaru.

02:04.160 --> 02:10.460
Chodzi o to, że mamy te przejścia partii jednej partii dla każdego stanu w następnym dniu, w którym

02:10.450 --> 02:15.400
ją oglądamy w akcji, i robimy to wszystko, ponieważ używamy tej sztuczki powtórzenia doświadczenia.

02:15.530 --> 02:18.580
To nasza głęboka sieć neuronowa może się czegoś nauczyć.

02:18.590 --> 02:24.190
Pamiętasz, gdybyś sam przeszedł transformację, to byłaby jakaś błyskawiczna nauka.

02:24.260 --> 02:28.930
Lub jeśli chcesz nauczyć się bardzo krótkiej pamięci i dlatego kret nie nauczy się niczego.

02:29.180 --> 02:35.690
Musimy więc wziąć te partie z pamięci, które stają się naszymi przejściami, a następnie ostatecznie otrzymamy

02:35.690 --> 02:40.940
różne wyniki dla każdego z stanów stanów wejściowych i zrobimy to dla stanów

02:41.160 --> 02:45.620
i dla następnych stanów, ponieważ będziemy potrzebować zarówno obliczyć stratę.

02:45.680 --> 02:51.860
Wkrótce przypomnę równanie równowagi, które jest w centrum algorytmu uczenia się.

02:51.860 --> 02:57.120
A więc teraz przejdźmy do funkcji i najpierw zdobądźmy wyjścia stanu skrzynki.

02:57.170 --> 03:04.740
Tak więc zamierzam nazwać pierwsze dobre wyniki, a potem powiemy oczywiście, że samo-mówienie

03:04.740 --> 03:07.670
nie jest tak proste.

03:07.740 --> 03:14.160
Nie, ponieważ chcemy uzyskać nasze modele wyników stanów wejściowych stanu.

03:14.510 --> 03:19.110
A ponieważ nasz model faktycznie oczekuje serii stanów wejściowych.

03:19.310 --> 03:25.330
Cóż, możemy teraz całkowicie wprowadzić ten stan, aby wprowadzić je wszystkie.

03:25.340 --> 03:31.550
Właśnie tak zainicjowaliśmy stany, które trafiają do sieci z odpowiedzią na tortury z tym

03:31.550 --> 03:35.080
niejasnym wymiarem dla partii, która jest idealna.

03:35.180 --> 03:37.720
Teraz otrzymujemy wyniki wszystkich.

03:37.880 --> 03:45.680
Ale jest jeszcze inna techniczna sztuczka, jeśli sprzedamy tylko ten model, a otrzymamy wyniki wszystkich możliwych działań,

03:45.860 --> 03:50.980
które znasz 0 1 i 2, ale tego nie chcemy.

03:50.990 --> 03:54.580
Interesują nas tylko wybrane działania.

03:54.740 --> 04:01.190
Działania, które zdecydowały się grać w sieci za każdym razem i tak,

04:01.190 --> 04:09.320
aby zainteresować się nimi, to działania dobrze odgrywane, musimy użyć tej funkcji gromadzenia, w której ją

04:09.320 --> 04:16.840
wpisujemy, ponieważ chcemy tylko akcji, która została wybrana, a następnie dodamy tę akcję do tego.

04:16.880 --> 04:23.600
I w tej sekcji zbieramy za każdym razem najlepszą akcję do gry dla każdego z stanów

04:23.600 --> 04:24.560
wejściowych stanu.

04:24.830 --> 04:30.690
Nie chcemy, aby akcja, która jest wybrana, wybraną akcją, a otrzymujemy to, aby zebrać

04:30.840 --> 04:31.770
taką akcję.

04:32.130 --> 04:33.390
Ale potem bądź ostrożny.

04:33.450 --> 04:40.190
Państwo tutaj ma te fałszywe diamenty i smary do partii i ta sekcja go nie ma.

04:40.190 --> 04:46.190
Backstay ma to, ponieważ przywykliśmy do Unsworth tutaj, ale nie używaliśmy żadnego uścisku ręki

04:46.430 --> 04:52.880
dla akcji, więc musimy dodać to tutaj, aby akcja Bache miała dokładnie taki sam wymiar jak stan.

04:53.150 --> 05:02.710
Więc dodamy kropkę i wyciśniemy tu twoje prawo, a właściwie to nie jest zero, ale jedno, ponieważ zerowa odpowiedź

05:03.200 --> 05:09.120
na wiarę nie jest stanem i jedna będzie odpowiadać badaniu działań.

05:09.370 --> 05:16.540
I w końcu ostatnią rzeczą, którą musimy tutaj zrobić, jest to, że musimy zabić tę fałszywą partię przez ściśnięcie.

05:16.600 --> 05:18.010
Dlaczego musimy to zrobić.

05:18.130 --> 05:20.130
Ponieważ teraz jesteśmy poza siecią neuronową.

05:20.200 --> 05:22.820
Mamy nasze wyniki, ale nie chcemy ich z powrotem.

05:22.900 --> 05:24.080
Chcemy ich.

05:24.190 --> 05:26.260
Prosta odpowiedź to prosty wektor.

05:26.260 --> 05:31.540
Wektor wyjścia partiami właśnie wtedy, gdy pracujemy w sieci neuronowej, ponieważ sieć

05:31.540 --> 05:34.880
neuronowa oczekuje formatu czujników w partii.

05:34.990 --> 05:40.510
Ale teraz mamy nasze wyniki, aw następnym równaniu balunowym głębokiego uczenia się nie będziemy

05:40.510 --> 05:41.530
ich potrzebować.

05:41.530 --> 05:48.130
Więc zabijam to tutaj i zabijam wymiar wiary, aby odzyskać prostą formę naszych wyników.

05:48.160 --> 05:54.530
Dodaję tutaj Dot, a następnie ściskam, a potem, ponieważ chcę zabić fałszywą laminację

05:54.540 --> 05:56.120
odpowiadającą tyłowi akcji.

05:56.250 --> 06:01.430
Cóż, odkąd silnik czasoprzestrzeni ma indeks jeden, dodaję go tutaj.

06:01.560 --> 06:02.050
W porządku.

06:02.100 --> 06:05.480
A teraz tam mamy nasze wyniki.

06:05.490 --> 06:05.910
DOBRZE.

06:06.000 --> 06:11.100
Mamy małe ostrzeżenie, co to jest, że dane wyjściowe zmiennej lokalnej są przypisane, ale nigdy nie są używane.

06:11.190 --> 06:11.860
W porządku.

06:11.880 --> 06:13.510
Wykorzystamy to bardzo szybko.

06:13.920 --> 06:15.540
To są nasze wyniki.

06:15.600 --> 06:23.660
A teraz chcemy uzyskać nasze kolejne outwity Więc teraz możesz pomyśleć, dlaczego potrzebujemy kolejnych wyników.

06:23.840 --> 06:29.160
Aby to zrozumieć, musimy powrócić do algorytmu głębokiego uczenia się, który

06:29.180 --> 06:31.670
jest właśnie częścią podręcznika letaka.

06:31.850 --> 06:33.820
To cały proces dyfuzji.

06:33.860 --> 06:39.180
Na początku inicjalizowaliśmy wszystkie kluczowe wartości, a następnie za każdym razem t.

06:39.440 --> 06:44.770
No cóż, wybieramy akcję z soughed Max, co zrobiliśmy z funkcją wyboru akcji.

06:44.870 --> 06:51.050
Potem otworzyliśmy przejście, a potem, jak widać, otrzymujemy prognozę, którą otrzymujemy, i możemy

06:51.050 --> 06:52.120
być ostatnią.

06:52.190 --> 06:54.330
Dlaczego więc potrzebujemy kolejnego wyjścia?

06:54.350 --> 07:01.640
To dlatego, że cel jest równy Ghanie razy kolejny wynik plus chcemy, a my obliczymy

07:01.640 --> 07:06.060
cele zaraz po tym, ponieważ potrzebujemy następnego wyniku docelowego.

07:06.200 --> 07:07.790
Obliczmy to najpierw.

07:07.820 --> 07:14.060
Ponownie, aby kolejna aktualizacja była bardzo prosta, następne wyjście będzie wynikiem naszej sieci

07:14.060 --> 07:19.180
neuronowej, gdy następny stan wsadowy jest wprowadzany jako wejście.

07:19.190 --> 07:27.110
Tak więc po prostu bierzemy nasz model, który jest naszą siecią neuronową, a następnie tym razem wejście sieci

07:27.110 --> 07:33.020
neuronowej będzie kolejnym stanem w batalii, który jest pakowany w następną datę.

07:33.200 --> 07:41.290
Ale teraz pamiętajcie, jeśli powrócimy do wczesnego algorytmu. Widać, że następnym wyjściem jest maksymalna wartość q

07:41.290 --> 07:45.530
dla następnego stanu w odniesieniu do wszystkich działań.

07:45.730 --> 07:51.790
Tak więc teraz, aby uzyskać następne wyniki, potrzebujemy uzyskać maksymalne wartości q, a zatem zamierzam

07:51.790 --> 07:52.720
to zrobić.

07:52.840 --> 08:00.550
Odłącz, jak wiesz, odłączyć wszystkie wyjścia modelu, ponieważ mamy kilka stanów w tej partii kolejnych stanów, to

08:00.550 --> 08:06.730
jest partia wszystkich kolejnych stanów we wszystkich przejściach pobranych z losowej próbki naszej

08:06.730 --> 08:07.620
pamięci.

08:07.840 --> 08:14.530
Odłączam je wszystkie za pomocą funkcji odłączania, a następnie przyjmuję maksimum wszystkich tych dwóch

08:14.530 --> 08:15.250
wartości.

08:15.340 --> 08:20.920
A skoro przyjmujemy maksimum tych dwóch wartości w odniesieniu do akcji, to musimy określić, że jest

08:20.920 --> 08:23.080
to w odniesieniu do akcji.

08:23.080 --> 08:26.310
A ponieważ akcja jest reprezentowana przez indeks pierwszy.

08:26.530 --> 08:32.770
Znowu musimy tu umieścić następną, a następnie musimy określić, że przyjmujemy wartości cue

08:33.290 --> 08:41.140
jako T plus 1, który jest następnym etapem, a następny stan jest reprezentowany przez 0, ponieważ indeks

08:41.380 --> 08:47.370
zero odpowiada stanom i dlatego tutaj musimy dodać nawiasy z indeksem 0.

08:47.770 --> 08:54.400
W ten sposób uzyskujemy maksimum kluczowych wartości kolejnych stanów reprezentowanych przez kolejne zero, zgodnie

08:54.400 --> 09:01.490
ze wszystkimi działaniami, które są reprezentowane przez indeks pierwszy, a teraz doskonałe otrzymujemy kolejne wyniki.

09:01.570 --> 09:02.860
To jest nowy zestaw.

09:02.870 --> 09:04.320
Właśnie wtedy otrzymaliśmy ostrzeżenie.

09:04.320 --> 09:05.050
Ale to w porządku.

09:05.080 --> 09:07.950
Wykorzystamy go teraz, aby obliczyć cel.

09:08.470 --> 09:12.510
Mówiąc o celu, który jest następnym krokiem tej znanej funkcji.

09:12.520 --> 09:13.210
Więc idziemy.

09:13.220 --> 09:15.460
Cel jest równy.

09:15.670 --> 09:18.220
Teraz wróćmy do naszego podręcznika AI AI.

09:18.400 --> 09:24.800
Cel jest równy wyrazowi plus czasy gamma, a następny wynik to maksimum wartości kostki następnego

09:24.800 --> 09:25.710
dnia.

09:25.930 --> 09:29.290
Zgodnie z działaniami, które możemy to obliczyć.

09:29.340 --> 09:35.590
Więc to jest równe sobie, że gamma i ja, które Gamma została zainicjowana.

09:35.590 --> 09:45.100
Tutaj wprowadza się, że jest to zmienna Virgin Q Obiekt self dostać się do Times kolejne wyjścia, jak

09:45.100 --> 09:49.910
właśnie powiedział plus Czy chcemy, aby to było najlepsze.

09:49.940 --> 09:57.400
Pracujemy z partiami tutaj, więc plus partia, którą chcemy i to jest cel.

09:57.520 --> 10:03.820
W jednej z próbek pamięci gamma pomnożonej przez kolejne wyjścia Plus nagroda.

10:03.900 --> 10:04.480
W porządku.

10:04.480 --> 10:05.080
Idealny.

10:05.110 --> 10:07.100
Teraz mamy nasze wyniki.

10:07.180 --> 10:13.270
Mamy również nasze cele i dlatego możemy obliczyć stratę straty, która reprezentuje błąd

10:13.270 --> 10:14.260
prognozy.

10:14.500 --> 10:21.000
Nazwijmy to ostatnie, ostatnie dwie są oczywiście różnicą czasową.

10:21.040 --> 10:28.720
To znów jest sedno uczenia się Q, a to nam dopadło będzie równe wydaniu, które

10:28.720 --> 10:30.330
znacznie poprawia Cunanan.

10:30.520 --> 10:34.730
To jest ostatnia funkcja, którą wybierzemy dla naszej sztucznej inteligencji.

10:34.800 --> 10:38.640
Dla tych, którzy przyjeżdżają z głębokiego zielonego kursu, to naprawdę ostatni, polecam.

10:38.680 --> 10:43.280
Jeśli chcesz wdrożyć Coonerty i jak mamy to uzyskać.

10:43.510 --> 10:50.380
Znowu przyjmiemy funkcję z modułu funkcjonalnego reprezentowanego przez F i

10:50.380 --> 10:57.970
dlatego zamierzam użyć naszego modułu funkcjonalnego f kaczki, a Hubble'a można uzyskać

10:57.970 --> 11:02.420
dzięki funkcji, którą Smoots L-1 kocha.

11:02.420 --> 11:03.850
Więc naciskając enter.

11:03.850 --> 11:07.910
I to jest naprawdę najlepsza utracona funkcja, którą polecam do głębokiego uczenia się.

11:07.930 --> 11:09.680
To naprawdę poprawia Culin.

11:09.820 --> 11:12.670
Ale to jest funkcja, więc dodaję nawiasy.

11:12.850 --> 11:14.740
A teraz nie ma nic prostszego.

11:14.830 --> 11:19.340
Argumenty, które musimy wprowadzić, to przewidywania i cele.

11:19.420 --> 11:24.010
Zatem prognozy oczywiście są wyjściami, ponieważ są wynikiem działania sieci neuronowej.

11:24.190 --> 11:27.600
Żadne wyjście sieci neuronowej nie jest tym, co przewiduje sieć neuronowa.

11:27.730 --> 11:29.030
To jest prognoza.

11:29.260 --> 11:35.900
Tak więc pierwszym argumentem tutaj są wyniki, a drugim argumentem jest oczywiście cel.

11:36.100 --> 11:40.110
To, co próbujemy osiągnąć, jest już doskonałe.

11:40.150 --> 11:43.150
Możemy bezpośrednio wprowadzić cel.

11:43.150 --> 11:43.630
Idealny.

11:43.650 --> 11:48.200
Teraz powiedzieliśmy nam, że mamy tu trochę herbaty.

11:48.220 --> 11:48.760
No to jedziemy.

11:48.760 --> 11:50.470
Teraz ostrzeżenie powinno zniknąć.

11:50.890 --> 11:51.420
Tak.

11:51.430 --> 11:52.110
Idealny.

11:52.180 --> 11:58.090
A teraz, gdy mamy ostatni błąd, możemy przywrócić błąd propagatorów z powrotem do sieci, aby zaktualizować wagi

11:58.090 --> 12:03.230
za pomocą stochastycznego gradientu i to jest dokładnie to, co zrobimy w następnym kroku.

12:03.490 --> 12:12.040
Tak więc oczywiście teraz, co musimy zrobić, jak można się domyślić, zajmiemy się optymalizacją naszego optymalizatora,

12:12.190 --> 12:14.850
który ponownie wprowadzimy, zainicjalizujemy.

12:15.030 --> 12:21.430
I to jest optymalizator atomu, który jest faktycznie obiektem klasy Atom i jest już wyposażony

12:21.580 --> 12:23.720
w parametry naszego modelu.

12:23.810 --> 12:31.480
I już wybraliśmy współczynnik uczenia się 0. 1 procent do perfekcji naszego optymalizatora jest gotowy, ale

12:31.480 --> 12:37.150
teraz musimy zagrać na ostatnim błędzie, aby wykonać siatkę stochastyczną w znaczeniu i wadze danych.

12:37.180 --> 12:43.540
Dlatego podczas pracy z myśliwcami, pierwszą rzeczą, którą musimy zrobić, jest ponowne zainicjowanie jej w każdej iteracji

12:43.540 --> 12:44.150
pętli.

12:44.200 --> 12:50.620
Musimy ponownie zainicjować optymalizator z jednej interakcji na drugą w pętli, aby uzyskać siatkę w

12:50.660 --> 12:53.310
zestawie i ponownie ją zainicjować.

12:53.350 --> 12:54.820
I każda iteracja pętli.

12:55.200 --> 12:59.410
Cóż, zamierzamy użyć następującej metody, która wynosi zero.

12:59.940 --> 13:00.400
No to ruszamy.

13:00.410 --> 13:05.180
Zero grad ponownie zainicjalizuje optymalizator w każdej iteracji pętli.

13:05.230 --> 13:07.300
Więc nie zapominajmy o nawiasie.

13:07.390 --> 13:08.180
Idealny.

13:08.200 --> 13:14.850
A teraz, gdy jest to ponowne zainicjowanie Cóż, możemy przeprowadzić propagację wsteczną za pomocą naszego optymalizatora.

13:15.190 --> 13:16.380
I jak to robimy.

13:16.540 --> 13:22.660
Cóż, zabieramy nasze prawa, a my wrócimy do propagowania go z powrotem do sieci i

13:22.660 --> 13:24.330
do propagowania w sieci.

13:24.460 --> 13:33.190
Musimy użyć funkcji wstecznej i wewnątrz tej funkcji wstecznej zalecam wprowadzenie zachowaj zmienne podkreślenia

13:33.220 --> 13:37.180
i ustaw je jako prawdziwe.

13:37.240 --> 13:40.990
Polecam to zrobić, ponieważ poprawi to propagację wsteczną.

13:41.200 --> 13:46.420
Używanie zmiennych pisanych jest prawdziwe, aby zwolnić trochę pamięci i musimy

13:46.420 --> 13:52.730
zwolnić pamięć, ponieważ będziemy jechać kilka razy na końcu, co zdecydowanie poprawi wydajność treningu.

13:52.900 --> 13:58.980
I wreszcie ostatnim krokiem tej wyuczonej funkcji jest posiadanie wagi danych zgodnie z propagacją wsteczną.

13:58.980 --> 14:02.570
Jest to zależne od tego, ile wagi przyczyniły się do błędu.

14:02.800 --> 14:11.680
Aby to zrobić, ponownie korzystamy z naszego optymalizatora, który został zainicjowany w celu ponownego zainicjowania, a my używamy funkcji krokowej

14:12.250 --> 14:17.560
i po prostu z tym wierszem kodu za pomocą funkcji krokowej.

14:17.560 --> 14:19.450
To zaktualizuje wagi.

14:19.480 --> 14:21.860
To jest ta linia kodu, która aktualizuje wagi.

14:21.910 --> 14:28.750
Ta linia kodu, która propaguje błąd w sieci neuronowej, a ta linia kodu używa optymalizatora do

14:28.930 --> 14:31.510
aktualizacji wag i tam jedziemy.

14:31.510 --> 14:36.800
Mamy sieć neuronową do nauki, więc gratulujemy.

14:36.840 --> 14:42.320
To była chyba najbardziej techniczna i trudna część tego całego sporu.

14:42.450 --> 14:47.880
Wiem, że moja pochodnia czasami może być trudna, ściskać i ściskać, ale w końcu

14:47.880 --> 14:54.900
obiecuję, że dostaniesz bardzo funkcjonalną sieć neuronową, a co za tym idzie - szczególnie modelową i ostatecznie

14:54.960 --> 14:56.580
wielką sztuczną inteligencję.

14:56.580 --> 15:03.150
Przejdźmy teraz do następnego kroku lub nauczyciela i modelu, który będzie funkcją aktualizacji, która

15:03.210 --> 15:07.170
oczywiście zaktualizuje się, gdy AI odkryje nowy stan.

15:07.170 --> 15:11.420
Więc wiesz, że odkryje nowy stan, a potem otrzyma nagrodę.

15:11.520 --> 15:16.860
W zależności od wyświetlanej akcji, ten nowy stan zajmie się tym za pomocą funkcji aktualizacji

15:16.860 --> 15:19.510
i zrobi to w następnym samouczku.

15:19.710 --> 15:21.000
Do tego czasu ciesz się.

15:21.020 --> 15:21.300
JA.
