• Nenhum resultado encontrado

Lateral Inhibition Constructive Autoassociative Neural Network (LICANet)

Algoritmo 9: Pseudocódigo da etapa backward da LICANet

6.5 ALGORITMO CONSTRUTIVO 80

receptivo do neurônio na camada construtiva é dividido em quatro campos receptivos de mesmo tamanho e três novos neurônios são adicionados à camada construtiva sendo que cada um dos novos neurônios são relacionados a um dos campos receptivos gerados. O treinamento da LICANet é realizado novamente para a nova configuração e esse processo de treinamento e adição de novos neurônios repete-se até que nenhum campo receptivo satisfaça a condição 

eMaxui, j,v− eMinui, j,v> t ou um máximo de iterações seja alcançado.

Figura 6.2 Modelo quadtree da hierarquia dos campos receptivos que inicialmente apresenta apenas um

campo receptivo que é dividido em quatro e posteriormente um desses campos receptivos é novamente dividido. Ao lado de cada camada, aparece o tamanho dos campos receptivos dos seus nós.

Os campos receptivos são divididos de modo que os neurônios na camada construtiva se conectem a regiões homogêneas na imagem de entrada e esse processo pode ser visualizado utilizando um modelo quadtree (Samet e Webber 1985). A Figura 6.2 apresenta essa estrutura. No primeiro momento, existe apenas um campo receptivo com a mesma altura e largura das camadas de entrada e saída, dado por H e W . Em seguida, o campo receptivo é dividido em quatro campos receptivos com tamanhos H2 e H2. Finalmente, o campo receptivo denotado por F11,1,2,R sofre novamente o processo de divisão em quatro campos receptivos com tamanhos H4 e

H

4. O modelo quadtree da LICANet é uma representação de como as regiões homogêneas estão distribuídas ao longo dos padrões de entrada.

A Figura 6.3 apresenta a dinâmica da divisão dos campos receptivos na arquitetura da LICANet. Primeiro, a diferença entre as taxas de erro máxima e mínima no campo recep- tivo F10,1,0,R, dada por eMax01,0,1− eMin01,0,1, são maiores que o limiar t. Quanto maior for o limiar t, menos campos receptivos serão necessários e uma maior heterogeneidade dentro dos campos receptivos será tolerada. Logo, o campo receptivo é dividido em quatro outros campos recep- tivos e três novos neurônios são adicionados à camada construtiva. Segundo, a diferença entre as taxas de erro no campo receptivo F11,2,1,R é ainda maior que o limiar, e esse campo receptivo

6.5 ALGORITMO CONSTRUTIVO 81

Figura 6.3 Dinâmica da divisão dos campos receptivos na LICANet. Novos neurônios são adicionados

toda vez que a diferença entre as taxas de erro máxima e mínima de um campo receptivo Fiu, j,v,Ré maior que o limiar t, dada por eMaxui, j,v− eMinui, j,v> t.

é dividido em quatro outros campos receptivos e mais três novos neurônios são adicionados. Finalmente, a camada construtiva da LICANet possui 7 neurônios com campos receptivos de tamanhos diferentes.

6.5.1 Algoritmo de poda da LICANet

Durante o treinamento de uma LICANet, é possível que alguns neurônios não aprendam da melhor forma como representar alguns dos pixels. Portanto, após o treinamento, uma etapa de poda é feita na camada de reconstrução da LICANet e a saída da rede é calculada conside- rando apenas os n pixels mais similares entre as imagens de entrada e as saídas obtidas para as imagens utilizadas no treino de uma LICANet.

A Figura 6.4 apresenta o algoritmo de poda utilizado. Primeiro, deve-se calcular a taxa de erro médio de cada neurônio na camada de reconstrução para as imagens utilizadas no treino

6.5 ALGORITMO CONSTRUTIVO 82

Figura 6.4 Arquitetura de poda da LICANet. As taxas de erro médio para cada neurônio são ordena-

das de modo crescente e os neurônios associados às n= 4 menores taxas são mantidos na camada de

reconstrução.

da LICANet, dada por

eMedxR,y= K−1

k=0 yRx,y,k− Ixk,y , (6.12)

sendo que yRx,y,ké a saída obtida para o neurônio(x, y) na camada de reconstrução para a imagem

k, K é o total de imagens utilizadas para treinar uma LICANet e Ixk,y é a intensidade do pixel na posição(x, y) da imagem k. Segundo, as taxas de erro médio devem ser ordenadas de modo crescente e as n menores taxas de erro médio devem ser selecionadas. Finalmente, os neurônios associados as n menores taxas de erro médio são mantidos na camada de reconstrução e os demais são removidos.

O algoritmo de poda mantém na camada de reconstrução apenas os neurônios que melhor aproximam a saída da rede da imagem de entrada. Dessa forma, espera-se reduzir o custo computacional do modelo sem prejuízo para sua eficácia.

6.5.2 Pseudocódigo do algoritmo construtivo

O algoritmo 10 apresenta o algoritmo construtivo proposto para a LICANet, onde novos neurô- nios são adicionados à camada construtiva e a mesma é então treinada novamente. Após o final do treinamento construtivo, ou seja, quando o critério de parada é respeitado nos campos receptivos de todos os neurônios da camada construtiva ou um número máximo de iterações é alcançado, o algoritmo de poda é aplicado na saída da rede.

6.5 ALGORITMO CONSTRUTIVO 83

Data: Imagens pertencentes a uma mesma classe, quantidade de épocas NumE pocas e número de neurônios considerados na camada de reconstrução n

Result: LICANet treinada

Inicialize a LICANet com um neurônio na camada construtiva; evolve← true;

while evolve do

for t= 1..NumE pocas do

foreach Imagem k do

Calcule a saída da rede passando a imagem k seguindo a etapa forward, Algoritmo 8;

Acumule o gradiente do erro de cada neurônio utilizando a imagem de entrada seguindo a etapa backward, Algoritmo 9;

end

foreach Peso da LICANet do

Atualize cada peso utilizando o método Rprop; end

end

evolve← f alse;

foreach Neurônio(i, j) expandido de (u, v) na camada construtiva do

ifeMaxui, j,v− eMinui, j,v> t then

Divida os campo receptivos Fiu, j,v,I e Fiu, j,v,Rem quatro campos de mesmo tamanho;

Adicione três novos neurônios à camada construtiva expandidos de(i, j); Conecte o neurônio original e os três novos neurônios a cada um dos campos receptivos gerados;

evolve← true;

end end end

Inicialize um array EMs com tamanho H.W ; i← 0;

for x= 1 → H do

for y= 1 → W do eMedxR,y← Eq. 6.12; EMs[i] ← eMedR

x,y

i+ +;

end end

Ordene de modo crescente o array EMs; for i= n → H.W do

Remover neurônio associado ao erro armazenado em EMs[i];

end

Documentos relacionados