WEBVTT

00:00.480 --> 00:03.160
Olá e bem vindo a este tutorial do Python.

00:03.180 --> 00:03.520
Tudo bem.

00:03.520 --> 00:08.810
Neste óleo, vamos fazer a função que selecionará a ação correta e cada vez.

00:08.810 --> 00:13.650
Então, basicamente, vamos implementar a parte que fará com que o carro se mova para a direita.

00:13.740 --> 00:18.780
E cada vez que vai indo indo direto ou indo direto para alcançar o objetivo e evitar

00:18.780 --> 00:20.640
os obstáculos que são a descida.

00:21.000 --> 00:22.350
Então vamos fazer isso agora.

00:22.370 --> 00:28.320
de ação selecionada do que alguns parênteses e essa função de ação selecionada terá dois argumentos.

00:28.320 --> 00:36.370
Vamos começar como de costume com os surdos para definir uma função e depois damos um nome à nossa função, a

00:36.550 --> 00:37.410
qual chamaremos

00:37.450 --> 00:43.960
O primeiro é auto como você cresce para se referir ao objeto e ao segundo argumento

00:43.960 --> 00:46.150
que, segundo você, será qual deles.

00:46.390 --> 00:47.860
Bem, o que poderia ser.

00:47.860 --> 00:54.220
saída da rede neural ou os valores q para cada uma das três ações possíveis e, portanto, a ação

00:54.220 --> 00:59.890
que desempenhamos a ação que será a saída de a rede neural depende do estado de entrada

00:59.890 --> 01:05.980
e os estados de entrada são exatamente o segundo argumento que precisamos com a função de ação selecionada.

01:05.980 --> 01:11.610
Se você pensa sobre isso, a ação que selecionamos vem da saída da rede neural porque a

01:11.680 --> 01:16.310
É porque, literalmente, vamos levar a saída da rede neural.

01:16.510 --> 01:22.180
E é claro que a saída da rede neural depende diretamente da entrada da rede neural.

01:22.360 --> 01:24.010
Então esse será o nosso argumento.

01:24.280 --> 01:31.720
E agora podemos dar-lhe qualquer nome que realmente chamaremos de estado porque a entrada das redes neurais são os estados

01:31.960 --> 01:38.280
de entrada que são e codificam por um vetor de cinco dimensões para a orientação de três

01:38.480 --> 01:39.920
sinais e menos orientação.

01:40.120 --> 01:42.120
E agora, as coisas vão ser fáceis.

01:42.160 --> 01:47.860
Nós vamos alimentar o estado de entrada na rede neural o que nós construímos logo acima,

01:47.860 --> 01:54.520
aqui com a próxima classe e, então, vamos obter as saídas que são os valores-chave para cada uma das

01:54.520 --> 01:59.530
três ações possíveis e, em seguida, usando o método Soft Max que vou explicar

01:59.530 --> 02:00.360
neste tutorial.

02:00.400 --> 02:03.140
Nós vamos conseguir a ação final para jogar.

02:03.280 --> 02:08.460
Então, vamos fazer isso, vamos entrar na função e vamos implementar tudo isso.

02:08.470 --> 02:14.980
Então, a primeira coisa que precisamos para começar é sobre o que acabei de mencionar Max suprimido, a idéia

02:14.980 --> 02:20.590
do soft Max é que vamos tentar obter a melhor ação para jogar a cada momento.

02:20.740 --> 02:25.000
Mas, ao mesmo tempo, estaremos explorando as diferentes ações.

02:25.000 --> 02:25.950
E como nós fazemos isso.

02:25.960 --> 02:31.080
Como podemos obter a melhor ação para jogar enquanto ainda exploramos as outras ações.

02:31.270 --> 02:39.250
Bem, usamos essa idéia de coisas que consiste em gerar uma distribuição de probabilidades para cada um dos

02:39.250 --> 02:40.370
valores de q.

02:40.420 --> 02:42.100
Ação Q States.

02:42.160 --> 02:46.600
Agora, temos um valor Q para cada ação, vá para a esquerda, vá direto ou vá para a direita.

02:46.850 --> 02:49.680
Mas esse valor q também depende do estado de entrada.

02:49.690 --> 02:52.720
Esse é exatamente o uso da função Q nas palestras de intuição.

02:52.870 --> 02:56.280
Esta função Q é uma função do estado e da ação.

02:56.320 --> 03:02.540
Então, uma vez que temos aqui um estado de entrada que é o estado aqui e

03:02.540 --> 03:09.070
três ações possíveis, temos três novos valores Q. Ação de estado 1 Q ação de estado 2 e dois

03:09.070 --> 03:13.760
estados de ação 3 e vamos gerar uma distribuição de probabilidades em relação a estes três valores-chave.

03:13.930 --> 03:19.420
Isso é que vamos ter uma probabilidade para o primeiro valor de Q uma da probabilidade para o

03:19.420 --> 03:25.490
segundo valor de Q e uma terceira probabilidade para o terceiro Q E todas as três probabilidades somarão até 1.

03:25.670 --> 03:31.840
tudo isso com Max suprimido e Max sujado irá atribuir uma grande probabilidade ao Q mais alto ao redor.

03:32.170 --> 03:33.530
E então vamos fazer

03:33.820 --> 03:41.050
É por isso que uma alternativa para o Max macio é um RMX simples, não levando diretamente o máximo dos valores de

03:41.530 --> 03:44.860
q, mas nesse caso, não estamos explorando as outras ações.

03:44.920 --> 03:50.500
Graças a estas probabilidades, podemos explorar em outro lugar usando um parâmetro de temperatura que nós

03:50.500 --> 03:51.900
vamos ver muito rapidamente.

03:52.210 --> 03:55.990
Ainda podemos explorá-los configurando esse parâmetro de temperatura.

03:56.020 --> 04:03.380
É por isso que, em geral, por segurança, recomendo usar um soft x em vez de um RMX simples.

04:03.460 --> 04:06.990
Tudo bem, então, implementemos X e, portanto, como você entendeu.

04:07.060 --> 04:12.990
Uma vez que o Max sudo retorna as probabilidades de cada um dos três valores de Q para as três possíveis ações.

04:13.180 --> 04:20.120
Bem, a primeira variável que vamos criar provavelmente está se referindo, obviamente, a essas probabilidades.

04:20.450 --> 04:26.680
Então, os adereços são iguais e agora vamos levar a nossa próxima função e de acordo com você,

04:26.680 --> 04:28.070
de onde vamos retirar.

04:28.330 --> 04:31.600
Bem, claro, lembre-se de que importamos o.

04:31.700 --> 04:38.130
E então, o submódulo funcional que eu lembro é o módulo que contém a maioria das ações para

04:38.140 --> 04:39.790
implementar uma rede neural.

04:39.820 --> 04:44.980
F e, portanto, é realmente desse submundo funcional que vamos tomar nossa próxima função.

04:44.980 --> 04:46.990
Nós lhe demos o atalho

04:47.290 --> 04:53.830
Mas desde que nós demos um atalho f, começamos aqui com um Neph representando o funcional do

04:54.040 --> 04:56.080
qual tomamos nossa próxima função.

04:56.080 --> 04:56.920
Aqui está.

04:56.980 --> 04:59.540
Esse é o primeiro e parênteses.

04:59.770 --> 05:00.160
Tudo bem.

05:00.200 --> 05:03.920
Agora, o que precisamos para inserir na próxima função.

05:04.150 --> 05:10.020
Bem, é claro, são as entidades para as quais queremos gerar uma distribuição de probabilidade.

05:10.190 --> 05:11.430
E quais são essas entidades.

05:11.550 --> 05:13.870
Bem, estes são, claro, os valores-chave.

05:13.870 --> 05:16.790
Então, agora a questão é como podemos obter os valores q.

05:16.960 --> 05:22.720
Bem, claro, os valores q são a saída da rede neural e para obter essas saídas da

05:22.720 --> 05:23.410
rede neural.

05:23.590 --> 05:24.560
Bem, vamos lá.

05:24.610 --> 05:26.830
Precisamos levar nossa nova rede.

05:27.100 --> 05:33.520
Mas, na verdade, já o temos porque é o que inicializou no final, é a função.

05:33.530 --> 05:39.980
Saiba que criamos um modelo autodidacta que não é mais nada que não funcione porque é um novo objeto

05:40.290 --> 05:41.540
da classe de rede.

05:41.600 --> 05:42.820
E isso é perfeito.

05:42.830 --> 05:49.040
Nós podemos apenas levar nosso modelo aqui e coisas próximas, aplicar este modelo ao estado de entrada que

05:49.040 --> 05:52.950
é o argumento aqui e que retornará as saídas que estamos procurando.

05:53.090 --> 05:54.440
Esses são os valores-chave.

05:54.560 --> 06:00.260
E então, agora, sua intuição, porque devemos levar o modelo aqui para apresentá-lo na função,

06:00.260 --> 06:00.840
pode melhorar.

06:00.920 --> 06:06.410
Aqueles de vocês que começam com a programação orientada a objetos, você verá que tudo isso se tornará

06:07.100 --> 06:08.780
natural tão suave no próximo momento.

06:08.870 --> 06:16.840
Então, nós levamos o nosso modelo próprio modelo, porque esse deve ser o modelo do objeto que criamos aqui.

06:17.180 --> 06:24.350
Mas então, precisamos obter o resultado de nosso modelo de rede neural e, portanto, vamos ouvir

06:24.350 --> 06:30.400
alguns parênteses nos quais vamos entrar Bem, o estado de entrada chamado estado aqui.

06:30.620 --> 06:39.350
Então, o que queremos fazer no início é enter state, mas agora devemos ter cuidado com algo que o estado parece um

06:39.350 --> 06:40.560
conjunto simples agora.

06:40.790 --> 06:46.850
usaremos essa célula em menos estado para colocá-lo como o argumento da função de ação Selecionar.

06:46.920 --> 06:52.190
Mas lembre-se de que esse estado realmente será um sensor de tocha porque depois

06:52.190 --> 06:57.430
O argumento do estado que está aqui está realmente se tornando mais tarde este autodidata menos estado.

06:57.680 --> 07:01.680
E como este é um mundo de respostas torturadas, o modelo irá aceitá-lo.

07:01.760 --> 07:02.690
Então está tudo bem.

07:02.810 --> 07:05.000
Mas agora podemos melhorar o algoritmo.

07:05.180 --> 07:12.490
Então, assim que o estado é um sensor de tocha e, como dissemos anteriormente, a maioria dos sensores são envolvidos

07:12.500 --> 07:13.260
em voivodes.

07:13.320 --> 07:15.640
Isso também conterá um gradiente.

07:15.650 --> 07:22.110
Então, agora, o que vamos fazer primeiro é envolver esse estado de entrada que é um tensor em

07:22.110 --> 07:27.990
uma tocha muito bem, mas como isso é os estados de entrada, não haverá alguma diferenciação.

07:28.160 --> 07:34.700
Nós não estaremos usando o gradiente deste Voivode de tocha de estado e isso pode

07:34.880 --> 07:45.530
ser estações e, portanto, o que vamos fazer agora é converter este estado do sensor de tocha em uma variável de tocha como assim.

07:45.780 --> 07:51.400
Mas, então, especifique que não queremos os gradientes no gráfico que possamos predizer no

07:51.400 --> 07:52.380
final de Mudgal.

07:52.570 --> 07:57.800
Bem, vamos chegar aqui, volátil, igual a verdade.

07:58.150 --> 08:06.160
o nosso sensor incendiado pelo estado em uma tocha muito bem, mas graças a este Votel é igual a um verdadeiro barómetro.

08:06.160 --> 08:07.200
Então, agora, temos

08:07.390 --> 08:14.950
Bem, iremos incluir os gradientes associados a esses estados de entrada ao gráfico de todas as condições do

08:15.100 --> 08:16.530
fim nesse modelo.

08:16.840 --> 08:18.530
Então, esse é outro truque técnico.

08:18.550 --> 08:23.130
Isso nos salvará alguma memória e, portanto, isso irá melhorar o desempenho.

08:23.170 --> 08:27.850
Então eu recomendo muito para fazer isso e agora vamos adicionar algo mais divertido.

08:27.910 --> 08:30.640
É sobre esse parâmetro de temperatura que acabei de mencionar.

08:30.850 --> 08:36.190
permitiria modular como a rede neural ficará segura de qual ação deve decidir jogar.

08:36.190 --> 08:40.040
Então, este parâmetro de temperatura é o parâmetro que nos

08:40.210 --> 08:47.290
Portanto, este parâmetro de temperatura será um número positivo e quanto mais próximo for zero, menos certeza será a rede

08:47.290 --> 08:53.200
neural quando joga em ação e quanto maior for o parâmetro de temperatura, mais certeza será a

08:53.410 --> 08:56.540
rede neural da ação que ele decide tocar .

08:56.890 --> 09:04.480
E para adicionar este parâmetro, eu vou multiplicar as saídas que são Kugan usadas por este parâmetro

09:04.480 --> 09:05.250
de temperatura.

09:05.500 --> 09:13.440
Então vamos começar por exemplo com 7 e vou especificar aqui o pequeno comentário T igual a 7.

09:13.460 --> 09:15.610
Então esse é o parâmetro de temperatura.

09:15.690 --> 09:17.210
Desculpe, vá para 7.

09:17.260 --> 09:21.010
Vamos tentar alguns outros, mas eu só quero começar com um pequeno, porque você

09:21.010 --> 09:22.470
vai ver isso com um pequeno.

09:22.510 --> 09:28.150
Nosso carro ainda se comportará como algum tipo de inseto, mas, ao aumentar o parâmetro de

09:28.510 --> 09:34.340
temperatura, nosso código parecerá mais como um carro e decide vender a direção será muito melhor.

09:34.480 --> 09:40.450
E assim faz sentido porque quanto maior for este parâmetro de temperatura, maior será

09:40.450 --> 09:48.010
a probabilidade de vencer Juval me porque, por exemplo, se tivermos o máximo macio dos valores de q.

09:48.190 --> 09:54.850
Vamos tirar alguns números simples um dois três se preenchido máximo de um a três igual.

09:54.850 --> 10:01.150
Por exemplo, 0. 04 0. 11 e abre oitenta e cinco.

10:01.270 --> 10:05.650
Em seguida, aumentando a temperatura tomando temperatura mais alta.

10:05.680 --> 10:13.360
Agora, a temperatura é igual a uma, tomando uma temperatura alta, como por exemplo Tussaud subtrai,

10:13.360 --> 10:22.210
vamos copiar isso e multiplicá-lo, por exemplo, por dois ou três, então, os mesmos valores, mas multiplicados pelo parâmetro

10:22.210 --> 10:24.110
de temperatura de três.

10:24.370 --> 10:31.390
Bem, obteremos algo como zero para o primeiro valor Q, porque isso tinha uma probabilidade muito baixa de que

10:31.530 --> 10:38.020
algo em torno de zero, então, algo muito pequeno para a segunda probabilidade, porque isso ainda era

10:38.020 --> 10:39.260
uma baixa probabilidade.

10:39.410 --> 10:42.910
Então, digamos, por exemplo, ou o ponto 0 2.

10:43.320 --> 10:49.910
Mas, então, essa terceira probabilidade, já que era a maior e muito alta.

10:50.140 --> 10:55.180
Bem, aumentando a temperatura, essa probabilidade será ainda maior porque estaremos ainda mais

10:55.180 --> 11:02.230
certos de que este é o valor Q correto correspondente à ação que devemos jogar e, portanto, isso

11:02.230 --> 11:05.630
será algo como 0. 2 98.

11:05.980 --> 11:11.800
Agora, aumentando o parâmetro de temperatura Bem, agora estamos ainda mais certos de que a terceira ação aqui

11:11.800 --> 11:17.530
deve ser a ação a ser executada porque a probabilidade para o valor q desta ação não é

11:17.530 --> 11:19.590
apenas a maior mas também muito alta.

11:19.840 --> 11:22.600
Então, é disso que se trata esse parâmetro de temperatura.

11:22.660 --> 11:27.340
É sobre a certeza de qual direção devemos decidir jogar.

11:27.340 --> 11:27.610
Tudo bem.

11:27.610 --> 11:29.450
Então vou remover esse comentário.

11:29.470 --> 11:31.000
Isso foi apenas para explicar.

11:31.200 --> 11:33.490
E agora vamos buscar nossa ação.

11:33.490 --> 11:35.370
Então, como você vai fazer isso?

11:35.560 --> 11:41.440
para cada um dos valores-chave, mas também e esse é o segundo passo do próximo método.

11:41.440 --> 11:46.390
Bem, o princípio do próximo método não é apenas gerar uma distribuição de probabilidade

11:46.480 --> 11:51.820
Nós tiramos um sorteio aleatório dessa distribuição para obter nossa ação final.

11:52.010 --> 11:57.310
E é claro que teremos uma grande chance de obter a ação que corresponde ao valor

11:57.310 --> 12:01.660
Q que tenha maior probabilidade, porque é exatamente assim que a distribuição funciona.

12:01.660 --> 12:02.550
Então vamos lá.

12:02.560 --> 12:04.040
Vamos fazer a nossa ação.

12:04.060 --> 12:11.380
Então, vamos apresentar um novo Voivode, vamos chamar a ação e essa ação será um

12:11.380 --> 12:17.460
desenho aleatório da distribuição de probabilidade que acabamos de criar neste momento antes.

12:17.510 --> 12:20.100
E então, como conseguimos um sorteio tão aleatório.

12:20.200 --> 12:26.410
Bem, vamos tomar as probabilidades de nosso prop de cada um dos valores-chave que tomamos adereços

12:26.650 --> 12:34.120
e, em seguida, dart e então vamos usar a função multi Gnomeo e isso nos dará um sorteio aleatório

12:34.120 --> 12:36.030
desse processo de distribuição.

12:36.160 --> 12:38.420
Então isso é tudo o que vai conseguir sua reação.

12:38.470 --> 12:39.280
Perfeito.

12:39.490 --> 12:42.790
E agora, claro, vamos retornar a ação.

12:42.790 --> 12:44.730
Há um pequeno truque aqui.

12:44.810 --> 12:51.460
Qual é o fato de que este Propst que multinomial retorna o PI para viabilizar com um emblema falso.

12:51.490 --> 12:57.210
Você conhece esses diamantes falsos e corresponde ao lote e, portanto, para obter o resultado certo,

12:57.220 --> 13:00.540
queremos que seja a ação em 0 1 ou 2.

13:00.820 --> 13:08.200
Nós só precisamos adicionar dados aqui e, em seguida, alguns colchetes e as ações aqui são uma ou duas

13:08.230 --> 13:13.100
que estamos procurando é conteúdo e o índice é 0 e 0.

13:13.570 --> 13:14.000
Tudo bem.

13:14.000 --> 13:14.730
E nós vamos lá.

13:14.740 --> 13:21.420
Agora, temos a nossa ação graças a esta função de ação selecionada, a AI agora saberá qual ação deve ser tocada.

13:21.490 --> 13:22.440
E cada vez.

13:22.810 --> 13:23.460
Formidável.

13:23.500 --> 13:27.430
Então, agora podemos avançar para a próxima função, que será a função de aprendizado.

13:27.520 --> 13:32.410
E é aí que vamos treinar toda a rede neural que você conhece com toda a propagação

13:32.410 --> 13:35.790
direta e, em seguida, a propagação traseira é classificar no sentido.

13:35.950 --> 13:41.500
Bem, basicamente, vamos implementar todo o treinamento do modelo de aprendizagem profunda que é o

13:41.560 --> 13:43.340
cerne da nossa inteligência artificial.

13:43.480 --> 13:44.680
Então eu não posso esperar para fazer isso.

13:44.680 --> 13:49.290
Este será um tutorial emocionante e então vou ver você no próximo Statoil.

13:49.510 --> 13:50.670
Até então, aproveite.

13:50.720 --> 13:51.000
EU.
