Este professor é especialista em redes neurais e sempre procura transmitir o possível de sua experiência aos alunos.
Aqui, neste post, pretendo fazer o mesmo: compartilhar um pouco das minhas experiências com redes neurais, em especial a MLP (Multi-Layer Perceptron).
Começando, digo que redes neurais são aproximadores de funções de um espaço n-dimensional em um espaço m-dimensional.
O espaço n-dimensional (domínio da função) é o espaço de entrada da rede e o m-dimensional (contra-domínio da função) é a saída da rede.
Por exemplo, para a identificação de um sistema elétrico, vamos supor que a entrada da rede seja tensão, corrente e impedância e a saída é uma de 3 classes de sistemas (predominantemente resistivo, capacitivo ou indutivo). Neste caso para cada elemento (V, I, Z) de entrada temos uma saída (S1, S2, S3) associada. A saída pode ser discreta ou contínua, no exemplo apresentado a saída pode ser a que classe pertence o sistema ou o grau de presença de cada tipo de elemento.
Uma aplicação interessante é a previsão de séries temporais, em que a rede neural "prevê o futuro" com base no passado. Neste caso, a entrada da rede podem ser n valores assumidos pela função no passado e a saída os m valores futuros. Para se prever o próximo elemento de uma função, pode-se por exemplo tomar 10 elementos anteriores e extimar o próximo a partir deles.
Limitando-nos as redes supervisionadas, dentre as quais está a MLP, a questão de aplicar a rede neural é o seguinte:
- Definir o problema e seus parâmetros (entrada(s) e saída(s));
- Projetar a arquitetura da rede neural, no caso da MLP consiste em definir os parâmetros da rede (taxa de aprendizagem), quantidade de camadas e número de neurônios por camada;
- Tomar dados conhecidos do problema, ou seja montar um conjunto de dados conhecido para o treinamento da rede neural, com as entradas e saídas respectivas;
- Realizar o treinamento da rede, em que para cada entrada é apresentada a saída desejada e assim a rede vai se adaptando ao problema;
- Tomar novos dados para testar (validar) a rede neural, os dados de treinamento não podem estar presentes na validação da rede neural.
- Usar funções de ativação suaves;
- Gerar valores de erro grandes, isto acelera a aprendizagem;
- Usar taxas de aprendizagem baixas (da ordem de 0,001) para que a rede neural possa ajustar-se com maior precisão à função que está sendo mapeada;
- Explorar a solução das redes neurais mais simples, começando sem camada oculta, depois com 1 camada oculta e por fim 2 camadas ocultas.
Acho que isto é tudo por enquanto. Depois faço novas postagens sobre redes neurais, se possível mais técnicas
E para fechar, o Scilab tem toolboxes de várias ferramentas que podem ser de grande ajuda no projeto de redes neurais.
Nenhum comentário:
Postar um comentário