• Nenhum resultado encontrado

3.3.1

Algoritmo

Algumas redes neurais usam alguns princípios da lógica fuzzy, tais como conjuntos de regras e inferência fuzzy, em uma forma conexionista para armazenar conhecimento. Tais sistemas são baseados nas regras e nos mecanismos de inferência fuzzy para o propósito de aprendizado e otimização. A Rede Neural Fuzzy Evolutiva (em inglês: Evolving Fuzzy

Neural Network - EFuNN) é um sistema baseado nesses mecanismos incorporado com a pos-

sibilidade de aprendizado incremental (Kasabov, 2007). Essa rede neural foi a primeira SCE descrita por Kasabov em (Kasabov, 1998) e, ao longo do tempo, algumas outras variações dela foram propostas (Kasabov, 2007).

e conexões são criados/conectados conforme os dados são usados para o treinamento. As camadas são respectivamente:

• camada de entrada: é a camada na qual o dado é apresentado à rede;

• camada de fuzzification ou quantização fuzzy dos dados de entrada: é a camada que

realiza a fuzzification do dado de entrada. Essa camada não é completamente co- nectada à camada de entrada. Na verdade, cada neurônio na camada de entrada é conectado a um subconjunto de neurônios dessa camada, onde o número de neurô- nios nesse subconjunto é determinado pelo número de funções de pertinência (Watts, 2009). Por exemplo, dois neurônios para cada neurônio de entrada pode representar valores PEQU ENOS e GRANDES da variável de entrada. Diferentes tipos de funções de pertinência podem ser usados (triangular, Gaussiana, etc). O número e o tipo de função de pertinência podem ser modificados dinamicamente. De forma geral, essa camada retorna o grau de pertinência de cada variável para cada uma das funções de pertinência através da fuzzification (mais detalhes ver Apêndice A);

• camada de regras: é a camada onde se encontram as regras fuzzy que evoluem através

de aprendizado supervisionado ou não supervisionado. As regras dos neurônios repre- sentam protótipos (exemplos, centroides) dos dados de entrada-saída. Uma função de ativação linear ou Gaussiana é usada nos neurônios dessa camada. Cada neurônio j nessa camada é definido por dois vetores: Wej e W sj, onde Wej e W sj representam

as coordenadas de um centro de esfera no espaço de entrada e saída fuzzy, respectiva- mente;

• camada de fuzzification dos dados de saída: essa camada realiza a fuzzification dos

dados de saída (como as classes associadas a um dado, por exemplo), de forma simi- lar à segunda camada. Aqui, uma soma ponderada das entradas e uma função linear saturada são usadas nos neurônios para calcular o grau de pertinência que um vetor de saída, que está associado a um dado de entrada, pertencer a cada uma das funções de pertinência de saída.

• camada de saída: essa camada fornece o valor de saída da rede. Uma função de ativa-

ção linear é usada para calcular os valores de defuzzification para os dados de saída.

A Figura 3.2 ilustra uma arquitetura da EFuNN em que as linhas pontilhadas (linhas mais claras) indicam a inclusão de um neurônio na camada de regras.

Além dessas camadas, pode ser adicionada uma camada opcional de memória de curto prazo através de uma conexão de retroalimentação com a camada de regras e, por essa razão,

Figura 3.2: Arquitetura da Rede Neural Fuzzy Evolutiva (Kasabov, 2007).

ela é chamada de camada de retroalimentação. As conexões dessa camada podem ser usadas para memorizar o relacionamento temporal dos dados de entrada (Kasabov, 2007).

Uma versão reduzida da EFuNN poderia ser uma rede de três camadas, cujas camadas de entrada e saída fuzzy seriam eliminadas. Nesse caso, o algoritmo de treino seria ligeiramente modificado, se assemelhando ao do eMLP (Kasabov, 2007).

Cada neurônio na camada de regras possui um próprio conjunto de parâmetros locais, que são a idade, ativação média e a densidade da vizinhança dele. Esses parâmetros são utilizados para o procedimento de poda da rede, que utiliza uma regra fuzzy e requer que conceitos relacionados aos parâmetros sejam pré-definidos. Por exemplo, a idade pode ser definida como NOV OS ou V ELHOS, sendo que um neurônio pode ser considerado V ELHO após p amostras de treino. A regra de poda e os valores para os parâmetros são definidos de acordo com a aplicação da tarefa (Kasabov, 2007).

Inicialmente, pode-se imaginar que essa rede neural possui uma estrutura com um nú- mero máximo de neurônios, porém os neurônios da camada de regras não possuem nenhuma conexão com as outras camadas. Assim sendo, quando é apresentada uma nova amostra de treinamento x, e não houver nenhum neurônio conectado na camada de regras ou houver necessidade de adicionar um novo neurônio j nessa camada, os pesos das conexões Wej e W sjsão obtidos por:

Wej= xf e, W sj= xf s, (3.10)

onde xf ee xf ssão os dados de entrada (vetor de atributos) e saída (vetor de classes) no espaço fuzzy associados à amostra x, respectivamente.

Em alguns momentos um procedimento de atualização dos pesos dos neurônios é neces- sário. Para atualizar as conexões do neurônio j da camada de regras são usadas as Equações 3.11 e 3.12, onde Aj é a ativação do neurônio j para a entrada xf eeη1eη2são as taxas de

aprendizado para os vetores de pesos Wej e W sj, respectivamente. A dimensão dos vetores Weje xf eé d, e do W sjé n, tal que i= 1, . . . , d e p = 1, . . . , n.

Wej,i= Wej,i+η1(xf e,i−Wej,i), (3.11)

W sj,p= W sj,p+η2AjEp. (3.12)

O vetor E tem dimensão n e ele é a diferença entre a saída desejada xf se o vetor de saídas

calculadas Oc (Equação 3.13). Os vetores xf se Oc também possuem dimensão n.

Ep= xf s,p− Ocp. (3.13)

A ativação Aje o vetor de saída Oc são calculados através das funções Aj= f1(Wej, xf e)

e Oc= f2(W s, A), onde A é o vetor de ativação dos neurônios na camada de regras para a

entrada xf e. Diferentes funções podem ser usadas para f1e f2, incluindo a Equação 3.1.

Existem algumas variantes do procedimento de aprendizado desta rede neural (Kasabov, 2007). No entanto, o procedimento padrão de aprendizado é dado no Algoritmo 4 (Kasabov, 1998; Woodford, 2001).

3.3.2

Vantagens e Desvantagens

A EFuNN já foi utilizada em um grande número de aplicações e, para alguns casos, apresentou alguns dos melhores resultados quando comparada com outras técnicas. Além disso, é possível extrair regras fuzzy de sua arquitetura.

No entanto, as desvantagens são que esta rede neural apresenta uma complexidade maior do que as redes neurais anteriormente mencionadas e apresenta um número maior de neurô- nios, devido ao processo de fuzzification, o que também influencia no custo computacional da mesma. Além disso, para algumas situações, a fuzzification da entrada não somente é desnecessário (caso de base de dados binários), mas também podem prejudicar o desempe- nho. Para a maioria das aplicações, técnicas como a rede eMLP são capazes de modelar o conjunto de treinamento com um número menor de neurônios na camada evolutiva do que uma equivalente EFuNN (Watts, 2009; Watts, 2004).

AlgoritmoAlgoritmo de aprendizado da EFuNN

1 inicializar uma estrutura EFuNN com um número máximo de neurônios e zero conexões

2 para cada novo dado de treinamento faça

3 Realiza o processo de fuzzification do dado de entrada-saída

4 se não há nenhum neurônio na camada de regras com conexões diferentes de zero então

5 conectar o primeiro neurônio às camadas de entrada e saída fuzzy, conforme as Equações em 3.10

6 senão

7 se há atributos novos que aparecem nesse dado e não têm sido usados em dados anteriores então

8 criar novas conexões de entrada e/ou saída para os neurônios na camada de regras, de acordo com as correspondentes funções de pertinência

9 encontrar a similaridade fuzzy normalizada (Equação 3.2) entre o dado com quantização fuzzy e os padrões já armazenados nos neurônios da camada de regras

10 a partir da similaridade obter a ativação dos neurônios da camada de regras, conforme a função de ativação

11 atualizar os parâmetros locais definidos para os neurônios, tais como: a camada de memória de curto prazo (se houver), idade, ativação média, etc.

12 encontrar todos os neurônios com um valor de ativação acima de um limiar de sensibilidade Sthr

13 se não há nenhum neurônio com um valor de ativação maior do que o limiar Sthrentão

14 conectar um neurônio às camadas de entrada e saída fuzzy, conforme as Equações em 3.10

15 senão

16 encontrar o neurônio inda1 com o maior valor de ativação A

17 se modo de treinamento for “1 de m” então

18 propagar a ativação do neurônio mais ativo para a camada de saída fuzzy

19 se modo de treinamento for “muitos de m” então

20 somente os valores de ativação acima do limiar Sthsão propagados para a a camada de saída fuzzy

21 encontrar o neurônio inda2 vencedor na camada de saída fuzzy e a ativação dele

22 encontrar o neurônio indt2 vencedor desejado na camada de saída fuzzy e a ativação dele

23 calcular o erro de saída fuzzy E= xf s− Oc, onde xf sé a saída fuzzy desejada e Oc é a saída calculada

24 se inda2 é diferente de indt2 ou abs(Einda2) > Ethrentão

25 conectar um neurônio às camadas de entrada e saída fuzzy, conforme as Equações em 3.10

26 atualizar as conexões de entrada e saída do neurônio inda1 aplicando as Equações 3.11 e 3.12, respectivamente

27 se se houver a camada de memória de curto prazo então

28 atualizar as conexões de retro-propagação dos neurônios dela

29 para cada neurônio na camada de regras faça

30 se o neurônio é V ELHO e ativação média dele é BAIX A e a densidade dos neurônios nas áreas vizinhas é

ALTA ou MODERADA e a soma dos pesos das conexões de entrada ou saída é BAIX A e o neurônio não está

associado com a correspondente classe de saída atual (para tarefas de classificação somente) então

31 a probabilidade de poda do neurônio é ALTA

32 agregar neurônios na camada de regras

Algoritmo 4: O algoritmo de treinamento da EFuNN.