e fala você estudante Inteligência Artificial eu sou Gabriel Freitas engenheiro da computação Eu trabalho com automações e desenvolvimento em market nesse vídeo eu vou mostrar para você um trabalho que desenvolveram a cadeira The Deep Lane e esse trabalho ficou bem legal então acho que vale a pena compartilhe com você eu desenvolvi em Python um robô que tenta prever o Mercado de Ações E para isso eu utilizei a técnica Deep Lane é uma das tecnologias e estratégias usadas na Inteligência Artificial lembrando ele é um trabalho bem técnico mas eu vou te mostrar o passo a passo
eu vou explicar cada linha do código e você vai entender o que que tá acontecendo aí mais uma coisa se esse vídeo te ajudar no trabalho de faculdade ou se você é um aspirante da Inteligência Artificial eu queria te pedir para você deixar o like são no vídeo e se inscrever aqui no canal porque só me ajudar demais e eu pretendo postar mais conteúdo desse roubou porque eu pretendo continuar desenvolvendo ele também se você tiver alguma dúvida alguma coisa que eu não deixei bem claro explicado pode deixar nos comentários que eu vou responder todo mundo
estou então agora bora pro vídeo porque nesse canal não tem Tá bom então para ilustrar um pouco melhor essa teoria a gente decidiu desenvolver um algoritmo na prática usando Deep learning em realidade e a gente foi aprimorar um robô que a gente tinha tentado desenvolver antes que tentar prever a oscilação no Mercado de Ações a gente inicialmente fez por Bitcoin mas esse do Deep Lane ele é um pouco mais genérico Então antes de apresentar as classes basicamente o que a gente precisa entender é que a gente tem um agente e um ambiente em que se
a gente atua e a cada ação que se a gente toma nesse ambiente ele vai receber Recompensas e estados novos bom a entrada da nossa rede neural é um estado representado pela variação dos valores nos últimos dez dias em realidade esses dias são configuráveis mas a gente usa tá usando 10 nos Treinamentos e as saídas são as três ações que a rede neural pode tomar que é comprar são vender ação ou não fazer nada manter a posição que ela tá seja ela comprado seja uma posição vendida tá bom nós temos uma classe principal chamada aí
Trader e dentro dela a gente tem um Construtor e três funções que eu vou apresentar agora para frente dentro da função Construtora a gente define as principais variáveis a nossa reúne geral então o tamanho de entrada as ações que ela pode tomar então no caso serão 3 uma memória que é um leque de até 2.000 espaços então você pode inserir itens no final da lista e ele automaticamente já vai remover itens no final nós temos um inventório que vão ser onde terão as ações do nosso robô e aqui a gente seleciona algumas variáveis importantes para
matemática do nosso modelo a gente tem um Gama que é um parâmetro que vai ajudar a maximizar as recompensas e nós temos o épsilon que é uma taxa de aleatoriedade para tentar evitar atitudes gananciosos do nosso algoritmo temos uma um Y final também e a taxa de decaimento desse épsilon e por fim a gente cria um modelo numa função dentro da própria classe e salva isso como um selfie Model as atitudes gananciosas que a gente fala aqui elas acontecem por quê Porque basicamente posto algoritmo encontra e ele tem que escolher sempre aquele caminho e acaba
muitas vezes não tentando algo novo e por isso ele pode acabar não descobrindo caminhos melhores Esse é um dos motivos pelo qual o Deep Lane é muito bom para jogos porque o último sempre busca o caminho com a maior recompensa bom arquitetura Nossa Rede neural é composta por três camadas ocultas usando ativação Hello e uma camada de saída usando ativação linear perceber que as variáveis de saída e de entrada elas ficam abertas para que a gente possa mudar isso depois otimizar o nosso código nós usamos o erro quadrático médio como função de perda e o
otimizador do que era zoada com uma taxa de aprendizagem de 0.001 isso a gente retorna O modelo porque a gente quer retornar o modelo para o Construtor para ele já ficar dentro da nossa classe temos a função de trade que a função que vai efetivamente chamar a função de predição do algoritmo da rede neural mas ela também a função que vai decidir se o algoritmo vai tomar uma atitude aleatória ou não que aquilo que a gente já falado antes Oi tá atitude 100% gananciosos quando algoritmo não fizer uma ação aleatória e É de fato usar
rede neural para tentar adivinhar o futuro Essa vai ser a saída dela então a gente tem um Array com as três ações possíveis a gente vai retornar o index da maior resposta dessa rede Então nesse exemplo a gente tem esse número como sendo o maior número e por isso está retornando esse index e essa vai ser a São então nós temos as três ações aqui a são os elas são as são dois que são aquelas três ações que a gente tá treinando a nossa rede para toma E aí a gente entra numa das funções mais
complexos que ela envolve um pouco na matemática do Deep Lane mas basicamente a gente carrega da memória um lote com o tamanho que a gente pede frio e dentro dessa memória nós temos algumas variáveis Como o estado ação que ela tomou Qual foi a recompensa Qual é o próximo estado esse último dado na nossa época isso aí eu vou mostrar mais pra frente aqui do lado a gente tem a nossa função do Deep Lane Então ela tá aplicada de forma direta aqui e a função de recompensa e o que a gente faz aqui embaixo é
basicamente comparar os últimos valores de que calculados anteriormente com o valor de que calculado dessa dessa vez e a gente pega o estado atual e compara com a saída da nossa rede neural e por fim a gente gradativamente vai decaindo que ele Epson para que cada vez menos o algoritmo tome atitudes aleatórios e aqui entra uma das funções chave também no nosso robô que é a gente estruturar os estados Então como a gente tinha dito anteriormente a gente vai ter uma janela de dados que você não entrados que nós definimos os últimos dez dias e
esses dados vão ser processados eu vou mostrar aqui ela sair dessa função fica melhor de entender sempre que a gente vai entrar uma uma janela a gente tem que entrar com a janela mais um por causa de facilitar o index dos Reis e o time step é onde aquela época tá na nossa tabela de dados então que nós temos uma condição essa condição de baixo ela só vai ser usada no início quando a grande lote vai começando Então essa de cima é que vai ser majoritariamente executada o que basicamente ela faz a trazer os últimos
dez fechamentos tô aqui nós temos a data e o valor do fechamento e depois a gente entra num loop em Que Nós faremos o fechamento do dia seguinte menos o fechamento do dia anterior e nós vamos normalizar isso usando a função sigmóide então aqui ó nós temos o próximo dia menos o dia anterior e isso vai ser normalizado e de dentro da re state isso vai num loop até chegar a 10 então que nós temos um Aqui nós temos dois valores e isso vai seguir até ter em 10 valores aqui então aqui teremos 11 porque
seria 10 mais um entrado 11 - 1/10 isso retornaria esse arreio e depois aqui temos algumas funções auxiliares a função sigmóide uma função para formatar texto EA função que busca dados no Yahoo finance aqui nós carregamos um dado é a que eu tava testando com ação da web eu busquei só 282 dias porque essa ignorar ela demora bastante para ser treinado então eu prefiro fazer por um período mais curto e aqui a gente vai começar definir o nosso a gente definimos a nossa janela de entrada eu defini só dois episódios porque ele demora muito o
nosso lote de Treinamento vai ser 32 ou seja ele vai usar 32 memórias para treinar o nosso robô E isso também significa que ele só vai começar a ser treinado depois da 32ª memória até lá o robô vai ficar tomando ações aleatórios porque o nosso épsilon é um início Aqui nós temos mais algumas variáveis a gente inicia o trailer e já imprimiu seu modelo aqui temos um modelo da nossa rede neural 11171 parâmetros treinar aves é bom o treinamento do lote de maneira geral a gente precisa buscar na memória e juntar isso de dados aleatórios
para criar o nosso lote só que como a gente está pensando no Mercado de Ações a gente pensou que era melhor deixar isso cê de maneira contínua porque o robô ele precisa olhar para as memórias anteriores dos dias anteriores e não de forma aleatória e aqui entra o look de Treinamento esse look de Treinamento ele é como se fosse um ambiente em que nosso roubou vai aprender lá no início eu falei que a gente tem um agente e um ambiente então se a mente pode ser um jogo pode ser alguma coisa e esse ambiente é
o dia a gente vai definir Quais são as recompensas que ele rouba o recebe Então essa é uma função grande e ela também é bem importante essa função pode ser um jogo e nesse caso aqui a gente define mais ou menos como funciona o mercado então passando de forma bem rápido mostrando parte a parte nós iniciamos um primeiro estado que tem aquele janela mais um que eu comentei anteriormente iniciamos mais algumas variáveis e então entramos no look que vai ser executado durante toda época tem uma e essa fazendo trade chamando aquela função em que ele
efetivamente vai tentar buscar ação que ele precisa tomar né então de novo aqui teremos uma resposta e a gente receberia o windhex dessa resposta e essa seriação que o robô vai tomar e nós já calculamos o próximo estado tão que nós temos ter mais um porque essa é o nosso o resultado E definimos que a recompensa até o momento é zeros faz-se importante bom aqui de fato começa como se fosse o jogo perceba que dependendo de cá nação que o robô tomar ele vai ter uma recompensa diferente isso é muito legal porque até agora nós
não falamos para o robô que cada ação é ele vai aprender isso sozinho baseado nas Recompensas que ele ganha em cada uma dessas ações Então se ação dele for não ter ação por esperar o mercado ele não vai ter nenhuma recompensa por isso por isso que nós já definimos uma recompensa zero se o robô comprar uma ação ele também não vai ter nenhuma recompensa mas a gente vai adicionar que elas são na carteira dele e quando a gente olhar para a próxima ação que é DV é só consegue vender se ele tiver alguma ação pelo
menos na carteira então de certa maneira adicionar uma ação na carteira pode ser considerado uma recompensa porque se ele identificar no futuro uma boa oportunidade de venda ele não vai conseguir vender ela porque ele não tem nada na carteira e por fim nós temos ação de realmente de venda em que quando isso acontece ele tira o último valor na carteira porque ele vendeu ele e ele calcula a recompensa EA Recompensa é o lucro ou zero se ele tiver prejuízo a recompensa vai ser zero se ele tiver louco a recompensa vai ser o próprio lucro e
depois a gente calcula que o lucro ou prejuízo que ele tá tendo Total isso só para ilustrar no final para gente conseguir pintar isso a cada loop desse a gente sempre verifica se a gente está no final da época para ativar aquela Flag de dono e Nós salvamos o estado ação a recompensa o próximo estado e essa variável na memória e isso é muito importante depois dizemos que o estado atual é igual o próximo estado presente e avançando é como se fosse uma inteira ó e aqui embaixo a gente vai treinar quando a memória for
maior que o backside lembra que eu disse que enquanto a memória não chegar no best size ele vai simplesmente fazer coisas aleatórias porque ele precisa de um lote de memória primicial treinamento aqui também no final a cada dez episódios a gente salva o modelo da rede neural pra gente poder download início no futuro modelo do queres mesmo só para ilustrar um pouco mais aqui a memória Aqui nós temos o estado ação a recompensa o próximo estado EA variável de término então nós temos aqui o primeiro estado salvo que são 10 valores nós teremos a ação
que foi um nós temos a recompensa que foi zero como tava bem no início ele tava não tava conseguindo ter Recompensas depois nós temos o próximo estado e lembrando que essa memória ela caminha até 2.000 dados vão porque a gente roda o treinamento ele demora bastante para rodar tá ele ficou meio bagunçado mas basicamente o robô vai comprando e vai vendendo e ele vai calculando o lucro e prejuízo que ele teve às vezes ele tem prejuízo às vezes ele tem lucro e a rede neural ela está atuando como se fosse a tabela de que eu
vou dar uma pincelada aqui no código bem por cima e eu quero mostrar também que a gente tentou fazer o outro robô que a gente tentou fazer usando pedras só que o que acontece nesse roubou a gente só tentava prever se ação e a subir ou descer só que depois de várias tentativas não consegui evoluir muito a gente não conseguia sair de cinquenta sessenta por cento de precisão então a gente acabou meio que deixando esse projeto de lado até porque ele é muito binário ele apenas tenta acertar se ação vai subir ou descer então é
uma opção binária e a gente só tava usando os fechamentos a gente tentou usar o volume mas não conseguimos evoluir muito nesse projeto foi por isso que a gente trouxe o tentou trazer para o Deep Lane que foi uma arquitetura que a gente percebeu que poderia ser melhor e também porque não existem tantos trabalhos na área de trade para isso então seria uma coisa nova se explorar já que o Deep Lane é majoritariamente usado para jogos e outros e o a vigência que envolvem ambientes carros autônomos Aqui nós temos todas as funções que foram anteriormente
apresentadas e explicadas e aqui no final a gente tem a saída do da rede neural eu vou deixar esse aqui ó olha o próprio o primeiro ele perdeu 69 reais mas já no episódio dois aqui eu vi que o lucro dele tinha sido mais legal ele já conseguiu local r$ 7 então a gente percebe que a rede neural em duas épocas já conseguiu evoluir eu vou disponibilizar esse código a gente a gente tem uma versão também debug então ele tem uma Flag the Bank que você liga ela ela começa a fazer alguns prints na tela
foi dela que a gente tirou a maioria dos Príncipes que para explicar as funções Então ela também é bem boa para entender tudo que está acontecendo no código então é isso se esse vídeo te ajudou eu peço que você deu deu o seu like são aí se inscreve no canal que vai me ajudar demais beleza