WEBVTT

00:00.630 --> 00:03.170
Olá e bem vindo a este tutorial do Python.

00:03.170 --> 00:03.500
Tudo bem.

00:03.510 --> 00:09.120
Agora, na próxima função que estamos a implementar, iremos treinar a rede neural profunda que

00:09.120 --> 00:11.470
está dentro da nossa inteligência artificial.

00:11.490 --> 00:16.980
Então, basicamente, vamos fazer todo o processo de propagação e posterior propagação.

00:16.980 --> 00:19.140
Então, é que vamos conseguir o nosso resultado.

00:19.200 --> 00:20.850
Nós vamos conseguir o alvo.

00:20.890 --> 00:26.020
calcular o último erro, então vamos voltar a propagar este último erro na nova rede.

00:26.130 --> 00:28.410
Vamos comparar a saída do alvo para

00:28.680 --> 00:33.960
E usando a descida gradiente sugerida que terá que esperar de acordo com o quanto eles contribuíram para

00:33.960 --> 00:34.780
o último erro.

00:35.190 --> 00:39.030
Então, vamos fazer tudo isso para aqueles que vêm do corpo de fuzileiros profundo.

00:39.030 --> 00:43.850
Isso será bom, mas para os outros não se preocupe eu vou expandi-lo novamente.

00:44.160 --> 00:51.630
Então, vamos chamar essa nova função para aprender e aprender a função vai levar vários argumentos.

00:51.630 --> 00:57.350
Primeiro eu, claro, que se referirá ao objeto do grau em sala de aula.

00:57.510 --> 01:08.770
em seguida, o nosso próximo estado do lote, em seguida, a nossa Essa recompensa e, finalmente, a ação de Arbat.

01:08.860 --> 01:15.570
Então, iremos pegar o nosso estado em trânsito para o estado atual,

01:15.590 --> 01:16.960
Então, por que tomamos isso.

01:16.970 --> 01:19.770
Você provavelmente reconheceu o que é esta série.

01:19.880 --> 01:26.350
Bem, é claro que é uma transição uma transição do processo de decisão do mercado que está na base.

01:26.360 --> 01:27.440
Você aprendeu.

01:27.500 --> 01:30.420
E por que todos os levamos para alguns lotes.

01:30.560 --> 01:36.200
Bem, isso é porque você sabe, lembre-se que não consideramos as transições por uma série de recompensas

01:36.200 --> 01:39.630
atuais de estado atual ou atual, e atual ação atual.

01:39.650 --> 01:44.050
Criamos alguns lotes simples aqui graças à função simples.

01:44.210 --> 01:48.430
E então agora nossas transições são na forma de primeiro lote para este estado.

01:48.500 --> 01:53.520
Um segundo lote para a próxima data de um lote para a recompensa e um lote para a ação.

01:53.510 --> 01:59.090
Essa é a forma de nossa transição agora e todos estão bem alinhados em relação

01:59.090 --> 02:04.150
ao tempo, graças a essa concatenação que fizemos aqui em relação à primeira dimensão.

02:04.160 --> 02:10.460
Então, o ponto é que agora temos essa transição de lotes um lote para cada um dos próximos dias, observamos

02:10.450 --> 02:15.400
isso em ação e fazemos tudo isso porque estamos usando esse truque de repetição de experiência.

02:15.530 --> 02:18.580
Então, a nossa rede neural profunda pode aprender alguma coisa.

02:18.590 --> 02:24.190
Lembre-se se você só teve uma transição, por si só, o que seria uma aprendizagem instantânea.

02:24.260 --> 02:28.930
Ou se você quer uma aprendizagem de memória muito curta e, portanto, a toupeira não aprenderia nada.

02:29.180 --> 02:35.690
Então, temos que levar esses lotes da memória que se tornam nossas transições e, em seguida, teremos os resultados

02:35.690 --> 02:40.940
diferentes para cada um dos estados dos estados de entrada e faremos isso para os estados

02:41.160 --> 02:45.620
e para os próximos Estados porque precisaremos de ambos para calcular a perda.

02:45.680 --> 02:51.860
Em breve, lembro a equação do equilíbrio que está no coração do algoritmo de aprendizagem.

02:51.860 --> 02:57.120
Então, agora vamos entrar na função e primeiro obtenhamos as saídas do estado da caixa.

02:57.170 --> 03:04.740
saídas viáveis ​​e então vamos dizer, claro, nossa auto-conversa, nem tudo são tão auto-iniciados.

03:04.740 --> 03:07.670
Então, eu vou chamar essas primeiras

03:07.740 --> 03:14.160
Não, porque queremos obter as saídas modelo dos estados de entrada do estado.

03:14.510 --> 03:19.110
E como nosso modelo está realmente esperando um lote de estados de entrada.

03:19.310 --> 03:25.330
Bem, podemos entrar completamente nesse estado agora para a entrada de todos eles.

03:25.340 --> 03:31.550
É exatamente assim que inicializamos os estados que estão entrando na rede com respostas de torção com

03:31.550 --> 03:35.080
esta vaga dimensão para o lote que é perfeita.

03:35.180 --> 03:37.720
Agora recebemos os resultados de todos eles.

03:37.880 --> 03:45.680
obteremos os resultados de todas as ações possíveis que você conhece 0 1 e 2, mas isso não é o que queremos.

03:45.860 --> 03:50.980
Mas, em seguida, há outro truque técnico se apenas vendemos esse estado modelo bem,

03:50.990 --> 03:54.580
Estamos apenas interessados ​​nas ações que foram escolhidas.

03:54.740 --> 04:01.190
As ações que foram decididas pela rede para jogar em cada momento e, portanto, para que

04:01.190 --> 04:09.320
essas pessoas realmente se interessem por isso são as ações jogadas bem, temos que usar essa função de reunião em

04:09.320 --> 04:16.840
que inserimos uma porque só queremos a ação que foi escolhida e depois Nós adicionamos essa ação com essa.

04:16.880 --> 04:23.600
E nessa seção, reuniremos cada vez que a melhor ação para jogar para cada um dos estados de

04:23.600 --> 04:24.560
entrada do estado.

04:24.830 --> 04:30.690
a ação que é jogada a ação que é escolhida e nós obtemos isso com isso reunir uma ação.

04:30.840 --> 04:31.770
Nós não queremos

04:32.130 --> 04:33.390
Mas então tenha cuidado.

04:33.450 --> 04:40.190
O estado aqui tem esses diamantes falsos e graxa no lote e essa seção não o possui.

04:40.190 --> 04:46.190
Backstay tem isso porque costumávamos usar o Unsworth aqui, mas não usamos nenhum aperto de braço para

04:46.430 --> 04:52.880
as ações, então devemos adicioná-lo aqui para que a ação Bache tenha exatamente a mesma dimensão que o estado.

04:53.150 --> 05:02.710
Então, vamos adicionar um ponto e apertar o seu direito aqui e, na verdade, isso não é zero, mas um porque a resposta

05:03.200 --> 05:09.120
zero à Fé não é o estado e um corresponderá ao exame das ações.

05:09.370 --> 05:16.540
E, finalmente, a última coisa que precisamos fazer aqui é que precisamos matar esse lote falso com um aperto.

05:16.600 --> 05:18.010
Por que precisamos fazer isso.

05:18.130 --> 05:20.130
Porque agora estamos fora da rede neural.

05:20.200 --> 05:22.820
Nós temos nossos resultados, mas não os queremos de volta.

05:22.900 --> 05:24.080
Nós os queremos.

05:24.190 --> 05:26.260
E a resposta simples é um vetor simples.

05:26.260 --> 05:31.540
Um vetor de saída dos lotes apenas quando trabalhamos na rede neural porque a rede

05:31.540 --> 05:34.880
neural espera o formato dos sensores em um lote.

05:34.990 --> 05:40.510
temos nossos resultados e na próxima equação de baluns da aprendizagem profunda, não precisaremos deles em um lote.

05:40.510 --> 05:41.530
Mas agora nós

05:41.530 --> 05:48.130
Então eu estou matando isso aqui e matando a dimensão de fé para recuperar a forma simples de nossos resultados.

05:48.160 --> 05:54.530
Então, estou apenas adicionando aqui Dot e, em seguida, aperte e depois, porque eu quero matar a falsa laminação correspondente à

05:54.540 --> 05:56.120
parte de trás da ação.

05:56.250 --> 06:01.430
Bem, já que o motor do espaço-tempo possui um índice, eu estou adicionando um aqui.

06:01.560 --> 06:02.050
Tudo bem.

06:02.100 --> 06:05.480
E agora, nós vamos, nós temos nossos resultados.

06:05.490 --> 06:05.910
ESTÁ BEM.

06:06.000 --> 06:11.100
Temos um pequeno aviso sobre o que a saída da variável local é atribuída, mas nunca foi usada.

06:11.190 --> 06:11.860
Isso está ok.

06:11.880 --> 06:13.510
Nós vamos usá-lo muito rapidamente.

06:13.920 --> 06:15.540
Então, essas são nossas saídas.

06:15.600 --> 06:23.660
E agora queremos obter nossos próximos resultados Então agora você pode estar pensando por que precisamos dos próximos resultados.

06:23.840 --> 06:29.160
Bem, para entender isso, precisamos voltar para o algoritmo de aprendizado profundo que está aqui mesmo

06:29.180 --> 06:31.670
que faz parte do manual do letak.

06:31.850 --> 06:33.820
Então, esse é todo o processo de difusão.

06:33.860 --> 06:39.180
No início, inicializamos todos os valores-chave e, em seguida, em cada tempo t.

06:39.440 --> 06:44.770
Bem, vamos lá, selecionamos a ação com Max suprimido, o que fizemos com a função de ação selecionada.

06:44.870 --> 06:51.050
Então abrimos a transição e então, como você pode ver, obtemos a previsão de que obtemos o alvo e podemos

06:51.050 --> 06:52.120
ser o último.

06:52.190 --> 06:54.330
Então, por que precisamos da próxima saída também.

06:54.350 --> 07:01.640
Isso é por causa do alvo que o alvo é igual a Gana, o próximo resultado mais o que queremos e

07:01.640 --> 07:06.060
vamos calcular os alvos logo depois, pois precisamos do próximo resultado do alvo.

07:06.200 --> 07:07.790
Vamos calcular isso primeiro.

07:07.820 --> 07:14.060
Então, novamente para obter a próxima atualização muito simples, o próximo resultado será o resultado da

07:14.060 --> 07:19.180
nossa rede neural quando o próximo estado em trânsito estiver entrando como entrada.

07:19.190 --> 07:27.110
Então, simplesmente, nós tomamos nosso modelo que é a nossa rede neural e, desta vez, a entrada da

07:27.110 --> 07:33.020
rede neural será o próximo estado em trânsito que se aproximou da próxima data.

07:33.200 --> 07:41.290
Mas agora lembre-se se voltarmos ao algoritmo inicial. Bem, você pode ver que a próxima saída é o máximo dos valores

07:41.290 --> 07:45.530
q para o próximo estado em relação a todas as ações.

07:45.730 --> 07:51.790
Então, agora, para obter o próximo resultado, precisamos obter o máximo desses valores de q e, portanto,

07:51.790 --> 07:52.720
vou fazer aqui.

07:52.840 --> 08:00.550
Destaque você saber para separar todas as saídas do modelo porque temos vários estados neste lote nos próximos Estados que

08:00.550 --> 08:06.730
são o lote de todos os estados seguintes em todas as transições tiradas da amostra aleatória

08:06.730 --> 08:07.620
da nossa memória.

08:07.840 --> 08:14.530
Então estou destacando todos eles usando a função de desbloqueio e depois estou levando o máximo de todos esses

08:14.530 --> 08:15.250
dois valores.

08:15.340 --> 08:20.920
E desde que estamos levando o máximo desses dois valores em relação à ação Bem, temos que

08:20.920 --> 08:23.080
especificar que é em relação à ação.

08:23.080 --> 08:26.310
E uma vez que a ação é representada pelo índice.

08:26.530 --> 08:32.770
Bem, novamente, temos que colocar o próximo aqui e depois precisamos especificar que estamos levando os

08:33.290 --> 08:41.140
valores de sugestão como T plus 1 que é o próximo estágio e o próximo estado é representado por 0

08:41.380 --> 08:47.370
porque o índice zero corresponde aos estados e portanto, aqui precisamos adicionar colchetes com índice 0.

08:47.770 --> 08:54.400
Dessa forma, obtemos o máximo dos valores-chave dos próximos estados representados pelo próximo zero de acordo

08:54.400 --> 09:01.490
com todas as ações que são representadas pelo índice um e agora perfeitas obtemos as nossas próximas saídas.

09:01.570 --> 09:02.860
Estes são um novo conjunto.

09:02.870 --> 09:04.320
Foi quando tivemos o aviso.

09:04.320 --> 09:05.050
Mas está tudo bem.

09:05.080 --> 09:07.950
Vamos usá-lo agora para calcular o alvo.

09:08.470 --> 09:12.510
E falando sobre o alvo, é o próximo passo dessa função conhecida.

09:12.520 --> 09:13.210
Então vamos lá.

09:13.220 --> 09:15.460
O alvo é igual.

09:15.670 --> 09:18.220
Agora vamos voltar ao nosso manual AI AI.

09:18.400 --> 09:24.800
O alvo é igual à palavra mais vezes de gama, a próxima saída é o máximo dos valores de cubo

09:24.800 --> 09:25.710
do dia seguinte.

09:25.930 --> 09:29.290
De acordo com as ações que podemos calcular.

09:29.340 --> 09:35.590
Então, isso é igual a si mesmo que gamma e self que Gamma foi inicializado.

09:35.590 --> 09:45.100
Aqui é introduzir uma que é uma variável da Virgem Q. Um objeto auto chegar aos tempos nas próximas saídas, como

09:45.100 --> 09:49.910
acabamos de dizer mais. Queremos, essa é a melhor vontade.

09:49.940 --> 09:57.400
Estamos trabalhando com lotes aqui, então, mais lote que queremos e esse é o alvo.

09:57.520 --> 10:03.820
Em uma amostra da memória, a gama multiplicada pelas próximas saídas, além da recompensa.

10:03.900 --> 10:04.480
Tudo bem.

10:04.480 --> 10:05.080
Perfeito.

10:05.110 --> 10:07.100
Então, agora temos nossos resultados.

10:07.180 --> 10:13.270
Nós também temos nossos objetivos e, portanto, podemos calcular a perda da perda que representa o

10:13.270 --> 10:14.260
erro da predição.

10:14.500 --> 10:21.000
Então, vamos chamar isso de último, os dois últimos são, naturalmente, para a diferença temporal.

10:21.040 --> 10:28.720
Isso é mais uma vez no coração de Q aprendendo e este tiddy nos vai ser igual ao lançamento que

10:28.720 --> 10:30.330
melhora muito o Cunanan.

10:30.520 --> 10:34.730
Essa é a última função que escolheremos para a nossa inteligência artificial.

10:34.800 --> 10:38.640
Para aqueles que vêm do curso verde profundo, é realmente o último que eu recomendo.

10:38.680 --> 10:43.280
Se você quiser implementar o Coonerty e então, como vamos conseguir isso.

10:43.510 --> 10:50.380
Bem, novamente vamos tomar uma função a partir do módulo funcional representado por F

10:50.380 --> 10:57.970
e, portanto, aqui vou usar nosso módulo funcional f pucks e o Hubble nós pode

10:57.970 --> 11:02.420
ser obtido graças à função Smoots L-1 ama esse.

11:02.420 --> 11:03.850
Então pressione Enter.

11:03.850 --> 11:07.910
E essa é realmente a melhor função perdida que eu recomendo para aprender profundamente.

11:07.930 --> 11:09.680
Realmente melhora o Culin.

11:09.820 --> 11:12.670
Mas esta é uma função, então estou adicionando alguns parênteses.

11:12.850 --> 11:14.740
E agora não há nada mais simples.

11:14.830 --> 11:19.340
Os argumentos que precisamos inserir são as previsões e os objetivos.

11:19.420 --> 11:24.010
Então, as previsões, é claro, são resultados porque essa é a saída da rede neural.

11:24.190 --> 11:27.600
Não há saída da rede neural do que a rede neural predisse.

11:27.730 --> 11:29.030
Então essa é a previsão.

11:29.260 --> 11:35.900
Então, o primeiro argumento aqui é resultados e então o segundo argumento é, naturalmente, o alvo.

11:36.100 --> 11:40.110
O que estamos tentando obter e já é calculado perfeito.

11:40.150 --> 11:43.150
Nós podemos inserir diretamente o alvo.

11:43.150 --> 11:43.630
Perfeito.

11:43.650 --> 11:48.200
Agora nos disseram que temos um pouco de chá aqui.

11:48.220 --> 11:48.760
Aqui vamos nós.

11:48.760 --> 11:50.470
Agora, o aviso deve desaparecer.

11:50.890 --> 11:51.420
Sim.

11:51.430 --> 11:52.110
Perfeito.

11:52.180 --> 11:58.090
E agora que temos o último erro, podemos voltar o erro dos propagadores de volta para a rede para

11:58.090 --> 12:03.230
atualizar os pesos com descida gradiente estocástica e é exatamente isso que vamos fazer no próximo passo.

12:03.490 --> 12:12.040
temos de fazer, como você pode imaginar, é adotar o nosso otimizador nosso otimizador, o que novamente nós apresentamos você inicializado.

12:12.190 --> 12:14.850
Então, é claro, agora, o que

12:15.030 --> 12:21.430
E isso é um otimizador de átomos que é realmente um objeto da classe Atom e já está equipado

12:21.580 --> 12:23.720
com os parâmetros do nosso modelo.

12:23.810 --> 12:31.480
E nós já escolhemos uma taxa de aprendizado de 0. 1 por cento para aperfeiçoar o nosso otimizador está pronto, mas

12:31.480 --> 12:37.150
agora precisamos tocá-lo no último erro para executar grade estocástica no sentido e nos pesos de dados.

12:37.180 --> 12:43.540
Então, ao trabalhar com lutadores, a primeira coisa que precisamos fazer é reinicializá-lo em cada iteração

12:43.540 --> 12:44.150
do loop.

12:44.200 --> 12:50.620
interação para o outro no loop deste para obter a grade no conjunto e reinicializá-lo.

12:50.660 --> 12:53.310
Devemos reinicializar o otimizador de uma

12:53.350 --> 12:54.820
E cada iteração do loop.

12:55.200 --> 12:59.410
Bem, vamos usar o seguinte método, que é zero.

12:59.940 --> 13:00.400
Aqui vamos nós.

13:00.410 --> 13:05.180
O zero grad reinicializará o otimizador em cada iteração do loop.

13:05.230 --> 13:07.300
Então não esqueçamos os parênteses.

13:07.390 --> 13:08.180
Perfeito.

13:08.200 --> 13:14.850
E agora que é reinicializado. Bem, podemos realizar propagação para trás com o nosso otimizador.

13:15.190 --> 13:16.380
E como nós fazemos isso.

13:16.540 --> 13:22.660
Bem, nós levamos nossas leis e vamos voltar a propagar de volta para a rede e

13:22.660 --> 13:24.330
voltar propagado na rede.

13:24.460 --> 13:33.190
Precisamos usar a função para trás e, dentro desta função para trás, recomendo inserir as variáveis

13:33.220 --> 13:37.180
​​de sigla restante e configurá-la como verdadeira.

13:37.240 --> 13:40.990
Eu recomendo fazer isso porque isso irá melhorar a propagação traseira.

13:41.200 --> 13:46.420
O uso de variáveis ​​escritas igual a verdade é libertar alguma memória e precisamos

13:46.420 --> 13:52.730
liberar a memória, porque vamos várias vezes no final, de modo que definitivamente o desempenho do treinamento melhorará.

13:52.900 --> 13:58.980
E, finalmente, o último passo desta função aprendida é ter pesos de dados de acordo com a propagação traseira.

13:58.980 --> 14:02.570
Isso é de acordo com o quanto os pesos contribuíram para o erro.

14:02.800 --> 14:11.680
E para fazer isso, retomamos nosso otimizador, que foi inicializado na reinicialização e usamos a função de etapa e

14:12.250 --> 14:17.560
simplesmente com esta linha de código usando a função de etapa.

14:17.560 --> 14:19.450
Isso atualizará os pesos.

14:19.480 --> 14:21.860
Essa é a linha de código que atualiza os pesos.

14:21.910 --> 14:28.750
Esta linha de código que propaga o erro na rede neural e esta linha de código usa o otimizador

14:28.930 --> 14:31.510
para atualizar os pesos e lá vamos.

14:31.510 --> 14:36.800
Temos uma rede neural de aprendizado bem assim, parabéns.

14:36.840 --> 14:42.320
Esta foi provavelmente a parte mais técnica e difícil de toda esta disputa ou amanhã.

14:42.450 --> 14:47.880
Eu sei que minha tocha pode ser complicada às vezes com facilidade, espremer e espremer,

14:47.880 --> 14:54.900
mas no final, eu prometo que você terá uma rede neural muito funcional e, portanto, modelo peculiar e, eventualmente,

14:54.960 --> 14:56.580
uma grande inteligência artificial.

14:56.580 --> 15:03.150
Então, vamos passar para o próximo passo ou professor e modelo, que será a função de atualização

15:03.210 --> 15:07.170
que, obviamente, será atualizada quando o IA descobrirá o novo estado.

15:07.170 --> 15:11.420
Então você sabe que vai descobrir o novo estado e depois receberá a recompensa.

15:11.520 --> 15:16.860
Dependendo da ação que é exibida e este novo estado irá cuidar disso com a função

15:16.860 --> 15:19.510
de atualização e fará isso no próximo tutorial.

15:19.710 --> 15:21.000
Até então, aproveite.

15:21.020 --> 15:21.300
EU.
