WEBVTT

00:02.310 --> 00:04.620
Luka: Olá a todos e bem-vindos de volta.

00:04.620 --> 00:05.453
Neste vídeo,

00:05.453 --> 00:07.710
falaremos sobre o ChatGPT e como

00:07.710 --> 00:11.370
usá-lo para implementar o mesmo algoritmo para Doom

00:11.370 --> 00:13.350
que usaremos no curso, o Q-learning

00:13.350 --> 00:16.290
profundo convolucional.

00:16.290 --> 00:17.790
Portanto, nos próximos

00:17.790 --> 00:22.440
minutos, vamos explicar como eu apontei e pedi ao ChatGPT

00:22.440 --> 00:26.190
para obtermos nosso modelo.

00:26.190 --> 00:29.580
Então, deixe-me ajudá-lo a entender como eu fiz isso

00:29.580 --> 00:33.720
e por que fiz determinados prompts da maneira que fiz.

00:33.720 --> 00:38.460
Portanto, a solicitação inicial foi muito bem elaborada de minha parte.

00:38.460 --> 00:39.293
Eu disse: "Você é

00:39.293 --> 00:41.527
um especialista sênior em aprendizado de máquina"

00:41.527 --> 00:43.717
com anos de experiência trabalhando em projetos

00:43.717 --> 00:47.550
"aplicando aprendizado de máquina a simulações e robótica". Essa é a primeira parte, preparando o cenário, dando-lhes

00:47.550 --> 00:48.750
um papel.

00:48.750 --> 00:51.330
Portanto, basicamente, o espaço vetorial de todo

00:51.330 --> 00:55.410
o ChatGPT será mais solicitado em tópicos de aprendizado de máquina.

00:55.410 --> 00:59.310
Agora, quero incluir em meu contexto o Doom.

00:59.310 --> 01:04.310
E, na verdade, como chegar a esse ponto, eu disse: "Ok, contratei

01:04.500 --> 01:06.600
você para me ajudar a implementar

01:06.600 --> 01:08.887
um algoritmo Convolutional Deep

01:08.887 --> 01:12.457
Q-Learning para o ambiente Doom.

01:12.457 --> 01:14.407
"O objetivo é ter "um algoritmo de aprendizado

01:14.407 --> 01:15.337
de reforço totalmente

01:15.337 --> 01:18.457
funcional" que possa jogar Doom, um ambiente de jogo.

01:18.457 --> 01:22.327
"Implementei classes "para experience_replay e processamento

01:22.327 --> 01:24.187
de memória e imagem.

01:24.187 --> 01:27.903
"Eu lhe fornecerei isso para que você possa incorporá-lo

01:28.777 --> 01:30.337
ao código final.

01:30.337 --> 01:34.800
Isso é muito importante, o que a maioria das pessoas não percebe.

01:34.800 --> 01:37.893
Você precisa ter alguma forma de informar

01:38.790 --> 01:42.120
a ele, ou ao ChatGPT, que você já tem algo e que deseja

01:42.120 --> 01:43.860
usar esse código na implementação

01:43.860 --> 01:45.720
final.

01:45.720 --> 01:50.720
Portanto, se eu não fornecer isso como um contexto, ele gerará

01:50.910 --> 01:54.390
algum código, alguma implementação de Q-learning

01:54.390 --> 01:57.240
profundo convolucional que não considerará

01:57.240 --> 02:01.140
o uso de experience_replay e nossa função de processamento

02:01.140 --> 02:06.330
de imagem, mas queremos isso.

02:06.330 --> 02:07.323
Então, continuo

02:08.250 --> 02:10.537
dizendo: "Sua meta é implementar a solução

02:10.537 --> 02:14.107
completa usando Python, "Torch for model", e otimizar o código

02:14.107 --> 02:16.717
a ser executado no Google Colab "para que os alunos

02:16.717 --> 02:21.187
que estiverem usando o código "possam executar aqueles com computadores não

02:21.187 --> 02:23.167
tão potentes. Isso basicamente

02:23.167 --> 02:28.167
informa ao ChatGPT qual é o formato da solução

02:28.260 --> 02:33.060
final que você gostaria de ter.

02:33.060 --> 02:35.190
E, por fim, "faça perguntas de esclarecimento,

02:35.190 --> 02:37.200
se necessário" fornecerá mais contexto.

02:37.200 --> 02:40.050
E, "Eh, se você não sabe, "se você não tem contexto suficiente,

02:40.050 --> 02:42.060
por favor, me pergunte. E, por fim, perguntou: "Entendeu? Eu queria confirmar se ele conseguiu.

02:42.060 --> 02:44.197
Essa é uma maneira inteligente de permitir que ele reflita

02:44.197 --> 02:47.580
sobre isso e não vá estritamente para gerar os próximos prompts, as próximas respostas.

02:47.580 --> 02:49.737
Se você não fizer isso,

02:50.640 --> 02:53.730
se não perguntar "Entendeu? " ou "Clear? ou "Do you understand? " ou algo do gênero, ele

02:53.730 --> 02:58.730
ignorará completamente algumas

03:00.210 --> 03:05.210
das partes e começará a gerar.

03:05.820 --> 03:07.230
Como você tem o limite de quantos

03:07.230 --> 03:09.090
tokens tem nas perguntas

03:09.090 --> 03:12.780
e na resposta, gostaria de quebrá-lo para

03:12.780 --> 03:16.020
obter uma atualização da quantidade de tokens que pode gerar.

03:16.020 --> 03:18.240
Portanto, a primeira resposta

03:18.240 --> 03:20.760
é: "Eu entendi a tarefa.

03:20.760 --> 03:22.980
"Vou fazer exatamente o que estou pedindo.

03:22.980 --> 03:26.310
"Mas antes de prosseguir, tenho algumas perguntas. E foi aí que esse "se você tiver alguma dúvida, pergunte-me"

03:26.310 --> 03:28.610
me fez perguntas muito boas.

03:29.820 --> 03:32.377
Em primeiro lugar, você tem um ambiente personalizado

03:32.377 --> 03:33.607
ou usa algo que já existe?

03:33.607 --> 03:36.697
Portanto, OpenAI, VizDoom e coisas do gênero.

03:36.697 --> 03:39.600
Em seguida, passamos a uma questão mais específica,

03:39.600 --> 03:43.980
como: há alguma métrica de desempenho específica que você gostaria que

03:43.980 --> 03:45.750
eu acompanhasse?

03:45.750 --> 03:49.200
Existem requisitos para o modelo em si?

03:49.200 --> 03:51.240
Quais versões do Python e do PyTorch?

03:51.240 --> 03:53.883
E, por fim, há alguma restrição específica

03:54.750 --> 03:56.850
quanto ao prazo?

03:56.850 --> 03:58.950
Isso se refere principalmente aos planos

03:58.950 --> 04:00.783
de negócios em que ele foi treinado,

04:01.800 --> 04:05.850
mas para ele, por exemplo, isso não é realmente relevante, mas tudo bem.

04:05.850 --> 04:08.223
Eu forneci: "Sim, usarei o OpenAI Gym, e aqui está

04:09.180 --> 04:10.140
como carregá-lo". Isso é do curso.

04:10.140 --> 04:12.990
Eu disse: ok, siga a recompensa média, sem

04:12.990 --> 04:17.160
requisitos específicos, seja criativo desde que funcione,

04:17.160 --> 04:19.803
use os modelos ou versões mais recentes

04:20.970 --> 04:23.283
das bibliotecas e qual é o prazo.

04:24.150 --> 04:25.177
Acabei de escrever "ASAP".

04:25.177 --> 04:30.177
Além disso, aqui estão as aulas que mencionei.

04:30.480 --> 04:31.713
Então, apenas colei as aulas que temos no curso.

04:33.000 --> 04:35.133
Portanto, a reprodução

04:36.030 --> 04:40.953
de experiências, tudo e, por fim, a memória de reprodução,

04:42.120 --> 04:46.320
o processamento de imagens, e é isso.

04:46.320 --> 04:48.090
Com isso, criei o contexto, e agora

04:48.090 --> 04:49.797
ele começou a ser gerado.

04:51.150 --> 04:54.120
Assim, ele gerou o código.

04:54.120 --> 04:57.000
Basicamente, ele começou com o pré-processamento

04:57.000 --> 05:00.720
da imagem e, em seguida, criou a rede Q profunda, que

05:00.720 --> 05:04.773
é bastante semelhante à que temos.

05:05.790 --> 05:06.623
Em seguida, ele começou

05:07.681 --> 05:10.230
inicializando isso e, depois, treinando o código.

05:10.230 --> 05:13.530
Até agora, tudo funcionou, mas depois ele quebra aqui.

05:13.530 --> 05:15.753
Se você quiser continuar

05:16.590 --> 05:21.363
a gerar algo mais longo, basta escrever "continue".

05:22.560 --> 05:25.110
E ele dizia: "Continue? Sim, com certeza. Ele continua gerando e, pronto,

05:25.110 --> 05:27.513
temos o código completo.

05:29.070 --> 05:31.983
Incrível.

05:32.910 --> 05:34.863
Ele informava como usá-lo,

05:36.000 --> 05:40.350
a frequência, o que mudar e coisas do gênero.

05:40.350 --> 05:43.950
Ele também me ajudou com isso.

05:43.950 --> 05:46.110
E deixe-me levá-lo ao meu Google Colab.

05:46.110 --> 05:49.530
Então, comecei colando o código aqui,

05:49.530 --> 05:51.840
colando nossa função de pré-processamento.

05:51.840 --> 05:55.853
Em um segundo momento, falarei sobre as alterações nessa função de pré-processamento.

05:57.060 --> 06:00.750
Em seguida, colei esse replay da experiência, algumas

06:00.750 --> 06:02.793
das instalações do meu lado.

06:03.720 --> 06:05.940
Explicaremos isso em um segundo momento.

06:05.940 --> 06:09.630
Eu brinquei com sua rede Q profunda e com o código de treinamento.

06:09.630 --> 06:13.053
Portanto, definitivamente há maneiras de melhorar isso.

06:14.040 --> 06:16.290
Especialmente se você tiver um ambiente local, isso funcionará.

06:16.290 --> 06:18.720
Se você estiver usando isso no Google Colab, ele poderá falhar.

06:18.720 --> 06:19.553
Então, deixe-me levá-lo a isso.

06:20.970 --> 06:24.843
Então, fiz isso e recebi um erro.

06:25.740 --> 06:29.163
Eu disse: "Ei, meu código inicial que ele forneceu não funcionou.

06:30.150 --> 06:31.833
Acabei de colar o código,

06:32.790 --> 06:37.790
essa mensagem de erro e a seguinte frase: "I can't resize an images. E se você der uma olhada no nosso código do curso, ele requer o redimensionamento

06:38.430 --> 06:41.640
da imagem com isso.

06:41.640 --> 06:45.810
Mas a versão mais recente do SciPy está removendo isso.

06:45.810 --> 06:49.440
Então, ele disse: "Ah, sim", parece que isso pode ter

06:49.440 --> 06:50.840
sido removido. "Aqui está a nova versão com o Pillow.

06:51.750 --> 06:54.240
E, na verdade, isso não era necessário.

06:54.240 --> 06:58.110
Basicamente, ele reescreveu toda a classe de

06:58.110 --> 07:03.110
pré-processamento de imagens com o Pillow em vez do SciPy.

07:03.810 --> 07:06.600
Então, eu o usei e, na verdade, está funcionando.

07:06.600 --> 07:10.440
E então eu disse: "Ok, tenho um problema com o Environment

07:10.440 --> 07:13.200
usando o Google Colab.

07:13.200 --> 07:17.310
"Como resolver isso? Esse é o erro. E ele disse: "Ah, sim, peça desculpas.

07:17.310 --> 07:18.663
"Parece que esse ambiente específico não está funcionando.

07:19.537 --> 07:21.637
"Aqui está o que você deve fazer.

07:21.637 --> 07:25.200
"Basicamente, você instala e faz isso. Recebi um erro, outro erro.

07:25.200 --> 07:27.360
E esse erro realmente indicava

07:27.360 --> 07:32.260
que a renderização não foi encontrada nessa versão específica.

07:33.270 --> 07:36.723
E ele dizia: "Ok, instale esta versão. Eu disse. Outro erro.

07:37.620 --> 07:41.283
E ele dizia: "Ah, sim, sim, "o Google Colab não oferece suporte a renderização,

07:42.990 --> 07:44.227
bibliotecas OpenGL", o

07:44.227 --> 07:47.257
que significa, para nós, que precisamos fazer, em vez do Google

07:47.257 --> 07:50.160
Colab, outra coisa para fins

07:50.160 --> 07:52.087
de visualização.

07:52.087 --> 07:55.657
Basicamente, ele me deu uma orientação passo a passo

07:55.657 --> 07:56.917
sobre o que fazer,

07:56.917 --> 07:59.880
como mudar isso e coisas do gênero.

07:59.880 --> 08:02.580
E se você fizer isso localmente, resolverá o problema.

08:02.580 --> 08:04.350
Mas agora estamos basicamente

08:04.350 --> 08:09.350
ensinando a você como usar corretamente o ChatGPT.

08:11.850 --> 08:14.280
Por exemplo, aqui mesmo, você viu que recebi alguns erros, que fiz uma solicitação

08:14.280 --> 08:17.040
com esses erros e assim por diante.

08:17.040 --> 08:18.457
E agora você tem,

08:18.457 --> 08:23.457
por exemplo, se rolar para trás, um código totalmente funcional

08:24.270 --> 08:26.760
com uma rede Q profunda, com um

08:26.760 --> 08:27.870
código de treinamento,

08:27.870 --> 08:31.350
e você pode pedir que ele gere um código de teste,

08:31.350 --> 08:34.500
e ele o fará.

08:34.500 --> 08:37.440
Incrível, não é?

08:37.440 --> 08:38.820
Então é isso.

08:38.820 --> 08:42.450
Veja como usar o ChatGPT para resolver o Q profundo, ou rede

08:42.450 --> 08:45.120
Q profunda convolucional para o Doom.

08:45.120 --> 08:47.200
Obrigado. Aproveite o curso!
