• Nenhum resultado encontrado

Programa de treino da rede neuronal

No documento ASPOF EN MEC Cardoso da Silva 2015 (páginas 110-113)

Capítulo 6. Sequência de testes com Redes Neuronais

6.2. Programação em MATLAB

6.2.1. Programa de treino da rede neuronal

Existem duas formas de desenvolver a rede neuronal, recorrendo à interface

NNtool (Neural Network Toolbox), ou em alternativa, através de linhas de código. Tanto

a interface NNtool como as linhas de código, permitem-nos configurar a rede no que diz respeito ao número de neurónios em cada camada, função transferência de cada camada e algoritmo de treino. No entanto, para testarmos os parâmetros referidos em ambiente NNtool, teríamos que inserir manualmente o conjunto de parâmetros que desejaríamos testar, e gravar os resultados individualmente, por conjunto. Esta tarefa revelar-se-ia extremamente extenuante, pelo que optou-se pela abordagem das linhas de código. O intuito seria criar um programa que de forma autónoma testasse todas as combinações possíveis dos parâmetros (nº de neurónios em cada camada, função transferência de cada camada e algoritmo de treino) e que guardasse numa matriz os resultados dos erros obtidos nas mesmas. O objetivo será fazer uma análise à posteriori, que permita identificar quais as configurações da rede que possibilitam o menor erro possível.

A arquitetura de rede empregue foi a Feedforward Back-propagation. O termo

Feedforward refere-se à forma como as ligações dentro da estrutura da rede ocorrem,

esta arquitetura distingue-se por estar organizada por camadas, as ligações são feitas de forma unidirecional e acontece entre as camadas sequencialmente, não existindo ciclos, desde as camadas de entrada, passando pelas camadas intermédias até à camada de saída. O Backpropagation, como já foi mencionado, é a forma de aprendizagem utilizada pela rede, neste caso, existe a correção e retro propagação do erro, o que consequentemente resulta no ajuste, ou reajuste, nos pesos de cada neurónio.

Foi então desenvolvido o programa do Apêndice J, composto por várias linhas de código, cujo objetivo seria devolver e guardar o erro de teste, validação e treino para todas as possibilidades de conjugação de parâmetros possíveis. Para obtermos os diferentes erros, é necessário dividir os dados disponíveis em três conjuntos distintos, de forma aleatória, tarefa que o programa desenvolvido executa com as linhas de código para o efeito. A divisão utilizada é na proporção de 70% dos dados para o conjunto de

treino, 15% para o conjunto de validação e 15% para o conjunto de teste, sobretudo devido ao número reduzido de dados existentes.

Relativamente à configuração da rede, inicialmente os parâmetros testados a fim de obter o conjunto ideal dos mesmos, foram:

 Número de neurónios da camada intermédia (entre 1 a 150);

 Função transferência da camada intermédia (tansig, logsig ou purelin);  Função transferência da camada de saída (logsig ou purelin);

 Algoritmo de treino do Back-Propagation da rede (trainlm, trainrp ou trainbfg). Nesta fase houve uma estreita colaboração com o camarada Mártires Paulino, com o intuito de diminuir o tempo consumido no treino da rede, foi acordado que cada um iria testar um conjunto de funções transferência e algoritmos de treino com algumas diferenças, embora determinados algoritmos de treino e funções transferência fossem de fato iguais. O objetivo seria verificar se uma combinação diferente entre estes aspetos poderia revelar-se mais proveitosa, embora estivéssemos cientes de quais seriam, à partida, as funções transferência e algoritmos de treino mais tipicamente usados, e que provavelmente dariam melhores resultados. As funções transferência da camada intermédia foram escolhidas por serem as mais usadas tipicamente, a da camada de saída foram selecionadas apenas duas para não aumentar o tempo de treino e tendo em conta que a função logsig teria que ser uma das selecionadas, por apresentar as caraterísticas mencionadas no Capítulo das Redes Neuronais e, os algoritmos de treino do Back-Propagation foram selecionados com base nos estudos realizados, que apontam estes algoritmos como sendo os que possuem capacidade de resolução de problemas mais célere, e bastante flexíveis ao nível da sua aplicação a diferentes tipos de problemas. (MathWorks)

No Quadro 4 apresenta-se a nomenclatura em MATLAB no que diz respeito às funções transferência, já na Quadro 5 a nomenclatura em MATLAB para os algoritmos de treino.

Função em MATLAB Descrição tansig Tangente hiperbólica logsig Sigmoide purelin Linear

Quadro 4 - Nomenclatura das funções transferência da camada intermédia em MATLAB

Função em

MATLAB Descrição

trainlm Backprogation Levenberg-

Marquardt

trainrp Resilient Backpropagation

trainbfg Backpropagation Quasi-Newton

Quadro 5 - Nomenclatura dos algoritmos de treino do Backpropagation da rede em MATLAB

Para testar todos as combinações possíveis destes parâmetros, implementou-se no programa, um código constituído essencialmente por uma série encadeada de ciclos, um ciclo por parâmetro (Figura 61).

Figura 61 - Esquema de funcionamento da série de ciclos encadeada para configuração da rede

1

•Ciclo do número de neurónios

tansig

•Ciclo da função transferência

da camada intermédia

purelin

•Ciclo da função tranferência da

camada de saída

No esquema apresentado na Figura 61, representa-se a forma como a sequência de ciclos funciona. O primeiro ciclo irá atribuir o valor do número de neurónios da camada, neste caso apenas um neurónio, o segundo a função transferência da camada intermédia, neste caso a tangente hiperbólica (tansig), o terceiro a função transferência da camada de saída, que neste caso é a função linear (purelin) e, finalmente, o quarto dará o algoritmo de treino, que neste caso é o Backpropagation Levenberg-Marquardt

(Trainlm). Após treinada a rede com esta configuração, o algoritmo de treino será

mudado, mantendo-se os outros parâmetros iguais, e o programa volta a treinar esta nova configuração de rede, após testados todos os algoritmos de treino para os mesmos parâmetros, o ciclo da função transferência da camada de saída entra em ação, transitando para a próxima função transferência, alteração que fará o ciclo do algoritmo de treino percorrer todos os algoritmos novamente. Após percorridos todas as funções transferência da camada de saída para os diferentes algoritmos de treino, é a vez do ciclo de transferência da camada intermédia entrar em ação, passando para a próxima função, a qual desencadeará a mesma resposta dos ciclos abaixo que a referida anteriormente, estes percorrerão todos as possibilidades existentes dentro do seu domínio. Esta cadeia de ciclos repete-se para o intervalo de neurónios que se pretende testar (Apêndice J).

No documento ASPOF EN MEC Cardoso da Silva 2015 (páginas 110-113)

Documentos relacionados