Luka: Salve a tutti e bentornati.
In questo video
parleremo di ChatGPT e di come utilizzarlo
per implementare lo stesso algoritmo per Doom che utilizzeremo
nel corso, l'apprendimento profondo
convoluzionale Q.
Quindi, nei prossimi
due minuti, vedremo il modo in cui ho indicato e chiesto a
ChatGPT di ottenere il nostro modello.
Lasciate quindi che vi aiuti a capire come ho fatto e perché
ho eseguito alcuni suggerimenti nel modo in cui ho fatto.
Quindi l'idea iniziale era piuttosto ben congegnata da parte mia.
Ho detto: "Lei è un
esperto senior di apprendimento automatico "con
anni di esperienza di lavoro su progetti "che applicano
l'apprendimento automatico alle simulazioni e alla robotica". Questa è la prima parte, che prepara la scena, dando
loro un ruolo.
In pratica, lo spazio vettoriale dell'intero ChatGPT
sarà maggiormente indirizzato verso argomenti di apprendimento automatico.
Ora voglio inserire nel mio contesto Doom.
E in realtà, per arrivare a questo punto, ho detto: "Ok, ti ho assunto per aiutarmi
"con l'implementazione di un algoritmo
di apprendimento profondo convoluzionale
Q-Learning "per l'ambiente Doom".
"L'obiettivo è quello di avere "un algoritmo di apprendimento
per rinforzo pienamente
funzionante" che possa giocare a Doom, un ambiente di gioco.
"Ho implementato classi "per l'esperienza_replay e l'elaborazione
della memoria e delle immagini.
Vi fornirò questo "in modo che possiate incorporarlo
nel codice finale".
Si tratta di un aspetto molto importante, che a molti sfugge.
Dovete avere un modo per dirgli, o per dire a
ChatGPT, che avete già qualcosa e che volete usare
quel codice nell'implementazione
finale.
Quindi, se non fornissi questo contesto, verrebbe generato del codice,
un'implementazione del deep Q-learning convoluzionale
che non prenderebbe in considerazione
l'uso di experience_replay e della nostra funzione di
elaborazione delle immagini, ma noi vogliamo
questo.
Quindi, continuo dicendo:
"Il vostro obiettivo è quello di implementare
la soluzione completa utilizzando Python, "Torch per il modello, "e ottimizzare
il codice per essere eseguito in Google Colab "in modo
che gli studenti che passano attraverso il codice "possono eseguire quelli con computer
non così forti". In pratica si tratta
di dire al ChatGPT qual è il formato della soluzione
finale che si desidera avere.
Infine, "se necessario, fate domande di chiarimento"
per fornire un contesto più ampio.
E: "Se non lo sapete, se non avete un contesto
sufficiente, chiedetemelo". E infine ha chiesto: "Capito? Volevo confermare che è stato ottenuto.
Si tratta di un modo intelligente per consentirgli di riflettere
su questo aspetto e di non limitarsi a generare le prossime richieste e le prossime risposte.
Se non lo fate, se
non chiedete "Capito? " o "Chiaro? oppure "Hai capito? " o qualcosa del genere,
ignorerà completamente alcune parti
e inizierà a generare.
Dal momento che avete il limite di quanti
gettoni avete nelle domande
e nelle risposte, vorreste romperlo per avere
un aggiornamento sulla quantità di gettoni che potete generare.
Quindi la prima risposta
è: "Ho capito il compito.
"Farò esattamente quello che vi chiederò.
"Ma prima di procedere, ho alcune domande. Ed è qui che questo "se avete delle domande, fatele a me",
mi ha fatto delle belle domande.
Innanzitutto, avete un ambiente personalizzato o utilizzate
qualcosa che è già presente?
Quindi OpenAI, VizDoom e cose del genere.
Poi passiamo a un'analisi più approfondita:
ci sono delle metriche di performance specifiche che volete
che segua?
Ci sono requisiti per il modello stesso?
Quali versioni di Python e PyTorch?
Infine, ci sono vincoli specifici
sulla scadenza?
Questo proviene per lo più dai piani aziendali
su cui è stato addestrato, ma per esso,
come dire, non è davvero, come dire, non è rilevante per esso, ma va bene.
Ho risposto: "Sì, userò OpenAI Gym ed ecco
come caricarlo. Questo è tratto dal corso.
Ho detto, ok, seguite la ricompensa media,
nessun requisito specifico, siate creativi purché funzioni,
usate gli ultimi modelli o versioni delle
librerie e qual è la scadenza.
Ho appena scritto "il prima possibile".
Inoltre, ecco le classi che ho menzionato.
Quindi ho incollato le classi che abbiamo nel corso.
Quindi il replay dell'esperienza,
tutto, e infine la memoria di replay, l'elaborazione delle
immagini, e questo è tutto.
Con questo ho costruito il contesto
e ora ha iniziato a generare.
Quindi ha generato il codice.
In pratica ha iniziato con la pre-elaborazione
dell'immagine, poi ha creato la rete Q profonda, che
è abbastanza simile a quella che abbiamo noi.
Poi ha iniziato ad inizializzare
il codice e quindi ad addestrare il codice.
Finora ha funzionato tutto, ma poi si è rotto qui.
Se si vuole continuare a generare
qualcosa di più lungo, basta scrivere "continua".
E mi ha detto: "Continuare? Sì, certo. Continua a generare e bam, abbiamo
il codice completo.
Incredibile.
Indicava come usarlo,
la frequenza, cosa cambiare e cose del genere.
Mi ha aiutato anche in questo.
E permettetemi di portarvi al mio Google Colab.
Quindi ho iniziato incollando il codice qui,
incollando la nostra funzione di pre-elaborazione.
Tra un attimo passerò alle modifiche di questa funzione di pre-elaborazione.
Poi, ho incollato questo replay dell'esperienza, alcune delle
installazioni da parte mia.
Lo spiegheremo tra un attimo.
Ho giocato con la sua rete Q profonda e con il codice di addestramento.
Quindi ci sono sicuramente modi per migliorare questo aspetto.
Soprattutto se si dispone di un ambiente locale, funzionerà.
Se lo si utilizza in Google Colab, potrebbe rompersi.
Permettetemi quindi di portarvi a questo punto.
L'ho fatto e ho ricevuto un errore.
Ho detto: "Ehi, il codice iniziale che mi ha fornito non funzionava.
Ho appena incollato il codice,
questo messaggio di errore e la scritta "Non posso ridimensionare un'immagine. E se si dà un'occhiata al codice del corso, si richiede di ridimensionare
l'immagine con questo.
Ma la nuova versione di SciPy lo sta effettivamente eliminando.
Quindi ha detto: "Oh, sì, "sembra che questo sia
stato rimosso". "Ecco la nuova versione con Pillow.
E in realtà non era necessario.
In pratica ha riscritto l'intera classe di pre-elaborazione
delle immagini con Pillow invece che con SciPy.
L'ho usato e funziona.
E poi ho detto: "Ok, ho un problema con Ambiente
che usa Google Colab.
"Come risolverlo? Questo è l'errore. E mi ha detto: "Oh, sì, scusami".
"Sembra che questo particolare ambiente non funzioni.
"Ecco cosa fare.
"In pratica si installa e si fa questo. Ho ricevuto un errore, un altro errore.
Questo errore indica che il
rendering non è presente in questa particolare versione.
E mi dice: "Ok, installa questa versione". L'ho fatto. Un altro errore.
E mi ha detto: "Oh, sì, sì, "Google Colab non supporta il rendering,
le librerie OpenGL", il
che significa, per noi, che dobbiamo fare, invece di Google
Colab, qualcos'altro per
la visualizzazione.
E in pratica mi ha dato una guida passo passo
su cosa fare, come
cambiare e cose del genere.
E se lo fate a livello locale, risolverete il problema.
Ma questo è fondamentalmente
un insegnamento su come utilizzare correttamente ChatGPT.
Ad esempio, qui avete visto che ho avuto degli errori, ho risposto
a questi errori e così via.
E ora, se scorrete
indietro, avete un codice completamente funzionante con
una rete Q profonda, con un codice
di addestramento,
e potete chiedergli di generare un codice
di prova, e lo farà.
Incredibile, vero?
Quindi è tutto.
Ecco come utilizzare ChatGPT per risolvere la rete profonda Q,
o rete profonda convoluzionale Q, per Doom.
Grazie. Godetevi il corso!