Uma introdução às Redes Neurais

Desenvolvimento de Aplicações

Esta página procura ilustrar os passos necessários para o desenvolvimento de aplicações utilizando redes neurais artificiais.

1 e 2. Coleta de dados e separação em conjuntos

Os dois primeiros passos do processo de desenvolvimento de redes neurais artificiais são a coleta de dados relativos ao problema e a sua separação em um conjunto de treinamento e um conjunto de testes. Esta tarefa requer uma análise cuidadosa sobre o problema para minimizar ambiguidades e erros nos dados. Além disso, os dados coletados devem ser significativos e cobrir amplamente o domínio do problema; não devem cobrir apenas as operações normais ou rotineiras, mas também as exceções e as condições nos limites do domínio do problema.

Normalmente, os dados coletados são separados em duas categorias: dados de treinamento, que serão utilizados para o treinamento da rede e dados de teste, que serão utilizados para verificar sua performance sob condições reais de utilização. Além dessa divisão, pode-se usar também uma subdivisão do conjunto de treinamento, criando um conjunto de validação, utilizado para verificar a eficiência da rede quanto a sua capacidade de generalização durante o treinamento, e podendo ser empregado como critério de parada do treinamento.

Depois de determinados estes conjuntos, eles são geralmente colocados em ordem aleatória para prevenção de tendências associadas à ordem de apresentação dos dados. Além disso, pode ser necessário pré-processar estes dados, através de normalizações, escalonamentos e conversões de formato para torná-los mais apropriados à sua utilização na rede.

3. Configuração da rede

O terceiro passo é a definição da configuração da rede, que pode ser dividido em três etapas:

3.1 Seleção do paradigma neural apropriado à aplicação.

3.2 Determinação da topologia da rede a ser utilizada – o número de camadas, o número de unidades em cada camada, etc.

3.3 Determinação de parâmetros do algoritmo de treinamento e funções de ativação. Este passo tem um grande impacto na performance do sistema resultante.

Existem metodologias, “dicas” e “truques” na condução destas tarefas. Normalmente estas escolhas são feitas de forma empírica. A definição da configuração de redes neurais é ainda considerada uma arte, que requer grande experiência dos projetistas.

4. Treinamento

O quarto passo é o treinamento da rede. Nesta fase, seguindo o algoritmo de treinamento escolhido, serão ajustados os pesos das conexões. É importante considerar, nesta fase, alguns aspectos tais como a inicialização da rede, o modo de treinamento e o tempo de treinamento.

Uma boa escolha dos valores iniciais dos pesos da rede pode diminuir o tempo necessário para o treinamento. Normalmente, os valores iniciais dos pesos da rede são números aleatórios uniformemente distribuídos, em um intervalo definido. A escolha errada destes pesos pode levar a uma saturação prematura. Nguyen e Widrow encontraram uma função que pode ser utilizada para determinar valores iniciais melhores que valores puramente aleatórios.

Quanto ao modo de treinamento, na prática é mais utilizado o modo padrão devido ao menor armazenamento de dados, além de ser menos suscetível ao problema de mínimos locais, devido à pesquisa de natureza estocástica que realiza. Por outro lado, no modo batch se tem uma melhor estimativa do vetor gradiente, o que torna o treinamento mais estável. A eficiência relativa dos dois modos de treinamento depende do problema que está sendo tratado.

Quanto ao tempo de treinamento, vários fatores podem influenciar a sua duração, porém sempre será necessário utilizar algum critério de parada. O critério de parada do algoritmo backpropagation não é bem definido, e geralmente é utilizado um número máximo de ciclos. Mas, devem ser considerados a taxa de erro médio por ciclo, e a capacidade de generalização da rede. Pode ocorrer que em um determinado instante do treinamento a generalização comece a degenerar, causando o problema de over-training, ou seja a rede se especializa no conjunto de dados do treinamento e perde a capacidade de generalização.

O treinamento deve ser interrompido quando a rede apresentar uma boa capacidade de generalização e quando a taxa de erro for suficientemente pequena, ou seja menor que um erro admissível. Assim, deve-se encontrar um ponto ótimo de parada com erro mínimo e capacidade de generalização máxima.

5. Teste

O quinto passo é o teste da rede. Durante esta fase o conjunto de teste é utilizado para determinar a performance da rede com dados que não foram previamente utilizados. A performance da rede, medida nesta fase, é uma boa indicação de sua performance real.

Devem ser considerados ainda outros testes como análise do comportamento da rede utilizando entradas especiais e análise dos pesos atuais da rede, pois se existirem valores muito pequenos, as conexões associadas podem ser consideradas insignificantes e assim serem eliminadas (prunning). De modo inverso, valores substantivamente maiores que os outros poderiam indicar que houve over-training da rede.

6. Integração

Finalmente, com a rede treinada e avaliada, ela pode ser integrada em um sistema do ambiente operacional da aplicação. Para maior eficiência da solução, este sistema deverá conter facilidades de utilização como interface conveniente e facilidades de aquisição de dados através de planilhas eletrônicas, interfaces com unidades de processamento de sinais, ou arquivos padronizados. Uma boa documentação do sistema e o treinamento de usuários são necessários para o sucesso do mesmo.

Além disso, o sistema deve periodicamente monitorar sua performance e fazer a manutenção da rede quando for necessário ou indicar aos projetistas a necessidade de retreinamento. Outras melhorias poderão ainda ser sugeridas quando os usuários forem se tornando mais familiares com o sistema, estas sugestões poderão ser muito úteis em novas versões ou em novos produtos.

7. Exemplo de Implementação

Para exemplificar o desenvolvimento de uma rede neural, tomemos o cálculo da função y é a raiz quadrada de x. Temos, então dois neurônios para a camada de entrada de dados, um de “bias” e outro de entrada efetiva; um neurônio para a saída e, de acordo com HECHT – KOLMOGOROV, três neurônios na camada oculta.

fig12-Representação para cálculo da função y

Seja os dados números entre 1 a 100 com suas respectivas raízes quadradas. Serão escolhidos aleatoriamente 10 números para a fase de testes e os restantes para a fase de treinamento.

O aprendizado começa com a aplicação de 5000 iterações à rede neural e em seguida é realizado testes, onde se compara os resultados obtidos com os valores reais. A diferença encontrada nesta comparação define o grau de ajuste que os dados obtidos pela rede neural deve sofrer, em relação aos dados reais.

Outras 5000 iterações são realizadas, dando segmento a fase de aprendizado, seguido de novos testes. Se a diferença entre os dados obtidos e os reais diminuiu, significa que o nível de aprendizado melhorou e que novas 5000 iterações serão aplicadas a fim de se refinar a rede. Caso contrário, a rede foi treinada em excesso, fazendo com que ela memorize os dados e não produza uma relação entre eles.

Comparando com uma criança na escola, digamos que a rede neural “decorou” a lição, os exercícios e não realmente “entendeu”, “assimilou”, cometendo erros em “exercícios” semelhantes aos que lhe foram apresentados, mas de valores alterados.

Após 30000 iterações de aprendizado, a rede neural informou o valor 5,942 para a raiz quadrada de 36, ou seja, um erro de aproximadamente 1%. Obviamente, para este caso, a rede neural não se mostrou mais eficiente que uma função sqrt de qualquer linguagem estruturada, mas pode-se perceber o poder de aprendizado e de exatidão de uma rede neural, se devidamente treinada.

Voltar para o índice.


Deixe um comentário, mas lembre-se que ele precisa ser aprovado para aparecer.