Ciao e benvenuto in questo tutorial.
Tutto ok.
Quindi nei tutorial precedenti abbiamo creato il cervello o se volete il cervello per l'A-3, ora vediamo che
dobbiamo allenare questo cervello.
Ma per allenare il suo cervello abbiamo bisogno di un ottimizzatore che usi questo strumento e attacchi
una sigaretta al centro per prendere il peso in base a quanto contribuiscono all'errore tra le previsioni
e gli obiettivi.
che abbiamo fatto finora nel primo e nel secondo modulo abbiamo usato l'ottimizzatore atom da torche durante l'allenamento.
E quello
Ma come ti ho detto abbiamo a che fare con un problema molto impegnativo che sta scoppiando e l'algoritmo A-380
da solo non è sufficiente per risolvere questo problema.
Abbiamo bisogno di alcuni ottimizzatori personalizzati e un sacco di trucchi diversi per risolvere questo problema senza
aspettare anni.
Questo è lo scopo di fare questo ed è per questo che abbiamo un ottimizzatore personalizzato separato basato
su atom optimizer.
E questo è contenuto in questa classe nemica condivisa e perché l'atomo condiviso.
È perché è in realtà l'atom optimizer ma funzionerà su stati condivisi.
Quindi spiegheremo come funziona ed è toile Quindi passeremo attraverso le diverse funzioni qui
senza ucciderle perché sai che vogliamo mantenere un po 'di energia per il prossimo e inoltre
che è il treno che io caduto che richiederà più di cento linee di codice.
Quindi sii pronto per quello.
E quindi cercheremo di spiegare cosa sta succedendo qui in uno Statoil Statoil.
E iniziamo adesso.
condivisione di classe che conterrà tre funzioni, la funzione init, la funzione di memoria condivisa e la funzione step.
Bene, per prima cosa introduciamo questo atomo di
Quindi quello che facciamo per primo è che ereditiamo da optin quell'atomo che è naturalmente l'atom optimizer
e che otteniamo dal modulo Upton dalla libreria torcia.
Quindi, qui siamo di semplice eredità per ottenere tutti gli strumenti relativi all'ottimizzatore atom e quindi iniziamo
con la funzione init.
Quindi cosa succede qui.
Per prima cosa usiamo la superfunzione per ereditare da tutti gli strumenti e tutti i parametri di base dell'atomo della
classe Atom e questi parametri di base sono qui.
Harams che apprende gli esca da gara Epsilon e la decomposizione del peso.
E poi iniziamo un seguito.
Questo primo Foluke per il gruppo stesso che raggruppa Paramo.
Quindi per noi i gruppi parum impostati attorno ai gruppi contengono tutti gli attributi dell'ottimizzatore.
E tra questi attributi abbiamo i parametri che dobbiamo ottimizzare questi parametri
che vogliamo atomizzare altri modi della rete che sono contenuti nei gruppi self parum.
Quindi andiamo gruppo appartiene ai gruppi di auto-aiuto.
parametri che vogliamo ottimizzare e che sono forse contenuti in gruppi di dubbi personali.
E qui abbiamo il secondo Faltu che otterrà questi
Quindi fondamentalmente passiamo attraverso i gruppi di auto-aiuto che contengono tutti i parametri e per ciascun gruppo di
parametri e il self-talk dei gruppi che passeremo attraverso i parametri che vogliamo ottimizzare.
Quindi per il gruppo Paramo qui significa per ogni Tancer di pesi che vogliamo ottimizzare.
Quindi per ogni peso del sensore che vogliamo ottimizzare e quindi cosa succede all'interno di questo gruppo con queste
quattro linee di codice.
In sostanza, ciò che accade è che l'aggiornamento effettuato dall'ottimizzatore si basa su una media mobile
esponenziale del gradiente.
Questa è la linea di codice qui.
Questa è la media mobile esponenziale del gradiente del momento che è di ordine uno.
Ma gli oggetti fatti da atomo non si basano solo su quello, ma si basa anche su una media
mobile esponenziale del quadrato del gradiente.
Questa è una media mobile esponenziale del gradiente di coppia a o due.
Quindi ecco la media mobile esponenziale di tutti uno.
Ed ecco la media mobile esponenziale di due per ognuno di loro che l'EMJ si è degradato.
In modo che ciò che accade qui.
E ora se vuoi approfondire il modo in cui la media mobile esponenziale funziona bene,
ti consiglio di dare un'occhiata a questo documento di ricerca. Metodo Adam per l'ottimizzazione stocastica, perché in
pratica l'atom optimizer che stiamo implementando in questo momento si basa su l'algoritmo qui.
Quindi, se vuoi avere maggiori dettagli su come funziona l'algoritmo, questo documento sarà sicuramente utile.
E poi hai ulteriori spiegazioni sull'algoritmo con gli atomi e le regole.
E così sai che è solo se vuoi attaccare questo prima di attaccare la funzione del grande
treno che farà dopo.
OK, torniamo al bisonte.
E ora passiamo alla seconda funzione di memoria condivisa.
Quindi ora sto per dire alcune parole.
L'idea di questa funzione di memoria condivisa è un po 'come il tensore che kuda sai è un acceleratore
basato su una vista.
E quindi in pratica quello che succede qui è che abbiamo questi tensori degli stati che condividono la memoria
qui qui e qui che si comportano un po 'come il tenso che potrebbe accelerare il calcolo accelerato.
Ma la differenza è che qui i sensori che condividono la memoria inviano il calcolo a una parte
del GP voi o voi che è accessibile a tutte le minacce paralizzate.
Quindi questo è fondamentalmente ciò che viene fatto qui.
Questo è un po 'come 10 per quel kuda, ma è solo inviato a una parte del GP per
essere accessibile alle minacce parallele.
Tutto ok.
E poi abbiamo l'ultimo passaggio di funzione.
Quindi sai questa funzione è come il metodo step dell'atom optimizer che usiamo in questo corso.
E quindi di nuovo questo è basato sull'algoritmo di uno degli stessi fogli che abbiamo visto prima.
Quindi questo algoritmo.
Quindi di nuovo vuoi capire in dettaglio le seguenti linee di codice.
Bene ancora una volta, Ingrid sei tu a dare un'occhiata a questo algoritmo di questo articolo.
E inoltre ciò che viene fatto qui non è del tutto obbligatorio, perché si tratta in realtà di una copia incolla
del metodo step che agisce su quella classe atomica.
è stato fatto qui, avremmo potuto farlo usando la nostra ereditarietà, perché qui ereditiamo da Acton che
Adamo e così da usare la nostra eredità Bene, quello che possiamo fare invece di fare
tutto questo è solo scrivere qui. superfunzione che applichiamo alla nostra classe Adam condivisa quindi al nostro oggetto autonomo e qui
aggiungiamo solo passo con la parentesi. Il passo è il metodo dell'atto in quella classe ed è esattamente lo stesso.
Quindi, in pratica, ciò che
Ecco perché stavo solo dicendo che qui c'è solo una copia incolla del metodo step dell'atto
nella classe Atom.
Quindi penso che se si sostituisce tutto questo con questa super funzione applicata per condividere Adam e il metodo step,
potremmo ottenere esattamente la stessa cosa.
Va bene, quindi è stato interessante dargli una rapida occhiata.
Fondamentalmente puoi vedere questo come Adam Optimizer.
È come se avessimo avuto uno sguardo più approfondito.
Ma ancora una volta se vuoi andare più in dettaglio di tutto questo e se vuoi capire cosa succede
dietro le quinte Beh, ti incoraggio a dare un'occhiata a questo documento di ricerca.
Inserirò il link nei commenti qui.
Sai, ricorda che avrai tutto il codice collegato in grande dettaglio.
Quindi è davvero bello se puoi dargli un'occhiata.
E ora spero che tu abbia una grande energia perché passeremo al file del treno che conterrà questa enorme funzione
di treno e che fondamentalmente addestrerà il nostro cervello che ora possiamo fare perché
abbiamo il nostro ottimizzatore.
Quindi fai una bella pausa ora.
Dormi bene e quando ti senti in forma.
Passiamo al prossimo passo.
Fino ad allora goditi l'intelligenza artificiale.