Ciao e benvenuto nella parte super eccitante della nostra creazione, la parte in cui la rendiamo intelligente.
Quindi questo è esattamente quello che succede quando si allena l'aria.
Formerò la sua intelligenza per raggiungere l'obiettivo che volevamo raggiungere.
E per fare questo, addestreremo fondamentalmente la rete neurale per produrre le previsioni giuste.
E poi tutto è già pronto perché questi segnali in uscita dal cervello hanno già la giusta
trasmissione al corpo per svolgere le azioni finali.
Quindi in pratica ora quello che stiamo per fare è qualcosa che abbiamo già fatto prima.
Prenderemo solo alcuni batch casuali dalla memoria, riceveremo il nostro input da questi campioni, ottenere
l'output, ottenere l'obiettivo, ottenere le previsioni, calcolare l'ultimo errore tra le previsioni e l'obiettivo,
quindi eseguire la propagazione all'indietro era per ottenere la discesa del gradiente aggiornare i pesi in
base a quanto hanno contribuito a quest'ultimo errore.
Quindi facciamo tutto questo.
Vedrai come sarà così facile perché abbiamo già tutti gli strumenti per implementarlo.
Non solo abbiamo il percorso verso strumenti come l'ottimizzatore e le funzioni di perdita, ma abbiamo anche tutte
le classi che abbiamo creato prima, come il nostro cervello, ovviamente, che useremo per ottenere
le previsioni.
Quindi la nostra esperienza, la traccia di idoneità dell'implementazione del replay e tutti questi strumenti combinati al pilota,
quali strumenti renderanno la formazione super performante e quindi alla fine otterremo un super potente
A. IO. Quindi facciamo in modo che questa formazione avvenga.
Rendiamo i nostri occhi intelligenti.
E la prima cosa che faremo ora è ottenere l'ultima funzione che useremo
durante l'addestramento per calcolare l'errore e ottimizzarlo.
Questa è la prima cosa che faremo.
Quindi creiamo una variabile per l'ultima funzione.
La chiameremo perdita.
E questo sarà uguale alla funzione di perdita MSE dal modulo finale.
E poi quel Mercilus.
Questa è l'ultima funzione che useremo perché fondamentalmente le nostre previsioni sono valori.
Sai, stiamo prevedendo i valori fondamentali delle diverse azioni.
E quindi, poiché questi sono numeri reali, beh, stiamo facendo una sorta di rete neurale per la regressione e quindi
la funzione di perdita è il mezzo per l'errore.
Questa è la funzione di perdita che usiamo in generale per la regressione.
Tutto ok.
Quindi ora che abbiamo la nostra ultima funzione, ottimizziamo il nostro ottimizzatore qui.
Questa è la variabile che creiamo per l'ottimizzatore.
E prenderemo come al solito.
Per quanto riguarda l'auto a guida autonoma, l'ottimizzatore atomico, è un ottimizzatore molto potente che farà miracoli per
l'allenamento.
Quindi portiamo questo fino a quell'atomo.
E ricorda, questo è esattamente ciò che l'auto a guida autonoma abbiamo per inserire due argomenti essenziali.
Il primo è quello che farà il collegamento tra l'ottimizzatore ed i parametri della nostra rete
neurale, cioè i pesi dei neuroni del nostro cervello.
E per fare questo, prendiamo il nostro cervello, che abbiamo chiamato CNN.
Questo è l'oggetto che abbiamo creato per il nostro cervello.
E così la CNN che ricorda i parametri che andiamo e qualche parentesi.
In questo modo la connessione tra l'ottimizzatore e i pesi dei neuroni nel cervello
del nostro A. IO. E poi il secondo argomento è un tasso di apprendimento, ed è dato da l. R.
E quindi qui dobbiamo prendere un tasso di apprendimento inferiore perché non vogliamo convergere troppo velocemente e vogliamo avere un po 'di
esplorazione e quindi un buon modo di apprendimento che possiamo dire qui è un piccolo che è di
quattro punti o uno che è 0. 01 percento.
Penso che sia lo stesso che abbiamo usato per l'auto a guida autonoma.
Va bene, quindi ora abbiamo un ottimizzatore di funzioni perse, quindi siamo quasi pronti per iniziare il ciclo completo.
Bene, in realtà, inizieremo il ciclo completo proprio ora.
Ma appena prima di farlo, decideremo la dimensione del numero di epoche in cui
ci trasformeremo e quindi creeremo una nuova variabile qui che risponderà a questo numero di epoche.
E impostiamolo uguale a cento.
Questo andrà bene per addestrare l'aria e scommetto anche che l'aria riuscirà a raggiungere la via migliore
prima di cento come venti o trenta.
Vediamo.
Ma per ora, prendiamone cento.
E se ne avremo bisogno, lo aumenteremo.
Ma non credo che sarà necessario.
OK, quindi ora che abbiamo il nostro numero di aeroporti, possiamo iniziare a fare il
giro completo, sai, questo ciclo completo principale dell'addestramento quando ci alleniamo sugli aeroporti.
Quindi per allora tutta la pallavolo sarà al lavoro.
È per questo che scegliamo di nuovo.
Ora, ovviamente, useremo la funzione intervallo per dire che vogliamo passare dal primo a un
numero di ca.
Più uno, perché, ricorda, il limite superiore di un intervallo non è incluso, e quindi,
se vuoi salire a 100, beh, dobbiamo specificare ed essere uno più per andare fino a 100.
Tutto ok.
Allora, Colin.
E ora entriamo nel circuito.
Tutto ok.
Quindi la prima cosa che faremo è fare 200 corse di dieci passaggi.
Quindi ogni epoca sarà di 200 corse, una dopo l'altra di 10 passaggi.
E per fare questo, abbiamo questa funzione di un passaggio dalla nostra classe di esperienza e quindi di
usare questa funzione, che in realtà è un metodo perché lo otterremo dal nostro oggetto
di memoria, che è un oggetto della classe sostitutiva per generare queste due corse di dieci passaggi.
Bene, dobbiamo prendere il nostro oggetto di memoria che ti ricordo che abbiamo creato proprio qui.
La memoria è un obiettivo per riprodurre la lezione di memoria con Insteps.
Ovvero 10 passi e una capacità di diecimila.
Abbiamo creato questo oggetto e da questo oggetto prendiamo bene, questa funzione di Rundstedt esegue i passaggi
e specifichiamo duecento cicli successivi di dieci passaggi in modo che eseguiremo fondamentalmente 200 passaggi ciascuno.
E ora che abbiamo questi 200 passaggi in esecuzione ad ogni apoc, beh, è il momento di campionare alcuni lotti da
queste corse e di campionare questi lotti.
Abbiamo un'altra funzione dalla nostra memoria, che è il batch di esempio, e che genererà esattamente alcuni
batch da queste 200 esecuzioni.
Ma ricorda, questi batch sono questa volta batch di una serie di transizioni che una serie di dieci passaggi rispetto a
prima dove i batch erano solo alcuni batch di singole transizioni qui.
Questa volta saranno batch di dieci passaggi, dieci transizioni, e quindi ora è il
momento di ottenere dalla nostra memoria questi batch casuali e di ottenerli.
Abbiamo utilizzato la funzione batch semplice a cui dobbiamo applicare la dimensione del batch e per la dimensione
del batch in cui possiamo prendere trentadue o anche sessantaquattro o anche centoventotto.
Ricorda, per quella dimensione è pratica comune usarne trentadue.
Questo è ciò che vedrai in generale nelle architetture delle reti neurali quando esegui un apprendimento in batch.
Ma questa volta è abbastanza diverso.
Noi stiamo solo campionando alcuni lotti di 10 passaggi, quindi è meglio prendere lotti di dimensioni maggiori.
Quindi è lì che possiamo prendere sessantaquattro, centoventotto.
Quindi ne prenderemo centoventotto.
E in realtà questo sarà all'interno del ciclo perché vogliamo prendere diversi batch e li stiamo prendendo in ciò
che viene restituito da questa semplice funzione batch.
Quindi questo ciclo completo per lotto in lotto campione di memoria, centoventotto significa che ogni
centoventotto passaggi, beh la nostra memoria ci darà un lotto di dimensioni,
centoventotto, che conterrà effettivamente l'ultimo centoventotto passi che abbiamo appena eseguito.
Stiamo solo ottenendo alcuni lotti di sei, centoventotto e l'apprendimento avverrà su
questi lotti.
E oltre a questi lotti, avremo vassoi di idoneità in esecuzione, sai, per imparare ogni 10
passaggi.
Tutto ok.
Quindi ora all'interno di questo ciclo, che sta ancora accadendo in un'epoca, ma ora questa volta siamo in un lotto
specifico.
E quindi ora la prima cosa che faremo è ottenere i nostri input e il nostro obiettivo separatamente.
E questo, come ti ho detto, è molto facile.
Possiamo farlo con uno degli strumenti che abbiamo implementato, ovvero la traccia di ammissibilità.
Come puoi vedere qui, questa funzione di traccia dell'eleggibilità prende come input e ora abbiamo il batch
e i resi come output, gli input e gli obiettivi.
Quindi in questo momento, quello che possiamo semplicemente fare è creare due nuove variabili, che saranno gli input
e l'obiettivo.
E in questo modo gli input arrivano a obiettivi uguali esattamente a ciò che restituisce questa funzione di traccia di ammissibilità applicare a un
batch.
Quindi applicheremo questa funzione al batch del nostro ciclo.
E quindi quello che faremo è solo l'idoneità.
Traccia applicata al lotto della nostra speranza.
Va bene, questo ci fornisce gli input e gli obiettivi, ma in situazioni difficili, c'è sempre qualcosa in più che
dobbiamo fare.
E, naturalmente, questo serve a convertire l'input della rete neurale e anche l'obiettivo in alcune variabili
tahj.
Ma non c'è niente di nuovo.
Noi sappiamo come farlo.
Possiamo farlo in questo modo.
Prendiamo i nostri input, poi i nostri obiettivi e beh, saranno uguali al verbale.
Input's.
Questo è per l'input e verbale.
Obiettivi, e questo è per gli obiettivi.
Va bene, quindi gli input del cervello vengono convertiti in alcune variabili tahj e anche gli obiettivi vengono convertiti in
alcune variabili tahj.
Quindi ora possiamo inserire gli input nella rete neurale.
E perché dobbiamo farlo?
Poiché il passo successivo è ottenere le previsioni, abbiamo gli input che dobbiamo indirizzare.
Ora, ovviamente, abbiamo bisogno delle nostre previsioni perché ciò che accade è che calcoleremo la perdita
tra le previsioni e gli obiettivi.
Quindi otteniamo queste previsioni per ottenerle.
Bene, ancora una volta, questo è così semplice.
Ora dobbiamo solo prendere il nostro cervello, che è la CNN, la nostra rete neurale convoluzionale, e
applicarlo ai nostri input.
Ci siamo.
Gli input vanno nella rete neurale e la rete neurale produrrà le previsioni.
Perfetto, quindi ora abbiamo le previsioni, abbiamo gli obiettivi in modo da poter ottenere le leggi
e questo è il passo successivo, introdurremo un altro nuovo perché in questo momento otterremo l'ultimo errore,
che è diverso rispetto all'ultima funzione, perché la usiamo come funzione per ottenere l'ultimo errore.
Quindi meno errori qui e che lo otterremo con la funzione meno applicata alle nostre previsioni e agli obiettivi che
andiamo a vedere come tutto è liscio ora.
Tutto è logico.
Otteniamo prima l'input, gli obiettivi, quindi grazie all'input, otteniamo le previsioni.
E poi grazie alle previsioni e agli obiettivi che otteniamo, meno errori.
Quindi molto logico e fluido, e ora qual è il passo successivo?
Bene, lo stesso percorso logico ora che abbiamo l'ultimo, possiamo propagare questo errore minore nella nuova
rete per aggiornare i pesi.
E lo facciamo con la discesa del gradiente stocastico e per eseguire la discesa del gradiente stocastico.
Abbiamo bisogno del nostro ottimizzatore, ma lo abbiamo già.
Ecco Adam Optimizer.
Ma ora, a questo punto, ricorda cosa dobbiamo fare.
Dobbiamo inizializzarlo e inizializzarlo.
Ricorda, prendiamo il nostro oggetto ottimizzatore e quindi applichiamo il metodo zero grad.
Ecco fatto, non dimentichiamo le parentesi che lo inizializzano, e ora il prossimo passo è propagare
indietro l'ultimo errore nella nuova rete e per fare questo dove prendiamo il nostro ultimo errore e
applichiamo su di esso il metodo all'indietro.
Quindi questo è esattamente per applicare la propagazione all'indietro.
E poi finalmente, ora che l'ultimo errore è tornato, propagalo nella nuova rete.
Bene, possiamo aggiornare i pesi con la discesa in pendenza Cassi.
E per fare questo, ricorda, prendiamo il nostro ottimizzatore e quindi applichiamo il metodo dei passaggi.
Ci siamo.
I pesi sono ora aggiornati.
Come ti ho detto, non solo lo abbiamo già fatto, ma ora sembra così semplice e così naturale.
Quindi ora faremo qualcosa di divertente.
Stamperemo la ricompensa media ogni apoc.
Quindi, sai, possiamo tenere traccia di come l'A. IO. come sta andando la formazione.
Vogliamo vedere la ricompensa media aumentare durante i passaggi, oltre la scatola.
E all'inizio, ovviamente, c'è questa fase di esplorazione.
Quindi la ricompensa media potrebbe non aumentare all'inizio, ma poi una volta raggiunta la fase di
sfruttamento, allora vedremo la ricompensa media aumentare decisamente e aumenterà fino a un certo livello, che è quando
raggiungerà l'ovest alla velocità di possibile.
Quindi iniziamo con la stampa.
Sai, lo stiamo facendo in uno, quindi dobbiamo tornare alla stampa più loop
e poi stamperemo bene, prima circa una colonna, poi la percentuale.
S, perché convertiremo tutto in una stringa migliore e poi aggiungeremo
la ricompensa media.
E poi aggiungiamo anche la percentuale, quindi chiuderemo la citazione.
E poi aggiungiamo una percentuale e dall'altra parte, sai, inseriamo le variabili che saranno la prima persona
poiché questa è l'epica qui e la seconda variabile corrispondente alla ricompensa media, che verrà calcolata
proprio ora.
Quindi la variabile della ricompensa media non esiste ancora.
Lo creeremo adesso.
Quindi useremo ETR al lavoro.
Anche se Époque è il numero, lo convertiremo in una stringa.
Così va meglio e.
Aggiungeremo, Estie, quella sarà la ricompensa media e quindi creeremo una
variabile che chiameremo una grande ricompensa e ora creeremo questa variabile e la calcoleremo ?
OK, quindi facciamolo.
È l'unica cosa che ci resta da fare.
Quindi Époque, l'abbiamo già fatto.
Ora calcoliamo il mondo medio e dobbiamo calcolarlo proprio qui.
Ancora nel ciclo, ma fuori dal ciclo, perché ora abbiamo il nostro batch campionato e abbiamo la nostra formazione in corso
nel batch.
Ma ora la propagazione in avanti più la propagazione all'indietro vengono eseguite nel batch.
Quindi stiamo tornando al ciclo e ora possiamo calcolare i premi cumulativi che possiamo fare con il nostro
oggetto insteps.
Poiché il nostro oggetto insteps contiene questa funzione, avremmo dei passaggi che ci consentono di ottenere i premi cumulativi che si verificano
nei passaggi, sai, durante la corsa del collo del piede.
Quindi lo useremo adesso per aggiornare le nuove ricompense dei passaggi.
Quindi aggiorneremo l'oggetto della media mobile aggiungendo i premi cumulativi all'oggetto quotidiano in movimento e
quindi ricalcoleremo la media.
Ed è così che otterremo la ricompensa media.
Quindi facciamolo.
La prima cosa di cui abbiamo bisogno sono i dati DARABA dei premi.
Quindi chiamiamoli premi.
Passi e poi, come abbiamo detto, prendiamo l'oggetto dei nostri passi finali, che è stato, ricordo, creato qui un oggetto della classe
del progresso istantaneo dalla nostra esperienza che sporchiamo un soggetto così sensibile.
Quindi aggiungiamo ricompense, passaggi e poi alcune parentesi.
Tutto ok.
Questo ci darà le nuove ricompense cumulative dei passaggi.
Tutto ok.
Ma poi dobbiamo aggiungere questi nuovi premi cumulativi nei nostri oggetti a media mobile.
E per fare ciò, questa volta abbiamo un metodo nella classe della media mobile, che è questo metodo dell'annuncio molto
semplice.
Prendiamo il nostro oggetto medio mobile, che abbiamo creato qui con cento passaggi.
Quindi useremo il nostro metodo ADD e quindi nell'atmosfera inseriremo i nostri passaggi di ricompensa e questo aggiungerà
i premi dei passaggi nella media mobile.
Tutto ok.
E infine, possiamo calcolare la ricompensa media e questo è bene, sai, questa è la stessa variabile qui.
Quindi questo è ciò che sarà uguale alla ricompensa media.
E per ottenerlo, dobbiamo solo usare il metodo della media questa volta dal nostro oggetto a media mobile.
E questo è quello che facciamo e una media di punti proprio così, perché la nostra media mobile era già stata aggiornata con i
nuovi passaggi di ricompensa che abbiamo appena aggiunto al metodo ADD.
Grande.
Quindi ora abbiamo il nostro premio medio, quindi è molto popolare qui e verrà stampato ogni anno.
Va bene, quindi abbiamo finito.
Quindi sono così entusiasta di vedere i risultati.
E in realtà, avrò una sorpresa per te nel prossimo tutorial mentre guardo i risultati.
Quindi sarà piuttosto eccitante.
E quindi ora credo che sia ora di giocare con l'aria e divertirsi.
Tutto ok.
Quindi preparatevi un buon caffè o un buon tè.
Ora è il momento di sedersi comodamente sulla nostra sedia e guardare alcuni video molto interessanti del nostro aereo per vedere, che
è nel prossimo tutorial.
E fino ad allora, divertiti.