WEBVTT

00:00.390 --> 00:02.550
Ciao e benvenuto in questo tutorial.

00:02.550 --> 00:02.870
Tutto ok.

00:02.880 --> 00:08.370
Quindi nei tutorial precedenti abbiamo creato il cervello o se volete il cervello per l'A-3, ora vediamo che

00:08.370 --> 00:09.560
dobbiamo allenare questo cervello.

00:09.660 --> 00:15.240
Ma per allenare il suo cervello abbiamo bisogno di un ottimizzatore che usi questo strumento e attacchi

00:15.240 --> 00:20.820
una sigaretta al centro per prendere il peso in base a quanto contribuiscono all'errore tra le previsioni

00:20.940 --> 00:21.900
e gli obiettivi.

00:22.200 --> 00:29.790
che abbiamo fatto finora nel primo e nel secondo modulo abbiamo usato l'ottimizzatore atom da torche durante l'allenamento.

00:29.910 --> 00:30.660
E quello

00:30.840 --> 00:38.260
Ma come ti ho detto abbiamo a che fare con un problema molto impegnativo che sta scoppiando e l'algoritmo A-380

00:38.260 --> 00:41.560
da solo non è sufficiente per risolvere questo problema.

00:41.580 --> 00:48.480
Abbiamo bisogno di alcuni ottimizzatori personalizzati e un sacco di trucchi diversi per risolvere questo problema senza

00:48.480 --> 00:49.340
aspettare anni.

00:49.530 --> 00:56.790
Questo è lo scopo di fare questo ed è per questo che abbiamo un ottimizzatore personalizzato separato basato

00:56.790 --> 00:57.990
su atom optimizer.

00:58.200 --> 01:02.680
E questo è contenuto in questa classe nemica condivisa e perché l'atomo condiviso.

01:02.880 --> 01:08.190
È perché è in realtà l'atom optimizer ma funzionerà su stati condivisi.

01:08.190 --> 01:12.840
Quindi spiegheremo come funziona ed è toile Quindi passeremo attraverso le diverse funzioni qui

01:12.840 --> 01:18.170
senza ucciderle perché sai che vogliamo mantenere un po 'di energia per il prossimo e inoltre

01:18.180 --> 01:23.190
che è il treno che io caduto che richiederà più di cento linee di codice.

01:23.190 --> 01:24.550
Quindi sii pronto per quello.

01:24.600 --> 01:30.440
E quindi cercheremo di spiegare cosa sta succedendo qui in uno Statoil Statoil.

01:30.480 --> 01:31.970
E iniziamo adesso.

01:32.810 --> 01:38.480
condivisione di classe che conterrà tre funzioni, la funzione init, la funzione di memoria condivisa e la funzione step.

01:38.480 --> 01:40.900
Bene, per prima cosa introduciamo questo atomo di

01:41.180 --> 01:48.410
Quindi quello che facciamo per primo è che ereditiamo da optin quell'atomo che è naturalmente l'atom optimizer

01:48.410 --> 01:52.100
e che otteniamo dal modulo Upton dalla libreria torcia.

01:52.280 --> 01:57.980
Quindi, qui siamo di semplice eredità per ottenere tutti gli strumenti relativi all'ottimizzatore atom e quindi iniziamo

01:57.980 --> 01:59.320
con la funzione init.

01:59.330 --> 02:00.990
Quindi cosa succede qui.

02:01.150 --> 02:08.050
Per prima cosa usiamo la superfunzione per ereditare da tutti gli strumenti e tutti i parametri di base dell'atomo della

02:08.050 --> 02:11.310
classe Atom e questi parametri di base sono qui.

02:11.380 --> 02:16.090
Harams che apprende gli esca da gara Epsilon e la decomposizione del peso.

02:16.240 --> 02:17.920
E poi iniziamo un seguito.

02:17.980 --> 02:21.840
Questo primo Foluke per il gruppo stesso che raggruppa Paramo.

02:21.850 --> 02:28.310
Quindi per noi i gruppi parum impostati attorno ai gruppi contengono tutti gli attributi dell'ottimizzatore.

02:28.510 --> 02:34.030
E tra questi attributi abbiamo i parametri che dobbiamo ottimizzare questi parametri

02:34.030 --> 02:40.790
che vogliamo atomizzare altri modi della rete che sono contenuti nei gruppi self parum.

02:40.930 --> 02:44.860
Quindi andiamo gruppo appartiene ai gruppi di auto-aiuto.

02:44.980 --> 02:50.920
parametri che vogliamo ottimizzare e che sono forse contenuti in gruppi di dubbi personali.

02:50.920 --> 02:54.910
E qui abbiamo il secondo Faltu che otterrà questi

02:54.910 --> 03:01.870
Quindi fondamentalmente passiamo attraverso i gruppi di auto-aiuto che contengono tutti i parametri e per ciascun gruppo di

03:01.930 --> 03:07.480
parametri e il self-talk dei gruppi che passeremo attraverso i parametri che vogliamo ottimizzare.

03:07.540 --> 03:14.300
Quindi per il gruppo Paramo qui significa per ogni Tancer di pesi che vogliamo ottimizzare.

03:14.410 --> 03:20.200
Quindi per ogni peso del sensore che vogliamo ottimizzare e quindi cosa succede all'interno di questo gruppo con queste

03:20.200 --> 03:21.550
quattro linee di codice.

03:21.820 --> 03:29.650
In sostanza, ciò che accade è che l'aggiornamento effettuato dall'ottimizzatore si basa su una media mobile

03:29.890 --> 03:31.170
esponenziale del gradiente.

03:31.250 --> 03:32.880
Questa è la linea di codice qui.

03:33.010 --> 03:38.270
Questa è la media mobile esponenziale del gradiente del momento che è di ordine uno.

03:38.500 --> 03:44.860
Ma gli oggetti fatti da atomo non si basano solo su quello, ma si basa anche su una media

03:45.190 --> 03:47.140
mobile esponenziale del quadrato del gradiente.

03:47.260 --> 03:51.770
Questa è una media mobile esponenziale del gradiente di coppia a o due.

03:52.030 --> 03:55.320
Quindi ecco la media mobile esponenziale di tutti uno.

03:55.480 --> 04:00.560
Ed ecco la media mobile esponenziale di due per ognuno di loro che l'EMJ si è degradato.

04:00.790 --> 04:01.890
In modo che ciò che accade qui.

04:02.080 --> 04:07.930
E ora se vuoi approfondire il modo in cui la media mobile esponenziale funziona bene,

04:07.930 --> 04:14.560
ti consiglio di dare un'occhiata a questo documento di ricerca. Metodo Adam per l'ottimizzazione stocastica, perché in

04:14.860 --> 04:20.610
pratica l'atom optimizer che stiamo implementando in questo momento si basa su l'algoritmo qui.

04:20.890 --> 04:27.700
Quindi, se vuoi avere maggiori dettagli su come funziona l'algoritmo, questo documento sarà sicuramente utile.

04:27.700 --> 04:32.720
E poi hai ulteriori spiegazioni sull'algoritmo con gli atomi e le regole.

04:32.860 --> 04:37.840
E così sai che è solo se vuoi attaccare questo prima di attaccare la funzione del grande

04:37.840 --> 04:39.120
treno che farà dopo.

04:39.400 --> 04:41.990
OK, torniamo al bisonte.

04:42.220 --> 04:46.140
E ora passiamo alla seconda funzione di memoria condivisa.

04:46.190 --> 04:47.890
Quindi ora sto per dire alcune parole.

04:48.010 --> 04:54.580
L'idea di questa funzione di memoria condivisa è un po 'come il tensore che kuda sai è un acceleratore

04:54.580 --> 04:55.830
basato su una vista.

04:55.870 --> 05:03.160
E quindi in pratica quello che succede qui è che abbiamo questi tensori degli stati che condividono la memoria

05:03.160 --> 05:10.210
qui qui e qui che si comportano un po 'come il tenso che potrebbe accelerare il calcolo accelerato.

05:10.420 --> 05:17.140
Ma la differenza è che qui i sensori che condividono la memoria inviano il calcolo a una parte

05:17.140 --> 05:22.150
del GP voi o voi che è accessibile a tutte le minacce paralizzate.

05:22.160 --> 05:23.580
Quindi questo è fondamentalmente ciò che viene fatto qui.

05:23.590 --> 05:30.220
Questo è un po 'come 10 per quel kuda, ma è solo inviato a una parte del GP per

05:30.220 --> 05:32.090
essere accessibile alle minacce parallele.

05:32.090 --> 05:32.460
Tutto ok.

05:32.470 --> 05:35.100
E poi abbiamo l'ultimo passaggio di funzione.

05:35.110 --> 05:41.830
Quindi sai questa funzione è come il metodo step dell'atom optimizer che usiamo in questo corso.

05:41.830 --> 05:47.170
E quindi di nuovo questo è basato sull'algoritmo di uno degli stessi fogli che abbiamo visto prima.

05:47.170 --> 05:48.610
Quindi questo algoritmo.

05:48.850 --> 05:52.250
Quindi di nuovo vuoi capire in dettaglio le seguenti linee di codice.

05:52.420 --> 05:57.240
Bene ancora una volta, Ingrid sei tu a dare un'occhiata a questo algoritmo di questo articolo.

05:57.580 --> 06:04.330
E inoltre ciò che viene fatto qui non è del tutto obbligatorio, perché si tratta in realtà di una copia incolla

06:04.330 --> 06:07.180
del metodo step che agisce su quella classe atomica.

06:07.180 --> 06:14.050
è stato fatto qui, avremmo potuto farlo usando la nostra ereditarietà, perché qui ereditiamo da Acton che

06:14.050 --> 06:20.620
Adamo e così da usare la nostra eredità Bene, quello che possiamo fare invece di fare

06:20.620 --> 06:29.260
tutto questo è solo scrivere qui. superfunzione che applichiamo alla nostra classe Adam condivisa quindi al nostro oggetto autonomo e qui

06:29.710 --> 06:38.020
aggiungiamo solo passo con la parentesi. Il passo è il metodo dell'atto in quella classe ed è esattamente lo stesso.

06:38.320 --> 06:40.550
Quindi, in pratica, ciò che

06:40.750 --> 06:45.820
Ecco perché stavo solo dicendo che qui c'è solo una copia incolla del metodo step dell'atto

06:45.850 --> 06:46.860
nella classe Atom.

06:46.930 --> 06:53.440
Quindi penso che se si sostituisce tutto questo con questa super funzione applicata per condividere Adam e il metodo step,

06:53.830 --> 06:55.960
potremmo ottenere esattamente la stessa cosa.

06:57.220 --> 06:59.900
Va bene, quindi è stato interessante dargli una rapida occhiata.

06:59.920 --> 07:02.750
Fondamentalmente puoi vedere questo come Adam Optimizer.

07:02.850 --> 07:04.530
È come se avessimo avuto uno sguardo più approfondito.

07:04.640 --> 07:10.000
Ma ancora una volta se vuoi andare più in dettaglio di tutto questo e se vuoi capire cosa succede

07:10.000 --> 07:14.120
dietro le quinte Beh, ti incoraggio a dare un'occhiata a questo documento di ricerca.

07:14.170 --> 07:16.120
Inserirò il link nei commenti qui.

07:16.120 --> 07:19.940
Sai, ricorda che avrai tutto il codice collegato in grande dettaglio.

07:19.990 --> 07:22.120
Quindi è davvero bello se puoi dargli un'occhiata.

07:22.580 --> 07:30.310
E ora spero che tu abbia una grande energia perché passeremo al file del treno che conterrà questa enorme funzione

07:30.310 --> 07:35.860
di treno e che fondamentalmente addestrerà il nostro cervello che ora possiamo fare perché

07:35.860 --> 07:37.510
abbiamo il nostro ottimizzatore.

07:37.690 --> 07:39.230
Quindi fai una bella pausa ora.

07:39.250 --> 07:41.840
Dormi bene e quando ti senti in forma.

07:41.980 --> 07:44.440
Passiamo al prossimo passo.

07:44.440 --> 07:45.910
Fino ad allora goditi l'intelligenza artificiale.
