WEBVTT

00:02.520 --> 00:04.620
Instrutor: Olá a todos e bem-vindos de volta.

00:04.620 --> 00:07.920
Neste vídeo, falaremos sobre como usar

00:07.920 --> 00:11.640
o ChatGPT para resolver o "Breakout", usando

00:11.640 --> 00:15.540
o ChatGPT para implementar o A3C.

00:15.540 --> 00:19.470
Então, eu já o induzi com vários prompts malucos e obtivemos

00:19.470 --> 00:23.010
resultados incríveis, que veremos em um segundo.

00:23.010 --> 00:25.170
Portanto, este vídeo basicamente

00:25.170 --> 00:26.640
mostrará meu processo

00:26.640 --> 00:28.740
de raciocínio sobre como obtive

00:28.740 --> 00:31.470
os resultados e como você pode usar o ChatGPT

00:31.470 --> 00:34.890
para criar o algoritmo A3C também.

00:34.890 --> 00:39.360
Ok, então comecei de forma semelhante ao que fizemos com "DOOM". Eu disse:

00:39.360 --> 00:41.340
"ok, você é basicamente um especialista

00:41.340 --> 00:42.930
em aprendizado de máquina

00:42.930 --> 00:46.110
com anos de experiência em robótica".

00:46.110 --> 00:50.490
Eu o contrato para fazer o algoritmo A3C para "Breakout". O objetivo é ter um algoritmo SOTA, A3C totalmente

00:50.490 --> 00:52.110
funcional que possa

00:52.110 --> 00:56.100
jogar o jogo "Breakout".

00:56.100 --> 00:58.401
Implementei classes, o ambiente de

00:58.401 --> 01:00.150
código de teste e versões personalizadas

01:00.150 --> 01:02.520
do otimizador Adam que é usado como um

01:02.520 --> 01:05.040
otimizador de pesos compartilhados para

01:05.040 --> 01:07.590
o modelo A3C.

01:07.590 --> 01:09.361
Então, para dar mais contexto,

01:09.361 --> 01:13.076
o que eu fiz foi fornecer essas três coisas a você.

01:13.076 --> 01:18.000
Portanto, como mencionei antes de gerar o restante do código, seu objetivo

01:18.000 --> 01:20.160
é implementar a solução completa

01:20.160 --> 01:21.900
usando Python, Torch, de

01:21.900 --> 01:23.250
forma semelhante à

01:23.250 --> 01:25.650
que tínhamos, e otimizar o código

01:25.650 --> 01:27.690
para ser executado no Google

01:27.690 --> 01:31.680
Colab, da mesma forma que tínhamos antes.

01:31.680 --> 01:33.540
Além disso, comente cada linha

01:33.540 --> 01:35.850
do código para que os alunos possam

01:35.850 --> 01:38.590
entender o que você fez no código.

01:40.710 --> 01:42.990
Faça perguntas de esclarecimento, se necessário, entendido.

01:42.990 --> 01:46.500
Portanto, temos algumas sobreposições com o que fizemos

01:46.500 --> 01:48.360
para o Deep Q conversacional

01:48.360 --> 01:54.600
para "DOOM", mas acrescentei muito contexto, pois já tenho coisas implementadas e gostaria

01:54.600 --> 01:57.390
que elas fossem usadas.

01:57.390 --> 02:00.210
Então, foi assim que comecei e isso se confirmou.

02:00.210 --> 02:03.030
Sim, eu entendo e farei todas as

02:03.030 --> 02:06.840
perguntas. Forneça o restante do código.

02:06.840 --> 02:09.510
Em seguida, eu disse que este é o Adam Optimizer,

02:09.510 --> 02:11.753
colei o código do Adam Optimizer,

02:11.753 --> 02:15.180
para os recursos que temos, e dei essa instrução, disse

02:15.180 --> 02:16.920
para aguardar o restante do

02:16.920 --> 02:18.870
código antes de implementá-lo.

02:18.870 --> 02:21.963
Antes de obter bons resultados, eu simplesmente

02:23.130 --> 02:27.210
colei e ele imediatamente pulou para a implementação do A3C,

02:27.210 --> 02:30.510
sem aguardar o restante.

02:30.510 --> 02:32.310
Então, adicionei isso

02:32.310 --> 02:33.750
como um tipo de código

02:33.750 --> 02:38.750
sistêmico, um prompt sistêmico, e ele dizia: "Ok, forneça o

02:39.060 --> 02:40.560
ambiente e teste o

02:40.560 --> 02:41.820
código".

02:41.820 --> 02:42.653
Portanto, na verdade, ele está se referindo

02:42.653 --> 02:43.650
ao que fornecemos no primeiro prompt.

02:43.650 --> 02:46.323
Eu disse, legal, aqui está

02:47.160 --> 02:51.030
a implementação do ambiente Gym.

02:51.030 --> 02:52.173
Colei o código principal,

02:53.760 --> 02:56.010
adicionei contexto aqui, se você der uma olhada,

02:56.010 --> 02:57.128
e este é o arquivo principal

02:57.128 --> 02:59.040
que executa tudo.

02:59.040 --> 03:01.383
E então eu disse, ok, legal, espere

03:03.690 --> 03:05.267
pelo código de teste.

03:05.267 --> 03:06.813
E ele disse que sim, mas

03:07.830 --> 03:08.766
que eu ainda precisava

03:08.766 --> 03:11.880
ver o código de teste antes de implementar

03:11.880 --> 03:13.410
o A3C.

03:13.410 --> 03:15.813
E veja como, se você tiver

03:16.920 --> 03:19.170
um projeto maior, poderá

03:19.170 --> 03:21.480
usá-lo para influenciar

03:21.480 --> 03:23.230
o uso desse trecho

03:24.330 --> 03:27.810
de código ou como referência, no estilo,

03:27.810 --> 03:30.870
para que possa gerar algo no seu

03:30.870 --> 03:33.630
estilo de código.

03:33.630 --> 03:34.983
Legal, e quando eu fiz isso,

03:36.360 --> 03:38.370
ele disse: ótimo, vá em frente.

03:38.370 --> 03:41.190
E ele dizia basicamente que eu vou usar

03:41.190 --> 03:45.840
esse código principal, testar e implementar isso.

03:45.840 --> 03:49.200
E, em seguida, dizia: modelo criado. py, o que, na verdade, também fizemos

03:49.200 --> 03:52.800
no curso.

03:52.800 --> 03:55.830
E ele disse: aqui está o modelo do ActorCritic,

03:55.830 --> 03:58.620
e eu o comparo com o nosso.

03:58.620 --> 04:00.630
Esta é a versão mais recente do python, portanto,

04:00.630 --> 04:02.310
grande parte da inicialização de pesos

04:02.310 --> 04:05.640
e coisas do gênero pode ser feita de maneira mais elegante.

04:05.640 --> 04:09.060
Então, ele fez isso e, na verdade, usou

04:09.060 --> 04:13.680
muito bem, gerou o código do trem e, basicamente,

04:13.680 --> 04:15.663
o ActorCritic.

04:16.500 --> 04:19.860
E, se você der uma olhada, ela é bastante simplista, portanto,

04:19.860 --> 04:23.039
definitivamente precisa ser aprimorada.

04:23.039 --> 04:25.980
Então, o que você pode fazer é dizer, ok,

04:25.980 --> 04:27.423
eu disse para continuar,

04:28.500 --> 04:31.560
e ele continua escrevendo.

04:31.560 --> 04:35.373
Ele criou isso como uma espécie de

04:37.920 --> 04:41.040
perda, mas há, sim, basicamente

04:41.040 --> 04:45.030
tudo o que precisávamos, ele otimizou

04:45.030 --> 04:47.910
tudo, e você pode ver esse

04:47.910 --> 04:51.333
otimizador. parar no final.

04:53.160 --> 04:56.550
Portanto, ele basicamente

04:56.550 --> 04:58.080
usou tudo o que definimos

04:58.080 --> 04:59.220
até agora, bem como

04:59.220 --> 05:02.490
a perda adequada e, sim, o otimizador, tudo.

05:02.490 --> 05:05.730
Então é isso.

05:05.730 --> 05:07.591
Em algumas etapas simples,

05:07.591 --> 05:10.530
conseguimos implementar todo o código

05:10.530 --> 05:13.170
de um dos modelos de última geração

05:13.170 --> 05:15.270
que, por acaso, foi um dos

05:15.270 --> 05:18.450
melhores em 2017, 2018.

05:18.450 --> 05:21.060
Até hoje, ele realmente tem muita

05:21.060 --> 05:24.900
capacidade para resolver ambientes complexos,

05:24.900 --> 05:27.240
como o "Breakout". Como você viu, agora que temos o ChatGPT,

05:27.240 --> 05:28.710
por exemplo, você pode orientá-lo

05:28.710 --> 05:32.490
para implementar determinadas partes do código.

05:32.490 --> 05:35.250
E se você não souber o que certas

05:35.250 --> 05:36.990
partes do código realmente

05:36.990 --> 05:39.450
fazem, poderá perguntar a

05:39.450 --> 05:42.450
ele, por exemplo, legal, você pode

05:42.450 --> 05:44.853
explicar a parte do treinamento

05:47.310 --> 05:51.840
e onde está o costume do Adam?

05:51.840 --> 05:56.200
Portanto, estou solicitando que ele realmente se explique, o que

05:58.320 --> 05:59.223
é outra maneira

06:04.740 --> 06:08.430
de basicamente solicitá-lo a fornecer mais raciocínio

06:08.430 --> 06:10.290
por trás de sua geração.

06:10.290 --> 06:12.570
E você pode ver que, na verdade,

06:12.570 --> 06:16.803
ele vai explicar passo a passo.

06:17.730 --> 06:18.563
Então, sim, podemos

06:18.563 --> 06:21.213
esperar por isso, você pode fazer os mesmos

06:22.920 --> 06:25.890
prompts e obterá resultados muito semelhantes

06:25.890 --> 06:27.510
aos meus, mas, em geral,

06:27.510 --> 06:30.030
o que ele vai fazer agora é pegar a função

06:30.030 --> 06:31.950
de trem que definiu bem no topo,

06:31.950 --> 06:34.050
bem aqui, e basicamente passará

06:34.050 --> 06:38.010
por cada etapa e a implementará.

06:38.010 --> 06:40.890
Então, sim, seria isso.

06:40.890 --> 06:43.803
Definitivamente, recomendo que você experimente

06:44.700 --> 06:46.053
esse código no Google

06:47.580 --> 06:48.600
Colab. É possível

06:48.600 --> 06:52.863
fazê-lo, mas será um pouco complicado fazê-lo funcionar, devido

06:53.730 --> 06:54.780
à visualização e

06:54.780 --> 06:58.380
às limitações do ambiente do Goggle Colab.

06:58.380 --> 06:59.760
No entanto, você pode

06:59.760 --> 07:02.430
definitivamente colar os erros aqui e

07:02.430 --> 07:03.840
obter alguns resultados

07:03.840 --> 07:07.083
bem decentes para depurar o processo.

07:08.580 --> 07:11.310
E sim, com isso eu deixo você à vontade,

07:11.310 --> 07:13.890
e agora você tem a maneira de usar o ChatGPT

07:13.890 --> 07:16.860
sobre como obter valor para a A3C.

07:16.860 --> 07:20.400
E sim, espero que você tenha

07:20.400 --> 07:24.960
gostado do curso até agora, tchau.
