WEBVTT

00:00.630 --> 00:03.170
Ciao e benvenuto in questo tutorial Python.

00:03.170 --> 00:03.500
Tutto ok.

00:03.510 --> 00:09.120
Ora nella prossima funzione che stiamo implementando formeremo la rete neurale profonda che si

00:09.120 --> 00:11.470
trova all'interno della nostra intelligenza artificiale.

00:11.490 --> 00:16.980
Quindi fondamentalmente faremo l'intero processo per la propagazione e quindi la propagazione indietro.

00:16.980 --> 00:19.140
Quindi stiamo per ottenere il nostro risultato.

00:19.200 --> 00:20.850
Avremo l'obiettivo.

00:20.890 --> 00:26.020
calcolare l'ultimo errore, quindi torneremo a propagare quest'ultimo errore nella nuova rete.

00:26.130 --> 00:28.410
Confronteremo l'output del target per

00:28.680 --> 00:33.960
E usando la discesa del gradiente suggerita che dovrà aspettare in base a quanto ha contribuito

00:33.960 --> 00:34.780
all'ultimo errore.

00:35.190 --> 00:39.030
Facciamo tutto questo per quelli di voi che vengono dal profondo Corpo dei Marines.

00:39.030 --> 00:43.850
Questa sarà roba buona ma per gli altri non ti preoccupare, lo espanderò di nuovo.

00:44.160 --> 00:51.630
Quindi chiameremo questa nuova funzione imparare e imparare la funzione prenderà diversi argomenti.

00:51.630 --> 00:57.350
Il primo io naturalmente che si riferirà all'oggetto della laurea in classe.

00:57.510 --> 01:08.770
attuale, quindi il nostro batch next state quindi il nostro premio e infine l'azione Arbat.

01:08.860 --> 01:15.570
Quindi prenderemo il nostro stato batch per lo stato

01:15.590 --> 01:16.960
Quindi perché lo prendiamo.

01:16.970 --> 01:19.770
Probabilmente hai riconosciuto cos'è questa serie.

01:19.880 --> 01:26.350
Beh, questa è ovviamente una transizione una transizione del processo decisionale del mercato che è alla base.

01:26.360 --> 01:27.440
Hai imparato.

01:27.500 --> 01:30.420
E perché li portiamo tutti in alcuni lotti.

01:30.560 --> 01:36.200
Beh, perché sai che ricordiamo che non consideriamo le transizioni da una serie dello stato superiore o

01:36.200 --> 01:39.630
attuale dello stato successivo, della ricompensa attuale e dell'azione corrente.

01:39.650 --> 01:44.050
Abbiamo creato alcuni semplici lotti qui grazie alla semplice funzione.

01:44.210 --> 01:48.430
E così ora le nostre transizioni sono sotto forma di primo lotto per questo stato.

01:48.500 --> 01:53.520
Un secondo lotto per la data successiva un lotto per il premio e un lotto per l'azione.

01:53.510 --> 01:59.090
Questa è la forma della nostra transizione ora e sono tutti ben allineati rispetto al

01:59.090 --> 02:04.150
tempo grazie a questa concatenazione che abbiamo fatto qui rispetto alla prima dimensione.

02:04.160 --> 02:10.460
Quindi il punto è che ora abbiamo questa transizione di lotti di un lotto per ciascuno stato nei prossimi giorni in

02:10.450 --> 02:15.400
cui lo guardiamo in azione e facciamo tutto questo perché stiamo usando questo trucco di ripetizione dell'esperienza.

02:15.530 --> 02:18.580
Quindi questa è la nostra rete neurale profonda in grado di imparare qualcosa.

02:18.590 --> 02:24.190
Ricorda se hai avuto solo una transizione da sola che cosa sarebbe un apprendimento istantaneo.

02:24.260 --> 02:28.930
O se vuoi un apprendimento della memoria molto breve e quindi la talpa non imparerebbe nulla.

02:29.180 --> 02:35.690
Quindi dobbiamo prendere questi lotti dalla memoria che diventeranno le nostre transizioni e poi alla fine otterremo i diversi

02:35.690 --> 02:40.940
output per ciascuno degli stati degli stati di input e lo faremo per gli stati

02:41.160 --> 02:45.620
e per gli stati successivi perché avremo bisogno di entrambi calcolare la perdita.

02:45.680 --> 02:51.860
Ricorderò presto l'equazione dell'equilibrio che è il cuore dell'algoritmo di apprendimento.

02:51.860 --> 02:57.120
Quindi ora entriamo nella funzione e prima otteniamo le uscite dello stato della casella.

02:57.170 --> 03:04.740
e poi diremo naturalmente che il nostro parlare di sé non è tutto così auto-start.

03:04.740 --> 03:07.670
Quindi chiamerò queste prime uscite vitali

03:07.740 --> 03:14.160
No perché vogliamo ottenere i nostri output del modello degli stati di input dello stato.

03:14.510 --> 03:19.110
E poiché il nostro modello è in realtà in attesa di una serie di stati di input.

03:19.310 --> 03:25.330
Bene, possiamo inserire totalmente lo stato in questo momento per l'input di tutti loro.

03:25.340 --> 03:31.550
Questo è esattamente il modo in cui abbiamo inizializzato gli stati che stanno entrando nella rete con la risposta alla

03:31.550 --> 03:35.080
tortura con questa vaga dimensione per il batch che è perfetto.

03:35.180 --> 03:37.720
Ora otteniamo le uscite di tutti loro.

03:37.880 --> 03:45.680
e otterremo i risultati di tutte le azioni possibili che conosci 0 1 e 2, ma non è quello che vogliamo.

03:45.860 --> 03:50.980
Ma poi c'è un altro trucco tecnico se vendiamo solo quello stato del modello

03:50.990 --> 03:54.580
Siamo interessati solo alle azioni che sono state scelte.

03:54.740 --> 04:01.190
Le azioni che sono state decise dalla rete per giocare in ogni momento e per

04:01.190 --> 04:09.320
far sì che queste siano realmente interessate sono le azioni giocate bene, dobbiamo usare questa funzione di raccolta in

04:09.320 --> 04:16.840
cui inseriamo una perché vogliamo solo l'azione che è stata scelta e quindi aggiungiamo quell'azione con questo.

04:16.880 --> 04:23.600
E in quella sezione raccogliamo ogni volta la migliore azione da giocare per ciascuno degli stati di input

04:23.600 --> 04:24.560
dello stato.

04:24.830 --> 04:30.690
l'azione che viene eseguita l'azione che viene scelta e otteniamo questo con questo raccolgo quella azione.

04:30.840 --> 04:31.770
Non vogliamo

04:32.130 --> 04:33.390
Ma fai attenzione.

04:33.450 --> 04:40.190
Lo stato qui ha questo diamanti finti e grasso nel lotto e quella sezione non ce l'ha.

04:40.190 --> 04:46.190
Backstay ce l'ha perché non ci siamo mai abituati qui, ma non abbiamo usato nessun arm squeeze

04:46.430 --> 04:52.880
per le azioni, quindi dobbiamo aggiungerlo qui in modo che l'azione Bache abbia esattamente la stessa dimensione dello stato.

04:53.150 --> 05:02.710
Quindi aggiungeremo un punto e stringiamo qui la tua destra e in realtà questo non è zero ma uno perché la risposta

05:03.200 --> 05:09.120
zero alla Fede non è lo stato e uno corrisponderà all'esame delle azioni.

05:09.370 --> 05:16.540
E infine l'ultima cosa che dobbiamo fare qui è che dobbiamo uccidere questo gruppo falso con una stretta.

05:16.600 --> 05:18.010
Perché abbiamo bisogno di farlo.

05:18.130 --> 05:20.130
Perché ora siamo fuori dalla rete neurale.

05:20.200 --> 05:22.820
Abbiamo i nostri risultati ma non li vogliamo indietro.

05:22.900 --> 05:24.080
Li vogliamo.

05:24.190 --> 05:26.260
E la semplice risposta è semplice vettore.

05:26.260 --> 05:31.540
Un vettore di output dei batch solo quando lavoriamo nella rete neurale perché la rete

05:31.540 --> 05:34.880
neurale si aspetta il formato dei sensori in un batch.

05:34.990 --> 05:40.510
i nostri risultati e nella prossima equazione baluns del deep learning non ne avremo bisogno in un batch.

05:40.510 --> 05:41.530
Ma ora abbiamo

05:41.530 --> 05:48.130
Quindi sto uccidendo questo qui e uccidendo la dimensione della fede per riprendere la forma semplice delle nostre uscite.

05:48.160 --> 05:54.530
Quindi sto solo aggiungendo qui Dot e poi spremere e poi dato che voglio uccidere la finta laminazione

05:54.540 --> 05:56.120
corrispondente al retro dell'azione.

05:56.250 --> 06:01.430
Bene visto che il motore dello spazio-tempo ha indice uno ne sto aggiungendo uno qui.

06:01.560 --> 06:02.050
Tutto ok.

06:02.100 --> 06:05.480
E ora ci siamo, abbiamo le nostre uscite.

06:05.490 --> 06:05.910
OK.

06:06.000 --> 06:11.100
Abbiamo un piccolo avvertimento su quale sia l'uscita della variabile locale assegnata ma mai utilizzata.

06:11.190 --> 06:11.860
Va bene.

06:11.880 --> 06:13.510
Lo useremo molto velocemente.

06:13.920 --> 06:15.540
Quindi sono le nostre uscite.

06:15.600 --> 06:23.660
E ora vogliamo ottenere i nostri prossimi outsitter Quindi ora potresti pensare perché abbiamo bisogno dei prossimi risultati.

06:23.840 --> 06:29.160
Bene, per capire questo, dobbiamo tornare all'algoritmo di deep learning che è proprio qui

06:29.180 --> 06:31.670
che fa parte del manuale di letak.

06:31.850 --> 06:33.820
Quindi questo è l'intero processo di diffusione.

06:33.860 --> 06:39.180
All'inizio stavamo inizializzando tutti i valori chiave e poi ogni volta t.

06:39.440 --> 06:44.770
Bene, eccoci, selezioniamo l'azione con Soughed Max che è quello che abbiamo fatto con la funzione di selezione.

06:44.870 --> 06:51.050
Quindi abbiamo aperto la transizione e quindi, come puoi vedere, otteniamo la previsione otteniamo l'obiettivo e

06:51.050 --> 06:52.120
possiamo essere l'ultimo.

06:52.190 --> 06:54.330
Quindi, perché abbiamo bisogno anche del prossimo output.

06:54.350 --> 07:01.640
Questo a causa del target il target è uguale al Ghana per il prossimo output più quello che vogliamo e calcoleremo

07:01.640 --> 07:06.060
gli obiettivi subito dopo poiché abbiamo bisogno del prossimo output del target.

07:06.200 --> 07:07.790
Calcoliamo questo prima.

07:07.820 --> 07:14.060
Quindi, ancora una volta per ottenere il prossimo aggiornamento molto semplice, il prossimo output sarà il risultato della

07:14.060 --> 07:19.180
nostra rete neurale quando lo stato successivo in batch lo sta inserendo come input.

07:19.190 --> 07:27.110
Quindi, molto semplicemente, prendiamo il nostro modello che è la nostra rete neurale e quindi questa volta l'input della

07:27.110 --> 07:33.020
rete neurale sarà il successivo stato in batch che ha confrontato la data successiva.

07:33.200 --> 07:41.290
Ma ora ricorda se torniamo all'algoritmo iniziale Bene, puoi vedere che l'output successivo è il massimo dei valori

07:41.290 --> 07:45.530
q per lo stato successivo rispetto a tutte le azioni.

07:45.730 --> 07:51.790
Quindi adesso per ottenere il prossimo output dobbiamo ottenere il massimo di questi valori q e quindi ho intenzione

07:51.790 --> 07:52.720
di farlo qui.

07:52.840 --> 08:00.550
Scollegate sapete come staccare tutte le uscite del modello perché abbiamo diversi stati in questo batch prossimo States che è

08:00.550 --> 08:06.730
il batch di tutti gli stati successivi in ​​tutte le transizioni prese dal campione casuale della

08:06.730 --> 08:07.620
nostra memoria.

08:07.840 --> 08:14.530
Quindi li sto staccando tutti usando la funzione di scollegamento e quindi sto prendendo il massimo di tutti questi

08:14.530 --> 08:15.250
due valori.

08:15.340 --> 08:20.920
E dal momento che stiamo prendendo il massimo di questi due valori rispetto all'azione Bene,

08:20.920 --> 08:23.080
dobbiamo specificare che è rispetto all'azione.

08:23.080 --> 08:26.310
E poiché l'azione è rappresentata dall'indice.

08:26.530 --> 08:32.770
Bene ancora una volta dobbiamo mettere il prossimo qui e quindi dobbiamo specificare che stiamo prendendo

08:33.290 --> 08:41.140
i valori di cue come T più 1 che è lo stadio successivo e lo stato successivo è rappresentato da 0

08:41.380 --> 08:47.370
perché lo zero dell'indice corrisponde agli stati e quindi qui dobbiamo aggiungere parentesi con indice 0.

08:47.770 --> 08:54.400
In questo modo otteniamo il massimo dei valori chiave degli stati successivi rappresentati dallo zero successivo

08:54.400 --> 09:01.490
in base a tutte le azioni rappresentate da uno indice e ora perfetto otteniamo i nostri output successivi.

09:01.570 --> 09:02.860
Questi sono un nuovo set.

09:02.870 --> 09:04.320
Ecco quando abbiamo avuto l'avvertimento.

09:04.320 --> 09:05.050
Ma va bene.

09:05.080 --> 09:07.950
Lo useremo adesso per calcolare l'obiettivo.

09:08.470 --> 09:12.510
E parlando dell'obiettivo è il prossimo passo di questa nota funzione.

09:12.520 --> 09:13.210
Quindi eccoci.

09:13.220 --> 09:15.460
L'obiettivo è uguale.

09:15.670 --> 09:18.220
Ora torniamo al nostro manuale AI AI.

09:18.400 --> 09:24.800
Il target è uguale alla parola più gamma volte il prossimo output è il massimo dei valori del cubo

09:24.800 --> 09:25.710
del giorno successivo.

09:25.930 --> 09:29.290
Secondo le azioni che possiamo calcolare.

09:29.340 --> 09:35.590
Quindi è uguale a se stesso che gamma e sé sono stati inizializzati con Gamma.

09:35.590 --> 09:45.100
Qui si presenta una variabile che è la vergine Q Un oggetto auto ottiene a Times i prossimi output come

09:45.100 --> 09:49.910
abbiamo appena detto più vogliamo che sia la migliore vuole.

09:49.940 --> 09:57.400
Stiamo lavorando con lotti qui, quindi più lotti che vogliamo e questo è l'obiettivo.

09:57.520 --> 10:03.820
In un campione della gamma di memoria moltiplicato per le uscite successive Più il premio.

10:03.900 --> 10:04.480
Tutto ok.

10:04.480 --> 10:05.080
Perfezionare.

10:05.110 --> 10:07.100
Quindi ora abbiamo le nostre uscite.

10:07.180 --> 10:13.270
Abbiamo anche i nostri obiettivi e quindi possiamo calcolare la perdita che rappresenta l'errore

10:13.270 --> 10:14.260
della previsione.

10:14.500 --> 10:21.000
Quindi chiamiamo quest'ultimo, gli ultimi due sono ovviamente per la differenza temporale.

10:21.040 --> 10:28.720
Questo è di nuovo al centro dell'apprendimento di Q e questo noioso sarà uguale al rilascio che

10:28.720 --> 10:30.330
migliora molto la Cunanan.

10:30.520 --> 10:34.730
Questa è l'ultima funzione che sceglieremo per la nostra intelligenza artificiale.

10:34.800 --> 10:38.640
Per quelli di voi che provengono dal corso di verde intenso che è davvero l'ultimo che consiglio.

10:38.680 --> 10:43.280
Se vuoi implementare la Coonerty e quindi come lo otterremo.

10:43.510 --> 10:50.380
Bene, di nuovo prenderemo una funzione dal modulo funzionale rappresentato da F e

10:50.380 --> 10:57.970
quindi qui userò il nostro modulo funzionale anatre e l'Hubble us può essere ottenuto

10:57.970 --> 11:02.420
grazie alla funzione Smoots L-1 che adora quella.

11:02.420 --> 11:03.850
Quindi premere Invio.

11:03.850 --> 11:07.910
E questa è davvero la migliore funzione persa che consiglio per l'apprendimento profondo.

11:07.930 --> 11:09.680
Migliora davvero il Culin.

11:09.820 --> 11:12.670
Ma questa è una funzione, quindi aggiungo una parentesi.

11:12.850 --> 11:14.740
E ora non c'è niente di più semplice.

11:14.830 --> 11:19.340
Gli argomenti che dobbiamo inserire sono le previsioni e gli obiettivi.

11:19.420 --> 11:24.010
Quindi le previsioni ovviamente sono uscite perché questo è l'output della rete neurale.

11:24.190 --> 11:27.600
No, l'output della rete neurale è ciò che predice la rete neurale.

11:27.730 --> 11:29.030
Quindi questa è la previsione.

11:29.260 --> 11:35.900
Quindi il primo argomento qui è output e quindi il secondo argomento è ovviamente l'obiettivo.

11:36.100 --> 11:40.110
La cosa che stiamo cercando di ottenere è già calcolata perfettamente.

11:40.150 --> 11:43.150
Possiamo inserire direttamente il target.

11:43.150 --> 11:43.630
Perfezionare.

11:43.650 --> 11:48.200
Ora ci hanno detto che abbiamo un po 'di tè qui.

11:48.220 --> 11:48.760
Eccoci.

11:48.760 --> 11:50.470
Ora l'avviso dovrebbe scomparire.

11:50.890 --> 11:51.420
Sì.

11:51.430 --> 11:52.110
Perfezionare.

11:52.180 --> 11:58.090
E ora che abbiamo l'ultimo errore, possiamo riportare l'errore dei propagatori nella rete per aggiornare i pesi con

11:58.090 --> 12:03.230
la discesa del gradiente stocastico e questo è esattamente ciò che faremo nel passaggio successivo.

12:03.490 --> 12:12.040
dobbiamo fare è quello di ottimizzare il nostro ottimizzatore che, ancora una volta, vi introdurrà.

12:12.190 --> 12:14.850
Quindi, ovviamente, ora quello che

12:15.030 --> 12:21.430
E questo è un ottimizzatore atomico che in realtà è un oggetto della classe Atom ed è già

12:21.580 --> 12:23.720
dotato dei parametri del nostro modello.

12:23.810 --> 12:31.480
E abbiamo già scelto un tasso di apprendimento pari a 0. L'1% per perfezionare il nostro ottimizzatore è pronto, ma ora

12:31.480 --> 12:37.150
dobbiamo giocarci sull'ultimo errore per eseguire la griglia stocastica nel senso e il peso dei dati.

12:37.180 --> 12:43.540
Quindi, quando si lavora con i combattenti, la prima cosa che dobbiamo fare è inizializzarla di nuovo ad ogni iterazione

12:43.540 --> 12:44.150
del ciclo.

12:44.200 --> 12:50.620
nel ciclo di questo per ottenere la griglia nel set e inizializzarlo di nuovo.

12:50.660 --> 12:53.310
Dobbiamo reinizializzare l'ottimizzatore da un'interazione all'altra

12:53.350 --> 12:54.820
E ogni iterazione del ciclo.

12:55.200 --> 12:59.410
Bene, useremo il seguente metodo che è zero.

12:59.940 --> 13:00.400
Eccoci qui.

13:00.410 --> 13:05.180
Zero grad reinizializzerà l'ottimizzatore ad ogni iterazione del ciclo.

13:05.230 --> 13:07.300
Quindi non dimentichiamo la parentesi.

13:07.390 --> 13:08.180
Perfezionare.

13:08.200 --> 13:14.850
E ora che è reinizializzato Bene possiamo eseguire la propagazione all'indietro con il nostro ottimizzatore.

13:15.190 --> 13:16.380
E come lo facciamo.

13:16.540 --> 13:22.660
Bene, prendiamo le nostre leggi e torneremo a diffonderle di nuovo nella rete e di

13:22.660 --> 13:24.330
tornare propagate nella rete.

13:24.460 --> 13:33.190
Abbiamo bisogno di utilizzare la funzione all'indietro e all'interno di questa funzione a rovescio raccomando di inserire le

13:33.220 --> 13:37.180
variabili del trattino basso e impostarlo su true.

13:37.240 --> 13:40.990
Raccomando di farlo perché questo migliorerà la propagazione del dorso.

13:41.200 --> 13:46.420
L'uso di variabili scritte è vero è quello di liberare un po 'di memoria e

13:46.420 --> 13:52.730
abbiamo bisogno di liberare la memoria perché andremo più volte nell'ultimo modo che migliorerà sicuramente le prestazioni di allenamento.

13:52.900 --> 13:58.980
Infine, l'ultima fase di questa funzione appresa consiste nel disporre di pesi di dati in base alla propagazione posteriore.

13:58.980 --> 14:02.570
Questo dipende da quanto i pesi hanno contribuito all'errore.

14:02.800 --> 14:11.680
E per fare questo riprendiamo il nostro ottimizzatore che è stato inizializzato in re-initialize e usiamo la funzione step

14:12.250 --> 14:17.560
e semplicemente con questa riga di codice usando la funzione step.

14:17.560 --> 14:19.450
Questo aggiornerà i pesi.

14:19.480 --> 14:21.860
Questa è la linea di codice che aggiorna i pesi.

14:21.910 --> 14:28.750
Questa riga di codice che propaga l'errore nella rete neurale e questa linea di codice utilizza l'ottimizzatore

14:28.930 --> 14:31.510
per aggiornare i pesi e così via.

14:31.510 --> 14:36.800
Abbiamo una rete neurale di apprendimento tutto bene quindi congratulazioni.

14:36.840 --> 14:42.320
Questa era probabilmente la parte più tecnica e difficile di tutta questa disputa o domani.

14:42.450 --> 14:47.880
So che la mia torcia può essere difficile a volte con facilità e spremere e

14:47.880 --> 14:54.900
spremere, ma alla fine prometto che otterrete una rete neurale molto funzionale e, quindi, un modello particolare e, infine,

14:54.960 --> 14:56.580
una grande intelligenza artificiale.

14:56.580 --> 15:03.150
Passiamo ora al prossimo passo o all'insegnante e al modello, che sarà la funzione di aggiornamento

15:03.210 --> 15:07.170
che ovviamente aggiornerà quando l'IA scoprirà il nuovo stato.

15:07.170 --> 15:11.420
Quindi sai che scoprirà il nuovo stato e quindi riceverà la ricompensa.

15:11.520 --> 15:16.860
A seconda dell'azione che viene visualizzata e questo nuovo stato si prenderà cura di questo con la

15:16.860 --> 15:19.510
funzione di aggiornamento e lo farà nel prossimo tutorial.

15:19.710 --> 15:21.000
Fino ad allora divertiti.

15:21.020 --> 15:21.300
IO.
