• Nenhum resultado encontrado

potencialmente qualquer dos algoritmos apresentados possa ser implementado de ambas as formas. No entanto em alguns casos a implementação recursiva é mais difícil de obter.

Para um algoritmo como o Steepest Descent associado ao Backpropagation não existe uma dificuldade especial em fazer uma implementação recursiva, mas para os algoritmos que utilizam a matriz Hessiana ou as aproximações referidas nas secções anteriores, como o método de Gauss-Newton ou o Levenberg-Marquardt, para que o algoritmo seja processado rapidamente é evitado calcular a matriz e proceder depois à sua inversão usando-se normalmente um cálculo aproximado da matriz já invertida. Neste caso é particularmente difícil implementar o algoritmo Levenberg-Marquardt, uma vez que além de calcular a matriz Hessiana (ou a respectiva aproximação) é ne- cessário adicionar uma matriz identidade e controlar o parâmetro µ por forma a garantir a convergência, ou seja é necessário garantir que a matriz é definida positiva e portanto invertível.

Existem, no entanto, aproximações ao cálculo da matriz Hessiana, como o algo- ritmo BFGS (Broyden-Fletcher-Goldfarb-Shanno) ou DFP (Davidon-Fletcher-Powell), habitualmente designados por métodos Quasi-Newton, que podem ser utilizados neste caso (ver, por exemplo, [26]).

Nas implementações recursivas para o método Gauss-Newton, para evitar proble- mas de convergência, torna-se mesmo necessário introduzir métodos como o Factor de Esquecimento ou o Traço Constante [1].

Em relação à aplicação dos algoritmos num processo on-line ou off-line, ambos os tipos de implementações podem ser usadas. Para implementações on-line é mais fácil a utilização de um algoritmo na forma Recursiva devido às restrições temporais decorrentes de efectuar o treino da RN e recolher os dados respeitando o período de amostragem. Para implementações off-line, o mais frequente é a utilização da imple- mentação em grupo uma vez que, como anteriormente foi afirmado, são menos sensíveis às variações imediatas que podem ser provocadas, por exemplo, pela presença de ruído.

2.8 Estado da arte

2.8.1 Novos tipos de Redes Neuronais

Diversos novos paradigmas de RNs têm surgido e têm merecido maior ou menor atenção por parte da comunidade científica. Uma vez que o estudo destes tipos de RNs se en- contra fora do âmbito proposto para este trabalho, refere-se apenas a título de exemplo um desses novos paradigmas, os spiking neurons, em torno dos quais existe já um largo trabalho, com desenvolvimento de algoritmos, exploração das suas capacidades (ver, por exemplo, [27]) e até desenvolvimento de hardware específico (ver, por exemplo, [28] e [29]).

2.8.2 Algoritmos de treino

Os algoritmos de treino para RNs constituem uma das áreas que continua a merecer atenção da comunidade científica, com particular relevância no que diz respeito ao desenvolvimento ou adaptação de algoritmos para funcionarem on-line, embora esta área não seja a única contemplada.

Em [30] é apresentado um algoritmo construído a partir do algoritmo de Gauss- Newton e que faz uso do facto do Jacobiano não ter característica máxima (do inglês full rank) para reduzir a complexidade dos cálculos necessários, separando os pesos absolutamente necessários dos supérfluos com base na característica. Para este algo- ritmo estão previstas duas versões: a versão simplificada que modifica apenas os pesos essenciais e uma completa que modifica todos os pesos com o objectivo de melhorar a convergência no caso de a característica ser demasiado baixa.

O artigo [31] apresenta, um algoritmo de treino genérico que pode ser utilizado para diversos tipos de estruturas usadas para modelização, aproveitando a característica comum de serem formados por um estágio não-linear seguido de um estágio linear. Esse algoritmo é retomado em [32], sendo também implementada uma versão on-line com base em janela deslizante (do inglês sliding window).

No artigo [33] e na tese [34] é apresentada uma adaptação do algoritmo de Levenberg- Marquardt por forma a permitir uma implementação recursiva. Este algoritmo modi- ficado obtém-se pela alteração da equação de actualização dos pesos, que resulta de uma aproximação introduzida no cálculo da matriz Hessiana e facilita a sua inversão e por uma nova forma de avaliar a vizinhança que determina a validade da presente iteração, da qual resulta uma forma distinta de calcular o parâmetro µk.

Em [35] é apresentada uma variante do algoritmo de Levenberg-Marquardt (desig- nado Neighborhood Based Levenberg-Marquardt Algorithm for Neural Network Trai- ning) que consiste basicamente em treinar partes da RN de cada vez (daqui resulta a designação de vizinhanças - do inglês neighborhood). As vizinhanças da RN a trei- nar têm sempre que incluir saídas e entradas, como de resto é fácil de concluir tendo em conta o algoritmo e é permitida a sobreposição entre vizinhanças. O objectivo desta variante é diminuir a complexidade computacional da implementação quer em termos de memória necessária quer no tempo de treino de uma RN. A divisão da rede em vizinhanças facilmente concretiza estes objectivos (salvaguardando que não haja demasiada sobreposição das vizinhanças) uma vez que, como é explicado, sendo m o número de pesos da RN é necessário calcular e armazenar m2 elementos e executar

aproximadamente m3 operações. Pelos resultados apresentados estes objectivos são

concretizados mas à custa de uma performance ligeiramente inferior do que a obtida para o algoritmo de Levenberg-Marquardt completo.

Uma modificação de um algoritmo de treino (steepest descent) por um motivo dife- rente é apresentada em [36]. Os autores verificaram que o facto de existirem pesos de valor absoluto mais elevado é prejudicial para a tolerância a falhas parciais, uma vez que se a falha atingir esta ligação associada ao peso de maior valor absoluto, existirá um maior impacto na saída da RN. O novo algoritmo é muito semelhante ao steepest descent, sendo a principal modificação associada ao facto de as alterações aos pesos

2.9. Conclusão 27