WEBVTT

00:02.310 --> 00:04.620
Luka: Salve a tutti e bentornati.

00:04.620 --> 00:05.453
In questo video

00:05.453 --> 00:07.710
parleremo di ChatGPT e di come utilizzarlo

00:07.710 --> 00:11.370
per implementare lo stesso algoritmo per Doom che utilizzeremo

00:11.370 --> 00:13.350
nel corso, l'apprendimento profondo

00:13.350 --> 00:16.290
convoluzionale Q.

00:16.290 --> 00:17.790
Quindi, nei prossimi

00:17.790 --> 00:22.440
due minuti, vedremo il modo in cui ho indicato e chiesto a

00:22.440 --> 00:26.190
ChatGPT di ottenere il nostro modello.

00:26.190 --> 00:29.580
Lasciate quindi che vi aiuti a capire come ho fatto e perché

00:29.580 --> 00:33.720
ho eseguito alcuni suggerimenti nel modo in cui ho fatto.

00:33.720 --> 00:38.460
Quindi l'idea iniziale era piuttosto ben congegnata da parte mia.

00:38.460 --> 00:39.293
Ho detto: "Lei è un

00:39.293 --> 00:41.527
esperto senior di apprendimento automatico "con

00:41.527 --> 00:43.717
anni di esperienza di lavoro su progetti "che applicano

00:43.717 --> 00:47.550
l'apprendimento automatico alle simulazioni e alla robotica". Questa è la prima parte, che prepara la scena, dando

00:47.550 --> 00:48.750
loro un ruolo.

00:48.750 --> 00:51.330
In pratica, lo spazio vettoriale dell'intero ChatGPT

00:51.330 --> 00:55.410
sarà maggiormente indirizzato verso argomenti di apprendimento automatico.

00:55.410 --> 00:59.310
Ora voglio inserire nel mio contesto Doom.

00:59.310 --> 01:04.310
E in realtà, per arrivare a questo punto, ho detto: "Ok, ti ho assunto per aiutarmi

01:04.500 --> 01:06.600
"con l'implementazione di un algoritmo

01:06.600 --> 01:08.887
di apprendimento profondo convoluzionale

01:08.887 --> 01:12.457
Q-Learning "per l'ambiente Doom".

01:12.457 --> 01:14.407
"L'obiettivo è quello di avere "un algoritmo di apprendimento

01:14.407 --> 01:15.337
per rinforzo pienamente

01:15.337 --> 01:18.457
funzionante" che possa giocare a Doom, un ambiente di gioco.

01:18.457 --> 01:22.327
"Ho implementato classi "per l'esperienza_replay e l'elaborazione

01:22.327 --> 01:24.187
della memoria e delle immagini.

01:24.187 --> 01:27.903
Vi fornirò questo "in modo che possiate incorporarlo

01:28.777 --> 01:30.337
nel codice finale".

01:30.337 --> 01:34.800
Si tratta di un aspetto molto importante, che a molti sfugge.

01:34.800 --> 01:37.893
Dovete avere un modo per dirgli, o per dire a

01:38.790 --> 01:42.120
ChatGPT, che avete già qualcosa e che volete usare

01:42.120 --> 01:43.860
quel codice nell'implementazione

01:43.860 --> 01:45.720
finale.

01:45.720 --> 01:50.720
Quindi, se non fornissi questo contesto, verrebbe generato del codice,

01:50.910 --> 01:54.390
un'implementazione del deep Q-learning convoluzionale

01:54.390 --> 01:57.240
che non prenderebbe in considerazione

01:57.240 --> 02:01.140
l'uso di experience_replay e della nostra funzione di

02:01.140 --> 02:04.080
elaborazione delle immagini, ma noi vogliamo

02:04.080 --> 02:06.330
questo.

02:06.330 --> 02:07.323
Quindi, continuo dicendo:

02:08.250 --> 02:10.537
"Il vostro obiettivo è quello di implementare

02:10.537 --> 02:14.107
la soluzione completa utilizzando Python, "Torch per il modello, "e ottimizzare

02:14.107 --> 02:16.717
il codice per essere eseguito in Google Colab "in modo

02:16.717 --> 02:21.187
che gli studenti che passano attraverso il codice "possono eseguire quelli con computer

02:21.187 --> 02:23.167
non così forti". In pratica si tratta

02:23.167 --> 02:28.167
di dire al ChatGPT qual è il formato della soluzione

02:28.260 --> 02:33.060
finale che si desidera avere.

02:33.060 --> 02:35.190
Infine, "se necessario, fate domande di chiarimento"

02:35.190 --> 02:37.200
per fornire un contesto più ampio.

02:37.200 --> 02:40.050
E: "Se non lo sapete, se non avete un contesto

02:40.050 --> 02:42.060
sufficiente, chiedetemelo". E infine ha chiesto: "Capito? Volevo confermare che è stato ottenuto.

02:42.060 --> 02:44.197
Si tratta di un modo intelligente per consentirgli di riflettere

02:44.197 --> 02:47.580
su questo aspetto e di non limitarsi a generare le prossime richieste e le prossime risposte.

02:47.580 --> 02:49.737
Se non lo fate, se

02:50.640 --> 02:53.730
non chiedete "Capito? " o "Chiaro? oppure "Hai capito? " o qualcosa del genere,

02:53.730 --> 02:58.730
ignorerà completamente alcune parti

03:00.210 --> 03:05.210
e inizierà a generare.

03:05.820 --> 03:07.230
Dal momento che avete il limite di quanti

03:07.230 --> 03:09.090
gettoni avete nelle domande

03:09.090 --> 03:12.780
e nelle risposte, vorreste romperlo per avere

03:12.780 --> 03:16.020
un aggiornamento sulla quantità di gettoni che potete generare.

03:16.020 --> 03:18.240
Quindi la prima risposta

03:18.240 --> 03:20.760
è: "Ho capito il compito.

03:20.760 --> 03:22.980
"Farò esattamente quello che vi chiederò.

03:22.980 --> 03:26.310
"Ma prima di procedere, ho alcune domande. Ed è qui che questo "se avete delle domande, fatele a me",

03:26.310 --> 03:28.610
mi ha fatto delle belle domande.

03:29.820 --> 03:32.377
Innanzitutto, avete un ambiente personalizzato o utilizzate

03:32.377 --> 03:33.607
qualcosa che è già presente?

03:33.607 --> 03:36.697
Quindi OpenAI, VizDoom e cose del genere.

03:36.697 --> 03:39.600
Poi passiamo a un'analisi più approfondita:

03:39.600 --> 03:43.980
ci sono delle metriche di performance specifiche che volete

03:43.980 --> 03:45.750
che segua?

03:45.750 --> 03:49.200
Ci sono requisiti per il modello stesso?

03:49.200 --> 03:51.240
Quali versioni di Python e PyTorch?

03:51.240 --> 03:53.883
Infine, ci sono vincoli specifici

03:54.750 --> 03:56.850
sulla scadenza?

03:56.850 --> 03:58.950
Questo proviene per lo più dai piani aziendali

03:58.950 --> 04:00.783
su cui è stato addestrato, ma per esso,

04:01.800 --> 04:05.850
come dire, non è davvero, come dire, non è rilevante per esso, ma va bene.

04:05.850 --> 04:08.223
Ho risposto: "Sì, userò OpenAI Gym ed ecco

04:09.180 --> 04:10.140
come caricarlo. Questo è tratto dal corso.

04:10.140 --> 04:12.990
Ho detto, ok, seguite la ricompensa media,

04:12.990 --> 04:17.160
nessun requisito specifico, siate creativi purché funzioni,

04:17.160 --> 04:19.803
usate gli ultimi modelli o versioni delle

04:20.970 --> 04:23.283
librerie e qual è la scadenza.

04:24.150 --> 04:25.177
Ho appena scritto "il prima possibile".

04:25.177 --> 04:30.177
Inoltre, ecco le classi che ho menzionato.

04:30.480 --> 04:31.713
Quindi ho incollato le classi che abbiamo nel corso.

04:33.000 --> 04:35.133
Quindi il replay dell'esperienza,

04:36.030 --> 04:40.953
tutto, e infine la memoria di replay, l'elaborazione delle

04:42.120 --> 04:46.320
immagini, e questo è tutto.

04:46.320 --> 04:48.090
Con questo ho costruito il contesto

04:48.090 --> 04:49.797
e ora ha iniziato a generare.

04:51.150 --> 04:54.120
Quindi ha generato il codice.

04:54.120 --> 04:57.000
In pratica ha iniziato con la pre-elaborazione

04:57.000 --> 05:00.720
dell'immagine, poi ha creato la rete Q profonda, che

05:00.720 --> 05:04.773
è abbastanza simile a quella che abbiamo noi.

05:05.790 --> 05:06.623
Poi ha iniziato ad inizializzare

05:07.681 --> 05:10.230
il codice e quindi ad addestrare il codice.

05:10.230 --> 05:13.530
Finora ha funzionato tutto, ma poi si è rotto qui.

05:13.530 --> 05:15.753
Se si vuole continuare a generare

05:16.590 --> 05:21.363
qualcosa di più lungo, basta scrivere "continua".

05:22.560 --> 05:25.110
E mi ha detto: "Continuare? Sì, certo. Continua a generare e bam, abbiamo

05:25.110 --> 05:27.513
il codice completo.

05:29.070 --> 05:31.983
Incredibile.

05:32.910 --> 05:34.863
Indicava come usarlo,

05:36.000 --> 05:40.350
la frequenza, cosa cambiare e cose del genere.

05:40.350 --> 05:43.950
Mi ha aiutato anche in questo.

05:43.950 --> 05:46.110
E permettetemi di portarvi al mio Google Colab.

05:46.110 --> 05:49.530
Quindi ho iniziato incollando il codice qui,

05:49.530 --> 05:51.840
incollando la nostra funzione di pre-elaborazione.

05:51.840 --> 05:55.853
Tra un attimo passerò alle modifiche di questa funzione di pre-elaborazione.

05:57.060 --> 06:00.750
Poi, ho incollato questo replay dell'esperienza, alcune delle

06:00.750 --> 06:02.793
installazioni da parte mia.

06:03.720 --> 06:05.940
Lo spiegheremo tra un attimo.

06:05.940 --> 06:09.630
Ho giocato con la sua rete Q profonda e con il codice di addestramento.

06:09.630 --> 06:13.053
Quindi ci sono sicuramente modi per migliorare questo aspetto.

06:14.040 --> 06:16.290
Soprattutto se si dispone di un ambiente locale, funzionerà.

06:16.290 --> 06:18.720
Se lo si utilizza in Google Colab, potrebbe rompersi.

06:18.720 --> 06:19.553
Permettetemi quindi di portarvi a questo punto.

06:20.970 --> 06:24.843
L'ho fatto e ho ricevuto un errore.

06:25.740 --> 06:29.163
Ho detto: "Ehi, il codice iniziale che mi ha fornito non funzionava.

06:30.150 --> 06:31.833
Ho appena incollato il codice,

06:32.790 --> 06:37.790
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

06:38.430 --> 06:41.640
l'immagine con questo.

06:41.640 --> 06:45.810
Ma la nuova versione di SciPy lo sta effettivamente eliminando.

06:45.810 --> 06:49.440
Quindi ha detto: "Oh, sì, "sembra che questo sia

06:49.440 --> 06:50.840
stato rimosso". "Ecco la nuova versione con Pillow.

06:51.750 --> 06:54.240
E in realtà non era necessario.

06:54.240 --> 06:58.110
In pratica ha riscritto l'intera classe di pre-elaborazione

06:58.110 --> 07:03.110
delle immagini con Pillow invece che con SciPy.

07:03.810 --> 07:06.600
L'ho usato e funziona.

07:06.600 --> 07:10.440
E poi ho detto: "Ok, ho un problema con Ambiente

07:10.440 --> 07:13.200
che usa Google Colab.

07:13.200 --> 07:17.310
"Come risolverlo? Questo è l'errore. E mi ha detto: "Oh, sì, scusami".

07:17.310 --> 07:18.663
"Sembra che questo particolare ambiente non funzioni.

07:19.537 --> 07:21.637
"Ecco cosa fare.

07:21.637 --> 07:25.200
"In pratica si installa e si fa questo. Ho ricevuto un errore, un altro errore.

07:25.200 --> 07:27.360
Questo errore indica che il

07:27.360 --> 07:32.260
rendering non è presente in questa particolare versione.

07:33.270 --> 07:36.723
E mi dice: "Ok, installa questa versione". L'ho fatto. Un altro errore.

07:37.620 --> 07:41.283
E mi ha detto: "Oh, sì, sì, "Google Colab non supporta il rendering,

07:42.990 --> 07:44.227
le librerie OpenGL", il

07:44.227 --> 07:47.257
che significa, per noi, che dobbiamo fare, invece di Google

07:47.257 --> 07:50.160
Colab, qualcos'altro per

07:50.160 --> 07:52.087
la visualizzazione.

07:52.087 --> 07:55.657
E in pratica mi ha dato una guida passo passo

07:55.657 --> 07:56.917
su cosa fare, come

07:56.917 --> 07:59.880
cambiare e cose del genere.

07:59.880 --> 08:02.580
E se lo fate a livello locale, risolverete il problema.

08:02.580 --> 08:04.350
Ma questo è fondamentalmente

08:04.350 --> 08:09.350
un insegnamento su come utilizzare correttamente ChatGPT.

08:11.850 --> 08:14.280
Ad esempio, qui avete visto che ho avuto degli errori, ho risposto

08:14.280 --> 08:17.040
a questi errori e così via.

08:17.040 --> 08:18.457
E ora, se scorrete

08:18.457 --> 08:23.457
indietro, avete un codice completamente funzionante con

08:24.270 --> 08:26.760
una rete Q profonda, con un codice

08:26.760 --> 08:27.870
di addestramento,

08:27.870 --> 08:31.350
e potete chiedergli di generare un codice

08:31.350 --> 08:34.500
di prova, e lo farà.

08:34.500 --> 08:37.440
Incredibile, vero?

08:37.440 --> 08:38.820
Quindi è tutto.

08:38.820 --> 08:42.450
Ecco come utilizzare ChatGPT per risolvere la rete profonda Q,

08:42.450 --> 08:45.120
o rete profonda convoluzionale Q, per Doom.

08:45.120 --> 08:47.200
Grazie. Godetevi il corso!
