WEBVTT

00:01.340 --> 00:02.810
Witam ponownie.

00:03.200 --> 00:10.010
W ostatnim wykładzie widzieliście, jak używamy naszych funkcji pomocniczych, aby naprawdę skonfigurować rdzeń naszej funkcjonalności do

00:10.010 --> 00:11.300
trenowania naszych modeli.

00:11.300 --> 00:16.370
Tak więc mieliśmy stan terminala, lokalizację początkową, następną akcję, następną lokalizację i najkrótszą ścieżkę, która

00:16.370 --> 00:21.230
tak naprawdę określa większość tego, jak nasz agent lub jak będzie działać nasze środowisko.

00:21.560 --> 00:25.460
Ostatnią rzeczą, którą musimy zrobić, to wykorzystać nasze szkolenie, aby wykorzystać nasze szkolenie.

00:25.460 --> 00:31.280
Jest to dość proste w sensie tego, co musimy uwzględnić, ale sposób, w jaki to robimy, to inna

00:31.280 --> 00:31.670
historia.

00:32.240 --> 00:36.800
Biorąc to pod uwagę, jeśli używasz innego podejścia lub chcesz to dostosować i eksperymentować,

00:36.800 --> 00:38.300
jest to wysoce zalecane.

00:38.600 --> 00:42.410
Ponadto, jeśli stosujesz inne podejście i chcesz o tym porozmawiać, zachęcamy do podzielenia się

00:42.410 --> 00:43.520
pytaniami i odpowiedziami.

00:43.730 --> 00:45.410
Chętnie omówię to z Tobą.

00:45.410 --> 00:50.480
To świetny pomysł, ponieważ jest tak wiele sposobów na rozwiązanie tego problemu i możesz znaleźć sposób, który jest

00:50.480 --> 00:52.190
o wiele lepszy, bardziej korzystny.

00:52.190 --> 00:55.520
Moglibyśmy ponownie przyjrzeć się zaletom i wadom, bardziej niż szczęśliwi, mogąc o tym porozmawiać.

00:55.670 --> 00:56.030
W porządku.

00:56.090 --> 00:57.260
Więc co mamy zrobić?

00:57.260 --> 00:58.880
Musimy rozpocząć nasze szkolenie.

00:59.210 --> 00:59.990
Na nasze szkolenie.

00:59.990 --> 01:01.490
Chcemy użyć Epsilon.

01:01.490 --> 01:08.930
A więc w zasadzie procent, jaki weźmiemy za najlepszą akcję dla R zamiast akcji losowej.

01:08.930 --> 01:15.650
Ustawmy więc nasz epsilon i ustawmy go na 0. 9 i zrobimy coś podobnego z naszymi wartościami współczynnika

01:15.650 --> 01:17.900
dyskontowego i współczynnika uczenia się.

01:18.140 --> 01:23.030
Zróbmy więc współczynnik dyskontowy równy 0. 9.

01:23.690 --> 01:29.480
Przyjmijmy również nasz współczynnik uczenia się i ustawmy go na 0. 9.

01:29.900 --> 01:33.620
To będzie kurs, którego nasz agent będzie lub powinien się nauczyć.

01:33.920 --> 01:39.140
Chcemy również wziąć pod uwagę liczbę odcinków treningowych, nazwijmy to, i odcinki treningowe.

01:39.290 --> 01:41.300
Mamy więc kilka odcinków treningowych.

01:41.300 --> 01:42.500
Ustawmy to na tysiąc.

01:42.500 --> 01:46.400
Ile razy będzie trenował lub w ilu odcinkach będzie trenował?

01:48.050 --> 01:48.500
Niesamowite.

01:49.130 --> 01:52.870
Teraz zasadniczo to, co chcemy zrobić, to iterować przez każdy odcinek.

01:52.880 --> 02:00.060
Chcemy wziąć zakres naszej liczby odcinków treningowych i ustawić nasz zasadniczo nasz epsilon.

02:00.080 --> 02:01.760
Chcemy znaleźć naszą czasową różnicę.

02:01.760 --> 02:04.610
Aby to ustawić, musimy przyjrzeć się niektórym poprzednim wartościom Q.

02:04.610 --> 02:08.210
Musimy obliczyć naszą pozycję startową w naszym indeksie akcji.

02:08.660 --> 02:10.520
Więc zacznijmy.

02:11.060 --> 02:12.440
Weźmy dużą pętlę for.

02:12.450 --> 02:14.450
A więc mamy nasze cztery odcinki.

02:16.810 --> 02:19.780
W zakresie naszej ilości odcinków treningowych.

02:22.060 --> 02:22.540
No to ruszamy.

02:22.690 --> 02:31.360
Wykluczając jakikolwiek błąd składniowy z mojej strony, chcemy wziąć indeks wiersza i indeks kolumny dla naszej siatki dla

02:31.360 --> 02:33.700
naszej Ms. indeks kolumn.

02:36.080 --> 02:41.240
I powiedział, że docelowa lokalizacja początkowa, potrzebujemy lokalizacji początkowej.

02:41.240 --> 02:44.210
Miejmy więc tę słabą godzinę w każdym odcinku.

02:45.100 --> 02:49.300
Teraz możemy ustawić nasz stan terminala while.

02:51.180 --> 02:51.690
Nie.

02:52.850 --> 02:56.110
Jest stanem końcowym.

02:56.360 --> 03:01.280
Chcemy spojrzeć na indeks wiersza i indeks kolumny.

03:02.330 --> 03:02.720
Dobra.

03:03.110 --> 03:07.160
Następnie ustawmy nasz indeks akcji dla następnej akcji.

03:07.430 --> 03:08.990
Więc potrzebujemy naszego następnego działania.

03:08.990 --> 03:16.550
Ponieważ ten agent przechodzi przez środki dla naszego indeksu akcji, możemy użyć naszej następnej akcji.

03:17.770 --> 03:24.730
I możemy użyć naszego indeksu kolumny indeksu wiersza i nazwijmy nasz epsilon.

03:24.730 --> 03:29.620
Więc chcemy mieć to zamiast naszej losowej akcji, użyjmy indeksu kolumn.

03:31.930 --> 03:33.610
I potrzebujemy Epsilon.

03:34.270 --> 03:34.650
Niesamowite.

03:35.320 --> 03:36.610
Gdybym mógł poprawnie przeliterować.

03:36.610 --> 03:38.950
Tutaj chcemy Epsilon.

03:39.790 --> 03:41.380
W porządku, pozwól, że to usunę.

03:41.680 --> 03:42.070
Dobra.

03:42.460 --> 03:46.930
Pozwól, że zdobędę resztę kodu, a my przejdziemy przez to, abyś nie musiał patrzeć, jak piszę

03:47.350 --> 03:47.980
każdą linijkę.

03:48.400 --> 03:51.440
Ale miej to na uwadze, jak chcemy do tego podejść.

03:51.460 --> 03:54.940
Przesuwając stary wiersz, potrzebowalibyśmy indeksu starego wiersza.

03:55.180 --> 04:00.130
Chcielibyśmy również otrzymać nagrody za nasze kolumny i nasze wiersze.

04:00.370 --> 04:05.140
Musimy przyjrzeć się wartościom kolejki i starym wartościom kolejki, a także musimy obliczyć naszą różnicę

04:05.140 --> 04:05.620
czasową.

04:06.190 --> 04:06.640
Dobra.

04:06.880 --> 04:09.820
Widzisz więc zmianę w kodzie lub aktualizację kodu.

04:10.030 --> 04:16.150
Bierzemy nasz stary indeks wierszy i nasz stary indeks kolumn, aby przyjrzeć się naszemu indeksowi wierszy i indeksowi kolumn.

04:16.480 --> 04:20.020
Nasz indeks kolumny indeksu wiersza równy naszej następnej lokalizacji.

04:20.020 --> 04:24.070
A nasza następna lokalizacja będzie potrzebowała indeksu wiersza, kolumny, indeksu i akcji.

04:25.280 --> 04:27.110
Na koniec patrzymy na nagrody.

04:27.710 --> 04:34.580
Nasze stare wartości Q byłyby wartościami Q ze starym indeksem wiersza, starym indeksem kolumny i ponownie, odwołując się

04:34.580 --> 04:40.640
do naszego indeksu akcji i obliczenia naszej różnicy czasowej, która jest naszą nagrodą, plus współczynnik

04:40.640 --> 04:47.630
dyskontowy pomnożony przez wartości Q z wierszem indeks i indeks kolumny minus stara wartość Q z poprzedniej wartości

04:47.630 --> 04:48.140
Q.

04:49.980 --> 04:55.980
Prawie gotowe, gdy potrzebujemy naszej nowej wartości Q, która jest naszą starą wartością wskazówki, plus szybkość

04:55.980 --> 05:03.330
uczenia się, czasy, różnicę czasową i nasze wartości wskazówki ze starym indeksem wiersza w naszym starym indeksie kolumny równym nowej

05:03.360 --> 05:04.320
wartości wskazówki.

05:05.770 --> 05:09.850
Jeśli chcecie to dalej przedyskutować, ponownie gorąco polecam pytania i odpowiedzi.

05:09.850 --> 05:11.080
Zapraszamy do drukowania.

05:11.320 --> 05:13.630
Spróbuj poeksperymentować ze wszystkimi użytymi tutaj zmiennymi.

05:13.630 --> 05:18.430
Jeśli chcesz zobaczyć ich kształt, zobaczyć, jak można je wykorzystać, do czego się odnosi, gorąco

05:18.430 --> 05:20.380
polecam i chętnie omówię to dalej.

05:21.130 --> 05:24.430
Ostatnia rzecz, którą możemy zrobić, więc mamy małe powiadomienie.

05:24.700 --> 05:29.950
Dodajmy instrukcję print, abyśmy wiedzieli, kiedy szkolenie jest zakończone dla naszych tysięcy wierszy.

05:29.980 --> 05:30.580
W porządku.

05:30.970 --> 05:34.570
Jeśli nie ma błędów składniowych z mojej strony, powinniśmy być gotowi.

05:34.600 --> 05:36.730
Notatnik kolumn zostanie zainicjowany.

05:36.730 --> 05:38.610
Przeprowadziłem wszystko, więc pozwól mi to uruchomić.

05:38.620 --> 05:41.410
Powinno to być bardzo szybkie, ponieważ używamy tylko numpy.

05:41.620 --> 05:43.750
To w pewnym sensie bardzo zoptymalizowany model.

05:44.050 --> 05:46.840
Pozwól, że to kliknę, a następnie poszukamy najkrótszej ścieżki.

05:48.310 --> 05:48.750
W porządku.

05:48.760 --> 05:50.020
Mamy ukończone szkolenie.

05:50.590 --> 05:54.760
Wydrukujmy również najkrótszą ścieżkę dla niektórych opcji startowych.

05:54.760 --> 05:59.650
Więc zaczynamy wiersz trzeci, kolumnę dziewiątą z opcją najkrótszej ścieżki z naszą najkrótszą ścieżką.

06:00.130 --> 06:06.670
Chcemy spojrzeć na wiersz piąty i zero, zaczynając od wiersza dziewiątego i kolumny numer pięć.

06:07.120 --> 06:08.080
Wydrukujmy to.

06:08.890 --> 06:09.370
Niesamowite.

06:09.370 --> 06:12.280
Mamy najkrótszą drogę, ale jeszcze nie skończyliśmy.

06:12.460 --> 06:13.390
Prawie jesteśmy na miejscu.

06:13.930 --> 06:20.650
Widzimy, że nasz listonosz automatycznie uzyskuje najkrótszą drogę od legalnej, którą możemy rozważyć, z naszego miasta

06:20.650 --> 06:22.780
do obszaru pakowania przedmiotów.

06:22.790 --> 06:27.430
Ale co by było z odwrotnym scenariuszem, odnosząc się w zasadzie do tego, czy nasz listonosz

06:27.430 --> 06:31.090
może dostarczyć przesyłkę z dowolnego miejsca w mieście do strefy pakowania?

06:31.390 --> 06:37.510
Ale po przedmiocie musiałby przejść z tego obszaru, z obszaru pakowania do innego miejsca w

06:37.510 --> 06:40.180
mieście, ponieważ musiałby odebrać następny przedmiot.

06:40.660 --> 06:43.780
Co więc możemy zrobić, aby to rozwiązać?

06:43.780 --> 06:45.220
I to jest całkiem proste.

06:45.400 --> 06:47.890
Możesz zmienić kolejność najkrótszej ścieżki.

06:48.730 --> 06:51.940
Pomyśl o tym przez chwilę, a wtedy będzie to rozwiązanie.

06:53.320 --> 06:55.110
Możemy skorzystać z najkrótszej ścieżki.

06:55.120 --> 07:00.550
Więc weźmy napisane pięć i kolumnę drugą, a potem wszystko, co musisz zrobić, to użyć opcji odwrotnej w

07:00.550 --> 07:01.150
Pythonie.

07:01.270 --> 07:04.270
Używamy path dot reverse i możemy wydrukować ścieżkę.

07:04.570 --> 07:06.040
Więc patrzymy na pięć i dwa.

07:07.050 --> 07:07.800
I tam idziemy.

07:07.800 --> 07:09.220
Mamy najkrótszą drogę.

07:09.420 --> 07:14.250
Jest to naprawdę pomocne, jeśli chcesz pobrać obraz w komórce i sprowadzić go, aby porównać i spojrzeć na

07:14.250 --> 07:14.910
te ścieżki.

07:14.910 --> 07:20.310
Ale tak naprawdę możesz zobaczyć ścieżkę, jeśli weźmiesz wydrukowany wyciąg, spójrz na kolumnę

07:20.310 --> 07:23.250
w zamówieniu i zobacz, jak podróżuje sprzedawca.

07:23.250 --> 07:25.560
Tak niesamowita praca, z której korzystasz.

07:25.770 --> 07:26.610
Nauka Q.

07:26.880 --> 07:32.550
To, czego nauczyliśmy się na tym kursie, ma trochę bonusowego i zabawnego scenariusza w sekcji, aby

07:32.550 --> 07:35.070
rozwiązać ten zasadniczo problem z komiwojażerem.

07:35.070 --> 07:40.770
Patrzymy na listonosza, który dostarcza paczki i przedmioty w mieście, aby znaleźć te najkrótsze opcje i

07:40.770 --> 07:41.640
najkrótsze ścieżki.

07:41.670 --> 07:47.400
Gorąco polecam dostosowanie, przetestowanie innych opcji, zmianę hiperparametrów, a jeśli odkryjesz coś lepszego,

07:47.400 --> 07:53.670
jeśli odkryjesz jakiekolwiek zoptymalizowane lub najlepsze parametry do użycia, możesz podzielić się nimi w pytaniach

07:53.670 --> 07:54.990
i odpowiedziach.

07:55.620 --> 07:56.280
Zdumiewający.

07:56.300 --> 07:58.110
Mam nadzieję, że naprawdę wam się podobało.

07:58.320 --> 08:01.350
Dostosuj, eksperymentuj i kontynuuj naukę.

08:01.380 --> 08:02.970
Praca z tobą to świetna zabawa.

08:02.970 --> 08:04.820
Uczę się i cieszę się ja.
