WEBVTT

00:00.330 --> 00:01.950
Hallo en welkom bij deze tutorial.

00:02.370 --> 00:07.410
Oké, dus in de vorige twee proeven hebben we de hersenen gemaakt of als je de hersenen nu voor de H3C

00:07.800 --> 00:09.380
wilt, moeten we deze hersenen trainen.

00:09.510 --> 00:15.180
Maar om deze hersenen te trainen, hebben we een optimizer nodig die deze tool zal gebruiken bij

00:15.180 --> 00:20.970
stochastische gradiëntafdaling naar het gewicht, afhankelijk van hoeveel ze bijdragen aan de fout tussen de voorspellingen en de

00:20.970 --> 00:24.330
doelen en wat we tot nu toe hebben gedaan.

00:24.330 --> 00:30.410
In de eerste en tweede module hebben we de atom optimizer by torch gebruikt in de training.

00:30.690 --> 00:38.290
Maar zoals ik je al zei, hebben we te maken met een zeer uitdagend probleem dat breakout is en het 3C-algoritme zelf is

00:38.320 --> 00:41.130
niet voldoende om dit probleem op te lossen.

00:41.400 --> 00:48.390
We hebben een aantal aangepaste optimizers en veel verschillende trucs nodig om dit probleem op te lossen zonder eeuwen te

00:48.390 --> 00:49.040
wachten.

00:49.410 --> 00:51.690
Dat is dus het doel om dit te doen.

00:51.690 --> 00:59.010
En daarom hebben we een aparte custom optimizer op basis van de atom optimizer en die zit

00:59.010 --> 01:00.900
in deze gedeelde atoomklasse.

01:01.200 --> 01:02.490
En waarom zou atoom?

01:02.700 --> 01:07.770
Het is omdat het eigenlijk de atom-optimizer is, maar dat werkt op gedeelde status.

01:08.040 --> 01:11.130
Dus we gaan uitleggen hoe het werkt in deze tutorial.

01:11.130 --> 01:15.720
Dus we gaan hier de verschillende functies doornemen zonder ze te knippen, want, weet je, we

01:15.780 --> 01:18.510
willen wat energie overhouden voor de volgende implementatie.

01:18.510 --> 01:22.830
Dat is de trein, die pauw, die meer dan honderd regels code nodig heeft.

01:23.070 --> 01:24.150
Wees daar dus klaar voor.

01:24.420 --> 01:30.060
En daarom zullen we proberen uit te leggen wat hier aan de hand is in één tutorial, deze tutorial.

01:30.300 --> 01:31.770
En laten we nu meteen beginnen.

01:32.630 --> 01:37.970
Oké, dus eerst introduceren we dit klasse-shirtitem dat drie functies zal bevatten, de init-functie,

01:37.970 --> 01:40.510
de gedeelde geheugenfunctie en de stapfunctie.

01:41.030 --> 01:48.350
Dus wat we eerst doen, is dat we dat atoom erven van AP'TIN, wat natuurlijk de atoomoptimalisatie is die we

01:48.350 --> 01:51.780
krijgen van de bovenste module, van de fakkelbibliotheek.

01:52.160 --> 01:58.100
Dus hier passen we overerving toe om de tools te krijgen die allemaal gerelateerd zijn aan de atom-optimizer en dan beginnen we

01:58.100 --> 01:58.910
met de Init-functie.

01:59.180 --> 02:00.140
Dus wat gebeurt hier?

02:01.040 --> 02:07.640
Ten eerste hebben we een superfunctie gebruikt om van alle tools en alle

02:07.650 --> 02:15.080
basisparameters van het atoom, die atoomklasse en deze basisparameters te erven voor leersnelheid, status, epsilon en

02:15.080 --> 02:15.800
wachtverval.

02:16.070 --> 02:21.450
En dan starten we een volledige loop, deze eerste volledige loop voor groeps- en autodidactische Perram-groepen.

02:21.710 --> 02:28.130
Dus eerst, wat is Parum Group zelf dat Paran-groepen alle attributen van de optimizer bevatten?

02:28.340 --> 02:32.270
En onder deze attributen hebben we de parameters die we moeten optimaliseren.

02:32.570 --> 02:38.840
Deze parameters die we willen optimaliseren zijn de gewichten van het netwerk die zijn opgenomen in programma's

02:38.850 --> 02:44.530
die zichzelf groeperen, zodat we een groep gaan behoren tot zichzelf die groepen groeperen.

02:44.780 --> 02:50.840
En hier hebben we de tweede lus, die deze parameters zal krijgen die we willen

02:50.840 --> 02:54.330
optimaliseren en die precies inhoud en zelf-parum-groepsprogramma's zijn.

02:54.770 --> 03:00.950
Dus eigenlijk gaan we door zelf die programmagroepen die alle parameters bevatten en voor elke

03:00.950 --> 03:06.470
groep parameters en zelfdoctorand groepen gaan we door de parameters die we willen

03:06.470 --> 03:07.040
optimaliseren.

03:07.370 --> 03:14.030
Daarom betekent voor P in groepsprogramma's hier voor elke tancer van gewichten die we willen optimaliseren.

03:14.300 --> 03:16.730
Dus voor elke Tenzer aan gewichten die we willen optimaliseren.

03:17.000 --> 03:21.100
En wat gebeurt er dan binnen deze groep met deze vier regels code?

03:21.680 --> 03:28.970
Wat er in feite gebeurt, is dat de update van de Adam Optimizer is gebaseerd op een exponentieel voortschrijdend gemiddelde

03:28.970 --> 03:35.240
van de gradiënt van deze coderegel hier, dat is het exponentiële voortschrijdend gemiddelde van de gradiënt van

03:35.360 --> 03:37.990
momenten, een die van orde één is.

03:38.360 --> 03:44.780
Maar de update van Adam is niet alleen daarop gebaseerd, het is ook gebaseerd op het exponentieel voortschrijdend gemiddelde

03:45.020 --> 03:51.440
van het kwadraat, de gradiënt die een exponentieel voortschrijdend gemiddelde is van de gradiënt van momentum of de twee.

03:51.890 --> 03:55.070
Dus hier is het exponentiële voortschrijdend gemiddelde van orde één.

03:55.290 --> 03:57.530
En hier is het exponentiële voortschrijdend gemiddelde van de orde.

03:57.530 --> 04:00.320
Twee voor elk van hen, de schatting van het verloop.

04:00.620 --> 04:06.110
Dus wat hier en nu gebeurt, als je meer wilt weten over hoe het

04:06.110 --> 04:12.260
exponentieel voortschrijdend gemiddelde werkt, nou, ik moedig je ten zeerste aan om dit onderzoeksartikel, Adam, te bekijken,

04:12.260 --> 04:19.370
een methode voor stochastische optimalisatie, omdat in feite de De geoptimaliseerde Adam die we nu implementeren, is gebaseerd op het

04:19.370 --> 04:20.280
algoritme hier.

04:20.780 --> 04:26.690
Dus als je meer details wilt hebben over hoe het algoritme werkt, dan zal dit document zeker nuttig

04:26.690 --> 04:27.170
zijn.

04:27.500 --> 04:32.480
En dan heb je nog wat uitleg over het algoritme met de Adam's en de regels.

04:32.690 --> 04:37.790
En dus, weet je, dat is alleen als je dit wilt aanvallen voordat je de grote trendfunctie aanvalt die

04:37.810 --> 04:38.750
daarna zal maken.

04:39.230 --> 04:45.550
OK, dus laten we teruggaan naar Python en nu verder gaan met de tweede functie, geheugen delen.

04:46.040 --> 04:47.600
Dus nu ga ik gewoon een paar woorden zeggen.

04:47.870 --> 04:53.810
Het idee van deze gedeelde geheugenfunctie is een beetje zoals Tenzer, dat Kouda, je weet wel, Kouda is een

04:53.810 --> 04:55.520
versneller gebaseerd op de GPU.

04:55.700 --> 05:03.080
Wat hier gebeurt, is dat we deze Tensa's van de staten hebben die hier, hier en hier geheugen

05:03.080 --> 05:09.980
delen, die zich een beetje als Tenzer gedragen, die Kouda om de berekeningen te versnellen.

05:10.280 --> 05:17.090
Maar het verschil is dat hier de sensoren die geheugen delen de berekeningen naar een deel van de

05:17.090 --> 05:21.730
GPU of de CPU sturen dat toegankelijk is voor alle Pearlie-dreigingen.

05:22.040 --> 05:23.500
Dus dat is eigenlijk wat hier wordt gedaan.

05:23.510 --> 05:30.050
Dat is een beetje zoals Tenso die Kouda, maar het wordt alleen naar een deel van de GPU of CPU gestuurd dat toegankelijk is

05:30.050 --> 05:30.910
voor de parallellisatie.

05:31.040 --> 05:32.410
Het is goed.

05:32.420 --> 05:34.870
En dan hebben we de laatste functiestap.

05:34.940 --> 05:40.460
Dus, weet je, deze functie, het is als de stapmethode van de atom optimizer die we al in deze

05:40.460 --> 05:41.100
cursus gebruiken.

05:41.660 --> 05:47.050
En dus, nogmaals, dit is gebaseerd op het algoritme, een van hetzelfde papier dat we eerder zagen.

05:47.060 --> 05:48.230
Dit algoritme dus.

05:48.710 --> 05:51.980
Dus nogmaals, als u de volgende coderegels in detail wilt begrijpen.

05:52.280 --> 05:56.960
Nou, nogmaals, ik moedig je aan om naar dit algoritme te kijken, een van deze paper.

05:57.410 --> 06:04.280
En bovendien, wat hier wordt gedaan, is niet helemaal verplicht, want dit is eigenlijk een copy-paste van de

06:04.280 --> 06:06.860
stapmethode van de uptime, die atoomklasse.

06:07.040 --> 06:14.000
Dus eigenlijk, wat hier wordt gedaan, hadden we kunnen doen door onze erfenis te gebruiken, omdat we hier dat atoom

06:14.010 --> 06:15.140
erven van Upton.

06:15.470 --> 06:21.500
En dus om onze erfenis te gebruiken, nou, wat we kunnen doen in plaats van dit alles te doen, is gewoon dat ik hier ga

06:21.500 --> 06:21.840
schrijven.

06:21.860 --> 06:27.350
Die opmerking is gewoon de superfunctie gebruiken die we toepassen op onze gedeelde.

06:28.240 --> 06:37.120
Adam klasse, dan ons object zelf, en hier voegen we gewoon stap toe met haakjes stap is de methode van de optie die

06:37.120 --> 06:40.250
Adam klasse en dat is precies hetzelfde.

06:40.600 --> 06:45.790
Daarom zei ik net dat hier slechts een copy-paste is van de stapmethode van de Upton that

06:45.790 --> 06:46.190
Adam-klasse.

06:46.780 --> 06:52.930
Dus ik denk dat als je dit allemaal vervangt door dit superfunctionele, ik Adam en de stapmethode graag wil

06:52.930 --> 06:53.370
delen.

06:53.710 --> 06:55.720
Nou, misschien krijgen we precies hetzelfde.

06:57.040 --> 07:01.450
Oké, dus dat was interessant om er even naar te kijken, in principe kun je dit zien als

07:01.750 --> 07:02.440
de optimizer.

07:02.710 --> 07:04.180
Het is alsof we er dieper naar hebben gekeken.

07:04.510 --> 07:09.670
Maar nogmaals, als je meer details over dit alles wilt geven en als je wilt begrijpen wat er

07:09.670 --> 07:13.680
achter de schermen gebeurt, moedig ik je aan om dit onderzoekspaper te bekijken.

07:13.990 --> 07:15.730
Ik zal de link hier in de reacties plaatsen.

07:15.910 --> 07:19.740
Weet je, onthoud dat je alle codes tot in detail hebt gedocumenteerd.

07:19.840 --> 07:21.700
Het is dus heel goed als je er eens naar kunt kijken.

07:22.400 --> 07:30.130
En nu hoop ik dat je veel energie hebt, want we gaan verder met het treinbestand, dat deze enorme treinfunctie zal

07:30.130 --> 07:35.560
bevatten en dat in feite onze hersenen zal trainen, wat we nu kunnen doen omdat

07:35.560 --> 07:37.230
we onze optimizer hebben.

07:37.540 --> 07:39.090
Dus nu lekker uitrusten.

07:39.130 --> 07:40.060
Heb een goede nachtrust.

07:40.060 --> 07:43.750
En als u zich in topvorm voelt, gaan we verder met de volgende stap.

07:44.270 --> 07:45.610
Tot dan, geniet ervan.
