Publicação Artigo Científico – Redes Neurais Artificiais
Olá a todos,
Depois de um bom tempo sem alterar nada no Blog eu voltei para tentar escrever um pouco e compartilhar experiências.
Desta vez estou postando um artigo publicado ano passado no IADIS Multi Conference nn Computer Science and Information System 2010 que aconteceu em Freiburg, Alemanha.
O objetivo do artigo é apresentar uma solução, usando redes neurais artificiais (uma das áreas da inteligência computacional), que consegue prever com 24 horas de antecedência quando ocorrerá cheia no rio Itajaí Açu. E foi feito junto com o Professor Paulo Bousfield.
Antes de explicar um pouco sobre o projeto gostaria de adiantar que a solução consegue prever com 92% de acerto, o que é um valor bem alto para um sistema “inteligênte”.
O Rio Itajaí Açu possuí vários afluentes, sendo que alguns deles possuem estações onde pessoas especializadas medem diariamente o nível de chuva em milímitros. Estas mesmas pessoas medem diariamente o nível do rio lá no final, para saber sua profundidade e quanto “subiu” de um dia para o outro.
As aferições são feitas sempre pela manhã e ao final da tarde, então todo dia sabemos:
- Quanto choveu em milímitros nos afluentes do rio;
- Profundidade do rio;
Meu objetivo era criar uma rede neural que pudesse generalizar estas informações da seguinte forma:
- Entrada: Aferições do dia de hoje em relação a quantidade de chuva;
- Saída: Profundidade do rio 24 horas depois;
Para isto eu tive várias dificuldades. Abaixo segue os procedimentos, resumidos, que eu fiz para chegar neste resultado.
Primeira etapa: gerar uma tabela, no excel mesmo, com todas as aferições de chuva.
Começamos com a primeira dificuldade, seria fácil se o histórico não tivesse em formato ASCII em um arquivo texto tabulado. Eram várias estações, 21 para ser mais preciso, e eu não queria ficar perdendo tempo ajustando/importando manualmente no excel.
Além disso eu precisava que esta tabela fosse, na verdade, uma matriz com os dados de entrada e saída fosse, que seria a profundidade do rio no dia seguinte. A maior dificulade de trabalhar com redes neurais não é gerar a rede, mas sim tratar os dados de forma que ela possa generalizá-lo.
Criei um software em C# que lia estes arquivos ASCII e gerava esta matriz…. foram 4 horas de trabalho, mas ainda assim acredito que ganhei muito tempo. Se fosse fazer manualmente, além de uma LER, eu demoraria umas 20h.
Com a tabela em mãos vamos para a segunda etapa: Criar uma rede que generalize estas informações. Em outra oportunidade irei detalhar um pouco mais sobre redes neurais, mas de forma resumida, precisamos ensinar a rede, através de técnicas e métodos, a reconhecer padrões dentro de um determinado cenário.
Neste caso tinhamos vários uma quantidade X de informações. Nós ensinávamos a rede com uma porcentagem desta quantidade, refinava com outra e testava com outra. Ou seja, os testes finais eram com informações que a rede nunca tinha visto antes. No artigo vemos a tabela com estas informações.
A ferramenta utilizada para isto foi o MatLab 2009 com seu excelente Wizard.. hehehehe.
Eu criei 15 arquiteturas de redes diferentes, testando cada uma delas com as entradas e avaliando as saídas através de progressões matemáticas.
Aqui chegamos a segunda dificuldade. A rede não queria generalizar. Não passava de 70% de acerto. Então o Paulo Bausfield teve uma excelente idéia: “Vamos dividir todos os números pelo maior deles”. Ótimo agora todos os números ficaram entre 0 e 1 e a rede tinha mais facilidade de generalização assim. A consequência teria que ser converter o valor novamente ao final de todo processo.
Foram mais 15 redes agora com os dados em forma de 0 e 1.
No artigo vemos em negrito a arquitetura que teve maior rendimento. Ao final chegamos aos seguintes dados:
- Utilizamos 70% do histórico para treinar a rede;
- Utilizamos 15% para validação e refinamento;
- Utilizamos 15% para testes finais;
- No treinamento e validação a rede chegou a 93% de generalização;
- Nos testes finais a rede chegou a 92% de generalização, ou seja, acerto.
- A arquitetura da rede era dividida em 3 camadas:
- Camada entrada: 21 neurônios, um para cada estação;
- Camada intermediária (hidden): 20 neurônios, escolhida através de testes;
- Camada saída: 1 neurôno: resultado da profundidade do rio.
Mas ainda tinha uma última etapa: Criar uma interface em Matlab para possibilitar o usuário utilizar a rede, ou seja, digitar quanto choveu HOJE e ver como estará o rio AMANHÃ.
Esta tive uma dificuldade, que foi encotrar material de utilização, em forma de programação, da rede construída na ferramenta. Ao final consegui fazer a tela e deixá-la funcionando. O ideal seria evoluí-la um pouco mais, mas já estava funcional.
Por fim enviei para o professor a solução em Matlab, a tabela com o resultado dos testes de cada arquitetura e uma imagem ilustrativa da rede, estas informações podem ser vistas no artigo.
O artigo foi feito entre janeiro e fevereiro de 2010 e apresentado em Julho do mesmo ano pelo professor. Infelizmente não consegui recurso financeiro para ir para lá.
Gostei bastante de fazer este artigo, principalmente pelo desafio de algo novo. É sempre empolgante. Seria melhor se fosse possível tirar um tempo durante o dia para fazer isto e não nas madrugadas regadas a café e biscoito =)
Abaixo segue o artigo:
É isso aí, outros virão assim que possível. Escrevi mais dois sozinho, mas tenho que publica-los ainda… hehehehe
Abrs,
“Se eu vi mais longe, foi por estar de pé sobre ombros de gigantes” Isaac Newton
Livro: A lição final – Randy Pausch
Olá,
Gostaria de compartilhar o livro de Randy Pausch chamado a lição final ou, em inglês, The last lecture. Eu já tinha ouvido falar muito sobre Randy, mas nunca tinha lido seu livro.
Randy, um cientista da computação, descobriu que tinha câncer em 2006, porém seu estado se tornou terminal em 2008. Diante disso ele fez uma palestra resumindo a vida dele em pouco mais de uma hora, deixando para nós valiosas experiências e lições. Junto com a palestra ele também contribuiu com um livro chamado “A lição final” que trata justamente da vida dele, sua família e também da palestra. Para a vida profissional e familiar contribuiu enormemente, mostrando sua dedicação e amor a filhos e esposa, juntamente com seu comprometimendo e conhecimento na área de realidade virtual. Ele veio a falecer em julho de 2008.
No livro ele fala de seus sonhos e a luta para consegui-lo. trata de sua vida profissional e familiar. Apresenta suas dificuldades e perspectivas e aborda, de forma emocionante, sua maneira de ver a vida.
Este é um daqueles livros que você começa a ler e não para até terminar. Também é um livro que sem perceber você percebe uma lágrima escorrer pelo seu rosto antes de você terminar o parágrafo correte. É um livro excepcional com grandes valores e lições de vida.
Um livro para pensar na maneira que levamos nossas vidas e, sem dúvida, alterá-la para melhor. Impossível ler o livro e dizer que não aproveitou nada para nossas vidas. Realmente vale a pena ser lido. Acesso o site oficial e leia o primeiro capítulo.
Abrs
“O que você deixaria de legado para seus filhos e para o mundo na sua última oportunidade?” Conheça e aprenda com o que Randy deixou.
