WEBVTT

00:00.480 --> 00:03.160
Hallo und willkommen zu diesem Python-Tutorial.

00:03.180 --> 00:03.520
Gut.

00:03.520 --> 00:08.810
In diesem Öl werden wir die Funktion erstellen, die jedes Mal die richtige Aktion auswählt.

00:08.810 --> 00:13.650
Im Grunde werden wir den Teil implementieren, der das Auto zum richtigen Schritt macht.

00:13.740 --> 00:18.780
Und jedes Mal, wenn es nach links geht oder geradeaus geht, um das Ziel zu erreichen und die

00:18.780 --> 00:20.640
Hindernisse zu vermeiden, die Abstieg bedeuten.

00:21.000 --> 00:22.350
Also machen wir das gleich jetzt.

00:22.370 --> 00:28.320
Wir beginnen wie üblich mit den Gehörlosen, um eine Funktion zu definieren. Dann

00:28.320 --> 00:36.370
geben wir unserer Funktion einen Namen, den wir select action als einige Klammern nennen. Diese select-Aktionsfunktion benötigt zwei

00:36.550 --> 00:37.410
Argumente.

00:37.450 --> 00:43.960
Das erste ist das Ich, während Sie wachsen, um sich auf das Objekt zu beziehen, und das zweite Argument, welches

00:43.960 --> 00:46.150
Ihrer Meinung nach welches sein wird.

00:46.390 --> 00:47.860
Nun, was könnte es sein?

00:47.860 --> 00:54.220
Wenn Sie darüber nachdenken, kommt die von uns gewählte Aktion von der Ausgabe des neuronalen Netzwerks, weil die

00:54.220 --> 00:59.890
Ausgabe des neuronalen Netzwerks oder die q-Werte für jede der drei möglichen Aktionen und daher die

00:59.890 --> 01:05.980
Aktion, die wir ausführen, die Aktion ist, die die Ausgabe sein wird Das neuronale Netzwerk hängt vom Eingabezustand

01:05.980 --> 01:11.610
ab, und der Eingabezustand ist genau das zweite Argument, das wir mit der select-Aktionsfunktion benötigen.

01:11.680 --> 01:16.310
Das liegt daran, dass wir buchstäblich die Ausgabe des neuronalen Netzwerks übernehmen.

01:16.510 --> 01:22.180
Und natürlich hängt die Ausgabe des neuronalen Netzwerks direkt von der Eingabe des neuronalen Netzwerks ab.

01:22.360 --> 01:24.010
Das wird also unser Argument sein.

01:24.280 --> 01:31.720
Und jetzt können wir ihm einen beliebigen Namen geben, den wir eigentlich Zustand nennen werden, da die Eingabe der

01:31.960 --> 01:38.280
neuronalen Netze die Eingangszustände sind, die durch einen Vektor aus fünf Dimensionen und drei Signalorientierungen und

01:38.480 --> 01:39.920
Minusorientierungen codiert sind.

01:40.120 --> 01:42.120
Und so wird es jetzt einfach.

01:42.160 --> 01:47.860
Wir werden den Eingabezustand in das neuronale Netzwerk einspeisen, das wir hier direkt mit der

01:47.860 --> 01:54.520
nächsten Klasse erstellen, und dann werden wir die Ausgaben erhalten, die die Schlüsselwerte für jede der drei

01:54.520 --> 01:59.530
möglichen Aktionen darstellen mit der Soft Max-Methode, die ich in diesem Tutorial erklären

01:59.530 --> 02:00.360
werde.

02:00.400 --> 02:03.140
Wir bekommen die letzte Aktion zum Spielen.

02:03.280 --> 02:08.460
Lasst uns das tun, lasst uns in die Funktion gehen und all das implementieren.

02:08.470 --> 02:14.980
Das erste, was wir anfangen müssen, ist das, was ich gerade erwähnt habe, um Max zu glauben. Die

02:14.980 --> 02:20.590
Idee des weichen Max ist, dass wir versuchen, jedes Mal die beste Aktion zu erreichen.

02:20.740 --> 02:25.000
Gleichzeitig werden wir jedoch die verschiedenen Aktionen untersuchen.

02:25.000 --> 02:25.950
Und wie machen wir das?

02:25.960 --> 02:31.080
Wie können wir die beste Aktion erzielen, während wir die anderen Aktionen erkunden?

02:31.270 --> 02:39.250
Nun, wir haben diese Idee von Sachen benutzt, die darin besteht, eine Wahrscheinlichkeitsverteilung für jeden der q-Werte

02:39.250 --> 02:40.370
zu erzeugen.

02:40.420 --> 02:42.100
Q Staaten Aktion.

02:42.160 --> 02:46.600
Jetzt haben wir einen Q-Wert für jede Aktion. Nach links oder nach rechts gehen.

02:46.850 --> 02:49.680
Dieser q-Wert hängt jedoch auch vom Eingangszustand ab.

02:49.690 --> 02:52.720
Das ist genau die Q-Funktion, die in Intuitionsvorlesungen verwendet wird.

02:52.870 --> 02:56.280
Diese Q-Funktion ist eine Funktion des Zustands und der Aktion.

02:56.320 --> 03:02.540
Da wir hier einen Eingabezustand haben, der hier der Zustand ist, und drei mögliche

03:02.540 --> 03:09.070
Aktionen, haben wir drei neue Werte Q. Staatliche Aktion 1 Q Staatenaktion 2 und zwei Staaten

03:09.070 --> 03:13.760
Aktion 3, und wir werden eine Wahrscheinlichkeitsverteilung in Bezug auf diese drei Schlüsselwerte generieren.

03:13.930 --> 03:19.420
Das heißt, wir haben eine Wahrscheinlichkeit für den ersten Q-Wert, die Wahrscheinlichkeit für den zweiten

03:19.420 --> 03:25.490
Q-Wert und eine dritte Wahrscheinlichkeit für den dritten Q. Und alle drei Wahrscheinlichkeiten summieren sich auf 1.

03:25.670 --> 03:31.840
Also machen wir das alles mit gesaugtem Max und gesaugtem Max wird eine große Wahrscheinlichkeit auf das höchste Q-Niveau

03:32.170 --> 03:33.530
in der Umgebung zurückführen.

03:33.820 --> 03:41.050
Deshalb ist eine Alternative zu soft Max ein einfacher RMX, der nicht direkt

03:41.530 --> 03:44.860
das Maximum der q-Werte verwendet.

03:44.920 --> 03:50.500
Dank dieser Wahrscheinlichkeiten können wir an einem anderen Ort mit einem Temperaturparameter ausloten, den wir sehr

03:50.500 --> 03:51.900
schnell sehen werden.

03:52.210 --> 03:55.990
Wir können sie noch erforschen, indem Sie diesen Temperaturparameter konfigurieren.

03:56.020 --> 04:03.380
Deshalb empfehle ich aus Sicherheitsgründen generell die Verwendung eines weichen x anstelle eines einfachen RMX.

04:03.460 --> 04:06.990
Also gut, lassen Sie uns X implementieren und so, wie Sie es verstanden haben.

04:07.060 --> 04:12.990
Da gesaugt gibt Max die Wahrscheinlichkeiten der drei Q-Werte für die drei möglichen Aktionen zurück.

04:13.180 --> 04:20.120
Nun, die erste Variable, die wir erstellen werden, bezieht sich wahrscheinlich auf diese Wahrscheinlichkeiten.

04:20.450 --> 04:26.680
Die Requisiten sind also gleich und jetzt werden wir unsere gesuchte nächste

04:26.680 --> 04:28.070
Funktion übernehmen.

04:28.330 --> 04:31.600
Natürlich erinnern wir uns daran, dass wir die importierten.

04:31.700 --> 04:38.130
Und dann funktioniert das funktionale Submodul, an das ich mich erinnere, das Modul, das die meisten Aktionen zur Implementierung

04:38.140 --> 04:39.790
eines neuronalen Netzwerks enthält.

04:39.820 --> 04:44.980
Wir haben ihm die Abkürzung F gegeben und so ist es eigentlich aus diesem funktionalen Submodul, dass

04:44.980 --> 04:46.990
wir unsere nächste Funktion übernehmen werden.

04:47.290 --> 04:53.830
Aber da wir ihm eine Abkürzung gegeben haben, fangen wir hier mit einem Neph an, der eine funktionale darstellt, von der

04:54.040 --> 04:56.080
wir unsere gesuchte nächste Funktion nehmen.

04:56.080 --> 04:56.920
Hier ist es.

04:56.980 --> 04:59.540
Das ist die erste und Klammer.

04:59.770 --> 05:00.160
Gut.

05:00.200 --> 05:03.920
Nun, was müssen wir in der nächsten Funktion eingeben.

05:04.150 --> 05:10.020
Nun, das sind natürlich die Entitäten, für die wir eine Wahrscheinlichkeitsverteilung erzeugen wollen.

05:10.190 --> 05:11.430
Und was sind diese Entitäten?

05:11.550 --> 05:13.870
Nun, das sind natürlich die Schlüsselwerte.

05:13.870 --> 05:16.790
Nun stellt sich die Frage, wie wir die q-Werte erhalten können.

05:16.960 --> 05:22.720
Natürlich sind die q-Werte die Ausgabe des neuronalen Netzwerks und um diese Ausgaben des neuronalen Netzwerks zu

05:22.720 --> 05:23.410
erhalten.

05:23.590 --> 05:24.560
Nun, wir gehen weiter.

05:24.610 --> 05:26.830
Wir müssen unser neues Netzwerk nutzen.

05:27.100 --> 05:33.520
Aber in der Tat haben wir es bereits, weil es am Ende seine Funktion ist.

05:33.530 --> 05:39.980
Wissen, dass wir ein autodidaktisches Modell erstellt haben, das nichts anderes ist, weil es ein neues Objekt

05:40.290 --> 05:41.540
der Netzwerkklasse ist.

05:41.600 --> 05:42.820
Und das ist perfekt.

05:42.830 --> 05:49.040
Wir können unser Modell einfach hierher bringen und als Nächstes dieses Modell auf den Eingabezustand anwenden, der hier

05:49.040 --> 05:52.950
das Argument ist und die Ausgaben liefert, nach denen wir suchen.

05:53.090 --> 05:54.440
Das sind die Schlüsselwerte.

05:54.560 --> 06:00.260
Und jetzt könnte Ihre Intuition, warum wir das Modell hier nehmen mussten, um es in die Funktion einzuführen, vielleicht besser

06:00.260 --> 06:00.840
werden.

06:00.920 --> 06:06.410
Diejenigen von Ihnen, die mit der objektorientierten Programmierung beginnen, werden feststellen, dass das alles als

06:07.100 --> 06:08.780
nächstes so natürlich wird.

06:08.870 --> 06:16.840
Deshalb nehmen wir unsere Modelle selbst als Modell, da dies das Modell des Objekts sein muss, das wir hier erstellt haben.

06:17.180 --> 06:24.350
Aber dann müssen wir die Ausgabe unseres neuronalen Netzwerkmodells erhalten, und deshalb werden wir einige

06:24.350 --> 06:30.400
Klammern hören, in die wir den Eingabezustand mit dem Namen state eingeben.

06:30.620 --> 06:39.350
Was wir also zuerst tun wollen, ist der Zustand "state", aber jetzt müssen wir auf etwas achten, das wie ein einfacher

06:39.350 --> 06:40.560
Satz aussieht.

06:40.790 --> 06:46.850
Denken Sie jedoch daran, dass der Status tatsächlich ein Brennersensor sein wird, da wir diese Zelle später

06:46.920 --> 06:52.190
mit weniger Status verwenden, um sie als Argument der Aktionsfunktion Select zu verwenden.

06:52.190 --> 06:57.430
Das Argument des Staates, das sich hier befindet, wird tatsächlich später dieser autodidaktische Zustand sein.

06:57.680 --> 07:01.680
Und da dies eine gefolterte Antwortwelt ist, wird das Modell sie akzeptieren.

07:01.760 --> 07:02.690
Also das ist gut.

07:02.810 --> 07:05.000
Jetzt können wir den Algorithmus verbessern.

07:05.180 --> 07:12.490
Sobald der Zustand ein Brennersensor ist, sind die meisten Sensoren wie oben erwähnt in den Voivode

07:12.500 --> 07:13.260
gewickelt.

07:13.320 --> 07:15.640
Dieser enthält auch einen Farbverlauf.

07:15.650 --> 07:22.110
Also, jetzt, was wir zuerst tun werden, ist es, diesen Eingangszustand,

07:22.110 --> 07:27.990
der ein Tensor ist, sehr gut in eine Fackel einzuwickeln.

07:28.160 --> 07:34.700
Wir werden den Gradienten dieses Brenners nicht verwenden

07:34.880 --> 07:45.530
und das können Stationen sein. Daher werden wir diesen Brennersensorzustand in eine Brennervariable umwandeln.

07:45.780 --> 07:51.400
Aber dann zu spezifizieren, dass wir die Gradienten in der Grafik nicht wollen, die am Ende von Mudgal

07:51.400 --> 07:52.380
Prädationen können.

07:52.570 --> 07:57.800
Nun, wir werden hier bei Volatilität gleich wahr werden.

07:58.150 --> 08:06.160
Damit haben wir unseren State Fackelsensor sehr gut in eine Fackel geschoben, aber dank dieses Votels ist es ein

08:06.160 --> 08:07.200
wahres Barometer.

08:07.390 --> 08:14.950
Nun, wir werden die Gradienten, die diesen Eingangszuständen zugeordnet sind, in den Graphen aller Zustände des Endes in

08:15.100 --> 08:16.530
diesem Modell einbeziehen.

08:16.840 --> 08:18.530
Das ist also ein weiterer technischer Trick.

08:18.550 --> 08:23.130
Dies spart uns etwas Speicher und verbessert somit die Leistung.

08:23.170 --> 08:27.850
Deshalb empfehle ich dringend, dies zu tun, und jetzt fügen wir etwas mehr Spaß hinzu.

08:27.910 --> 08:30.640
Es geht um diesen Temperaturparameter, den ich gerade erwähnt habe.

08:30.850 --> 08:36.190
Dieser Temperaturparameter ist also der Parameter, mit dem wir modulieren können, wie das

08:36.190 --> 08:40.040
neuronale Netzwerk sicher ist, welche Aktion es ausführen soll.

08:40.210 --> 08:47.290
Dieser Temperaturparameter ist also eine positive Zahl und je näher er an Null ist, desto weniger sicher ist das

08:47.290 --> 08:53.200
neuronale Netzwerk beim Spielen und je höher der Temperaturparameter, desto sicherer ist das neuronale Netzwerk mit

08:53.410 --> 08:56.540
der Aktion, die es zu spielen entscheidet .

08:56.890 --> 09:04.480
Um diesen Parameter hinzuzufügen, multipliziere ich die Ausgänge, die von diesem Temperaturparameter verwendet

09:04.480 --> 09:05.250
werden.

09:05.500 --> 09:13.440
Beginnen wir zum Beispiel mit 7 und ich werde hier den kleinen Kommentar T gleich 7 angeben.

09:13.460 --> 09:15.610
Das ist also der Temperaturparameter.

09:15.690 --> 09:17.210
Tut mir leid, gehe zu 7.

09:17.260 --> 09:21.010
Wir werden einige andere ausprobieren, aber ich möchte mit einem kleinen anfangen, weil Sie das

09:21.010 --> 09:22.470
mit einem kleinen sehen werden.

09:22.510 --> 09:28.150
Unser Auto wird sich immer noch wie eine Art Insekt verhalten, aber durch Erhöhen des

09:28.510 --> 09:34.340
Temperaturparameters wird unser Code eher wie ein Auto aussehen und der Verkauf des Fahrens wird viel besser.

09:34.480 --> 09:40.450
Das macht also Sinn, denn je höher dieser Temperaturparameter ist, desto höher

09:40.450 --> 09:48.010
ist die Wahrscheinlichkeit des gewinnenden Juval me, weil zum Beispiel ein weiches Maximum der q-Werte vorliegt.

09:48.190 --> 09:54.850
Nehmen wir ein paar einfache Zahlen eins zwei drei, wenn maximal ein bis drei gleich sind.

09:54.850 --> 10:01.150
Zum Beispiel 0. 04 0. 11 und öffnen Sie fünfundachtzig.

10:01.270 --> 10:05.650
Dann durch Erhöhen der Temperatur durch Erhöhen der Temperatur.

10:05.680 --> 10:13.360
Im Moment ist die Temperatur gleich eins, indem eine hohe Temperatur genommen wird, wie zum Beispiel Tussaud subtrahiert, lassen

10:13.360 --> 10:22.210
Sie uns dies kopieren und mit beispielsweise zwei oder drei multiplizieren, so dass die nächsten Werte dieselben Werte haben, jedoch mit dem

10:22.210 --> 10:24.110
Temperaturparameter von drei multipliziert.

10:24.370 --> 10:31.390
Nun, wir bekommen so etwas wie Null für den ersten Q-Wert, weil dies eine sehr geringe Wahrscheinlichkeit hatte, dass etwas

10:31.530 --> 10:38.020
um Null herum und dann etwas sehr Kleines für die zweite Wahrscheinlichkeit war, weil dies noch eine

10:38.020 --> 10:39.260
geringe Wahrscheinlichkeit war.

10:39.410 --> 10:42.910
Sagen wir zum Beispiel oder Punkt 0 2.

10:43.320 --> 10:49.910
Aber dann diese dritte Wahrscheinlichkeit, da sie die größte war und eine ziemlich hohe.

10:50.140 --> 10:55.180
Wenn Sie die Temperatur erhöhen, wird diese Wahrscheinlichkeit noch größer, da wir noch

10:55.180 --> 11:02.230
sicherer sind, dass dies der richtige Q-Wert ist, der der Aktion entspricht, die wir spielen müssen, und dass

11:02.230 --> 11:05.630
dies etwa 0 ist. 2 98.

11:05.980 --> 11:11.800
Nun, durch die Erhöhung des Temperaturparameters Nun, wir sind jetzt noch sicherer, dass die dritte Aktion hier

11:11.800 --> 11:17.530
die Aktion sein soll, da die Wahrscheinlichkeit für den q-Wert dieser Aktion nicht nur die größte,

11:17.530 --> 11:19.590
sondern auch sehr hoch ist.

11:19.840 --> 11:22.600
Darum geht es bei diesem Temperaturparameter.

11:22.660 --> 11:27.340
Es geht um die Gewissheit, in welche Richtung wir uns entscheiden sollten.

11:27.340 --> 11:27.610
Gut.

11:27.610 --> 11:29.450
Also werde ich diesen Kommentar entfernen.

11:29.470 --> 11:31.000
Das war nur zu erklären.

11:31.200 --> 11:33.490
Und jetzt lasst uns unsere Aktion bekommen.

11:33.490 --> 11:35.370
Wie wirst du das tun?

11:35.560 --> 11:41.440
Nun, das Prinzip der next-Methode ist nicht nur das Generieren einer Wahrscheinlichkeitsverteilung für

11:41.440 --> 11:46.390
jeden der Schlüsselwerte, sondern auch der zweite Schritt der Soft-Next-Methode.

11:46.480 --> 11:51.820
Wir ziehen eine zufällige Auslosung aus dieser Verteilung, um unsere endgültige Aktion zu erhalten.

11:52.010 --> 11:57.310
Und natürlich haben wir eine große Chance, die Aktion zu erhalten, die dem Q-Wert entspricht,

11:57.310 --> 12:01.660
der die höchste Wahrscheinlichkeit hat, weil die Verteilung genau so funktioniert.

12:01.660 --> 12:02.550
Also los geht's.

12:02.560 --> 12:04.040
Lass uns unsere Aktion bekommen.

12:04.060 --> 12:11.380
Wir werden also einen neuen Voivode einführen, wenn wir action nennen, und diese Aktion wird eine

12:11.380 --> 12:17.460
zufällige Verlosung der Wahrscheinlichkeitsverteilung sein, die wir gerade zu diesem Zeitpunkt erstellt haben.

12:17.510 --> 12:20.100
Und wie bekommen wir so eine zufällige Auslosung?

12:20.200 --> 12:26.410
Nun, wir nehmen die Wahrscheinlichkeiten unserer Requisiten für jeden der

12:26.650 --> 12:34.120
Schlüsselwerte, die wir Requisiten nehmen, und dann Dart, und dann werden wir

12:34.120 --> 12:36.030
die Multi-Gnomeo-Funktion verwenden.

12:36.160 --> 12:38.420
Das ist alles, was seine Reaktion bekommen wird.

12:38.470 --> 12:39.280
Perfekt.

12:39.490 --> 12:42.790
Und jetzt werden wir natürlich die Aktion zurückgeben.

12:42.790 --> 12:44.730
Hier gibt es einen kleinen Trick.

12:44.810 --> 12:51.460
Was ist die Tatsache, dass diese Propst dieses Multinomial den PI mit einem gefälschten Abzeichen in Richtung Lebensfähigkeit zurückführt.

12:51.490 --> 12:57.210
Sie kennen diese gefälschten Diamanten und entsprechen der Partie und damit das richtige Ergebnis zu erzielen, das wir

12:57.220 --> 13:00.540
wollen, ist die Aktion in 0 1 oder 2.

13:00.820 --> 13:08.200
Wir müssen hier nur Daten hinzufügen und dann einige Klammern und die folgenden Aktionen sind eine oder zwei, nach

13:08.230 --> 13:13.100
denen wir suchen: Inhalt und der Index ist 0 und 0.

13:13.570 --> 13:14.000
Gut.

13:14.000 --> 13:14.730
Und da gehen wir hin.

13:14.740 --> 13:21.420
Jetzt haben wir unsere Aktion dank dieser Select-Action-Funktion. Die KI weiß nun, welche Aktion sie spielen soll.

13:21.490 --> 13:22.440
Und jedes Mal.

13:22.810 --> 13:23.460
Großartig.

13:23.500 --> 13:27.430
Nun können wir zur nächsten Funktion übergehen, die die Lernfunktion sein wird.

13:27.520 --> 13:32.410
Und hier werden wir das gesamte neuronale Netzwerk trainieren, das

13:32.410 --> 13:35.790
Sie mit all der Vorwärtsausbreitung kennen.

13:35.950 --> 13:41.500
Grundsätzlich werden wir das gesamte Training des tiefen Lernmodells implementieren, das im Mittelpunkt

13:41.560 --> 13:43.340
unserer künstlichen Intelligenz steht.

13:43.480 --> 13:44.680
Ich kann es also kaum erwarten.

13:44.680 --> 13:49.290
Dies wird ein aufregendes Tutorial, und wir sehen uns im nächsten Statoil.

13:49.510 --> 13:50.670
Bis dahin genießen.

13:50.720 --> 13:51.000
ICH.
