Rede Neural para Assimilação de Dados Meteorológicos

July 5, 2017 | Autor: Romualdo PereiraJr | Categoria: Artificial Intelligence, Artificial Neural Networks, Metheorology
Share Embed


Descrição do Produto

UNIVERSIDADE DE BRASÍLIA FACULDADE DE TECNOLOGIA DEPARTAMENTO DE ENGENHARIA ELÉTRICA

REDE NEURAL PARA ASSIMILAÇÃO DE DADOS METEOROLÓGICOS

THIAGO TAVARES BRAGA

ORIENTADOR: PROF. MSC. ROMUALDO ALVES PEREIRA JUNIOR

PUBLICAÇÃO: OUT/2008 BRASÍLIA / DF: 10/2008 1

THIAGO TAVARES BRAGA

REDE NEURAL PARA ASSIMILAÇÃO DE DADOS METEOROLÓGICOS

Monografia de Especialização submetida ao Departamento de Engenharia Elétrica da Faculdade de Tecnologia da Universidade de Brasília, como parte dos requisitos necessários para a obtenção do grau de Especialista.

Orientador: Prof. Msc. Romualdo Pereira Alves Junior

PUBLICAÇÃO: OUT/2008 BRASÍLIA / DF: 10/2008

2

BRAGA, THIAGO TAVARES Rede Neural para Assimilação de Dados Meteorológicos [Distrito Federal] 2008. (última página do preâmbulo em romanos minúsculos), (última página do trabalho)p., 297 mm (ENE/FT/UnB, Especialista, Engenharia Elétrica, 2008). Monografia de Especialização – Universidade de Brasília, Faculdade de Tecnologia. Departamento de Engenharia Elétrica. 1. Redes Neurais 2. Assimilação de dados I. ENE/FT/UnB. II. Título (Série)

3

THIAGO TAVARES BRAGA

REDE NEURAL PARA ASSIMILAÇÃO DE DADOS METEOROLÓGICOS

Monografia de Especialização submetida ao Departamento de Engenharia Elétrica da Faculdade de Tecnologia da Universidade de Brasília, como parte dos requisitos necessários para a obtenção do grau de Especialista. APROVADA POR:

ROMUALDO PEREIRA ALVES JUNIOR, Mestre, UnB (ORIENTADOR)

NOME DO MEMBRO DA BANCA, Título, Instituição (EXAMINADOR INTERNO)

NOME DO MEMBRO DA BANCA, Título, Instituição (EXAMINADOR EXTERNO)

NOME DO MEMBRO DA BANCA, Título, Instituição (SUPLENTE) BRASÍLIA/DF, DIA DE MÊS DE ANO.

4

Aos meu pais.

5

AGRADECIMENTOS

Ao meu orientador, Romualdo, pelas idéias que me facilitaram bastante o desenvolvimento desse trabalho. A toda equipe de trabalho da Coordenação de Modelagem Numérica (CMN) do INMET, Ricardo, Gilberto, Juliana, Reinaldo e principalmente ao Dr. Fabrício Härter, que soube esclarecer com paciência todo seu conhecimento em Meteorologia e Redes Neurais.

A todos os professores do curso de especialização Gestão em Tecnologia da Informação da Universidade de Brasília, que me ajudaram a aumentar meu conhecimento nessa área.

Aos meus pais, Roberto e Cristina, à minha família e à minha namorada, Larissa, que sempre me deram todo o suporte a qualquer tipo de desafio acadêmico e profissional.

6

“Aqui pode-se colocar uma epígrafe, que são pensamentos retirados de um livro, uma música, ou um poema,.normalmente relacionado ao tema do trabalho, seguida de indicação de autoria.”

Nome do autor

7

RESUMO

O trabalho descrito nesta monografia propõe um método para simular uma assimilação de dados meteorológicos, processo de fundamental importância para aprimorar a qualidade da previsão climática, principalmente no hemisfério sul, através de uma rede neural. Aqui são descritos a importância da assimilação, e todo o processo que envolve a previsão do tempo, uma abordagem geral sobre redes neurais, mais especificamente em rede de retro-propagação, que foi a utilizada nesse trabalho, a metodologia utilizada para implementar essa solução e as vantagens computacionais que ela traz em relação aos métodos convencionais.

Palavras-chave: assimilação de dados, análise, previsão, inteligência artificial, rede neural, retro-propagação.

8

ABSTRACT

The work described in this thesis proposes a method to simulate a meteorological data assimilation, a process of fundamental importance to improve the climate forecasts quality, mainly in southern hemisphere, through a neural network. Here, it is described the importance of the data assimilation, and all process that the climate forecasts involves, a general approach about neural networks, specifically about back-propagation network, used in this work, the methodology used to implement this solution and the computational advantages that it presents compared to conventional methods.

Key-words: data assimilation, analysis, forecasts, artificial intelligence, neural network, back-propagation.

9

LISTA DE FIGURAS

Figura 1 – Ilustração da atmosfera. Fonte: www.covl.com.br ..................................... 23 Figura 2 - Diagrama de um ciclo de assimilação de dados. Fonte: Kalnay, 2003, p.13926 Figura 3 - Gráfico comparativo da acurácia da previsão entre os hemisférios sul e norte. Fonte: Kalnay, 2007, p.11 ........................................................................................... 28 Figura 4 - À esquerda uma função linearmente separável, à direita uma não-linearmente separável. Fonte: Heaton, 2005, p.39 ........................................................................... 30 Figura 5 – Ilustração de um neurônio biológico. Fonte: www.icmc.usp.br ................... 31 Figura 6 – Ilustração de um neurônio artificial. Fonte: www.visgraf.impa.br ............... 32 Figura 7 - Rede Neural com uma camada intermediária. Fonte: www.scielosp.org ...... 33 Figura 8 - À esquerda, gráfico da tangente hiperbólica, à direita, duas formas de se representar a função através de equações. Fonte: Elaboração do autor ......................... 34 Figura 9 - À esquerda a estrutura da rede Hopfield com quatro neurônio e à direita, a estrutura da rede de Kohonen. Fonte: Adaptado de Heaton, 2005, p. 55, 157 ............... 35 Figura 10 - Modelo da view MEDICAO_VIEW1. Fonte: Elaboração do autor. ........... 42 Figura 11 - Arquitetura da Rede Neural utilizada. Fonte: Elaboração do autor. ............ 44 Figura 12 - Interface gráfica para criação de Redes Neurais Joone. Fonte: Elaboração do autor ........................................................................................................................... 46 Figura 13 - Interface para visualizar os dados da rede neural Fonte: Elaboração do autor ................................................................................................................................... 47

10

LISTA DE ABREVIATURAS

DWD – Deutscher Wetterdienst HRM – High Resolution Model RAM – Random Access Memory GB – Gigabyte JOONE – Java Object Oriented Neural Engine IDE – Integrated Development Enviroment SGBD – Sistema de Gerenciamento de Banco de Dados

11

LISTA DE SIGLAS

INMET – Instituto Nacional de Meteorologia CAPES – Coordenação de Aperfeiçoamento de Pessoal de Nível Superior

12

SUMÁRIO

1.

INTRODUÇÃO ................................................................................................... 14

2.

ESTUDO BIBLIOGRÁFICO .............................................................................. 17

3.

ASSIMILAÇÃO DE DADOS .............................................................................. 21

4.

REDES NEURAIS .............................................................................................. 29

5.

REDE NEURAL PARA ASSIMILAÇÃO DE DADOS ....................................... 39

6.

CONCLUSÕES ................................................................................................... 48

7.

REFERÊNCIAS BIBLIOGRÁFICAS .................................................................. 50

ANEXO A .................................................................................................................. 52 ANEXO B .................................................................................................................. 57

13

1. INTRODUÇÃO

Esse trabalho tem como objetivo apresentar a implementação de uma rede neural que simula uma assimilação de dados meteorológicos no Instituto Nacional de Meteorologia - INMET. Para isso introduziremos os conceitos de assimilação de dados, redes neurais e os conseqüentes benefícios computacionais alcançados com este tipo de aplicação. 1.1 Conceitos Básicos Para entender a assimilação, antes é preciso entender como acontece todo o processo de previsão do tempo. No INMET, a primeira etapa desse processo é chamada análise (condições iniciais da atmosfera). A análise é o processo pelo qual se coletam todas as informações disponíveis da Natureza, como temperatura, pressão atmosférica, índices de radiação, imagens de satélite etc. Essa análise é a entrada do modelo numérico. O modelo numérico é o sistema que contém todas as equações diferenciais e integrais que simulam a física da atmosfera do local (no caso do INMET, a América do Sul). O modelo utilizado no INMET é o HRM (High Resolution Model), desenvolvido pela DWD (Deutscher Wetterdienst), o serviço meteorológico alemão. O modelo é rodado em duas resoluções: uma grade de vinte e cinco quilômetros com cento e vinte horas de previsão para a América do Sul e sete quilômetros com setenta e duas horas de previsão para o Brasil. Através da saída numérica do modelo, os meteorologistas fazer a previsão do tempo. No entanto, como o modelo consiste em equações integrais que simulam a atmosfera do local, qualquer pequeno erro de calibração dos instrumentos que coletam as informações da Natureza, pode gerar resultados grosseiros na saída. Para tentar minimizar esses possíveis erros, existe a assimilação de dados. O INMET não tem assimilação integrada ao modelo. Há diversas formas de assimilar dados e, portanto, diversos níveis de complexidade. Nesse trabalho a rede neural simula a assimilação de dados mais elementar possível. Aqui, não há uma tentativa de mostrar a importância da assimilação de dados e mostrar seus resultados e as melhorias que ela pode trazer na previsão do tempo. Isso já é 14

comprovado cientificamente por uma extensa literatura na área de meteorologia. Esse é um trabalho de computação e o objetivo é mostrar as vantagens computacionais que uma rede neural pode trazer nessa aplicação. 1.2 Motivação A principal motivação para realizar esse trabalho é a possibilidade de minimizar o custo computacional que a assimilação carrega intrinsecamente. Em supercomputadores como os disponíveis no INMET, um deles com sessenta e quatro processadores trabalhando em paralelo e 80 GB de memória RAM, uma assimilação simples teria cerca de uma hora de duração. Somados às duas horas de processamento do modelo, o resultado final da previsão teria aproximadamente três horas. As redes neurais podem minimizar significativamente esse tempo de processamento. Veremos que, após treinada, a rede neural pode fazer o mesmo trabalho em alguns segundos, ou em algumas frações de segundo. O ganho não seria somente no tempo economizado, mas no custo embutido em deixar um supercomputador ocupado com processos que podem ser evitados. Outra vantagem da solução proposta nesse trabalho é o fato da rede neural ter sido toda implementada em Java, o que dispensa a necessidade de re-compilar o código-fonte, conforme a arquitetura ou sistema operacional do computador. A instalação da Java Virtual Machine no computador possibilita a execução da rede neural sem necessidade de re-compilação, erros ou perdas de desempenho. Além disso, o código-fonte de uma rede neural é intrinsecamente paralelizável. A utilização da linguagem Java só facilita ainda mais sua implementação através da classe Thread, o que faz com que sua performance aumente ainda mais e seu tempo de execução caia significativamente.. Esse trabalho foi estruturado em basicamente três capítulos principais. Os dois primeiros capítulos são dedicados à introdução e à revisão de literatura. O capítulo três será dedicado a assimilação de dados: os tipos de assimilação de dados existentes hoje, as mais e as menos utilizadas, as mais e as menos complexas, o que é a assimilação, como ela se encaixa em todo o processo de previsão, o seu propósito e a importância que a assimilação tem na previsão do tempo, principalmente no hemisfério sul.

15

O capítulo quatro detalhará as redes neurais. Será apresentada uma breve abordagem da evolução das redes neurais, o que é a rede neural, os tipos de rede neural, o futuro das redes neurais e um detalhamento maior na rede neural de retro-propagação, que foi a utilizada na implementação desse trabalho. O capítulo cinco será dedicado à solução proposta por esse trabalho. Será detalhada a importância que a assimilação tem no nosso contexto e as vantagens computacionais que a implementação dessa rede neural pode trazer. Também será mostrada a complexidade que uma assimilação de dados convencional impõe a quem precisa manter o código-fonte e a sobrecarga operacional que ela traz aos supercomputadores. No capítulo seis serão apresentadas as conclusões finais desse trabalho. Serão relatadas as vantagens dessa solução, bem como o que se espera para continuação desse trabalho, o que é preciso para sua implantação de forma operacional para que sirva realmente aos seus propósitos iniciais, as melhorias que ainda podem ser aplicadas a ele e os resultados esperados depois de sua implantação.

16

2. ESTUDO BIBLIOGRÁFICO

Nesse capítulo serão apresentados alguns trabalhos que unem redes neurais à assimilação de dados ou outras áreas da Meteorologia. Também serão abordados as metodologias utilizadas nesses trabalhos e os resultados obtidos. A pesquisa por eles foi feita em várias ferramentas de busca. Além do Google, o portal da CAPES, o Worldcat e o JabRef foram utilizados e os trabalhos que mais se aproximaram ao aqui apresentado serão relacionados.

Um dos trabalhos que mais se aproximam ao apresentado nesse texto é: A Neural Network for Data Assimlation using MPI, desenvolvido por Fraga, et al. Segundo o artigo, a assimilação de dados é um procedimento que utiliza dados observacionais para melhorar a previsão feita por um modelo matemático. São citados diversos métodos de assimilação como os variacionais, transformada de Laplace, interpolação ótima e filtro de Kalman.

A utilização de uma rede neural multicamadas Perceptron foi proposta para simular o método de filtro de Kalman, objetivando também a redução do tempo de processamento computacional. Foi utilizado código Fortran de alta performance numa tentativa de alcançar paralelização numa arquitetura de memória compartilhada.

Os resultados desse trabalho relatam as tentativas de treinamento da rede utilizando dois processadores com código não-paralelizado, seis neurônios na camada de entrada, três em cada uma das camadas intermediárias e três na camada de saída. Testes mostraram desempenho semelhante com código paralelizado. E um pouco melhor utilizando dez neurônios nas camadas intermediárias. No entanto, a utilização de três ou quatro processadores fez o desempenho cair. Resultados promissores foram alcançados ao utilizar o padrão MPI (Message Passing Interface), em que chamadas às bibliotecas de comunicação foram embutidas no código otimizado, definindo dados específicos à saída de cada um dos processadores. 17

Os autores ressaltam que o número de neurônios e camadas intermediárias é têm uma definição muito empírica e só é possível alcançar resultados com bons desempenhos computacionais após muitas tentativas e erros.

Em outro trabalho, Tang e Hsieh, 2000, uniram redes neurais a sistemas dinâmicos incompletos através de assimilação de dados variacionais. O modelo pode ser usado em situações em que algumas variáveis dispõem de dados suficientes para simulá-las empiricamente com uma rede neural. A idéia é utilizar a rede neural para substituir equações dinâmicas do modelo.

O artigo descreve o trabalho numa linguagem puramente meteorológica, descrevendo métodos variacionais, tipos de modelos híbridos, modelos de três ou quatro dimensões etc. Não cabe aqui discuti-los profundamente. O resultado mostra que a rede neural consegue simular bem as equações não-lineares do modelo e que novos testes utilizando filtro de Kalman ainda podem ser considerados.

Aires, et al, 2001, discute a abordagem de uma rede neural incluindo condições iniciais aleatórias de várias variáveis. Segundo o artigo, a análise de observações de microondas sobre a terra para determinar parâmetros atmosféricos e de superfície ainda é limitado. Técnicas de rede neural já tiveram sucesso em eficientes métodos de obtenção desses parâmetros em casos não-lineares.

No entanto, nesse trabalho, a rede neural é utilizada para obter parâmetros de superfície a da atmosfera como temperatura da superfície e vapor d‟água na atmosfera e não para assimilar dados.

Minns, Hall e Hettiarachchi, 2005, desenvolveram uma abordagem de extrapolação de rede neural para um modelo que relaciona precipitações a enxurradas (rainfall-runoff). A última década vem presenciando um número crescente no interesse em aplicações de redes neurais a esse tipo de problema. Desde que as redes multicamadas de retropropagação têm a propriedade de serem simuladores universais. Elas são capazes de capturar a essência da maioria de relacionamentos entre entradas e saídas.

18

Infelizmente, tendo a padronização de entradas e saídas que as redes neurais requerem, o problema aparece na extrapolação, ou seja, se os dados utilizados para o treinamento não contém o valor máximo de saída, uma rede modificada ficará incapaz de sintetizar o valor de pico. Isso quer dizer que em eventos severos, a rede não conseguirá simular a relação entre precipitação-enxurrada.

Ainda nessa linha de precipitação, Aguilar, Serafy e Mynett, 2006, utilizaram redes neurais e filtro de Kalman para previsão do nível da água no rio Reno, na Holanda. A rede neural é utilizada para simular o comportamento dos modelos numéricos nos locais de interesse e depois, o filtro de Kalman é aplicado à estrutura da rede neural.

Outro trabalho um pouco mais extenso se dedica à aplicação de redes neurais para previsão e análise de dados em meteorologia e oceanografia desenvolvido por Tang e Hsieh, publicado em 1999. E ressaltam os três principais obstáculos para desenvolver essa aplicação: (1) instabilidade não-linear com poucos registros de dados; (2) grande campo de dados espaciais; (3) dificuldades em interpretar resultados de redes neurais não-lineares.

Os resultados mostram que esses três obstáculos podem ser superados e que melhorias futuras, o método de redes neurais não-lineares pode se tornar uma versátil e poderosa técnica capaz de ampliar métodos estatísticos lineares tradicionais em análise e previsão de dados.

No entanto, o trabalho que mais se aproxima do apresentado nessa monografia foi o desenvolvido por Härter, 2004, na sua tese de doutorado “Redes neurais recorrentes aplicadas à assimilação de dados em dinâmica não-linear”. Em seu trabalho, Härter aplica redes neurais a dois modelos, o sistema de Lorenz em regime caótico e o modelo de Água Rasa não-linear.

Embora os resultados indiquem que estas metodologias possam ser efetivas para assimilação

em relação

à

precisão,



dúvidas

se

estes

algoritmos

são

computacionalmente eficientes para realizar a tarefa no tempo de uma previsão operacional, à medida que o número de pontos de grade cresça em uma ordem de 19

magnitude e os dados de observação aumentem em várias ordens de magnitude. O trabalho pretende ser uma contribuição ao desafio da assimilação de dados operacional através, principalmente em relação ao tempo de processamento (Häter, 2004).

20

3. ASSIMILAÇÃO DE DADOS

Nesse capítulo será abordada uma parte da teoria da Assimilação de Dados, uma área da ciência da Meteorologia. Serão apresentados um breve histórico da previsão, os conceitos de análise, previsão, interpolação, modelo numérico e um resumo de como acontece todo o processo de previsão nos grandes centros de Meteorologia atualmente. 3.1 Histórico Historicamente, a análise de dados meteorológicos começou com as primeiras cartas sinóticas, nas quais eram grafadas variáveis meteorológicas, observadas em pontos esparsos. Os campos meteorológicos eram traçados manualmente, servindo de base paras as previsões de tempo. Este tipo de procedimento, conhecido como análise subjetiva, dependia da habilidade e da experiência do meteorologista (Harter, 2004, p.25). No começo do século XX, a previsão de tempo foi abordada como um problema de valor inicial, onde o estado futuro da atmosfera podia ser previsto através do conjunto de equações que governam os movimentos atmosféricos (Bjerkenes, 1911). Com o mesmo intuito, Bjerkenes e Richardson fizeram a primeira previsão numérica do tempo, que apesar do insucesso, foi de grande valia para a Meteorologia (Richardson, 1922). Segundo Daley (1991), o trabalho de Richardson falhou por várias razões, discutidas em Platzman (1967), entre as quais se destaca a não representatividade dos dados (poucas estações, irregularmente espaçadas e nenhuma informação de altitude). Outra razão foi que o problema de iniciação não era conhecido. Com a evolução da tecnologia, no século XX, os computadores tiveram papel fundamental no processo de previsão do tempo e vêm contribuindo significativamente para a melhoria tanto no número de dias como para a qualidade no acerto dos prognósticos. A capacidade de processamento e o surgimento de supercomputadores, entre outros fatores, vêm permitindo uma simulação cada vez mais precisa da atmosfera, através dos modelos numéricos, principais responsáveis por essa melhoria. E,

21

atualmente, têm permitido uma previsão com até sete dias de antecedência nos Estados Unidos e Europa e até cinco dias no Brasil com bons níveis de acerto. 3.2 Modelo Numérico O modelo numérico consiste num sistema com uma série de equações diferenciais parciais aproximadas por equações diferenciais finitas, capaz de simular a evolução da atmosfera. Para seu processamento, há possibilidade de configuração de vários parâmetros, como resolução horizontal, número de níveis de solo e de altitude, número de horas de previsão, intervalo de tempo para a previsão etc. Esses parâmetros definirão a quantidade de processamento exigida pelo modelo. O modelo numérico do INMET, o HRM, atualmente funciona com uma resolução de vinte e cinco quilômetros, sete níveis de solo, quarenta níveis de altitude da atmosfera realizando uma previsão de cento e vinte horas (cinco dias), em que a cada hora há uma previsão para as variáveis meteorológicas. Existe também o processamento do mesmo modelo na resolução de sete quilômetros, mas devido a sua demanda computacional, seus resultados só são obtidos dez horas após o início do seu processamento. Como entrada, o modelo recebe a análise, também chamada de condições iniciais. A análise nada mais é do que as condições da atmosfera num dado momento. É a partir desse momento que o modelo processa a evolução da atmosfera segundo suas equações. Os meteorologistas utilizam a saída do modelo numérico para realizar a previsão do tempo. Embora os modelos numéricos e os computadores tenham evoluído bastante, a análise clínica dos meteorologistas a partir da saída do modelo ainda é indispensável. 3.3 Análise de Dados Para fazer a análise, são necessários equipamentos que coletam as informações da atmosfera. Assim como na informática, a tecnologia tem ajudado bastante no aperfeiçoamento das redes de observações de dados meteorológicos através de instrumentos de medição mais precisos como termômetros, barômetros, pluviômetros etc. Surgiram também novos instrumentos como radiossondas, que fornecem perfis verticais da atmosfera em um determinado local, radares, que fazem medições remotas e satélites, que além de medições remotas têm boas resoluções espacial e temporal. Os

22

satélites têm outra grande vantagem: a cobertura em áreas com baixa densidade de informações meteorológicas, como oceanos e florestas tropicais. No INMET, há uma rede de estações convencionais e automáticas que coletam essas informações. São cerca de duzentas e cinqüenta estações convencionais, onde há instrumentos como barômetros, pluviômetros, termômetros etc. que medem suas respectivas variáveis e de seis em seis horas, elas são transferidas de seus locais para o banco de dados centralizado em Brasília através de um código digitado por um funcionário. A rede de estações automáticas é formada por cerca de quatrocentas unidades, mas essas transferem seus dados horariamente diretamente para o banco de dados sem necessidade de intervenção humana. Para imagens de satélite, há uma antena de recepção instalada dentro da área do INMET. Os dados são recebidos diretamente dos satélites e ficam armazenados numa área específica do parque computacional. Portanto, não há dúvidas de que quanto mais realística for a representação da atmosfera e quanto mais precisa for a análise, melhor será a previsão fornecida pelo modelo numérico.

Figura 1 – Ilustração da atmosfera. Fonte: www.covl.com.br

23

No entanto, ressalta-se que teoricamente mesmo numa situação hipotética, em que tanto os modelos numéricos quanto as observações são perfeitas, a natureza caótica da atmosfera limitaria a previsibilidade para alguns dias, segundo Kalnay (2003), duas semanas. Isto ocorre porque pequenas variações nas condições iniciais, após um determinado período de integração, podem ocasionar em resultados grosseiros na saída do modelo. Foi a partir dessa premissa que se desenvolveu o famoso “efeito borboleta” (Lorenz, 1963). Baseado nessa teoria fica evidente que qualquer erro na coleta de informações ou má calibração dos instrumentos que medem as informações meteorológicas pode causar um erro grosseiro na saída do modelo. Para corrigir possíveis erros de medição, existe a Assimilação de Dados, que é uma tentativa de melhorar as condições iniciais para se obter uma previsão mais acurada do modelo. Tão importante é a assimilação de dados que se tornou uma ciência e uma extensa literatura somente sobre esse assunto (Daley, 1991). Existem diversas formas de assimilação e, portanto, diversos níveis de complexidade. Aqui não serão abordadas todas as formas de assimilação, apenas citadas. Seus métodos podem ser classificados em determinísticos (correções sucessivas, Transformada de Laplace, Nudging) ou estocásticos (variacionais em três ou quatro dimensões, filtro de Kalman), que encontram fundamentação matemática em teoria da estimação (Härter, 2004). As primeiras assimilações consistiam apenas em simples interpolações. 3.4 Interpolação A interpolação é um método matemático de atribuir valores para locais pontuais onde não há dados. Existem várias técnicas de interpolação (Panofsky, 1949, Gilchirst, 1954, Barnes, 1964, 1978) e são extremamente utilizados no processo da previsão. Num país com grande extensão territorial, como o Brasil, seria muito difícil conseguir implantar estações de coleta de informações meteorológicas a cada vinte e cinco quilômetros de distância, por exemplo. Então, implanta-se estações em locais estratégicos e estima-se valores a cada vinte e cinco quilômetros baseado nas informações coletadas nas estações mais próximas atribuindo-se pesos inversamente proporcionais à distância. As técnicas matemáticas para fazer interpolação vão das mais simples como Cressman que calcula um peso para o ponto de grade de acordo com a distância entre ele e a 24

estação. Se a estação estiver dentro do raio de alcance pré-estabelecido pelo algoritmo, então o dado da estação entra com um peso, senão o peso 0 é atribuído, conforme as equações abaixo.

Onde w é o peso atribuído para o ponto de grade, R é o raio de alcance pré-estabelecido no algoritmo (Ex.: 100 km) e d é a distância entre o ponto de grade e a estação. Existem interpolações muito mais elaboradas e complexas matematicamente que a interpolação de Cressman, mas não serão abordadas nesse trabalho, pois ele não se propõe a isso. Além da interpolação, outros elementos podem entrar para contribuir com a assimilação, como o histórico de dados. Nesse trabalho, como já comentado anteriormente, simula-se uma assimilação muito elementar, em que a entrada é formada pelos valores observados e a saída da assimilação foi calculada atribuindo-se um peso ao histórico de dados (quarenta anos) e um peso para interpolação. Os detalhes da metodologia serão apresentados no capítulo cinco. 3.5 A Importância da Assimilação de Dados Existem assimilações em que são necessários elementos mais confiáveis do que histórico de dados e interpolação, por mais complexa que ela seja. Por essa razão tornou-se necessária a utilização de informações adicionais para preparar as condições iniciais para a previsão, são as informações a priori. As informações a priori são, na verdade, uma integração de curto prazo em que se utilizam as equações do modelo em um número reduzido de horas anteriores à análise que se deseja construir (Kalnay, 2003, p.13).

25

Figura 2 - Diagrama de um ciclo de assimilação de dados. Fonte: Kalnay, 2003, p.139

Por exemplo, se quisermos fazer a previsão a partir das 12 horas de um dia, obtém-se as observações de três horas antes da 12 horas (9 horas) até três horas depois do início do momento de início da previsão (15 horas) e acrescentam-se as observações disponíveis durante essa integração do modelo, no sentido de minimizar o erro segundo um critério estatístico adotado. A saída desse procedimento será a condição inicial para o modelo que fará a previsão às 12 horas. Progressos em análise objetiva continuaram durante o século XX e ganharam aceitação na comunidade científica. A partir daí, a denominação Ciclo de Assimilação de Dados passou a ser usado para designar o complexo processo de criar uma condição inicial “balanceada” e incorporar novos dados observados durante a integração do modelo de previsão. Daley (1991) divide o ciclo de Assimilação nos seguintes quatro componentes (Harter, 2004, p.27): 1) Controle de qualidade dos dados: algoritmos de controle de qualidade são projetados para rejeitar ou corrigir dados ruins. Primeiro é verificado se há erros de codificação e se há problemas de localização de sensores. Em seguida se compara cada observação com a sua vizinha, requerendo-se consistência espacial e temporal; 26

2) Análise objetiva: procedimento automático para estimar as variáveis atmosféricas dependentes numa grade regular bidimensional ou tridimensional usando os dados disponíveis oriundos da rede de observações irregularmente espaçadas; 3) Iniciação: iniciar significa acelerar o processo de equilíbrio entre os campos de massa e velocidade nos dados iniciais, reduzindo o ruído gerado por ondas de gravidade de alta freqüência. Essa etapa é realizada junto com a previsão final (não se deve confundir com a previsão para obtenção da estimativa a priori); 4) Previsão curta para preparar a estimativa a priori: nessa etapa usa-se o modelo numérico para prepara o campo de background (estimativa a priori do próximo tempo de observação). Este modelo deve incluir as parametrizações necessárias para assegurar que, se não for atualizado com novas observações, o clima por ele gerado se aproximará do verdadeiro. Isso assegura que na falta persistente de dados, a estimativa a priori produzida pelo modelo assimilado permaneça fisicamente plausível. Nos últimos anos a importância da assimilação de dados, principalmente no hemisfério sul vem sendo comprovada através de dados. Segundo Kalnay (2007), a melhoria na acurácia da previsão no hemisfério sul se deve principalmente à assimilação de dados de satélite. O acerto acima de sessenta por cento é considerado útil para previsão do tempo. Pelo gráfico, é possível observar que a previsão para dez dias ainda é muito imprecisa, o que confirma a premissa de Lorenz, que diz que pequenas alterações nas condições iniciais resultam em prognósticos completamente inesperados. O gráfico abaixo mostra a evolução do acerto da previsão nos hemisférios sul e norte.

27

Figura 3 - Gráfico comparativo da acurácia da previsão entre os hemisférios sul e norte. Fonte: Kalnay, 2007, p.11

28

4. REDES NEURAIS

Os computadores conseguem fazer atividades como operações matemáticas bilhões de vezes mais rápido que o homem. No entanto, algumas tarefas consideradas simples por qualquer criança de três anos como diferenciar uma imagem de um gato de imagem de um cachorro não é tão simples de ser resolvida por um computador. As redes neurais são uma área da Inteligência Artificial responsável por reconhecimento de padrões como digitais de um dedo, íris dos olhos, face, voz etc. Nesse capítulo será introduzido um breve resumo da história das redes neurais, os tipos mais comuns e um detalhamento maior na rede neural de retro-propagação, que é a mais utilizada, por permitir aplicabilidade nas mais diversas áreas. 4.1 Histórico A primeira referência de redes neurais é de 1943 por McCulloch e Pitts no artigo “A Logical Calculus of the Ideas Immanent in Nervous Activity”. Foram eles responsáveis por cunhar o termo “Rede Neural”. O neurônio de McCulloch e Pitts tem uma entrada arbitrária e uma saída binária cujo resultado é feito calculando-se a soma ponderada das entradas. Os pesos para soma são atribuídos conforme a entrada. Segundo Kovacs (1996, p.174), vários fundadores de algumas das modernas áreas de conhecimento, como Marvim Minski em inteligência artificial, John von Neumann em ciência da computação e Norbert Wiener em cibernética tiveram, em algum momento, inspiração no trabalho de McCulloch e Pitts. O próximo trabalho significativo em redes neurais foi feito por Hebb em 1949, onde é postulada a primeira regra de aprendizagem auto-organizada, baseada na seguinte premissa: se dois neurônios em ambos os lados de uma sinapse são ativados simultaneamente então a sinapse deve ser fortalecida, senão a sinapse deve ser enfraquecida ou eliminada (Härter, 2004, p.49). No entanto, um marco na história das redes neurais foi escrito por Frank Rosenblatt em 1957 com a invenção do Perceptron. O Perceptron foi uma tentativa de entender a memória, a aprendizagem e os processos cognitivos humanos. Para isso Rosenblatt 29

demonstrou que se os neurônios fossem acrescidos de sinapses (pesos) ajustáveis, a rede neural poderia ser treinada para identificar padrões. A estrutura do Perceptron funcionava com três camadas: a primeira recebe as entradas do exterior e possui conexões fixas, a segunda recebe impulsos da primeira através de conexões ajustáveis e envia a saída para a terceira camada (Heaton, 2005, p.38). O Perceptron, no entanto só era capaz de reconhecer padrões linearmente separáveis, ou seja, que pudessem ser separados por uma função linear. Minski e Papert em 1969 afirmaram que a inclusão de mais camadas não resolveria esse problema. Por causa dessa limitação, os estudos em redes neurais ficaram praticamente parados durante uma década. (Härter, 2004, p.50).

Figura 4 - À esquerda uma função linearmente separável, à direita uma não-linearmente separável. Fonte: Heaton, 2005, p.39

Em 1983, um procedimento denominado recozimento simulado para resolver problemas de otimização combinatória levou ao desenvolvimento da máquina de Boltzman (Ackley, et al, 1985, p.56), que foi a primeira realização bem sucedida de uma rede neural de múltiplas camadas. Nos últimos vinte anos, os avanços tecnológicos na capacidade de processamento e memória vêm auxiliando no desenvolvimento de redes neurais mais apuradas e hoje existem aplicações nas mais diversas áreas desde engenharia genética até redes neurais que definem quais as melhores ações para se aplicar no mercado financeiro. 30

4.2 Arquiteturas das Redes Neurais O neurônio é a unidade básica das redes neurais. O neurônio biológico é composto basicamente por dendritos, axônio, sinapses e núcleo (soma). A partir do núcleo, que é o centro dos processos metabólicos da célula nervosa, projetam-se extensões filamentares, os dendritos e os axônios. Através dos axônios, os neurônios se comunicam com outras células nervosas. As sinapses são regiões eletroquimicamente ativas responsáveis pela transmissão de informações entre os neurônios. A representação do neurônio biológico pode ser vista na figura abaixo.

Figura 5 – Ilustração de um neurônio biológico. Fonte: www.icmc.usp.br

Como já falado anteriormente, as redes neurais tentam simular a inteligência humana. Para isso, tentou-se aproximar o máximo possível o neurônio biológico do neurônio artificial, que é a unidade básica das redes neurais. O neurônio artificial, utilizado pelas redes neurais é basicamente um condutor de comunicação que aceita uma entrada e produz uma saída. Quando um neurônio produz uma saída, o neurônio é ativado. Ele é ativado quando a soma das entradas satisfaz a função de ativação do neurônio (Heaton, 2005, p.49). O neurônio é composto basicamente por três elementos (Haykin, 2001, p.343): 31



As sinapses, cada uma com um peso próprio.



O somatório dos pesos das sinapses



Uma função de ativação para limitar a amplitude da saída do neurônio.

O modelo de neurônio artificial pode ser visto na figura abaixo.

Figura 6 – Ilustração de um neurônio artificial. Fonte: www.visgraf.impa.br

As diferentes arquiteturas das redes neurais são formadas pelas diferentes disposições dos neurônios artificiais. Como todo programa de computador, existe a entrada (nas redes neurais, chamada de camada de entrada), o processamento das informações (camadas intermediárias ou ocultas) e a saída (camada de saída). Os neurônios podem ser dispostos de diversas formas a fim de formar diferentes arquiteturas de redes neurais, que podem ser formadas por nenhuma ou mais camadas intermediárias.

As redes sem camadas intermediárias são chamadas de feedforward (alimentação para frente). Se houver camadas intermediárias, são chamadas redes recorrentes. As redes recorrentes são utilizadas para resolver problemas não-linearmente separáveis como processamento temporal (Härter, 2004, p.53).

32

Figura 7 - Rede Neural com uma camada intermediária. Fonte: www.scielosp.org

4.3 Funcionamento

Antes que uma rede neural entre em funcionamento, é preciso treiná-la. Para isso, é preciso apresentar um conjunto de dados à rede. Se a saída é conhecida e pretende-se treinar a rede para que ela simule uma tarefa, o treinamento é chamado supervisionado. Se o conjunto de dados é formado apenas pela entrada da rede e a saída é desconhecida, ela provavelmente irá separar a entrada de dados em grupos diferentes na saída e o treinamento é chamado de não-supervisionado.

No treinamento supervisionado, após os dados de entradas serem apresentadas aos neurônios da camada de entrada (cada um com um peso arbitrário) é feito um somatório da multiplicação entre os valores das entradas e os pesos. A função de ativação recebe esse somatório junto com um erro, o resultado dela é enviado à saída e os pesos são reajustados. Um ponto fundamental no treinamento das redes é definir um critério de parada. Em geral, esse critério é determinado pelo erro (quando já é pequeno suficiente) ou pelo número de épocas (quando o número de iterações for atingido).

33

Onde x1,..., xm são os sinais de entrada; θk1,..., θkm são os pesos sinápticos de cada neurônio k, uk é o somatório da multiplicação dos pesos pelas entradas (combinador linear); bk é o erro e yk é o resultado da função de ativação φ(.).

A função de ativação restringe a amplitude do sinal na saída de um neurônio. A função utilizada nesse trabalho foi a tangente hiperbólica, definida segundo as equações e o gráfico abaixo. Mas também são utilizadas as funções exponencial, gaussiana e a sigmóide, entre outras.

Figura 8 - À esquerda, gráfico da tangente hiperbólica, à direita, duas formas de se representar a função através de equações. Fonte: Elaboração do autor

No treinamento não-supervisionado, a partir do momento em que a rede estabelece uma harmonia com as regularidades estatísticas da entrada de dados, desenvolve-se nela uma habilidade de formar representações internas para codificar características da entrada e criar novos grupos na saída automaticamente (Braga, et al, 2000). Um exemplo muito comum para esse tipo de treinamento é a mineração de dados (data mining), um processo de definir padrões consistentes a partir de uma grande quantidade de dados.

4.4 Tipos de Rede Neural

Existem diversos tipos de rede neural para diferentes propósitos. Entre elas a rede Hopfield, em que todos os seus neurônios são conectados entre si em uma única 34

camada. A rede Kohonen difere um pouco dos conceitos tradicionais de redes neurais porque não possui função de ativação e sua saída consiste em apenas um neurônio, chamado “vencedor”. Quando uma entrada é apresentada à rede Kohonen, ela a processa e a saída é a que mais se aproxima com os seus padrões pré-estabelecidos em seu treinamento.

Figura 9 - À esquerda a estrutura da rede Hopfield com quatro neurônio e à direita, a estrutura da rede de Kohonen. Fonte: Adaptado de Heaton, 2005, p. 55, 157

No entanto, a rede mais utilizada por causa da sua grande aplicabilidade é a rede de retro-propagação. Por ela ter sido utilizada nesse trabalho, iremos detalhar algumas das suas características e seu funcionamento.

4.4.1 Retro-propagação O termo “retro-propagação” (backpropagation) se refere à forma de treinamento da rede. Geralmente, utiliza-se o treinamento retro-propagação em conjunto com a “alimentação para frente” (feddforward), que determina a disposição dos neurônios (conectados apenas às camadas seguintes). O termo completo em inglês é definido como “feedforward backpropagation neural network” (Heaton, 2005, p.125).

35

O funcionamento da rede acontece da seguinte forma: durante o treinamento supervisionado, as saídas atuais da rede são comparadas às saídas previstas. Através dessa comparação, o algoritmo de retro-propagação calcula os erros e ajusta os pesos das camadas anteriores à camada de saída. Depois o algoritmo volta à camada de entrada com os pesos já ajustados e apresenta novas entradas. O treinamento continua até que os critérios para que ele pare sejam satisfeitos (número de épocas ou erro suficientemente pequeno). O treinamento de retro-propagação e a alimentação para frente são geralmente utilizados em conjunto, mas eles não são mutuamente exclusivos.

Embora tenha se notado avanço nesse tipo de rede neural, a definição de parâmetros como número de camadas intermediárias ou número de neurônios em cada camada ainda é muito empírico e depende muito da aplicação que se deseja simular. O acerto desses parâmetros pode determinar o êxito da rede. Há livros inteiros dedicado apenas a esse tópico como “Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks” (MIT Press, 1999).

No entanto, há algumas regras que podem ser adotadas para se determinar esses parâmetros. As redes sem camadas intermediárias são utilizadas para resolver problemas de funções linearmente separáveis como a separação de entradas em grupos na saída. A utilização de uma camada intermediária é mais comum e consegue resolver quase todos os problemas. Poucos são os problemas que exigem a utilização de duas camadas intermediarias (Heaton, 2005, p.128).

Ainda segundo Heaton, o número de neurônios em cada uma das camadas pode ser definido pelas seguintes regras: 

Deve estar entre o número de neurônios da camada de entrada e o número de neurônios da camada de saída



Deve ser 2/3 do número de neurônios da camada de entrada mais o número de neurônios da camada de saída



Deve ser menor que duas vezes o número de neurônios da camada de entrada 36

4.5 O Futuro das Redes Neurais Embora existam tentativas de definir esses parâmetros através de regras matemáticas e da idéia das redes neurais existir há mais de sessenta anos, é notório que o avanço da inteligência artificial e das redes neurais não se deu de forma tão rápida quanto os avanços tecnológicos da área de hardware, por exemplo. Em 1950, havia computadores que ocupavam salas inteiras e possuíam pouca capacidade de memória e processamento. Hoje, existem computadores do tamanho de um livro que processam bilhões de cálculos por segundo e têm memória suficiente para armazenar várias enciclopédias em poucos milímetros quadrados. No entanto, apesar dos avanços na área de inteligência artificial como a presença de programas que reconhecem padrões de digitais e voz, ainda estamos muito longe da implementação de programas de computadores capazes de simular a inteligência humana. Alan Turing propôs um teste para avaliar os avanços da pesquisa em inteligência artificial. O teste se concentra na conversa entre um homem e um computador através de um programa de mensagens instantâneas. Se o computador conseguir responder a todas as perguntas do homem, sem que o homem desconfie que quem está respondendo é um computador, então o programa passa pelo Teste de Turing. Apesar da simplicidade da idéia, nenhum computador jamais conseguiu passar no teste. Heaton faz uma analogia interessante para o problema da dificuldade de avanços nessa área de Computação (2003, p.41). Vários inventores durante a história da humanidade sonharam em construir uma máquina capaz de voar. Para isso, recorreram à natureza observando os pássaros. Muitos projetos se basearam em asas móveis, como as dos pássaros, para alcançar o objetivo, chamados de ornitópteros. Alguns inclusive patenteados no final do século XIX. Somente no começo do século XX, o projeto com asas fixas conseguiu ser bem sucedido. Com isso, Heaton quer dizer que talvez seja necessário um novo paradigma para construir uma máquina que simule a inteligência humana. Hoje, a maioria absoluta dos computadores é baseada no princípio de Von Neumann, baseado em instruções simples, discretas e seqüenciais e cuja saída é completamente previsível. 37

Uma pesquisa promissora que promete quebrar esse paradigma é a computação quântica. Os computadores baseados no princípio de Von Neumann utilizam o bit como unidade elementar para armazenamento ou transmissão de dados com duas possibilidades: 0 ou 1. Os computadores quânticos baseiam-se em átomos como unidades fundamentais para processar informações. O átomo de hidrogênio é um bom exemplo, por que há apenas um elétron em sua órbita. Esse elétron pode orbitar em diferentes níveis de energia, o que poderia ser interpretado como 0 no nível mais baixo e 1 no nível mais alto. Os diferentes níveis de energia podem ser alcançados adicionando um pulso de laser polarizado. Até aí não há diferenças entre a máquina de Von Neumann e o computador quântico, pois ambos podem representar 0 e 1. A diferença no computador quântico é que se apenas metade da energia necessária para aumentar o elétron de nível for aplicada, o átomo pode representar 0 e 1 simultaneamente. Isso pode representar um ganho de performance extraordinário, principalmente se átomos mais complexos que o hidrogênio forem utilizados (Heaton, 2005, p.43).

Os ganhos podem não se restringir apenas ao âmbito computacional. Esta forma de calcular pode representar a quebra de paradigma de aprendizagem das máquinas. E se o futuro das redes neurais e inteligência artificial caminharem nessa direção, podemos sim, pensar que no futuro teremos máquinas capazes não só de passar no teste de Turing, mas fazer tudo o que os filmes de ficção científica mostram nas telas de cinema.

38

5. REDE NEURAL PARA ASSIMILAÇÃO DE DADOS

Nesse capítulo serão apresentados os detalhes da implementação de uma rede neural que simula uma hipotética assimilação de dados. Serão abordados os resultados obtidos, as vantagens computacionais dessa solução, a metodologia utilizada e as perspectivas para a continuação dessa idéia.

5.1 Metodologia para Assimilação de Dados utilizada

Como já comentado anteriormente, a assimilação adotada nesse trabalho foi a mais elementar possível. Essa assimilação não tem nenhuma comprovação científica de sua eficácia. Afinal, esse é um trabalho de Computação e a metodologia de assimilação de dados adotada não necessita de fundamentação científica ou matemática. O que se deseja buscar é desempenho computacional e mostrar que a idéia, se bem desenvolvida, pode ser bastante útil para a ciência da Meteorologia.

A metodologia para construir os dados necessários para o treinamento da rede neural que simula a assimilação para esse trabalho pode ser resumida da seguinte forma:

1. Coleta do histórico de dados dos últimos 48 anos da estação convencional de Brasília disponível no Banco de Dados do INMET. O SGBD do INMET é o Oracle versão 10g. Segundo o modelo implantado no Instituto, a tabela principal é chamada MEDICAO, onde há todos os registros de todas as variáveis de todos os horários de todos os dias de todas as estações do INMET. Através da view MEDICAO_VIEW1, foi preciso apenas saber o código da estação convencional de Brasília (83377), o código da variável precipitação (I175) e realizar a seguinte consulta:

SELECT FROM WHERE AND

dt_medicao, vl_medicao medição_view1 id_estacao = „83377‟ cd_atributo = „I175‟ 39

O resultado trouxe aproximadamente 14.000 linhas. Abaixo, trechos desse resultado, em que a primeira coluna representa a data da coleta e a segunda o valor coletado em milímetros:

22/08/1961 23/08/1961 24/08/1961 ... 24/09/1962 25/09/1962 26/09/1962 27/09/1962 28/09/1962 ... 04/04/2008 05/04/2008 06/04/2008 07/04/2008 08/04/2008

0 1 0 0 39.5 45.5 39 0 71.8 10.5 12.3 4.2 0

Desse resultado, um programa simples em Java filtrou apenas os resultados de julho, agosto e setembro e obteve-se uma média diária e conseqüentemente, uma média horária, resultando em 0.0322. A essa média horária multiplicou-se o peso 0.05, que consistiu na primeira parcela da assimilação.

2. Outra parcela para o cálculo da assimilação foi a utilização dos dados da estação automática de Taguatinga, que funciona desde julho de 2003. As estações automáticas coletam dados horários e o resultado pôde ser obtido através da seguinte consulta:

SELECT FROM WHERE AND

dt_medicao, hr_medicao, vl_medicao medição_view1 id_estacao = „A008‟ cd_atributo = „I175‟

Em que A008 é o código da estação automática de Taguatinga. O mesmo programa em Java filtrou os resultados para julho, agosto e setembro e a cada um desses valores multiplicou-se o peso 0.05 também, consistindo na segunda parcela da assimilação. Um trecho dos resultados obtidos na pesquisa pode ser visto abaixo, em que a primeira coluna representa a data, a segunda a hora e a terceira o valor coletado em milímetros: 40

18/07/2003 18/07/2003 18/07/2003 18/07/2003 ... 31/08/2008 31/08/2008 31/08/2008

11 12 13 14

0 1.6 3.2 2.4

12 13 14

0 0 0.8

3. A última parcela refere-se aos dados das automáticas da estação automática de Brasília. A cada um dos valores obtidos segundo a pesquisa abaixo, multiplicouse o peso 0.9, depois de ter os valores filtrados pelo mesmo programa em Java somente para julho, agosto e setembro e assim obtemos o cálculo completo da assimilação.

SELECT FROM WHERE AND

dt_medicao, hr_medicao, vl_medicao medição_view1 id_estacao = „A001‟ cd_atributo = „I175”

O trecho do resultado da pesquisa pode ser visto abaixo. As colunas têm a mesma representação do resultado obtido para Taguatinga:

27/08/2003 27/08/2003 27/08/2003 27/08/2003 27/08/2003 27/08/2003 ... 01/09/2008 01/09/2008 01/09/2008 01/09/2008 01/09/2008 01/09/2008 01/09/2008

16 17 18 19 20 21

0 4.8 7.6 0.2 3.2 0.2

13 14 15 16 17 18 19

0 6 0.8 0 0 0 9

O cálculo final para assimilação adotada nesse trabalho pode ser definida segundo a equação abaixo:

41

Onde f é a saída da assimilação, ou o dado assimilado, b é o dado coletado pela estação automática de Brasília em um dado momento, t é o dado coletado pela estação automática de Taguatinga no mesmo momento e h é a média aritmética do histórico de quarenta anos de precipitação de Brasília no período de julho, agosto e setembro. Portanto a hipotética assimilação que se deseja simular através da rede neural tem como entrada dois valores de precipitação: um de Brasília, e um de Taguatinga. E a saída é o valor “assimilado” para Brasília, segundo a metodologia descrita acima.

O modelo de toda a base de dados do INMET é muito extenso e como não houve necessidade da utilização de várias tabelas, por se tratar de consultas simples, o modelo da view MEDICAO_VIEW1 é apresentado na figura 10.

Figura 10 - Modelo da view MEDICAO_VIEW1. Fonte: Elaboração do autor.

5.2 O Treinamento da Rede Neural

Os valores obtidos segundo a metodologia descrita acima são a base utilizada para o treinamento da rede neural. O treinamento utilizado foi o de back-propagation, ou retropropagação. Os dados, depois de preparados por um programa simples em Java, foram colocados num arquivo que serviu de entrada e saída para o treinamento da rede neural, já que é uma rede supervisionada. O arquivo consistia em três colunas separadas pelo caractere „;‟, em que a primeira coluna representa o dado observado pela estação automática de Brasília; a segunda o dado do mesmo horário observado pela estação automática de Taguatinga; e a última, a saída esperada segundo o cálculo descrito 42

acima. O arquivo consistiu em 47 padrões diferentes para o treinamento e pode ser visto no Anexo B.

No entanto, antes de iniciar o treinamento foi preciso normalizar os valores. A entrada da função tangente hiperbólica varia de 0 a 1 e os valores coletados pelas estações automáticas que serviram de base de dados para o treinamento dessa rede neural variam de 0 a 17.2 milímetros. Portanto, era preciso que os valores coletados se adaptassem à entrada da função de ativação: a tangente hiperbólica. É um cálculo simples mostrado na equação abaixo.

Onde y é o valor já normalizado, sup é o valor máximo da entrada da função de ativação, nesse caso 1, inf é o valor mínimo da entrada da função de ativação, nesse caso 0, max é o valor máximo encontrado na base de dados, nesse caso 17.2 e min é valor mínimo na base de dados, nesse caso, 0 e x é o valor coletado pela estação automática.

É preciso ressaltar que depois de treinada, os valores de saída da rede precisam ser desnormalizados, ou seja, a tangente hiperbólica tem como saída valores entre 0 e 1 e esses precisam passar pelo processo inverso à normalização feita no treinamento, para que se obtenha valores normais de precipitação em milímetros.

O treinamento consistiu na leitura desse arquivo diversas vezes, até que o número de épocas, configurado para 100.000 fosse atingido. O erro alcançado entre a saída da rede e o esperado pela terceira coluna do arquivo foi 0.000303, um índice considerado aceitável pela literatura especializada. A saída do treinamento da rede neural pode ser vista abaixo.

Início do Treinamento Época: 99000 RMSE: 0.003258579993745405 Época: 98000 RMSE: 0.0026710667073003755 Época: 97000 RMSE: 0.002724743125701727 Época: 96000 RMSE: 0.002672692080673586 ... 43

Época: 5000 RMSE: 3.2653635498666506E-4 Época: 4000 RMSE: 3.2055788739903166E-4 Época: 3000 RMSE: 3.147416087202669E-4 Época: 2000 RMSE: 3.090853598390305E-4 Época: 1000 RMSE: 3.035869977761313E-4 Fim do Treinamento

A arquitetura da rede utilizada nesse trabalho pode ser vista na figura 11.

Figura 11 - Arquitetura da Rede Neural utilizada. Fonte: Elaboração do autor.

Na camada de entrada há dois neurônios, um para os valores de Brasília e outro para os valores de Taguatinga (as duas primeiras colunas do arquivo respectivamente). A camada intermediária tem 30 neurônios, número definido a partir do número de padrões diferentes encontrados na entrada de dados utilizada, que ao todo são 47. E a camada de saída possui apenas um neurônio, que é o dado assimilado de Brasília.

O treinamento, por se tratar de uma metodologia simples, durou aproximadamente 262 segundos. Em assimilações mais complexas com mais variáveis de entrada e valores mais diversificados, o treinamento duraria consideravelmente mais.

44

Os parâmetros da rede podem ser resumidos na lista abaixo: 

Erro esperado: < 0.001



Número de épocas: 100.000



Número de padrões: 47



Taxa de aprendizagem: 0.8



Momentum: 0.3



Número de camadas: 3 (uma de entrada, uma de saída e uma intermediária)



Número de neurônios: 33 (dois na camada de entrada, um na camada de saída e trinta na camada intermediária)

Como comentado no capítulo anterior, a rede utilizada nesse trabalho é a recorrente. Depois de treinada, o funcionamento da rede ou ativação é quase que instantânea, uma economia computacional e de tempo significativa se comparada a quase uma hora de duração da assimilação convencional. Portanto, o principal objetivo desse trabalho foi atingido.

5.3 Implementação da Rede Neural

A rede foi totalmente implementada na linguagem Java, utilizando o Eclipse como IDE (Integrated Development Enviroment). Para facilitar a implementação do treinamento e da ativação da rede utilizou-se o framework joone (Java Object Oriented Neural Engine), que é um framework disponibilizado gratuitamente para criar, treinar e testar redes neurais artificiais para qualquer tipo de aplicação. A utilização desse framework foi de vital importância para facilitar a implementação da rede, porque traz praticamente todas as funcionalidades necessárias para criar uma rede neural incluindo as camadas com as funções de ativação, possibilidade de anexar arquivos preparados para treinar redes supervisionadas ou não-supervisionadas e possibilidade de criar qualquer arquitetura ou tipo de rede neural que se possa precisar.

Joone também disponibiliza uma interface gráfica para facilitar ainda mais a criação de redes. Com ela é possível adicionar camadas, anexar arquivos, criar arquiteturas diferentes e configurar parâmetros como número de épocas, taxa de aprendizagem, erro 45

esperado etc. Porém, a preferência foi pela implementação do código-fonte em Java, disponível no anexo A. A figura 12 apresenta a interface gráfica para criação de redes neurais.

Figura 12 - Interface gráfica para criação de Redes Neurais Joone. Fonte: Elaboração do autor

5.4 Resultados

O resultado final desse trabalho pode ser considerado bastante satisfatório, afinal o objetivo que era a economia de custo computacional e de tempo foi atingido. A rede demorou algo em torno de 262 segundos para ser treinada e alcançar o erro préestabelecido e o seu funcionamento é quase que instantâneo, difícil inclusive de ser cronometrada manualmente.

Foi desenvolvida também uma interface para fins de apresentação dos resultados. É uma interface simples onde na parte esquerda, há um painel para o treinamento onde se pode ver o erro diminuindo conforme o número de épocas aumenta. Na parte direita da interface, há o painel para ativação, onde são inseridos valores aleatórios de precipitação para Brasília e Taguatinga e como saída obtém-se o valor que a assimilação

46

convencional produziria, a saída da rede neural, segundo o treinamento já realizado e o erro entre as duas saída para verificar a acurácia da rede.

Figura 13 - Interface para visualizar os dados da rede neural Fonte: Elaboração do autor

O tempo reduzido para conclusão do trabalho acabou forçando a escolha de uma assimilação bastante elementar. Mas com esses resultados obtidos, é possível deduzir que assimilações mais complexas podem trazer resultados bastante promissores. E integrar essas assimilações ao processo de previsão pode ser um passo importante para a melhoria da qualidade dos prognósticos.

47

6. CONCLUSÕES

Após assistir as aulas sobre Redes Neurais, a idéia de unir essa área da Inteligência Artificial à assimilação de dados, área da Meteorologia ainda carente no INMET tomou forma e os resultados obtidos podem certamente ser considerados satisfatórios. O curso de Gestão em TI da UnB foi de vital importância para aquisição de novos conhecimentos e surgimento de novas idéias como essa apresentada nesse trabalho.

O INMET ainda não possui assimilação de dados incorporada a previsão e existem grandes obstáculos para conseguir fazê-lo. O primeiro obstáculo é a dificuldade em compilar o código-fonte das assimilações existentes, porque quase sempre elas são escritas em linguagem legadas e os supercomputadores novos quase todos já tem arquitetura 64 bits, tornando difícil a tarefa de compilar e executar esses programas sem erros, ou com bom desempenho.

O outro obstáculo é o custo computacional e tempo de execução que a assimilação de dados convencional exige. Atualmente, é importante que a previsão esteja disponível aos usuários o mais rápido possível. Por isso um processo de uma hora de duração somada às duas horas da previsão, mesmo em supercomputadores com 64 processadores de 2.0 GHz cada e 80 GB de memória RAM, como o disponível no INMET, não são suficientes para a prontidão do serviço meteorológico.

A rede neural foi uma solução bastante elegante para tentar solucionar esses dois obstáculos de uma vez só. O primeiro obstáculo pôde ser facilmente superado pelo fato da rede neural ter sido totalmente implementada em Java, o que dispensa a necessidade de compilações em qualquer arquitetura de máquina. É necessário apenas que se instale a Java Virtual Machine.

O tempo de processamento também não será mais um empecilho para execução da assimilação de dados. A rede neural, se bem treinada, – e os resultados desse trabalho mostram que ela foi – pode disponibilizar saídas tão eficientes quanto às de 48

assimilações convencionais e com a vantagem de durar apenas algumas frações de segundo.

Para continuidade desse trabalho, é esperado que a rede seja aplicada à uma assimilação mais eficiente que se possa de fato colocá-la em funcionamento, incorporada ao processo de previsão. Ou que haja disponibilidade de dados de uma assimilação já consagrada para o treinamento da rede neural.

49

7. REFERÊNCIAS BIBLIOGRÁFICAS

Ackley, D.; Hinton, G.;Sejnowski, T.; A Learnig Algorithm for Boltzman Machines. Cognitive Science, 1985.

Bjerkenes, F. Dynamic Meteorological and Hidrography. Carnegie Institute: Gibson Bros, 1911.

Braga, A. P.; Ludermir, T. B.; Carvalho, A. F. Redes Neurais Artificiais: Teoria e Aplicações. Rio de Janeiro: LTC – Livros Técnicos e Científicos Editora S. A., 2000.

Daley, R. Atmospheric Data Analysis. Cambridge: Cambridge University Press, 1991.

Härter, Fabrício Pereira. Redes Neurais Recorrentes Aplicadas a Assimilação de Dados em Dinâmica Não-Linear. 2004. Tese (Doutorado) – Instituto Nacional de Pesquisas Especiais, São Paulo.

Haykin, S. Redes Neurais: Princípios e Práticas. Porto Alegre: Bookman, 2001.

Heaton, Jeff. Introduction to Neural Networks with Java. St. Louis: Heaton Research, Inc., 2005.

Kalnay, Eugenia. Atmospheric Modeling, Data Assimilation and Predictability. Cambridge: Cambridge University Press, 2003.

Kalnay, Eugenia. Introduction to data assimilation and least square methods. Buenos Aires, 2007.

Kovacs, Z. Redes Neurais Artificiais: Princípios e Aplicações. Rio de Janeiro: Collegium Cógnitio, 1996.

50

Lorenz, E. Deterministic Nonperiodic Flow. Journal of the Atmospheric Sciences, v.20, 1963.

McCulloch, W.; Pitts, W. A Logical Calculus of the Ideas Immanent in Nervous Activity. Bulletin of Mathematical Biophysics, v.5, 1943.

Minns, A.; Hall, M.; Hettiarachchi, P. The extrapolation of artificial neural networks for the modelling rainfall-runoff relationships, 2005. Platzman, G. A Retrospective View of Richardson‟s Book on Weather Prediction. Bulletin of the American Meteorological Society, 1967.

Richardson, L. Weather Prediction by Numerical Process. Cambridge: Cambridge University Press, 1922.

Rossow, W.; Rothstein, M.; Pringent, C.; Aires, F. A new neural network approach including first guess for retrieval of atmospheric water vapor, cloud liquid water path, surface temperature, and emissivities over land from satellite microwave observations, 2001.

Serafy, G.; Aguilar, S.; Mynett, A. Combined Neural Network and Ensemble Kalman Filter Application for Discharge and Water Level Forecasting in the River Rhine, 2006.

Tang, Y.; Hsieh, W. W. Coupling Neural Network to Incomplete Dynamical Systems via Variational Data Systems, 2000.

Tang, Y.; Hsieh, W. W. Applying Neural Network Models to Prediction and Data Analysis in Meteorology and Oceanography, 1999.

Vijaykumar, Nandamudi; Stephany, Stephan; Preto, Airam, Campos, V. Haroldo; Nowosad, Alexandre. A Neural Network for Data Assimilation using MPI, 2006.

51

ANEXO A

import java.awt.*; import java.io.*; import javax.swing.*; import org.joone.engine.*; import org.joone.engine.learning.TeachingSynapse; import org.joone.io.*; import org.joone.net.NeuralNet; import org.joone.net.NeuralNetLoader; public class DANN extends JFrame implements NeuralNetListener { private static final long serialVersionUID = 1L; private final double max = 17.2; private final double min = 0.0; private final double inf = 0.0; private final double sup = 1.0; private final double av = 0.0322; private JPanel trainpanel = null; private JPanel activatepanel = null; private JTextArea out = null; private JTextField tagfield = null; private JTextField bsbfield = null; private JTextField sasfield = null; private JTextField srrfield = null; private JTextField errfield = null; public DANN() throws IOException, ClassNotFoundException { super("Rede Neural para Assimilação de Dados"); Container c = getContentPane(); c.setLayout(null); setSize(580,250); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); c.add(getTrainPanel()); c.add(getActivatePanel()); repaint(); } public JPanel getTrainPanel(){ trainpanel = new JPanel(); trainpanel.setBorder(BorderFactory.createTitledBorder(null,"Treinamento",TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Dialog",Font.BOLD,12), new Color(51,51,51))); trainpanel.setSize(250,185); trainpanel.setVisible(true); trainpanel.setLocation(10,10); trainpanel.setLayout(new BorderLayout()); out = new JTextArea(); JScrollPane sout = new JScrollPane(out); sout.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); JButton trainbutton = new JButton("Treinar"); trainbutton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { try { train(); } catch (IOException e) { e.printStackTrace(); } } }); trainpanel.add(trainbutton,BorderLayout.NORTH); trainpanel.add(sout,BorderLayout.CENTER);

52

return trainpanel; } public void train() throws IOException{ normalize(); LinearLayer input = new LinearLayer(); TanhLayer hidden = new TanhLayer(); TanhLayer output = new TanhLayer(); input.setRows(2); hidden.setRows(47); output.setRows(1); FullSynapse sih = new FullSynapse(); FullSynapse sho = new FullSynapse(); input.addOutputSynapse(sih); hidden.addInputSynapse(sih); hidden.addOutputSynapse(sho); output.addInputSynapse(sho); NeuralNet net = new NeuralNet(); net.addLayer(input,NeuralNet.INPUT_LAYER); net.addLayer(hidden,NeuralNet.HIDDEN_LAYER); net.addLayer(output,NeuralNet.OUTPUT_LAYER); Monitor monitor = net.getMonitor(); monitor.setLearningRate(0.6); monitor.setMomentum(0.2); monitor.addNeuralNetListener(this); FileInputSynapse inputstream = new FileInputSynapse(); inputstream.setAdvancedColumnSelector("1,2"); inputstream.setInputFile(new File("normalized_input.txt")); input.addInputSynapse(inputstream); TeachingSynapse trainer = new TeachingSynapse(); FileInputSynapse samples = new FileInputSynapse(); samples.setInputFile(new File("normalized_input.txt")); samples.setAdvancedColumnSelector("3"); trainer.setDesired(samples); output.addOutputSynapse(trainer); net.setTeacher(trainer); monitor.setTrainingPatterns(47); monitor.setTotCicles(100000); monitor.setLearning(true); net.go(); saveNeuralNet(net,"dann.nnet"); } public JPanel getActivatePanel(){ activatepanel = new JPanel(); activatepanel.setLayout(null); activatepanel.setBorder(BorderFactory.createTitledBorder(null,"Ativação",TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Dialog",Font.BOLD,12), new Color(51,51,51))); activatepanel.setSize(280,185); activatepanel.setVisible(true); activatepanel.setLocation(270,10); JLabel bsb = new JLabel("Precipitação para Brasília: "); bsb.setLocation(15,20); bsb.setSize(200,30); bsbfield = new JTextField(); bsbfield.setLocation(215,26); bsbfield.setSize(50,18); JLabel tag = new JLabel("Precipitação para Taguatinga: "); tag.setLocation(15,40);

53

tag.setSize(200,30); tagfield = new JTextField(); tagfield.setLocation(215,46); tagfield.setSize(50,18); JLabel sas = new JLabel("Saída Esperada pela Assimilação: "); sas.setLocation(15,110); sas.setSize(200,30); sasfield = new JTextField(); sasfield.setEditable(false); sasfield.setLocation(215,116); sasfield.setSize(50,18); JLabel srr = new JLabel("Saída da Rede Neural: "); srr.setLocation(15,130); srr.setSize(200,30); srrfield = new JTextField(); srrfield.setEditable(false); srrfield.setLocation(215,136); srrfield.setSize(50,18); JLabel err = new JLabel("Erro entre a Rede e a Assimilação: "); err.setLocation(15,150); err.setSize(200,30); errfield = new JTextField(); errfield.setEditable(false); errfield.setLocation(215,156); errfield.setSize(50,18); JButton activbutton = new JButton("Ativar"); activbutton.setLocation(15,80); activbutton.setVisible(true); activbutton.setSize(125,25); activbutton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { if(!bsbfield.getText().equals("") && !tagfield.getText().equals("")){ try { activate(Double.parseDouble(bsbfield.getText()),Double.parseDouble(tagfield.getText())); } catch (NumberFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } }); JButton denormbutton = new JButton("Desnormalizar"); denormbutton.setLocation(145,80); denormbutton.setVisible(true); denormbutton.setSize(120,25); denormbutton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { double bsb_value=0.0; double tag_value=0.0; double sas_value=0.0; double srr_value=0.0; if(!bsbfield.getText().equals("") && !tagfield.getText().equals("")){ try { bsb_value = Double.parseDouble(bsbfield.getText()); tag_value = Double.parseDouble(tagfield.getText()); sas_value = (0.9*bsb_value)+(0.05*tag_value)+(0.05*av); srr_value = denormalize("dann_out.txt"); sasfield.setText(String.valueOf(sas_value).substring(0,6)); srrfield.setText(String.valueOf(srr_value).substring(0,6)); errfield.setText(String.valueOf(Math.abs(srr_valuesas_value)).substring(0,6)); } catch (IOException e) {

54

e.printStackTrace(); } } } }); activatepanel.add(bsb); activatepanel.add(bsbfield); activatepanel.add(tag); activatepanel.add(tagfield); activatepanel.add(activbutton); activatepanel.add(denormbutton); activatepanel.add(sas); activatepanel.add(sasfield); activatepanel.add(srr); activatepanel.add(srrfield); activatepanel.add(err); activatepanel.add(errfield);

return activatepanel; } public void activate(double bsb, double tag) throws IOException, ClassNotFoundException { NeuralNet net = restoreNeuralNet("dann.nnet"); double [][] inputdata = {{normalize(bsb),normalize(tag)}}; Layer input = net.getInputLayer(); input.removeAllInputs(); MemoryInputSynapse meminp = new MemoryInputSynapse(); meminp.setFirstRow(1); meminp.setAdvancedColumnSelector("1,2"); meminp.setInputArray(inputdata); input.addInputSynapse(meminp); Layer output = net.getOutputLayer(); FileOutputSynapse fileoutput = new FileOutputSynapse(); fileoutput.setFileName("dann_out.txt"); output.addOutputSynapse(fileoutput); net.getMonitor().setTotCicles(1); net.getMonitor().setLearning(false); net.go(); } public void normalize() throws IOException{ BufferedReader inp = new BufferedReader(new FileReader("normal_input.txt")); BufferedWriter out = new BufferedWriter(new FileWriter("normalized_input.txt")); String line = null; while((line = inp.readLine())!=null){ String [] dados = line.split(";"); double bsb = ((max*inf)-(min*sup))+(Double.parseDouble(dados[0])*(sup-inf))/(max-min); double tag = ((max*inf)-(min*sup))+(Double.parseDouble(dados[1])*(sup-inf))/(max-min); double fin = ((max*inf)-(min*sup))+(Double.parseDouble(dados[2])*(sup-inf))/(max-min); out.write(bsb+";"+tag+";"+fin+"\n"); } inp.close(); out.close(); } public double normalize(double value){ return (((max*inf)-(min*sup))+((value)*(sup-inf)))/(max-min); } public double denormalize(String filename) throws IOException{ String line = null; double x=0.0; BufferedReader infile = new BufferedReader(new FileReader(filename)); while((line = infile.readLine())!=null){ x = ((Double.parseDouble(line)*(max-min))-(max*inf)+(min*sup))/(sup-inf); } return x; } public void saveNeuralNet(NeuralNet net, String filename) throws IOException{ FileOutputStream stream = new FileOutputStream(filename);

55

ObjectOutputStream out = new ObjectOutputStream(stream); out.writeObject(net); out.close(); } public NeuralNet restoreNeuralNet(String filename) throws IOException, ClassNotFoundException{ NeuralNetLoader loader = new NeuralNetLoader(filename); return loader.getNeuralNet(); } public void netStarted(NeuralNetEvent arg0) { out.append("Início do Treinamento\n"); } public void cicleTerminated(NeuralNetEvent arg0) { Monitor mon = (Monitor) arg0.getSource(); if(mon.getCurrentCicle()%1000==0){ out.append("Época: "+mon.getCurrentCicle()+" RMSE: "+mon.getGlobalError()+"\n"); repaint(); } } public void netStopped(NeuralNetEvent arg0) { out.append("Fim do Treinamento"); } public static void main(String[] args) { try { new DANN(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public void errorChanged(NeuralNetEvent arg0) {} public void netStoppedError(NeuralNetEvent arg0, String arg1) {} }

56

ANEXO B 0.0;3.2;0.16 0.0;3.0;0.15 0.0;1.4;0.07 0.0;2.8;0.14 4.8;0.0;4.32 0.2;0.0;0.18 7.2;0.0;6.48 0.2;0.0;0.18 0.0;0.8;0.04 0.0;0.2;0.01 0.0;0.6;0.03 1.2;0.0;1.08 0.4;0.8;0.40 2.0;0.0;1.80 1.6;0.0;1.44 0.0;1.2;0.06 0.0;17.2;0.86 0.8;0.0;0.72 0.0;11.2;0.56 4.2;0.4;3.80 5.4;2.0;4.96 3.2;0.2;2.89 0.0;4.8;0.24 1.0;0.0;0.90 0.6;0.0;0.54 4.0;0.2;3.61 3.0;2.8;2.84 0.0;5.2;0.26 0.2;0.6;0.21 0.8;0.4;0.74 1.4;0.4;1.28 0.0;11.6;0.58 0.0;0.2;0.01 0.0;1.8;0.09 0.0;0.4;0.02 2.4;0.0;2.16 1.8;0.0;1.62 16.6;0.0;14.9 0.0;0.2;0.01 1.8;0.2;1.63 4.0;0.0;3.60 2.6;0.0;2.34 1.2;0.2;1.09 0.4;0.0;0.36 3.8;0.2;3.43 6.0;0.0;5.40 0.0;0.0;0.00

57

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.