Vous êtes sur la page 1sur 87

CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

- REDES NEURAIS ARTIFICIAIS

01 - Introdução -
A questão da inteligência humana sempre foi um dos problemas filosóficos mais
interessantes, intrigantes e debatidos que se conhecem. Nas inúmeras tentativas de sua
proposição não faltam imaginação criadora nem diversidade de idéias, sem, contudo
haver nenhum paradigma unificador que permita ao menos algumas conclusões
definitivas.

Uma das abordagens mais aceita na atualidade é a de considerar a questão sob


múltiplos aspectos, passando necessariamente pela questão do conhecimento, de sua
representação e de seu aprendizado, pelas evidências descobertas nas Ciências
Biológicas, por desenvolvimentos matemáticos e pelos experimentos com artefatos
construídos para mostrar um ou mais componentes do que se admite, subjetivamente ser
a inteligência humana.

Um dos paradigmas de maior notoriedade hoje é o “conexionista”, que privilegia a


evidência biológica de uma imensa multiplicidade de pequenos agentes com alto grau de
coesão, como a existente no cérebro, para a explicação de comportamentos ditos
inteligentes.

Cabe observar que o paradigma conexionista não diz respeito apenas à questão da
inteligência, sendo aplicado também em campos tão diversos, quanto os das Ciências
Sociais e da Economia.

02 - Histórico

A reprodução de características “Inteligentes” em máquinas construídas pelo


homem é um dos objetivos mais perseguidos pela comunidade científica e tecnológica já
há muito tempo.

No que diz respeito ao aspecto “Conhecimento”, remonta da Grécia antiga uma das
primeiras experiências para a sua representação, feita através da “Lógica”. Na época a
metodologia era exercida através da cuidadosa manipulação das estruturas lingüísticas,
realizando-se com frases bem construídas e apelando-se para princípios de “Inferência”,
hoje muito bem formalizado, que condiziam com as bases filosóficas da cultura na época.

As três leis fundamentais do pensamento segundo Aristóteles espelham


rigorosamente os conceitos usados na formalização teórica do que hoje conhecemos
como “Lógica Matemática”

A formalização acima referida deu-se mais de dois mil anos depois, a partir dos trabalhos
de “Frege”, que propiciaram o desenvolvimento dos meios teóricos para “Representação
Simbólica de Conhecimento” e também para a rigorosa fundamentação de toda a
matemática.

02/05/02 1
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

A passagem dos conceitos teóricos para a prática tecnológica teve grande impulso
na época da “Segunda Guerra Mundial”. A construção dos primeiros computadores
digitais no fim da década de 1940 foi fruto de uma grande concentração de cientistas do
mais alto gabarito em propostas de realização do que se chamava “Cérebro Eletrônico”,
qualificação que há até bem pouco tempo ainda se atribuía aos processadores digitais.

Simultaneamente aos avanços das técnicas digitais, a partir de 1943 dois


pesquisadores da área biológica McCulloch & Pitts (1) propuseram o primeiro modelo
matemático do funcionamento de um neurônio. Este modelo, apesar de muito simples,
trouxe uma grande contribuição para as discussões sobre o cérebro eletrônico,
estimulando especulações sobre a verdadeira estrutura de um cérebro e, principalmente,
permitindo a criação dos primeiros modelos matemáticos de dispositivos artificiais que
buscavam analogias biológicas.

Sem dúvida os sonhos proliferaram e muitos recursos financeiros foram


distribuídos aos grupos de pesquisa na área, uma vez que as promessas eram
fantásticas. Esta situação perdurou até meados da década de “60”, quando os
organismos financiadores retiraram seu apoio tendo em vista o não cumprimento das
propostas contidas nos projeto. Para colocar uma pá de cal nas discussões que
ocasionalmente ainda ocorriam, Minsky & Pappert (2) em 1969 publicaram um livro
denominado “Perceptrons”, onde provavam que a estruturas utilizadas nos dispositivos da
época eram incapazes de aprender regras lógicas tão simples quanto à do “ou -
exclusivo”.

Pouquíssimos pesquisadores continuaram a trabalhar no assunto, entre os quais


destacam-se:
Teuvo Kohonen ( Finlândia);
Edoardo Caianiello (Itália);
Stephen Grossberg, (E.U.A);
James Anderson (E.U.A);
Kunihiko Fukushima (Japão);
Bernard Widrow (USA ), estes estavam ligados a vertente do modelo biológico.
A vertente ligada à Lógica Matemática, entretanto estava mais bem apoiada
institucionalmente, dada a grande conquistas realizadas na área de computação que, se
não geraram o cérebro eletrônico como se propôs originalmente, obtiveram um dispositivo
que inegavelmente revolucionou o ambiente tecnológico existente.

Estes pesquisadores “lançaram as bases” do que hoje entendemos por


“Inteligência Artificial”, obtendo logo no início da década de 70 resultados bastante
concretos em diversas e importantes aplicações de caráter prático. Da mesma forma que
a “lógica proposicional” (ou lógica de ordem zero) foi à base para o desenvolvimento dos
“computadores digitais”, a lógica de predicados de primeira ordem o foi para a Inteligência
Artificial. O início da década de 80 marcou a consolidação desta vertente e o crescimento
acentuado das aplicações como é do conhecimento geral.

02/05/02 2
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Pelo outro lado, entretanto, o “renascimento” do interesse científico teve início através dos
físicos com uma aplicação dos conceitos “conexionistas” ao problema de modelagem de
materiais paramagnéticos como o “vidro spin” realizada por Hopfield (3) e publicada em
1982. A idéia básica era a da analogia entre o spin magnético de um átomo influenciando
a todos os demais existentes no vidro e evidentemente, sofrendo a influência de todos na
determinação de sua própria orientação magnética. Esta analogia gerou um modelo
dinâmico não linear que se provou ser estável desde que a matriz de pesos que medem a
força de interação entre cada par de fosse simétrica. Esta condição é naturalmente
verificada no problema físico que estava sendo modelado e, portanto, não causou
dificuldades para sua aplicação.

A partir daí, diversas possibilidades de aplicação foram exploradas, como por


exemplo, em otimização, em reconhecimento de padrões etc., com resultados bastante
encorajadores. As boas condições de financiamento da pesquisa na área voltaram e o
volume de trabalhos publicados começou a crescer significativamente.

Em 1986 ocorreu o fato que efetivamente colocou a área de “Redes Neurais Artificiais”
como uma das prioritárias na obtenção de recursos. Este fato foi à explicação por
Rummelhart, Hinton e Williams (4) de um algoritmo de aprendizado (backpropagation)
para redes do tipo Perceptron com estrutura multicamadas, fazendo cair definitivamente à
alegação de que estes tipos de redes resolviam apenas problemas triviais. Cabe aqui
observar, a bem da verdade, que Minsky e Pappert (et alli) estavam absolutamente
corretos no que afirmaram, pois os algoritmos de aprendizagem existente na época eram
capazes de aprender apenas a solução para problemas simples de classificação, não
sendo conhecido nenhum outro com a generalidade do “backpropagation”. É importante
ainda salientar que este algoritmo foi desenvolvido anteriormente por outros
pesquisadores (Werbos 1974, Parker 1975 e Le Cun 1975) que, entretanto, o estavam
aplicando em problemas não relacionados diretamente com redes neurais.

Hoje redes neurais constituem uma teoria para estudo problemas ou fenômenos
complexos. É considerada como um ramo ou sub especialidade da inteligência artificial.
Após a publicação em 1986 do clássico “Parallel Distributed Processing” editado por
Rummelhart e McClelland ambos do PDP Research Group da Universidade de San Diego
na California, a área de redes teve um crescimento vertiginoso.
Cabe ressaltar que esta área está sendo reativada desde a década de 1980 e um
volumoso número de pesquisa e trabalhos têm sido realizados, apesar da falta de um
corpo teórico consolidado, e a inexistência de livros abrangentes.

A proliferação de publicações inexpressivas, contradições em diversas conjecturas de


trabalhos, resultados divergentes, caracterizam a área ainda pouco conhecida, ou seja,
onde o conhecimento científico é pouco consolidado. Por outro lado às perspectivas que
se abrem para pesquisadores e tecnólogos são tentadoras.

Desta forma, assistimos a partir de 1986 a um crescimento exponencial dos


financiamentos e das atividades na área. Hoje se pode dizer que na maioria das
Universidades e Centro de Pesquisa existem grupos trabalhando no assunto.
02/05/02 3
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Após as considerações sobre a evolução histórica das redes neurais, cabe uma pergunta.

Quando utilizar a redes neurais?


Esta pergunta pode ser respondida da seguinte maneira:

1) Quando as conclusões são baseadas em dados de natureza fuzzy. Se os dados são


opiniões pessoais, categoria mal definida, ou estão sujeitos a grandes erros, os
comportamentos robustos das RNs é decisivo para a solução do problema.
2) Os fatores importantes para a tomada de decisões são quase que imperceptíveis.
Uma das principais vantagens de um RN é a sua habilidade de descobrir padrões tão
obscuros que passam desapercebidos por especialistas humanos e métodos
estatísticos tradicionais.
3) Os dados apresentam um grau significativo de não-linearidade difícil de ser prevista.
Modelos tradicionais para previsão de série temporais, tais como ARMA e filtro de
Kalman, são baseados em modelos pré-definidos. Se os dados não podem ser
ajustados ao modelo, os resultados são inúteis. RNs são extremamente adaptáveis.
4) Os dados são caóticos (no senso matemático). Caos pode ser encontrado em ruídos
de linha telefônica, cotações de mercado de capitais, carga elétrica, e em diversos
outros processos. Tal comportamento tem efeito devastador para a grande maioria de
técnicas. Entretanto, RNs são geralmente robustas em relação a dados desta
natureza.
Complementando as respostas possíveis, podemos dizer que nos últimos anos as Redes
Neurais Artificiais tem recebido uma grande atenção como ferramenta de computação em
diversas áreas, entre as quais:
1) Representação de função;
2) Modelagem de processo;
3) Aprendizado de processo de decisão;
4) Problema de previsão;
5) Estimação da inversa de um sistema;
6) Determinação de ação de controle;
7) Descobrimento de similaridade de padrões;
8) Filtragem de dados;
9) Aquisição automática de conhecimento;
10) Monitoramento e diagnóstico rápido;
11) Processamento de informações distorcidas e/ ou incompletas;
12) Memória accessível pelo conteúdo;
13) Orientação na solução de problemas de otimização combinatória;
14) Processamento de sinais e/ou imagens
Exemplos:

- Reconhecimento de Padrões -
Reconhecemos com relativa facilidade um rosto visto anteriormente, mas um algoritmo
para realizar esta tarefa pode ser bastante complexo;

- Problemas de Otimização Combinatória -


02/05/02 4
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

No clássico problema do caixeiro viajante, para um número razoável de cidades o homem


acha uma solução ótima (quase ótima) com relativa facilidade. Mas algoritmos para esta
tarefa são complexos e extensos.

O cérebro apresenta também outras características muito desejáveis para uma máquina
que são:

- Capacidade de aprender sem que seja necessário conhecer o algoritmo que resolve o
problema;
Exemplo: qual algoritmo para identificar um rosto?

- Capacidade de generalizar;
Exemplo: somos capazes de reconhecer o mesmo rosto em posição ou condição de
iluminação diferente.

- Robustez - isto quer dizer que a perda de algumas unidades de processamento, ou


neurônios, não implica na perda de uma quantidade considerável de informação.

Em vista do exposto anteriormente, leva-nos a reproduzir artificialmente as redes


neuronais biológicas, e usá-las como ferramenta de computação em engenharia.
Para um bom desempenho do leitor é necessário um conhecimento básico de:
- Cálculo;
- Equações diferenciais;
- Equações às diferenças;
- Probabilidade;
- Álgebra linear;
- Sistemas lineares

O que são redes neurais artificiais?

1. Segundo Alexandre P. Alves da Silva: “Uma rede neural artificial é uma estrutura
de processamento de informação não - algorítmica na forma de um grafo
direcionado, onde cada nó, denominado neurônio, possui muitas entradas e um
único sinal de saída que pode ser desmembrado. O processamento em cada nó
depende exclusivamente das entradas desse nó e dos valores acumulados em
uma pequena memória local do mesmo”.

2. Segundo Simon Haykin: “Uma rede neural é um processador maciçamente


paralelamente distribuído constituído de unidades de processamento simples, que
têm a propensão natural para armazenar conhecimento experimental e torná-lo
disponível para uso. Ela se assemelha ao cérebro em dois aspectos”:
a) O conhecimento é adquirido pela rede a partir de seu ambiente através de um
processo de aprendizagem.

b) Forças de conexão entre neurônios, conhecidas como pesos sinápticos, são


utilizadas para armazenar o conhecimento adquirido.”
02/05/02 5
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

03 - FUNDAMENTOS -
Neurônio Biológico
Antes de iniciarmos o estudo sobre redes neurais artificiais, considero importante fazer
algumas considerações sobre o neurônio biológico por ser ele a inspiração para o
neurônio artificial, e este por sua vez, é a unidade processadora da rede neural artificial.

O neurônio biológico é constituído de um corpo celular denominado soma. Local no qual


ocorre o processamento metabólico da célula nervosa ou neurônio.
Deste corpo projetam-se extensões filamentares, os dendritos, e o axônio, este modelo
anatômico foi identificado por Ramon Cajal (Neurologista) em 1894.

As manifestações elétricas dos neurônios biológicos foram observadas pela primeira vez
no século XIX por Dubis Reymond auxiliado por um galvanômetro, todavia o
entendimento do funcionamento só foi melhorado a partir das observações de Erlanger e
Gasser em 1920. O resultado desta pesquisa rendeu – lhes o prêmio Nobel em fisiologia
no ano de 1944. Com base nesta pesquisa e outras posteriores passou-se a entender o
comportamento do neurônio biológico como sendo o dispositivo computacional do sistema
nervoso o qual possui muitas entradas e uma única saída.

02/05/02 6
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

As entradas ocorrem através das conexões sinápticas, que conectam a árvore dendrital
aos axônios de outras células nervosas. Os sinais que chegam pelos axônios são pulsos
elétricos conhecidos como impulsos nervosos ou potenciais de ação, e constituem a
informação que o neurônio processará de alguma forma para produzir como saída um
impulso nervoso no seu axônio.

As sinapses são regiões eletroquimicamente ativas, compreendidas entre duas


membranas celulares: a membrana pré-sináptica, por onde chegam o estímulo vindo de
uma célula e a membrana pós-sináptica, que é a do dendrito.
Na região pré-sináptica, o estímulo nervoso que chega é transferido à membrana dendrital
através de neurotransmissores (substância eletrolítica). O resultado desta transferência é
uma alteração do potencial elétrico da membrana pós-sináptica. Dependendo do
neurotransmissor, a conexão sináptica é excitatória ou inibitória.
A conexão excitatória provoca uma alteração no potencial da membrana que contribui
para formação do impulso nervoso no axônio de saída, enquanto que a conexão inibitória
age no sentido contrário.

Como é formado o potencial de ação? Segundo estudiosos da área de neurologia, o


axônio ou fibra nervosa de um neurônio é um tubo filamentar delimitado pela membrana
celular. Assim existe uma região interior a membrana e outra exterior a ela. Assim em
repouso, sem a presença de um impulso nervoso, o interior da membrana está num
potencial eletronegativo de alguns milivolts em relação ao exterior da membrana. Este é o
potencial de repouso da membrana. Essa diferença de potencial é sustentada por um
processo de difusão de íons de sódio e potássio através da membrana, processo este
conhecido como bomba de sódio.

O mecanismo como é criado o potencial de ação pode explicado da seguinte maneira:


quando o potencial da membrana está menos eletronegativo do que o potencial de
repouso, diz – se que ela está despolarizada e quando está mais negativo diz – se que
02/05/02 7
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

ela está hiperpolarizada. O impulso nervoso ou potencial de ação é uma onda de


despolarização de uma certa duração que se propaga ao longo da membrana (duração da
ordem de algumas centenas de microssegundos). A formação de um potencial de ação na
membrana axonal ocorre quando a membrana sofre despolarização suficientemente
acentuada para cruzar um determinado valor conhecido como limiar de disparo.
Neste momento a membrana despolariza rapidamente em questão de microssegundo,
quando o vai muito além do valor do limiar e em seguida retorna, bem mais lentamente ao
valor de repouso.

Este fenômeno é o potencial de ação, que passa propagar ao longo da fibra nervosa
(axônio), na forma de uma onda, com velocidade de dezenas de centímetros por
segundo, em fibras mielinizadas pode atingir até 150m / seg.
Após a ocorrência de um impulso nervoso a membrana entra num período conhecido com
refração absoluta, durante o qual é incapaz de produzir outro potencial de ação
independente da intensidade da despolarização. Seguido a este período tem-se o período
de refração relativa, correspondente a um período de redução do potencial eletronegativo
até o limiar de disparo. Durante o período de refração relativa, a fibra nervosa (axônio) é

02/05/02 8
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

capaz de produzir potencial de ação, porém com potencial de despolarização mais


intenso do que no momento em que se tem o do limiar de disparo.

02/05/02 9
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Modelo do Neurônio Artificial -


Redes Neurais – Modelo do Neurônio Artificial

O primeiro modelo matemático do neurônio artificial desenvolvido na tentativa de


representar o comportamento do neurônio biológico, foi proposto pelos pesquisadores
Warren McCulloch (médico, filosofo, matemático e poeta) & Walter Pitts (estatístico) em
1943, inspirados nas propriedades eletrofisiológicas do neurônio biológico e também nos
resultados de Alan Turing e John Von Neumann, que indicavam ser a natureza da
inteligência humana essencialmente Booleana. Esse modelo foi publicado no boletim
“Mathematical Biophysics” com o título “A Logical Calculus of the Ideas Immanent in
Nervous Activy”, é considerado referência zero para a teoria das redes neurais artificiais.

Neste modelo cada entrada recebe um estímulo x j que é ponderado por algum valor wij
que representa a coesão sináptica que existe no neurônio biológico. Todas as entradas
ponderadas são somadas, e se a combinação das entradas alcança um certo nível limiar,
uma resposta é gerada, a qual é posteriormente modulada por uma função de
transferência não linear. A saída é então expressa por:

Οi = f (∑( xji wij) −θ )


i (1)

(∑ ( xji wij) ) ≥ θ i condição para disparar o neurônio (a soma ponderada das excitações
igual ou maior que o nível do limiar);

onde: xji é o sinal de entrada ou estímulo na entrada j sobre o i - ézimo neurônio;

wji corresponde a coesão sináptica do estímulo da entrada j do i – ézimo neurônio;

02/05/02 10
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

f função de transferência não linear ou função de ativação (representa a não


linearidade no neurônio biológico );

Oi é a resposta de saída do i -ézimo neurônio.

Fazendo wij xji = δi, pode – se escrever:

∑ δi (j =1 ..n) = ∑ wij xji (j =1...n) = W™Xi

W™= [ wi1, wi2,………., win] é o vetor transposto dos pesos da ligação sináptica do i –
ézimo neurônio;

Xi é o vetor estímulo das entradas do i – ézimo neurônio, cujo transposto é:

Xi™ = [ x1i, x2i,……….., xni]

A saída do neurônio antes de passar pelo bloco da função não linear f é denominada saída
líquida da unidade de processamento ou neurônio, é normalmente representada por:

Net(i) = ∑ wij xji - θi (j =1...n)

Onde : θi é o limiar do i – ézimo neurônio.

A partir desta consideração a equação (1) pode ser escrita como:

Oi = fi(Net(i))

O modelo de McCulloch-Pitts

O modelo de McCulloch-Pitts é um sistema em malha aberta com um único propósito:


modelar um neurônio simples. Não existe nenhum mecanismo de comparação na saída
do neurônio com a finalidade de comparar a saída real do neurônio com alguma saída
esperada, desta maneira nenhum peso sináptico é ajustado, e como conseqüência
nenhum aprendizado toma lugar.

O modelo de neurônio proposto por McCulloch – Pitts é um dispositivo binário, a sua


saída podia ser pulso (1) ou não pulso (0), e as suas várias entradas podiam ter ganhos
arbitrário, e ainda serem excitatórias ou inibitórias.

Princípio de funcionamento do neurônio de McCulloch-Pitts

Se ∑ wij xji ≥ θi ( j =1...n) a saída Oi é pulso ( Oi =1), semelhante ao que ocorre no


neurônio biológico;
Se ∑ wij xji < θi ( j =1...n) a saída Oi é não pulso ( Oi =0), semelhante ao que ocorre
no neurônio biológico
Assim sendo a saída Oi do neurônio é, portanto binária.
02/05/02 11
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

A seguir são apresentados alguns tipos de funções ativação, que são geralmente
utilizadas:
Funções de ativação –
Funções ativação são funções não lineares associadas às saídas das unidades de
processamentos com o objetivo de limitar a saída da unidade num valor limitante, de
maneira similar ao que ocorre no neurônio biológico, com o objetivo de reproduzir o mais
próximo possível o comportamento deste. Elas são às vezes referidas como funções de
transferência não lineares, relacionando a saída do neurônio artificial à sua entrada.
As funções ativações mais usadas são:

• Função impulso unitário ( degrau);


• Função sigmóide;
• Função tangente hiperbólica;
• Função Siebert.

Função degrau –

A função degrau pode ser expressa segundo a equação:

y = f ( net)
Uma das seguintes situações pode acontecer:
y=1 se net ≥ 0
y=0 se net < 0

ne
Função degrau

Função sigmoide

A função sigmóide pode ser expressa segundo a equação:

φ(I) = f(net) = ( 1 + eª)¯¹


Onde: a = -α net

02/05/02 12
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Na figura dada a somação ponderada das entradas é dada por:

I = net = w1x1 + w2x2 + ...............+ wnxn + woxo = ∑ wixi i=0,1,......n


Onde : wo = θo, xo = -1
Substituindo wo e xo na expressão do net tem-se:

I = net = w1x1 + w2x2 + ...............+ wnxn + woxo = ∑ wixi i=0,1,......n

A função ativação usada é uma função sigmóide dada por:

φ(I) = ( 1 + eª )¯¹

onde : a = -α I (-αnet) , no caso específico de estudo α será feito muito grande tal
que φ(I) seja feito igual a um independente do valor de I (net) . Na figura a seguir é
ilustrada a variação da função sigmóide e de sua derivada em função de α .

A derivada de φ( I) (ou φ( net)) é dada por : ∂φ(I)/∂(I) = α eª( 1 + eª)²


onde: I = net

02/05/02 13
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

02/05/02 14
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Lembrando que φ(I)= φ( net) = ( 1 + eª )¯¹, podemos escrever;

∂φ(I)/∂(I)= ∂φ(net)/∂(net) = α eªφ(I)² =α eªφ(net)² ,


substituindo eª na expressão anterior e, partindo da expressão de φ(I) (φ(net)) e após manipulação
algébrica obtemos:

∂φ(I)/∂(I)= ∂φ(net)/∂(net) = α [1 – φ(I)] φ(I)= α [1 – φ( net)] φ( net)


Tangente Hiperbólica
Uma outra função logística não linear e monotonicamente crescente com I (net), muito
utilizada como função ativação é a tangente hiperbólica dada a seguir:

φ(I)= φ( net) = tangh ( α I)= tangh ( α net) = ( eª - e¯ª ) / ( eª + e¯ª )

= (1 - e¯²ª) / (1 - e¯²ª)
onde “ a” é α I
A função ativação tem por derivada a expressão seguinte:
∂φ(I)/∂(I)= ∂φ(net)/∂(net) = α sech² (α I) = α sech² (α net)

Na figura dada a seguir é mostrado o gráfico da tangh (α net).

02/05/02 15
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Função Siebert:
A função Siebert ( modela a resposta dos neurônios do sistema auditivo dos
vertebrados) pode ser expressa segundo a equação:

f(net) = ( netª ) / (netª + 0.5ª)

Onde: a =k ( parâmetro variável)

A seguir é ilustrado o gráfico desta função para condição do parâmetro k variável.

Discriminador Linear-

O neurônio de McCulloch – Pitts pode ser modelado por um caso particular de


discriminador linear cujas entradas são binárias.

02/05/02 16
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Genericamente um discriminador linear de n entradas [x1, x2,....................., xn] e


uma saída y pode ser modelado ou definido como:

Y = H( ∑ wi xi - θ) , i = 1 .........n

= H ( W X - θ) , quando y ∈ [0;1]

A expressão de um discriminador linear, representa um hiperplano, que divide o espaço


Rn ( espaço de dimensão n) em duas regiões “ A “ e “ B”.

Desta maneira X = [x1, x2,....................., xn] pode estar em uma das regiões se
por acaso se verificar:

a) ∑ wi xi - θ ≥ 0 X∈A ⇒y=1 ( i = 1 ,..........n)

b) ∑ wi xi - θ < 0 X ∈ B ⇒ y = 0 (-1) ( i = 1 ,..........n)

Em vista do exposto pode-se pensar no neurônio de McCullhoch – Pitts como um


classificador de padrões ou separador de pontos aglomerados.

Neste ponto vamos abrir um espaço para definir o que é um hiperplano.


Definição de hiperplano –

O hiperplano é um sub espaço em Rn definido pela relação < a,X > = 0,


H = { X / < a,X > = 0, X ∈ Rn }

Isto é , dado um vetor a ∈ Rn , a equação < a,X > = 0, define um sub – espaço em Rn,
de dimensão n-1.

Notação:
< a = a = [ a1,a2,.........,an ] (transposto do vetor a)

x > = [x ] (transposto do transposto do vetor x que é próprio vetor x)

< a, x > ⇒ representa o produto escalar ou o produto interno de dois vetores


< a, x > = 0 ⇒ a1x1+ a2x2 + ........+ anxn =0

Fazendo correspondência entre w e a, pode-se escrever:

a1x1+ a2x2 + ........+ anxn = w1x1+ w2x2 + ...........+ wnxn = 0

< w, x > = 0 é o hiperplano.

Aproveitando o espaço aberto, vamos definir distância entre dois vetores.

02/05/02 17
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Distância entre dois vetores:

A distância entre dois vetores X ∈ Rn, Y ∈ Rn é o comprimento do vetor ( X – Y); isto é;

( < ( X – Y ), ( X – Y )> ) ½

A distância é também chamada de norma do vetor ( X – Y ), é representada por


||( X – Y)||.

Pode-se definir o comprimento de um vetor X como a distância entre o vetor X e o vetor


nulo 0 ( vetor nulo é aquele que tem todas componentes zero)

Exemplo:

Seja o vetor X = [ 1, 2 ]. O comprimento do vetor X ou norma simples de X é obtido


como:

|| X)|| = ( <X, X>) ½ = [ 1² + 2²] = [ 1 + 4 ]½

Obs.: || X)|| é também conhecida como norma euclidiana.

Vamos agora apresentar um exemplo de aplicação de um discriminador linear ou


separador de pontos.

Exemplo:

Sejam duas coleções de vetores φ1 e φ2 definidas sobre o espaço Rn.


As coleções φ1 e φ2 sendo representadas por:

φ1 = { U1, U2,.........................., Uk }
φ2 = { Z1, Z2,.........................., Zm }
Onde:
Ui → vetor de dimensão n (i = 1,.............,k; representa o número de vetores da
coleção)
Zj → vetor de dimensão n (j = 1,............,m; representa o número de vetores da
coleção)

O problema aqui a ser abordado, consiste em separar estas duas coleções de vetores φ1
e φ2.

Tal tarefa só será possível se pudermos passar um hiperplano separando os dois


aglomerados de vetores no espaço Rn ou seja que as coleções φ1 e φ2 sejam
linearmente separáveis.
02/05/02 18
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

∑ wij xji - θ i = 0 , ( j= 1 .........n)

∑ wij xji = θ i = WiXi = θi

Se ∑ wij xji ≥ θ i yi = 1 então Xi ∈φ1∈ A ⊂ Rn

Se ∑ wij xji < θ i yi = 0 então Xi ∈φ2 ∈ B ⊂ Rn.

Neste caso diz-se que existirá um discriminador linear ou seja um hiperplano capaz
de separar as duas coleções de vetores φ1 e φ2 desde que elas sejam linearmente
separáveis. Caso contrário não existirá nenhum hiperplano ou discriminador linear capaz
de separar as duas coleções.

O discriminador linear separa o espaço (plano) em duas regiões φ1≡ A e φ2 ≡ B


Isto só é possível se as coleções φ1≡ A e φ2 ≡ B forem linearmente separáveis, caso
contrário não existirá discriminador linear capaz de executar esta função de separar
padrões.
Só será possível separar as coleções φ1≡ A e φ2 ≡ B se elas formarem aglomerados no
espaço Rn / seja possível passar um hiperplano que separe estes dois aglomerados

O neurônio de McCulloch – Pitts é um discriminador linear com a simplificação adicional


de que os componentes do vetor X de entrada são também binários isto é, xi pertence
[0,1] ou xi pertence [-1,1].

02/05/02 19
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Nas figuras dadas a seguir estão ilustradas as funções booleanas and, or e xor

A partir das figuras vê-se que as funções and e or são linearmente separável, isto é; é
possível encontrar retas que separam os vetores de entrada em regiões tal que a saída
reflita completamente o resultado das funções booleanas. Estas funções são
implementáveis com o neurônio de McCulloch-Pitts.

Por outro lado fica claro que a função booleana ou – exclusivo não é linearmente
separável, isto é; não é possível encontrar retas que separem os vetores de entrada em
regiões tal que a saída reflita o resultado da função booleana xor. Seriam necessárias
duas retas discriminatórias para separar os pontos claros dos escuros.

Embora os neurônios singelos (simples) não tenham capacidade de implementar todas


funções booleanas, associação deles em rede possibilitará a implementação de qualquer
função booleana.

O xor de duas variáveis pode ser implementado por uma rede neural de três neurônios
N1, N2 e N3

02/05/02 20
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Com N1, N2 e N3 implementando as funções

N1 → f1 = X1. X2
N2 → f2 = X1. X2
N3 → f3 = f1 ∪ f2

Onde X1 e X2 são complementos de X1 e X2 respectivamente;

X1 X1 X2 X2 F1 F2 F3
0 1 0 1 0 0 0
1 0 0 1 1 0 1
0 1 1 0 0 1 1
1 0 1 0 0 0 0

As “Redes Neurais Artificiais” de que trataremos são todas baseadas nos


“Conceitos Conexionistas”, ou seja compõe-se de blocos construtivos similares entre si no
aspecto funcional, todos eles muito simples e existentes em grande número, com a
característica de formar um conjunto com elevado grau de interconexão.

Em outras palavras podemos dizer que as “Redes Neurais Artificiais” é um conjunto


de unidades de processamento muito simples que se comunicam pelo envio de suas
saídas para as entradas de outras unidades por meio de ligações que permitem modular a
intensidade de cada sinal enviado.

As redes neurais artificiais que descreveremos são todas variações da idéia sobre
processamento paralelo distribuído (PDP). A arquitetura de cada rede é baseada na
construção de muitos blocos similares que desempenham o processamento.

Será discutida inicialmente a célula de processamento, as diferentes estruturas de


topologia da rede. Estratégia de aprendizagem com base em sistema adaptativo.

02/05/02 21
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Conforme mencionado anteriormente uma rede artificial consiste de um conjunto de


unidades simples de processamento que comunicam entre si por meio de sinais enviados
por conexões sob ponderações.

Um conjunto dos principais aspectos de um modelo paralelo distribuído é


apresentado a seguir:

• Um conjunto de unidade de processamento (“Neurons”, célula);


• Um estado de ativação ai (Ri) para cada unidade, que também determina a saída da
unidade;
• Conexão entre as unidades. Geralmente cada conexão é definida por um peso wij que
determina o efeito que o sinal da unidade “j” tem sobre a unidade “i”;
• Uma regra de propagação, que determina a entrada efetiva ij da i-ésima unidade a
partir de suas entradas externas;
• Uma função ativação Fi, que determina o novo nível de ativação baseado na entrada
efetiva neti i ( t ) e o estado atual ai(t); (isto é, the update)
• Uma entrada externa ou off-set θi para cada unidade;
• Um método para coleta de informação;
• Um ambiente dentro do qual o sistema deve operar, provendo sinais de entrada e se
necessário sinais de erro.

04 - UNIDADES PROCESSADORAS -

- Unidade de Processamento -
As unidades processadoras realizam funções muito simples, como a de coletar os
sinais existentes em suas entradas, agregá-los de acordo com a sua função de entrada e
produzir sua saída de acordo com a função de ativação inerente.
Cada unidade desenvolve uma tarefa relativamente simples, recebe entradas de
vizinhanças ou fontes externas e usa estas para calcular um sinal de saída que é
propagado para outras unidades.
A partir deste processamento, uma segunda tarefa é o ajustamento dos pesos. O
sistema é inerentemente paralelo no sentido que muitas unidades podem conduzir suas
saídas ao mesmo tempo. Isto é; cada unidade realiza suas funções simultaneamente às
das outras, podendo inclusive operar de maneira contínua no tempo. Neste caso o
modelo matemático global do sistema será um conjunto de equações diferenciais. No
caso de haver instante preferencial de execução das funções das células, ou seja, de
cada célula, o sistema será discreto no tempo e seu modelo matemático global será um
conjunto de equações às diferenças.
Quando a “Rede Neural Artificial” opera em tempo discreto pode-se optar por duas
políticas básicas para definir o instante de execução das funções nas células:

• Execução síncrona: Quando todas as unidades são atualizadas no mesmo instante


de tempo.

02/05/02 22
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

• Execução assíncrona: Quando cada unidade tem associada a ela uma função de
probabilidade para entrar em operação em cada instante “t”. Usualmente não é
permitida operação de mais de duas unidades no mesmo instante. Este modo tem a
maior analogia com os processos biológicos reais, porém acarreta maiores dificuldades
nas implementações feitas em computadores digitais.

4.1 - Entrada / Estado de Ativação / Saída das Unidades –


Como as unidades podem ser sistemas dinâmicos, o estado de ativação é determinado
por uma equação diferencial ou às diferenças e o valor do sinal de saída de cada unidade
processadora é determinado como uma função algébrica de seu estado de ativação.

Tendo em vista a simplicidade desejada para as células, os modelos dinâmicos serão de


primeira ordem, o que não impede, entretanto a utilização quando necessário de modelos
mais complexos. Em casos mais simples como dos Perceptrons as células são
algébricas, ou seja, não possuem características dinâmicas.

A entrada líquida para i - ésima unidade de processamento (unidade processadora) é


dado por:
neti = ∑ xi wij
j

Uma vez calculada a entrada líquida neti , ela é convertida para um valor de ativação ou
simplesmente ativação, para a unidade processadora ( PE). Podemos escrever este valor
de ativação como:

ai ( t ) = Fi ( ai ( t − 1), neti ( t ))

Note que a ativação é uma função explicita da entrada líquida, ele pode depender de um
valor prévio da ativação a ( t − 1) 2 . Incluindo esta dependência na definição para
generalidade. Na maioria dos casos a ativação e entrada líquida são idênticas e os termos
são freqüentemente intercambiáveis.

Uma vez calculada a ativação da PE, podemos determinar o valor de sua saída aplicando
uma função de saída:

Oi = f i (ai )

Considerando que, usualmente, ai = neti , esta função é normalmente escrita como :

Oi = f i (neti )

Na figura dada a seguir é mostrado um modelo da unidade de processamento um


componente básico de uma rede neural, onde a regra de propagação utilizada é a regra
padrão soma dos pesos.

02/05/02 23
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

5.0 - Notação e Terminologia

Por todos anos de pesquisa de diferentes disciplinas tem chegado a um acordo com um
vasto número de termos aplicado no campo de rede neural. Nossos cientistas do ponto de
vista de computador habilita subconjunto de terminologia que é menos inspirado
biologicamente.

5.1- Notação

- Usamos a seguinte notação em nossa Fórmula -

Note que nem todo símbolo tem significado completo para todas redes e que em alguns
casos sub índice ou sobre índices podem ser abandonados ou adicionados.
Exemplos de notação são apresentados a seguir:

i (,j,k,...) a unidade;
x p → p-ésimo vetor padrão;
x ip → i-ésimo elemento do p-ésimo vetor padrão de entrada;
i p → entrada para um conjunto de neurônio quando vetor padrão p é apresentado à rede.
i ip → entrada líquida do i-ésimo neurônio devido ao vetor padrão x p → { p}
o p →saída da rede quando o vetor padrão x p → {p }é apresentado à entrada da rede;
o ip → saída do i-ésimo elemento da rede quando o vetor padrão x p → { p } é apresentado
à entrada da rede.

02/05/02 24
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

d p → saída desejada quando o vetor padrão x p → {p} é apresentado à entrada da rede;


d ip → saída desejada do i-ésimo elemento da rede quando vetor padrão x p → {p} é
apresentado à entrada da rede;
a p → valores de ativação da rede quando vetor padrão x p → {p} é apresentado à entrada
da rede;
a ip → valor da ativação do i- ésimo elemento da rede quando o vetor padrão x p → {p} é
apresentado à entrada da rede;
w → matriz peso de conexões;
w i → peso da conexão que alimenta a unidade i;
wij →peso da conexão da unidade j até a unidade i;
ℑ →conjunto das funções ativação.
ℑi → função ativação associada à unidade i;
γ ij → (µ ij) taxa de aprendizado associado ao peso wij;
θ i → influência para unidade i;
E p → o erro na saída da rede quando o vetor padrão x p → {p} é apresentado à entrada
da rede;

5.2 - Terminologia -

Saída versus ativação de uma unidade - Desde de que não haja necessidade, de
consideramos a saída e o valor de ativação de uma unidade como sendo a mesma coisa.
Isto é, a saída de cada neuron igual a valor de ativação. Note que o símbolo Oi é
usualmente reservado para saída da rede (isto é, uma unidade de saída i).

Influência, off set, limiar (θ) - Todos esses termos referem a uma constante (i.e.
independente da entrada da rede) que é entrada para uma unidade. Esta entrada externa
é implementada usualmente como um peso de uma unidade com valor de ativação 1.

6- Parâmetros Importantes das Redes Neurais Artificiais - (ANNS)

O desempenho da ANN é descrito pela figura de mérito, que expressa o número de


padrões lembrados quando padrões são aplicados a entrada. Um desempenho de 100%
em lembranças significa que para cada sinal de entrada de estímulo a rede treinada
produz sempre, o padrão de saída desejado. Quando planejamos uma Rede Neural
Artificial (ANN). estaremos preocupados com o seguinte:

01- A topologia da rede


02- O número de camada da rede

02/05/02 25
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

03- O número de neurônio ou nó por camada


04- O algoritmo de aprendizado a ser adotado (somente no caso de treinamento
supervisionado)
05- O número de iterações por padrões durante treinamento.
06- O número de cálculo por iterações
07- Velocidade para lembrar um padrão
08- Desempenho da rede
09- Plasticidade da Rede-(isto é, o número de falta de neurônio e o grau de
funcionalidade da rede).
10- Capacidade da rede, ou o máximo de sinais padrões que a rede pode lembrar.
11- Grau de adaptabilidade da rede (isto é capacidade da rede auto-adaptar após o
treinamento)
12- Bias Terms - (ocasionalmente ajusta algum valor fixado apriori em 1)
13- Threshold Terms (ocasionalmente ajusta algum valor fixado apriori em 0 ou 1)
14- Limite do peso sináptico (para melhorar o desempenho e imunidade a ruído, o
limite será determinado baseado sobre a implementação real da rede).
15- Escolha da função não linear e a faixa de operação da rede.
16- Imunidade da rede a ruído-(isto é, o grau de deterioração de um sinal de estímulo
de entrada ou o grau de perda de sinal. (isto é, sinal parcial) que produz a saída
padrão desejada).
17- Valores de regime ou valores finais do peso sinápticos (isto é o programa da rede).

7 - CONEXÃO ENTRE UNIDADES -

A característica essencial das Redes Neurais Artificiais é o alto grau de conectividade


entre suas células.
A conexão entre os neurônios j e i (observe a ordem j i) será representada pelo peso “wij”.
Assim, em redes pouco conectadas, a matriz,

[W] = [ wij]

Será esparsa, com boa parte dos seus elementos nulos e cheia no caso contrário.
Para termos uma idéia da estrutura do cérebro humano, existem cerca de 1011 neurônios
e estima-se que cada um se conecte a 1000 ou 10000 outros. Estes números indicam que
a matriz [W] do cérebro humano é bastante esparsa.

É importante observar que cada peso pode ser positivo ou negativo, dando a
característica da conexão: excitadora ou inibidora, respectivamente.
Esta característica será explorada em diversas arquiteturas de redes para a obtenção de
efeitos específicos.

02/05/02 26
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Esta nota de aula foi elaborada tomando-se como base as seguintes referências
bibliográficas:

Referências Bibliográficas:
1. BEN J. A Kröse and PATRICK P. van der Smagt, An Introduction to Neural
Networks,
University of Amsterdam, Fifth Edition, January 1993, p 129;

2. KOVÄCS Z. L., Redes Neurais Artificiais – Fundamentos e Aplicações, Editora


Collegium Cognitio, 2ª Edição, São Paulo, 1996, p 174;

3. KARTALOPOULOS S. V. , Understanding Neural Networks and Fuzzy Logic –


Basic Concepts and Applications, IEEE PRESS, 1ª Edition, New York, 1996, p
205;

4. FREEMAN, J. A and SKAPURA D. M. , Neural Networks – Algorithms,


Applications, and Progaming Techniques, USA Addison Wesley – Publishing
Company, 1991, p401.

Nota : As figuras e algumas expressões foram transcritas das referências citadas


anteriormente.

Endereços para pesquisa em IA


A seguir apresentamos alguns endereços interessantes, para obterem informações
sobre desenvolvimento da IA, redes neurais, lógica fuzzy, para vocês tomarem os
primeiros contactos com esta área interdisciplinar de pesquisa e do conhecimento:

http://www.di.ufpe.br/~compint
http://forum.stanford.edu/
http://www.dsc.utpb.br/antiga/versão1.0/grupo_ia/gia.html
http://yabae.cptec.inpe.br
http://www.student.nada.kth.se/
http://mitpress.mit.edu/books
http://www.din.u em.br/ia /neurais

02/05/02 27
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

ALGORITMOS DE APRENDIZADO –

Conforme falado anteriormente é necessário ajustar os pesos para obter a saída desejada ydl quando
na entrada do discriminador linear é apresentado o vetor Xdl pertencente ao conjunto de exemplos
de treinamento ψ.
Um dos primeiros algoritmos utilizados para ajustar os pesos de um discriminador linear foi
baseado no Princípio de Aprendizado de Hebb, no qual as intensidades das conexões sinápticas
são alteradas em função dos erros detectados localmente. Este princípio pode ser traduzido
conforme expressão dada a seguir:

Princípio de Aprendizado de Hebb

ωi(t+1) = ωi(t) + ∆ωi


onde: ∆ωi = µ εxi(t)
ε = ( ydl –yl ) erro entre a saída desejada e a saída atual
ydl saída desejada
yl saída atual
µ taxa de aprendizado cujo valor está contido no intervalo (0 , 1].

Lei de Aprendizado do perceptron


Rosenblatt empregou o princípio de aprendizado de Hebb para alterar os peso sinápticos do
discriminador linear

Algoritmo de aprendizado do perceptron

O procedimento de aprendizado pode ser escrito segundo o algoritmo que é utilizado para
implementar uma rede perceptron num computador codificando cada passo em qualquer linguagem
de programação.

Algoritmo –

1. Inicialize os pesos e os limiares

Define wi(t), ( 0 ≤ i ≤ n ), como o peso da entrada i no tempo t, e θ limiar.


Ajuste wi(t) em pequenos valores randônicos inicializando os pesos e o limiar;

2. Apresente a entrada e a saída desejada

Apresente as entradas X0, X1, X2, ........, XN e as saídas desejadas ydl(t) l= 0, 1....,N;

3. Calcule a saída atual


yl(t) = sgn[ ∑wi(t)xi(t) - θi ] i = 1, 2,.......n ou
yl(t) = sgn[ ∑wi(t)xi(t) ] i = 1,................,n+1 ou i =0,................, n

02/05/02 28
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Onde: sgn é a função sinal


Na segunda expressão wo é incorporado ao vetor peso de dimensão n associado às entradas
do discriminador e, a entrada xo associada ao limiar é incorporada ao vetor X de dimensão n que
atua como entrada do discriminador linear. Com isto tanto o vetor peso W e o vetor X de entrada
passam a ter dimensão n+1, conforme indicado pelo contador do sinal de somatório.
4. Ajuste os pesos

Se saída calculada yl é igual à saída desejada então faça:


ωi ( t+1) = ωi( t) (componente do vetor peso)
W ( t+1) = W( t) ( vetor peso)
Volte ao passo 2
Se a saída calculada é 0 e a saída desejada deveria ser 1 (classe φ1) faça:

ωi ( t+1) = ωi( t) + xi(t) ( componente do vetor peso)


W ( t+1) = W( t) + X(t) ( vetor peso)
Volte ao passo 2
Se a saída calculada é 1 e a saída deveria ser 0 (classe φ2) faça:

ωi ( t+1) = ωi( t) + xi(t) ( componente do vetor peso);


W ( t+1) = W( t) + X(t) ( vetor peso)
Volte ao passo 2

Note que os pesos não são corrigidos se a rede toma a decisão correta. Também os pesos não
são corrigidos para a linha de entrada que não contribui para a resposta correta, uma vez que o
peso é ajustado pelo valor da entrada xi(t) que seria zero. Este é o algoritmo básico do
perceptron.

Todavia, várias modificações têm sido sugeridas para este algoritmo básico. A
primeira modificação foi à introdução de um fator de multiplicação menor do
que um no termo correspondente ao ajuste do peso ∆ωi . Isto faz com que a rede
ajuste os pesos em pequenos passos na direção da solução.
Esta alteração acarreta mudança no quarto passo do algoritmo básico, conforme apresentado a
seguir:

5. Ajuste os pesos
6.
Se saída calculada yl é igual à saída desejada então faça:

ωi ( t+1) = ωi( t) (componente do vetor peso)

Se a saída é 0 e deveria ser 1 (classe φ1) faça:


ωi ( t+1) = ωi( t) +µ xi(t) ( componente do vetor peso);
02/05/02 29
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Se a saída é 1 e deveria ser 0 (classe φ2) faça:

ωi ( t+1) = ωi( t) +µ xi(t) ( componente do vetor peso);

Onde: µ ∈( 0, 1 ], isto é: 0 < µ ≤ 1 é um ganho positivo que controla o ajuste do peso, recebe o
nome na literatura de taxa de aprendizado.

Um outro algoritmo de mesma natureza foi sugerido por Widrow e Hoff. Eles sugeriram uma
regra de aprendizado conhecida como regra delta, que calcula a diferença entre a saída atual e a
saída desejada, é denominado erro (ydl(t) – yl(t)). O ajuste dos pesos é conduzido em função
do erro ε = ydl(t) – yl(t)

Se a saída desejada é ydl(t) = 1 e a saída atual é yl(t) = 0 ε = +1, desta maneira os pesos
são aumentados no processo de treinamento.
Se a saída desejada é ydl(t)= 0 e a saída atual é yl(t) = 1 ε = -1, desta maneira os pesos
são diminuídos processo de treinamento.
Note que os pesos não são modificados se ε = ydl(t) – yl(t) = 0.

O algoritmo de aprendizado é basicamente o mesmo algoritmo básico do


perceptron, com modificação no passo 4, conforme apresentado a seguir:
Ajuste dos pesos

wi( t+1) = wi( t) - µεxi(t);

Onde: µεxi(t) = ∆ωi é ajuste dos pesos e, será visto na próxima seção o algoritmo da regra
delta de maneira mais completa.

A regra apresentada acima para ajuste dos pesos é denominada regra delta de
Widrow-Hoff. Unidades de neurônios utilizando esta regra modificada foi
chamado de ADALINE (Adaptive Linear Neurons), por Widrow, que também
foram denominados MADALINE, quando muitos ADALINE são conectados.

02/05/02 30
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Regra delta
Um importante algoritmo de aprendizado apresentado por Widrow e Hoff na década
60 na Universidade de Stanford, como “ Least Mean Square” ( LMS),
posteriormente conhecido como Regra Delta, tendo sido aplicado mais
freqüentemente a unidade de processamento com saída ou melhor com função de
ativação linear na saída.
Após estas considerações iniciais vamos considerar a regra delta para condição de saída linear
para a situação ilustrada na figura dada a seguir:

Da figura apresentada anteriormente a função erro εk, como função de todos pesos wik é
dada por:
εk = (Tk – Ik) = (ykd – yk) = (ykd – net k)
onde: k indica genericamente a qual neurônio estamos nos referindo (isto é k-ésimo
neurônio)

netk = ∑ wik.xi i= 0, 1,.........., n


onde Tk ( ykd) é a saída desejada e Ik é o netk ou soma líquida do produto wik.xi

e o quadrado do erro é dado por:

ε²k = (Tk – Ik ) ² = ( Tk - ∑ wik.xi)²

02/05/02 31
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

O gradiente do erro quadrático corresponde ao conjunto das derivadas parciais do erro ε²k
com relação a cada peso wi é:

∂ε²k (wik)/∂wik = -2 ( Tk – wik.xi) xi

O sinal somação não está aqui representado porque estamos considerando cada i-
ésimo componente do vetor peso.
O problema básico consiste em encontrar o vetor W* que minimize o vetor erro
quadrático εk.

Isto é obtido através de


∂ε(w)/ ∂w = 0

Tecnicamente isto é correto, mas na realidade o erro mínimo quadrático nunca é


igual a zero devido, as não linearidades envolvidas, ruídos, e dados imperfeitos. A
presença do ruído, com uma função de ativação sigmoidal resultará num vetor erro
mínimo quadrático não zero designado por ε²min.

Solução analítica notação vetorial do erro médio quadrático


Vamos considerar o valor médio do erro quadrático para um dado padrão expresso por:

ρk(W) = E ((ekp)²) = 1/L ( ∑( ekp)² ) k= 1,.......L, para todo o conjunto de treinamento

onde: (ekp)² = ( Tkp – Ikp )² é o erro quadrático associado ao k-ésimo neurônio quando
a entrada está submetida ao par de padrões de treinamento (Xp, Tp);

p =1, 2, .............P exemplos ( padrões)de treinamento

ρkp(W) = E ((ek)²) = E ((Tkp – Ik)²) = E((Tkp)² + (Ik p)² - 2 (TkpIkp))


onde: Ikp = Wk™Xp; a dimensão do vetor transposto peso Wk™ é (1xn) e do vetor Xp é
(nx1), o resultado do produto escalar Wk™Xp é um escalar (1x1)
Obs.: os caracteres em negrito representam notação vetorial

ρkp(W) = E ((ekp)²) = ((Tkp)² + (Wk™Xp )² - 2 (Tkp Wk™Xp))

ρkp(W)= E ((ekp)²) = ((Tkp)² + (Wk™Xp Wk™Xp ) - 2 (Tk Wk™Xp))

ρkp(W)= E ((ekp)²) =((Tkp)² + Wk™ (Xp Xp™) Wk - 2 (Tk pXp™) Wk)

Chamando R = (Xp Xp™ ) é uma matriz de correlação de Xp de dimensão (nxn), a


condição para que R seja inversível é de que ela tenha pelo menos n ( onde n é a
02/05/02 32
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

dimensão do vetor X ) vetores colunas linearmente independentes, com isto a matriz será
não singular e conduzirá a solução única, P = (Tkp Xp™) é um vetor de dimensão (nx1).
Onde: Tkp é a saída desejada do k-ésimo neurônio da rede, é portanto um escalar

ρkp(W) = E ((ekp)²) =((Tkp)² + Wk™ R Wk – 2PWk)

O problema consiste em encontrar o vetor Wk * que minimize o valor do erro médio


quadrático, fazendo:

∂ρ(E)/ ∂Wi = ∇ρ(E) = [∂ρ(E)/ ∂W0, ∂ρ(E)/ ∂W1,..........., ∂ρ(E)/ ∂Wn] = 0


i = 0,1,2 .......n
Considerando a expressão de ρkp(W) dada anteriormente resulta:

∂ρkp (W)/ ∂Wi = 2 R - 2 P=0


O valor de Wk * que minimiza o erro é obtido por:

Wk *= R¯¹ P
A correção do vetor peso Wk é feita no sentido de encontrar o valor do vetor peso que
minimize a função panorama do erro ρ(W) ou seja E(e² (w)) isto é obtido através da
expressão:
W (t+1) k = W (t) k - µ ∇ρ(W)
Onde:

W(t+1)k: é o novo valor do vetor peso


W (t)k: é o valor antigo do vetor peso
µ: é a taxa de aprendizado
∇ρ(W)k: é o gradiente da função panorama do erro quadrático (∇ρ(W)k = -2ek(t). Xp).
p = 1, 2, ...........,P padrões
W(t+1)k = W (t)k +2 µek(t).Xp

Na figura apresentada a seguir está ilustrado o processo de ajuste do peso no sentido de


obter o mínimo para a função panorama do erro

02/05/02 33
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Preprocessamento do vetor de entrada Xp e o vetor peso W

Com o objetivo de reduzir problema de instabilidade numérica no processo de ajuste dos pesos no
processo de treinamento, é aconselhável normalizar os vetores de entrada, e os vetores pesos, com
isto reduzindo a relação entre os valores máximos e mínimo dos autos-valores da matriz peso.
Processo de normalização:
A normalização das componentes do vetor de entrada é feita, dividindo xi

por X², assim tem-se:

∆wi = [2 µ X²] ε.xi / X²

= ηε.xi / X²,
neste caso a taxa de aprendizado η passa a ser dada por:

η = [ 2 µ X²]

O mesmo procedimento é feito para normalizar o vetor peso W

02/05/02 34
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Exemplo de aplicação para o cáculo do gradiente

Na figura dada a seguir é ilustrado uma situação em que se tem:

ε²k = [Tk –w1x1 – w2x2]²

e a condição de mínimo de ε é obtida fazendo :

∂ε²k(w)/ ∂wi = 0

∂ε²k(w)/ ∂w1 = -2 [Tk – wk1x1-wk2x2]x1 =0

∂ε²k(w)/ ∂w2 = -2 [Tk – wk1x1-wk2x2]x2 =0

Na figura apresentada a seguir é ilustrada as considerações apresentadas


anteriormente quanto ao ajuste do erro no valor zero. Nesta ilustração
esta sendo mostrado o cálculo de w1k.
Na condição de que x1 e x2 não são zero, a quantidade dentro do colchete deve
ser zero;
Tk – w1kx1-w2kx2 = 0
Resulta:

W1k = (Tk – w2kx2) / x1

W2k = (Tk – w1kx1) / x2

A substituição dos valores de w1k e w2k obtidos anteriormente na expressão de


ε²k resulta ε²k = 0

02/05/02 35
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

A regra delta de Widrow – Hoff, provê a mudança em cada componente do vetor


peso proporcional ao negativo do gradiente de ε²k(wik):

∆Wik = - µ ∂ε²k(wi)/ ∂wi = µ 2 (T – I) xi

= 2 µ εkxi
onde µ ou (η) é uma constante de proporcionalidade (taxa de aprendizado). O sinal
negativo é introduzido por causa do processo de minimização. A figura dada a seguir
ilustra o processo de ajuste dos pesos.

Algoritmo do procedimento de treinamento (ajuste dos pesos)


(Algoritmo de implementação da Regra Delta de Widrow – Hoff)

Passos Ação

1. Inicializar W(0) aleatoriamente;


W(0) pode ter valores positivos e negativos;

2. Escolher para cada Xkp uma saída desejada dkp ((Tkp, ydkp)
correspondem à mesma saída desejada);

3. Escolha do critério de parada:

(a) tolerância εkp ≤ δ (δ> 0 um certo valor positivo pequeno


escolhido)
ou
b) adotar um certo número de iterações, neste procedimento
de parada a tolerância do erro pode não ser alcançada.

4. Aplicar Xkp e calcular Ikp; (ykp, akp ou netkp todos


representam a saída linear do k-ésimo neurônio);

Ikp = ∑ wikxikp, i = 0,1 .........n

5. Calcular o erro quadrático:


ε²kp = (Tkp – Ikp) ²

6. Verifique se o vetor erro satisfaz:

Se εkp = (Tkp – Ikp) ≤ δ , se esta condição é satisfeita pare o


processo, caso contrário continue os cálculos;
ou

02/05/02 36
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Se número de iterações é igual ao valor adotado, pare o


processo, caso contrário continue os cálculos;

7. Calcular derivada do vetor erro quadrático (gradiente do erro


quadrático):
∇( ε²kp(W)) = ∂ [( Tkp – W™ k Xkp)²]/ ∂W
∇( ε²kp(W)) = -2 ( Tkp - W™ k Xkp) Xkp
∇( ε²kp(W)) = - 2 εk Xkp;

onde: W™k é o transposto de Wk; Xkp vetor padrão de


entrada para rede ou no caso considerado para o k -ésimo
neurônio; Ikp corresponde ao netkp ou ao ykp ou akp, quando
é aplicado o vetor padrão de entrada.
(p = 1, 2, .........P; está associado a cada exemplo da coleção de
vetores para o treinamento da rede)

8. Calcule a correção do peso Wk (t + 1) por intermédio de:


Wk (t + 1) = Wk (t) + 2 µ εkp(t) Xkp, e volte ao passo
4;
onde: (t +1) é a próxima iteração e (t) é a iteração anterior

Observações:

1. A taxa de aprendizado η (µ) grande pode levar a não convergência do erro e às vezes
leva a oscilação;

2. Uma vez treinada a rede para cada par de vetores de treinamento (Xkp, Tkp).
Onde p = 1, 2,............P, padrões de treinamento da rede, repetir o treinamento
uma outra vez, tomando os elementos do conjunto de treinamento
aleatoriamente.

Exemplo de aplicação sobre a implementação do algoritmo


Exemplo sobre o algoritmo de correção do peso W, segundo a regra Delta de
Widrow.

Regra Delta para correção dos pesos é dada por:

W (t+1) = W (t) - η Grad [ε(W (t))]


ou
W(t+1) = W(t) - η ∂[ε (W(t))] /∂W(t)
Onde : η é o tamanho do passo no sentido oposto do vetor gradiente (Grad ε(W(t)))
02/05/02 37
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Considere a função panorama do erro ε(w(t)) dada por:

ε(W(t)) = W ²
Cálculo do gradiente:
Gradε(W (t)) = ∂ε(W (t))/∂w(t) = 2 W(t)

Substituindo na expressão de W(t+1), resulta:

W(t+1) = W (t) - η. 2.W(t)

Tomando W(t) = 1 e a taxa de aprendizado η no intervalo 0 < η< 1 resulta,


W(t+1) = 1 - η. 2. 1;
Lembrando que a taxa de aprendizado η (ou µ) deve estar no intervalo (0, 1]

A título de exemplo vamos calcular W(t+1) adotando a taxa de aprendizado) η igual


a 0.3 (η = 0.3)

Desenvolvimento do cálculo W(t+1):

t+1 = 2 → W(2) = 1 – 0.3. 2. 1 = 1 – 0.6 .1 = 0.4


t+1 = 3 → W(3) = 0.4 – 0.3. 2. 0.4 = 0.4 – 0.6 .0.4 = 0.16
t+1 = 4 → W(4) = 0.16 – 0.3. 2. 0.16 = 0.16 – 0.6 .0.16 = 0.064
t+1 = 5 → W(5) = 0.064 – 0.3. 2. 0.064 = 0.064 – 0.6 .0.064 = 0.0256
t+1 = 6 → W(6) = 0.0.0256 – 0.3. 2. 0.0256 = 0.0256 – 0.6 .0.0256 = 0.01024
t+1 = 7 → W(7) = 0.01024 – 0.3. 2. 0.01024 = 0.01024 – 0.6 .0.01024= 0.004

Repetindo os procedimentos anteriores para taxa de aprendizado η = 0.45 , 0.9 obtemos os


resultados dados na tabela a seguir:
t+1 = Número de Iterações
η 1 2 3 4 5 6 7
0.3 W(k+1) 1 0.4 0.16 0.064 0.0256 0.0102 0.004
0.45 W(k+1) 1 0.1 0.01 0.001 0.0001 .00001 0.000001
0.9 W(k+1) 1 -0.8 0.64 -0.512 0.4096 -0.3276 0.262208
0.7

Análise Gráfica da influência da taxa η no processo de convergência no cálculo de:

W(t+1) = W(t) - ηGrad.E(W(t))

02/05/02 38
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

02/05/02 39
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Algoritmo de treinamento backpropagation


Introdução –

O algoritmo backpropagation é um método sistemático para treinamento de rede neural


artificial multicamadas perceptron “ MLP”.

A elucidação deste algoritmo de treinamento por Rumelhart, Hinton, e Williams em


1986 foi o passo chave no projeto de redes neurais para muitas aplicações em problemas
do mundo real.

Hoje em dia é estimado que 80% das aplicações das redes neurais utilizam este
algoritmo. Apesar de suas limitações, o algoritmo backpropagation tem expandido a faixa
de problemas para os quais as redes neurais artificiais podem ser aplicadas, isto se deve
a sua forte fundamentação matemática.

O algoritmo backpropagation ou da retropropagação do erro, para redes neurais de


múltiplas camadas foi originalmente desenvolvido para redes de neurônios com função
ativação monotônica com derivadas contínuas.

Na realidade o algoritmo backpropagation é baseado na regra Delta de Widrow-


Hoff, desenvolvida para ajuste dos pesos sinápticos na entrada de cada neurônio
(elementos de processamento), tendo por referência o erro existente entre a saída real e
a saída desejada do neurônio, quando um dado vetor é apresentado à sua entrada. A
correção do peso é feita utilizando-se método de otimização LMS (mínimos médios
quadrático) com o objetivo de encontrar um valor para o peso que minimize o erro na
saída da rede. Neste procedimento toma-se a derivada do erro em relação ao peso
conforme já apresentado na regra delta anteriormente. Porém é considerada a existência
de uma função de ativação não linear na saída do neurônio e não mais uma função linear.

Alguns autores chamam este algoritmo de regra delta generalizada aplicada a


uma rede neural de múltiplas camadas. Basicamente ele consiste em corrigir os
pesos nas entradas das camadas intermediárias (camadas ocultas) a partir do erro
em cada neurônio na camada de saída. Isto é os pesos vão sendo corrigidos a partir
da camada de saída para a camada de entrada. O interessante deste algoritmo é que
não se conhece qual deve ser à saída dos neurônios das camadas intermediárias,
somente se tem conhecimento do vetor de entrada e qual deve ser a saída a ele
associada na camada de saída da rede. A partir do erro entre a saída desejada e a
saída real na camada de saída de rede ajusta-se os pesos sinápticos das camadas
intermediárias.

A seguir será apresentado o desenvolvimento matemático no qual se apóia o


algoritmo backpropagation. Consideraremos uma rede neural com a topologia
ilustrada na figura apresentada a seguir.

02/05/02 40
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Cálculo do ajuste dos pesos –

O processo de ajuste dos pesos utilizando o algoritmo backpropagation será


descrito a partir dos pesos associados a um determinado neurônio da camada de saída
da rede (neurônio q na camada k). Para tal consideraremos parte da rede apresentada na
figura anterior, e que está aqui representada na figura dada a seguir.

02/05/02 41
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Nesta figura φqk é à saída do neurônio q da camada k que será subtraída do valor
desejado Tq ( yqd) produzindo o sinal do erro quadrático:

ε² = ε²q = [ Tq - φ( I)qk ]²
Conforme já vimos anteriormente na regra Delta, a mudança no peso associado ao q-
ésimo neurônio da camada k é dado por:

∆wpq,k = - ηpq ( ∂ε²q/ ∂wpqk)

Onde:

ηpq é a constante de proporcionalidade chamada de taxa de aprendizado;


p está associado ao p-ésimo neurônio da camada j (camada intermediária);
q está associado ao q-ésimo neurônio da camada k (camada de saída);
ε²q é o erro quadrático associado ao q-ésimo neurônio da camada de saída.

Para avaliar a derivada, usamos a regra de diferenciação em cadeia:

(∂ε²q / ∂wpq,k) = (∂ε²q / ∂φ(I)q,k)( ∂φ(I)q,k / ∂Iq,k)( ∂Iq,k / ∂wpq,k) (A)

Onde:
(∂ε²q / ∂φ(I)qk) = - 2 [ Tqk - φ( I)qk] (B)

(∂φ(I)qk / ∂Iqk) = αφ(I)qk [1 - φ(I)qk] (C)

Conforme já visto anteriormente Iqk é a soma líquida das entradas ponderadas no


neurônio “q” da camada k, isto é:

Iqk = ∑wpqk .φ(I)pj


Onde:
j é a camada anterior e p corresponde a qualquer neurônio da camada j ( p = 1,
2,..........n)

Tomando a derivada parcial com relação ao peso wpqk resulta:


Obs: o último índice associado a cada peso refere-se a camada na qual o neurônio
está. wpqk ( refere-se ao peso que conecta o neurônio p ao neurônio q da camada k )

∂ Iqk / ∂wpqk = φ(I)pj (D)

02/05/02 42
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Uma vez que estamos nos referindo a um único peso, somente um termo da soma da
equação de Iqk é mantido.

A substituição de (B), (C) e (D) na equação (A) resulta:

(∂ε²q / ∂wpqk) = -2 [Tqk - φ(I)qk] αφ(I)qk [1 - φ(I)qk] φ(I)pj

= - δpqk φ(I)pj (E)


Onde:
δpqk é definido como:

δpqk = 2 [Tqk - φ(I)qk] αφ(I)qk [1 - φ(I)qk]

= 2 εqk (∂φ(I)qk / ∂Iqk)

Lembrando que ∆wpqk é calculado por meio de:


∆wpqk = - ηpq ( ∂ε²q/ ∂wpqk)
Substituindo (∂ε²q / ∂wpqk) pelo resultado obtido na equação (E) resulta:
= ηpq δpqk φ(I)p,j
= ηpq [2 [Tqk - φ(I)qk] αφ(I)qk [1 - φ(I)qk] φ(I)pj] (F)

O novo valor para o peso na iteração (n + 1) é :


w (n+1) pqk = w (n) + ∆wpqk

w(n+1)pqk = w( n ) + ηpq [2[Tqk - φ( I)qk]αφ(I)qk[1-φ(I)qk]φ(I)pj] (G)

Observação: Um processo idêntico é desenvolvido para cada neurônio da camada k de


saída, para ajustar os valores dos pesos a ele associado;
O termo erro δpqk é usado para ajustar os pesos dos neurônios da camada
de saída, usando as equações (F) e (G);
O último índice associado a Tqk e a φ(I)qk corresponde à camada.

Ajuste dos pesos da camada intermediária –

A equação utilizada para o ajuste dos pesos das camadas intermediárias é a


mesma utilizada para o ajuste dos pesos da camada de saída, exceto que o termo erro
δhpj deve ser gerado sem a saída desejada. Nós devemos calcular δhpj, para cada
neurônio na camada intermediária a partir dos erros em cada neurônio na camada de
saída a ele conectado. A seguir é apresentada uma figura para ilustrar como os erros são
retro - propagados para produzir a mudança no peso whpj na camada intermediária “j” .
02/05/02 43
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

O procedimento para calcular o termo erro δhpj é substancialmente o mesmo que foi
utilizado para calcular δpqk.
Como já mencionado, partiremos calculando a derivada do erro quadrático com relação
ao peso da camada intermediária a ser ajustado. Assim de maneira semelhante àquela
utilizada para ajustar o peso da camada de saída k, tem-se:

∆whpj = - ηp j ( ∂ε² / ∂whpj)


= - ηp j ∑ ( ∂ε²q/ ∂whpj)
q =1 ......r
Onde:
ε² significa erro quadrático total agora definido por:

ε² = ∑ ε²q = ∑ [Tq - φ(I)qk]²,


q =1 ......r q =1 .......r

uma vez que várias saídas com erros podem estar envolvidas.

02/05/02 44
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

A taxa de aprendizado é ηhp pode ser feita igual a ηpq, mas, todavia não é necessário,
podendo assumir valores diferentes.

Aplicando novamente a regra em cadeia de diferenciação em (·∂ε²/ ∂whpj) podemos


escrever:

(∂ε² / ∂whpj) = ∑{(∂ε²q /∂φ(I)qk)( ∂φ(I)qk / ∂Iqk)(∂Iqk / ∂φ(I) pj)}


q =1 ......r
(∂φ(I)pj / ∂Ipj)( ∂Ipj / ∂whpj)

Cada termo da equação anterior pode ser determinado como:

(∂ε²q / ∂φ(I)qk) = - 2[Tqk - φ(I)qk] = - 2 εq

(∂φ(I)qk / ∂Iqk) = αφ(I)qk [1 - φ(I)qk]

Lembrando que:
Iqk = ∑wpqk.φ(I)pj
p = 1, 2, ...............n

Tomando a derivada parcial com relação à φ(I)pj resulta:

(∂ Iqk / ∂φ(I) pj) = wpqk

A soma sobre p desaparece no resultado anterior porque somente uma conexão está
envolvida.

O termo (∂φ(I)pj / ∂Ipj) = αφ(I)pj [ 1 - φ(I)pj]

A partir da figura apresentada anteriormente tem-se:


Ipj = ∑whpj.xh
h = 1, 2, ...............m

Tomando-se a derivada parcial de Ipj em relação a whpj resulta:

( ∂ Ipj / ∂whpj) = xh

Novamente a soma sobre h na equação de Ipj desaparece porque somente uma conexão
está envolvida.
Considerando as expressões desenvolvidas para cada termo da expressão (∂ε² / ∂whpj),
e substituindo-os nela, obtém-se:

(∂ε² / ∂whpj) = ∑ {(-2) [Tq - φ(I)qk] (αφ(I)qk [1 - φ(I)qk]) wpqk}

02/05/02 45
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

q = 1 .............r

α(φ(I)pj [1 - φ(I)pj]) xh

= -∑ {δpqk. wpqk} (∂φ(I)pj / ∂Ipj) xh


q = 1 ........r

Definindo-se:
δhpj = δpqk. wpqk (∂φ(I)pj / ∂Ipj)
Resulta:
(·∂ε² / ∂whpj) = -∑ δhpj xh
q =1 .......r
Lembrando da expressão utilizada para o cálculo na mudança dos pesos da camada de
saída podemos através de expressão análoga obter a mudança dos pesos da camada
intermediária como ∆whpj = - ηhp ( ∂ε² / ∂whpj). Nota-se que tal ajuste é proporcional ao
negativo da taxa de mudança do erro quadrático com respeito aquele peso, então a
substituição de (∂ε² / ∂whpj) na expressão de ∆whpj resulta:

∆whpj = ηhp xh ∑ δhpj


q = 1.......r

Assim o novo valor do peso da camada intermediária na iteração (n+ 1) é dada por:
w(n+1)hpj = whpj(n) + ∆whpj
= whpj (n) + ηhp xh ∑ δhpj
q = 1.......r
= whpj(n) + ηhp xh ∑{-2 [Tqk - φ(I)qk] αφ(I)qk [ 1 - φ(I)qk]
q= 1.....r

wpqk} αφ(I)pj [ 1 - φ(I)pj]

Se existe mais que uma camada intermediária de neurônio, esse processo move através
da rede, camada por camada até a entrada, ajustando os pesos das camadas. Quando
terminado o ajuste dos pesos, um novo par de treinamento é aplicado à entrada. O
processo parte novamente. Ele continua até que um erro aceitável seja alcançado para
cada padrão. Nesta condição diz-se que a rede está treinada para cada padrão de
entrada.

02/05/02 46
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Resumo

Algoritmo Backpropagation

Considerações Iniciais

Seja o conjunto de treinamento (X1, d1).............. (Xl, dl);

L → número de conjunto a ser treinado


Xi → conjunto de entradas (i = 1,........, l)
di → saídas desejadas (i = 1,........, l)

Análise do Algoritmo backpropagation

Para o l -ésimo elemento do conjunto de treinamento temos:

A saída linear da p-ésima unidade da camada escondida j (camada intermediária ) é:

net l p = ∑ whp. Xlh (h = 0,......., n) com Xl0 = 1

A saída correspondente não linear é:

i l p = fpj (net l p)

A saída linear da q-ésima unidade da camada de saída é:

net ql = ∑ wqp. i lqp ( p = 0, ........, m unidades da camada intermediária anterior a


camada de saída)
l corresponde a um dado padrão de entrada,
.

A saída não linear da q-ésima unidade da camada de saída é;

Olq = fq (net lq)

Atualização dos pesos da camada de saída

Wqp (q = 1,......, v saídas; p = 0,........m entradas)

Seja o erro:

δlq = (d lq - O lq)

02/05/02 47
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

O erro quadrático incluindo todas as saídas é:

Elq = ε² = (1/ 2) ∑(δlq)²


q = 1,... v

O gradiente do erro quadrático é:

∇ε²= ∂ε²/∂ wqp = - (d lq - O lq)(∂fq )/(∂ net lqp)(∂net lqp/ ∂ wqp)

onde:
δlq =(d lq - O lq)
(∂fq)/(∂ net lqp) = f′q (net lq)
(∂net lqp/ ∂ wqp)= i l pj

Lembrando que:
Wqp (t+1) = Wqp (t) - ηqp ∇ε²

ou
Wqp (t+1) = Wqp(t) + ηqp δlqp i l p

onde: δlqp = δlq f′q (net lq) = (d lq - O lq) f′q (net lq )

Funções de ativação mais usadas:


fq (net lq) = net lq, ⇒ derivada f′q (net lq) = 1.

fq (net lq ) = ( 1 / ( 1 + e ¯ ª) ⇒ derivada f′q (net lq ) = Olq ( 1 – Olq )


a = net lq
fq(net lq) = tanh(net lq)=(1- e ¯ ²ª)/(1+ e ¯ ²ª)=derivada f′q(net lq ) = (1– Olq )

Atualização dos pesos na camada intermediária –

Para a camada intermediária j fazer:

fq → fp

olq → ilp

w hpj, (p = 1,........, m saídas) , (h = 1,..........n entradas)


02/05/02 48
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Elp = (1/2) ∑(δlq)² = (1/2)( ∑(dlq - fq∑ wqp. ilp)²) com Xl0 = 1.
p = 0,.....m
onde:
δlq = ( dlq – Olq)
Olq = fq (net lq) = fq ∑ wqp. Ilp

Calculando-se o gradiente ∇(Elj) chega-se:


Whpj (t+1) = Whpj (t) + ηhpδlp. xlh
onde: δlp = f ’h (net l h) ∑δlq wqp. ; (q = 1,...., v)

Algoritmo ( implementação)
Seja o conjunto de treinamento ( X l, d l ).

Passos Descrição
(i) Entrar com Xl = (xl1,..........xln)™ e dl
tomar xl0 = 1
(ii) Calcular a saída linear da camada intermediária
net l p = ∑ whp. ;( p = 1,...., m)

(iii) Calcular a saída da camada escondida


i l p = fpj (net l p)

(iv) Calcular a saída linear da camada de saída


net l q = ∑ wqp. i lq
p = 1,....,m
(v) Calcular a saída da rede
Olq = fq (net lq) = fq ∑ wqp. Ilp
q = 1,.....,v
(vi) Calcular o erro na camada de saída
δlqp = (d lq - O lq) f′q (net lq); (q = 1,...,v)

(vii ) Calcular o erro na camada intermediária


δlhp = f ’h (net l h) ∑δlq wqp.
; ( p = 0,...., m)
q = 0,.........,v
(viii) Atualização dos pesos da camada de saída
Wqp(t+1) = Wqp(t) + ηqp δlqp i l p
p = 0,....,m
q = 0,.......v

(es) Atualização dos pesos da camada intermediária


Whp(t+1) = Whp(t) + ηhp δlqp i l p
02/05/02 49
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

p = 0,....,m
q = 0,.......v
(x) Verificar tolerância para
se erro Elq = ε² = (1/ 2) ∑(δlq)² < tolerância
q = 1,... v
ou
se o número de iterações é igual ao valor estipulado
pare;

se erro ε² = (1/ 2) ∑(δlq )² > tolerância


q = 1,... v
ou
se o número de iterações é menor que valor estipulado
volte ao passo (ii)

(xi ) Entrar com novo par de padrões ( Xl, dl ), repetir os passos de


(ii) a ( x), até percorrer todo conjunto de padrões.

02/05/02 50
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Fluxograma do algoritmo
Exemplo:
Vamos considerar a rede neural feedforward múltipla camada MLP ilustrada na figura
dada a seguir.

02/05/02 51
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Condições impostas:

1. Vamos admitir que todos neurônios tem a mesma função logística sigmoidal com α
igual a 1 ( α = 1);
2. As entradas dos limiares iguais a +1 e os pesos dos limiares (bias) ajustáveis (w1c,
w1d, w1e);
3. A taxa de aprendizado constante e a mesma para todos pesos e igual a η = 0.5;
4. A saída desejada do neurônio igual a Te = 0.1;
5. Os pesos iniciais são randomizados com os valores indicados.

Vamos partir o processo de treinamento utilizando o algoritmo backpropagation por um


ciclo para a entrada apresentada [ 0.4, -0.7 ]´, (onde ´ indica o transposto do vetor de
entrada X), e ajustar os pesos em novos valores, segundo o desenvolvimento
apresentado anteriormente.

02/05/02 52
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Procedimento

Os ajustes dos pesos entre as camadas j e k são obtidos pela expressão:

∆wpqk = - ηpq [-2 [Tqk - φ(I) qk] αφ(I)qk [1 - φ(I)qk]]φ(I)pj

Os ajustes dos pesos entre as camadas i e j são obtidos pela expressão:


∆whpj = - ηhp [-2(∑[Tqk - φ(I)qk] αφ(I)qk [1 - φ(I)qk]
q= 1.....r
(Wpqk)α φ(I)pj [1 - φ(I)pj] xh]
Desenvolvimento dos ajustes dos pesos
1. Primeiro calcule a soma Ipj associada a cada neurônio da camada intermediária
através da expressão:

Ipj = ∑whpj.xh, para os neurônios da camada intermediária.


h = 1, 2, ...............m

Cálculo da soma ponderada nos neurônios da camada intermediária


Neurônio C:

Ic = 0.4 x 0.1 + (-0.7) x (-0.2) + 1 x (-0.5)


Ic = -0.32

Neurônio D:
Id = 0.4 x 0.4 + (-0.7) x 0.2 + 1 x (-0.2)
Id = - 0.18
Cálculo da saída dos neurônios da camada intermediária

Neurônio C:

φ(Ic) = (1 + e¯ª)¯¹ (onde a = α Ic, a = 1 x – 0,32 = - 0,32).

φ(Ic) = 0,42

Neurônio D
φ(Id) = (1 + e¯ª)¯¹ (onde a = α Id, a = 1 x – 0,18 = - 0,18).

φ(Id) = 0,46
2. Calcule a soma ponderada Iq associada a cada neurônio da camada de saída através
da expressão:
Iqk = ∑wpqk.φ(I) pj, para os neurônios da camada de saída.
p = 1, 2, ...............n

02/05/02 53
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Neurônio E

Ie = 0,2 x 0,42 + (-0,5) x 0,46 + (-0,6) x 1


Ie = - 0.75
Observação: Na expressão para o cálculo de Ie, os valores 0,42 e 0,46, são
respectivamente as saídas φ(Ic) e φ(Id) da camada intermediária anterior a camada de
saída.
Cálculo da saída do neurônio da camada de saída

φ(Ie) = (1 + e¯ª)¯¹ (onde a = α Ie, a = 1 x – 0,75 = - 0,75)


φ(Ie) = 0,32

3. Cálculo do erro na saída do neurônio da camada de saída

ε(e) = [ Te - φ( Ie) ]
ε(e) = [ 0,1 – 0,32]
ε(e) = - 0, 22
4. Cálculo do ajuste dos pesos entre a camada intermediária e a camada de saída

Ajuste do peso que liga o neurônio C ao neurônio E

∆wce = -0,5[-2 [ Te - φ(Ie)] φ(Ie)[1 - φ(Ie)] φ(Ic)]


∆wce = -0,5[-2 [ 0,1- 0,32] 0,32 [ 1- 0,32] 0,42 ]
∆wce = -0,020

Ajuste do peso que liga o neurônio D ao neurônio E


∆wde = -0,5[-2 [ Té - φ(Ie)] φ(Ie)[1 - φ(Ie)] φ(Id)]
∆wde = -0,5[-2 [0,1- 0,32] 0,32 [1- 0,32] 0,46]
∆wde = - 0,022

5. Cálculo do ajuste do peso do limiar do neurônio E da camada de saída

∆w1e = -0,5[-2 [Te - φ(Ie)] φ(Ie)[1 - φ(Ie)]] x 1


∆w1e = -0,5[-2 [ 0,1 – 0,32] 0,32[1 – 0,32]] x 1
∆w1e = - 0,048

6. Cálculo dos ajustes dos pesos entre os neurônios da camada de entrada e a camada
intermediária

Ajuste do peso que liga o neurônio A ao neurônio C


∆wac = -0,5[-2 [Te - φ(Ie)] αφ(Ie)[1 - φ(Ie)]wce αφ(Ic)[1 - φ(Ic)] xa]
∆wac = -0,5[-2 [0,1–0,32] 1 x 0,32[1–0,32] 0,2 x 1 0,42[1– 0,42] 0,4]
∆wac = - 0,00093 = -0,001

Ajuste do peso que liga o neurônio A ao neurônio D


02/05/02 54
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

∆wad = -0,5[-2 [Te - φ(Ie)] αφ(Ie)[1- φ(Ie)]wde α φ(Id)[1 - φ(Id)] xa]


∆wad = -0,5[-2 [0,1–0,32] 1 x 0,32[1–0,32](-0,5) x1 0,46[1– 0,46] 0,4]
∆wad = 0,00238 = 0,002

Ajuste do peso que liga o neurônio B ao neurônio C


∆wbc = -0,5[-2 [Te - φ(Ie)] αφ(Ie)[1- φ(Ie)]wce α φ(Ic)[1 - φ(Ic)] xb]
∆wbc = -0,5[-2 [0,1–0,32] 1 x 0,32[1–0,32] 0,2x1x 0,42[1– 0,42](-0,7)]
∆wbc = 0,00163 = 0,002

Ajuste do peso que liga o neurônio B ao neurônio D


∆wbd = -0,5[-2 [Te - φ(Ie)] αφ(Ie)[1- φ(Ie)]wde α φ(Id)[1 - φ(Id)] xb]
∆wbd = -0,5[-2 [0,1–0,32] 1 x 0,32[1–0,32](-0,5)x1x 0,46[1–0,46](-0,7)]
∆wbd = - 0,00142 = - 0,001

7.Cálculo do ajuste dos pesos dos limiares dos neurônios e D da camada intermediária

Ajuste do peso do limiar do neurônio C


∆w1c= -0,5[-2 [Te - φ(Ie)] αφ(Ie)[1- φ(Ie)]wce α φ(Ic)[1 - φ(Ic)] x 1]
∆w1c = -0,5[-2 [0,1–0,32] 1x 0,32[1–0,32] 0,2x1x 0,42[1– 0,42] x1]
∆w1c = -0,0023 = - 0,002

Ajuste do peso do limiar do neurônio D


∆w1d= -0,5[-2 [Te - φ(Ie)] αφ(Ie)[1- φ(Ie)]wde α φ(Id)[1- φ(Id)] x1 ]
∆w1d = -0,5[-2 [0,1–0,32]1x0,32[1–0,32](-0,5)x1x 0,46[1–0,46]x 1]
∆w1d = 0.0059 = 0,006

8. Cálculo dos novos valores dos pesos associados a cada neurônio

Esse cálculo é feito considerando a expressão:

w (n + 1) = w(n) + ∆w(n)
onde: n+1 é a iteração atual
n é a iteração anterior

Passemos aos cálculos dos novos pesos

Wce = 0,200 – 0,020 = 0,180

Wde = - 0,500 - 0,022 = - 0,522

W1e = - 0,600 – 0,048 = - 0,648

02/05/02 55
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Wac = 0,100 - 0,001 = 0,099

Wad = 0,400 + 0,002 = 0,402

Wbc = -0,200 + 0,002 = - 0,198

Wbd = 0,200 – 0,001 = 0,199

W1c = -0,500 – 0,002 = - 0,502

W1d = -0,200 + 0,006 = - 0,194

Este processo é repetido até que para o vetor Xi de entrada obtenha a saída desejada Te,
isto é feito para todo pares de entrada.

A título de exercício reinicie outro ciclo de cálculo partindo com os novos pesos, repita o
processo até que obtenha um erro.

ε(e) = [ Te - φ( Ie) ]= 0,0001


Análise de sensibilidade –

A análise de sensibilidade tem por objetivo identificar a influência da variação dos dados
de entrada da rede sobre a variação no valor de saída de cada neurônio na camada se
saída.
Para tal análise será considerada a relação apresentada a seguir:

ξqh = ( ∆yq ) / ( ∆xh )= (∂ yq)/ (∂ xh)


onde:
(∂ yq) → é a variação da saída do q-ésimo neurônio da camada de saída
(∂ xh) → é a variação na h-ésima entrada da rede na camada de entrada
ξqh → sensibilidade da saída com relação à entrada

Fazendo o desenvolvimento em cadeia de derivada parcial (∂ yq)/ (∂ xh), resulta:

(∂ yq)/ (∂ xh)= [(∂ φ(netq)) / (∂ (netq))][(∂ (netq)) /

(∂φ (netp))][(∂φ (netp))/(∂(netp))][(∂(netp))/ ∂(xh)]


onde:
[(∂ φ(netq)) / (∂ (netq))] = αφ(netq) [1 - φ(netq)] (a)

[(∂ (netq)) / (∂φ (netp))] = ∑ wqp ; p =1,...............,m (b)

[(∂φ (netp))/(∂(netp))] = αφ(netp)[1 - φ(netp)] (c)


02/05/02 56
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

[(∂(netp))/ ∂(xh)] = wph (d)

Substituindo (a), (b), (c) e (d) na expressão de ξqh resulta:

ξqh = α²φ(netq)[1 - φ(netq)]. [ ∑ wqp .φ(netp)[1 - φ(netp)]. Wph]


p = 1,.......m

[ ∑ wqp .φ(netp)[1 - φ(netp)]. Wph] = [wq1 .φ(net1)[1 - φ(net1)]. W1h + [wq2 .φ(net2)[1 -
φ(net2)]. W2h] + .....................+[ wqm .φ(netm)[1 - φ(netp)]. Wph], substituindo na
expressão de ξqh resulta:

ξqh = α²φ(netq)[1 - φ(netq)]. { [wq1 .φ(net1)[1 - φ(net1)]. W1h + [wq2 .φ(net2)[1 - φ(net2)].
W2h] + .........+[ wqm .φ(netm)[1 - φ(netp)]. Wph]}

p wq1 q
W1 yq
xh
1
wq2
W2
2

wmh wqm

Da expressão acima se nota que a sensibilidade varia com o quadrado do expoente α da


função de ativação. Portanto se adotarmos um valor elevado para o mesmo podemos
acelerar o processo de ajuste dos pesos, mas por outro lado aumenta a sensibilidade aos
ruídos no sinal de entrada sobre a saída. A escolha do valor de α deve ser feita com
certo cuidado para evitar a instabilidade na sensibilidade da rede.

02/05/02 57
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Crítica ao Método Backpropagation –

Embora amplamente usado, o algoritmo Backpropagation, não escapa a crítica. O método de


cálculo para trás (retopropagação) dos pesos não é visto ser plausível biologicamente. Assim o
algoritmo backpropagation não é visto por muitos como um processo de aprendizado que emula o
mundo biológico, mas sim um método para projetar uma rede neural com aprendizado
supervisionado segundo, um algoritmo que usa um computador digital para ajustar os pesos
sinápticos. Quando a rede neural artificial é implementada em hardware, ela tem menor
plasticidade. A perda de plasticidade está em contraste com a motivação inicial de
desenvolvimento da rede neural artificial que emulasse a rede neural do cérebro, que são adaptáveis
(plásticas) o bastante para aprender novos padrões. Se mudanças são necessárias, o computador
pode calcular novo valor do peso, ajustando-o. Isto significa que a implementação da rede neural
dependerá da capacidade do computador digital. O algoritmo padece de extensivos cálculos e desta
maneira apresenta baixa velocidade de treinamento.
A ineficiência de velocidade deste algoritmo tem estimulado um esforço no sentido de explorar
técnicas que acelere o tempo de aprendizado em pelo menos 02 vezes.
Todavia a utilização de técnicas para acelerar o algoritmo backpropagation não o torna adequado
para aplicações em tempo real.

Técnicas para melhorar o tempo de treinamento –

Uma dentre várias técnicas que iremos apresentar aqui a CMAC (Cerebelumm Model Articulation
Controller), desenvolvida por James Albus num esforço para projetar um controlador que trace a
origem da funcionalidade do cérebro.
O CMAC é em muitos aspectos similar ao funcionamento do algoritmo backpropagation. Ambos
necessitam de supervisão para aprender, eles associam a um dado padrão de entrada um padrão de
saída (ou um padrão de resposta para saída). O CMAC usa como algoritmo de aprendizado, o
Widrow – least – mean – square (ou regra delta de aprendizado) que utiliza o método do gradiente
passo descendente, para calcular o erro mínimo:

Wij (K+1) = Wij (K) + µ(Oi – Ti)

Onde µ é a taxa de aprendizado com valor entre 0.2 e 0.8.

Uma das principais características do CMAC é sua rápida velocidade de aprendizado, comparado
com o algoritmo de aprendizado backpropagation. Em adição, as entradas e saídas do CMAC são
números binários (1 ou 0). Deste modo, o CMAC é facilmente implementado com relativa rapidez
com circuito CMOS de baixa potência.

Muitos pontos precisam ser considerados na implementação da backpropagation:

A principal consideração é a escolha da arquitetura da rede a qual é um dos fatores que


influenciam no tempo de treinamento. O tempo necessário para calcular a derivada do erro e adaptar
os pesos sobre um dado vetor exemplo, do conjunto de treinamento é proporcional ao tamanho da
rede. Em grandes redes, aumentando o número de padrões de treinamento, causa o aumento do
tempo de treinamento. O número de nós na camada de entrada e na de saída depende do código de
02/05/02 58
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

representação escolhido para uma aplicação específica. Não existem restrições acerca do número
de camadas ocultas. Contudo não existe nenhuma evidência de que a rede com maior número de
camadas ocultas apresenta melhor desempenho. Por outro lado às camadas ocultas podem ter
quantos nós que desejar ou que seja requerido. Se o desempenho da rede backpropagation é
comparado tomando-se por base o tamanho da rede em termos das camadas ocultas, a rede com
maior número de camada apresenta melhor desempenho, porém com aumento do tempo de
treinamento, quando comparado com uma rede de menor número de camada. O tempo de
treinamento é diretamente dependente do tamanho da rede, sendo maior para rede de maior
tamanho. Quanto ao número de nós por camadas ocultas existe um teorema proposto por
Kolmogorov que diz: “uma rede neural de três camadas, com n neurônios na camada de entrada e
m neurônios na camada de saída, poderá ter 2n+1 neurônios na camada intermediária ou oculta”.
As redes com essa arquitetura podem ser utilizadas para resolver com sucesso problemas com
características não lineares.

A escolha do valor da taxa de aprendizado é uma outra consideração a ser observada. Todas
unidades de processamento na rede podem usar a mesma taxa de aprendizado ou a taxa pode variar
para cada camada. Pode-se manter a mesma taxa sobre todo período de treinamento ou ela pode
mudar após um certo período. No começo do período de treinamento, a taxa de aprendizado pode
assumir grandes valores, com isto aumentando a taxa de convergência. Após um certo período de
tempo a taxa será reduzida para produzir pequenos ajustes no peso, caso contrário ela pode criar um
comportamento oscilatório próximo ao valor ótimo do erro Parlos [1992]. A taxa de aprendizado é
ajustada em função do gradiente do erro. Esta dependência da taxa de aprendizado produz uma
vantagem em relação ao algoritmo convencional backpropagation, porque ele permite o ajuste
dinâmico da taxa resultando numa convergência forte. A desvantagem do algoritmo é quando ele
aproxima do valor ótimo, onde ocorre um comportamento oscilatório no ajuste do peso. Este
algoritmo é mais adequado para aplicação em problema analógico do que com problema binário. O
processo de treinamento pode ser terminado quando o erro da rede é menor que um valor aceitável
estabelecido no início do processo de treinamento. Todavia é possível neste processo caminhar para
o mínimo local durante o treinamento, em lugar do mínimo global.
Com o objetivo de evitar este problema vários algoritmo modificado tem sido propostos
[Dgali 1991], [Cybenco 1980]. Fahlman 1988 propôs um algoritmo backpropagation modificado,
usando a mudança anterior do peso para gerar a mudança no próximo ciclo de treinamento.

O algoritmo back-propagation representa uma poderosa formalização para o treinamento de


redes perceptrons de múltiplas camadas. O processo de convergência deste método é sensivelmente
influenciado na escolha dos parâmetros wi e da taxa de aprendizado. Uma maneira de compensar
tais problemas é adequar a faixa dinâmica do neurônio de saída à tabela de treinamento. Em geral,
se a faixa de variação da saída desejada T ( yd) sobre o conjunto de treinamento for [ ymin, ymax]
enquanto a função de ativação f(.) do neurônio cobre a faixa [Ymin,Ymax], deve-se re-escalar esta
variável de tal forma que ela se encontre numa região eficiente de operação do ponto de vista do
algoritmo de treinamento, sendo o Yld o valor escalado, tem-se a relação

Yld = αyld + β

Onde: α = µ [Ymax – Ymin] / [ ymax – ymin]


β = µ Ymin –α ymin
02/05/02 59
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

µ representa a proporção da faixa dinâmica do neurônio que se utilizará 05< µ < 0.8

Outro problema que ocorre quando utilizamos f(.) não linear como função de
ativação, isto é neurônios não lineares é o do mínimo local no panorama do erro
quadrático, isto devido procedimento bacpropagation ser essencialmente local,
poderá perfeitamente convergir para um ponto de mínimo local e ali
permanecer encalhado, este é um problema de difícil solução, todavia alguns
pesquisadores sugerem adicionar alguns ruídos aos parâmetros, fazendo-os
saltar para fora desta região de mínimos locais.
Um dos maiores problemas encontrados no procedimento de retropropagação do erro é a
existência de regiões planas na superfície de erro ou superfície panorama de erro. A
velocidade de convergência depende diretamente da taxa de aprendizado η que determina o
passo que será dado a cada iteração. Com a superfície panorama do erro muito plana, isto
com gradiente pequeno, a convergência será lenta. Uma alternativa pode ser a utilização de
expansão do gradiente grad(E(w)) pela série de Taylor , fazendo:

Grad(E(w + ∆w)) = grad(E(w)) + H(w). ∆w+ ..........

Onde: H(w) é a matriz Hessiana de E(w):

H(W) = [ ∂²E(w)] / ∂wi ∂wj]

Se w+∆w é um ponto de mínimo, o gradiente será nulo e resulta:

0 = grad(E(w))+ H ∆w

∆w = - H¯¹(w) grad(E(w)), que é o método de Newton.

Neste método a constante η (taxa de aprendizado) é substituída pela inversa da matriz


Hessiana e deve ser recalculada a cada iteração. É sem dúvida um ônus computacional
imenso na medida em que uma única operação de cálculo passa a ser substituída por n²
operações de inversão de matriz (nxn), n² multiplicações e igual número de somas.
Existe um método conhecido como método do momento que consiste
basicamente em acelerar a convergência com a escolha de uma taxa de
aprendizado η grande evitando a oscilação nas proximidades do ponto mínimo,
usando um filtro passa baixa. Com um filtro de primeira ordem procede-se ao
cálculo dos ∆w por:

∆w (t+1) = λ∆w(t) - η∇(E(w(k)))


o que corresponde a um filtro cuja função de transferência é:

02/05/02 60
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

G(Z) = ∆w(Z) /∇(E(w)) = -η /( Z -λ)

O ganho deste filtro para sinal constante é

G(1) = -η /( 1 -η) = η´> η para λ >0


Ou seja quando a variação do grad(E(w)) é lenta, portanto nas regiões planas da superfície
panorama do erro quadrático, a taxa efetiva de aprendizado é η´> η.
Para acelerar ainda mais a convergência, pode-se naturalmente usar filtros autoregressivos
de ordem superior do tipo:

∆w(t+1) = ∑ λi∆w(t-i) - η∇ (E(w(t)), i = 0 ……m


o que representará um ônus computacional tanto maior quanto for a ordem do filtro.

Método do Momento

Este método foi proposto por Rummelhart,Hinton e Willanms(1986), para melhorar o tempo
de treinamento do algoritmo backpropagation

Os ajustes dos pesos são feitos segundo:

∆w(N+1) = - η δ φ + µ∆w(N)
Onde: ∆w (t) é o ajuste do peso na iteração anterior
µ é o coeficiente do momento valor típico 0.9
δ = ∂E²(w)/ φ(net)= -2[T - φ(net)]
φ = sigmóide(net) = 1 / ( 1+ e¯ª) , (a = α net)
η = taxa de aprendizado
O novo valor do peso torna-se igual ao valor do peso anterior mais o ajuste que inclui o
termo momento
W(N+1) = W(N) + ∆w(N+1)

Na figura dada a seguir é apresentado um diagrama para ilustrar a ação do momento

02/05/02 61
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Este método tem apresentado bom resultado para maioria dos problemas onde é aplicado. O
método do momento força a solução para o mínimo global, evitando-se o mínimo local.

Vários procedimentos têm sido propostos no sentido de acelerar o método backpropagation,


dentre eles podemos citar:
O método de Sejnowski e Resenberg em 1987, semelhante ao método do momento, baseado
na ”exponencial suave” que apresentou melhores resultados do que o método do momento em
algumas aplicações.
O método consiste em:

∆w(N+1) = α∆w(N) +( 1 - α)δ φ

A mudança no peso mais o peso anterior dá o novo peso:


W(n+1) = W(N) + η ∆w(N+1)

Onde: α ∈ [0,1]

Se α é zero ∆w(N+1) = δ φ
δ = ∂E²(w)/ φ(net)= -2[T - φ(net)]
φ = sigmóide(net) = 1 / ( 1+ e¯ª), (a = α net)

W(n+1) = W(N) + ηδ φ

Se α é 1 ∆w(N+1) = ∆w(N)
W(n+1) = W(N) + η ∆w(N)

02/05/02 62
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Parker(1987) descreve um método para melhorar a velocidade de convergência do


backpropagation. Chamado método backpropagation de segunda ordem, em que o ajuste do
peso é feito usando a derivada segunda da superfície panorama do erro, para produzir maior
precisão na correção da mudança do peso. Como conseqüência às exigências computacionais
são maiores do que o método da primeira derivada, sem grande melhoria que justifique o
aumento de custo.

Stornetta e Huberman(1987) – Desenvolveram um método para melhorar a característica de


treinamento do backpropagation. Eles colocaram que a faixa de saída da função sigmóide
(0;1) não é ótima para entradas binárias. Uma vez que a magnitude do ajuste do peso é
proporcional ao nível de saída do neurônio da camada anterior.Um nível zero resulta em
nenhuma mudança. Com entradas binárias, metade das saídas (na média) serão zero, e os
pesos não treinam. A solução por eles proposta, foi mudar a faixa de entrada da função
ativação de –1/2 a +1/2, e adotando um bias –1/2. Eles demonstraram que para funções
binárias este procedimento reduz o tempo de treinamento de 30 a 50%. Hoje um método
comum de realizar isto é usar função ativação tangente hiperbólica ou arco tangente.

A nova função é

φ(net) = -1/2 + ( 1 + e¯ª)¯¹

Onde: a = net

O principal problema do método backpropagation é o longo tempo de treinamento. Algumas


redes neurais artificiais tem requerido dias ou meses no processo de treinamento e às vezes a
redes simplesmente não treina ( não converge). Isto pode ser resultado de uma escolha ruim
da taxa de treinamento (taxa de aprendizado), ou talvez a distribuição randômica dos pesos
iniciais. Todavia em muitos casos a falha no processo de treinamento é usualmente devido ao
mínimo local ou a paralisa da rede, onde o treinamento virtualmente cessa devido à operação
na região plana da função superfície do erro.

02/05/02 63
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

APRENDIZADO NÃO SUPERVISIONADO

Conforme já mencionado no início desta nota, no aprendizado não supervisionado a saída da rede
não é conhecida , portanto não existe cálculo de erro entre valor desejado de saída e a saída real da
rede, neste processo basicamente classifica grupo de entrada ou seja reconhece-se padrões.

Redes Neurais – Memórias associativas

Uma memória associativa Ψ serve para armazenar um conjunto de vetores ψ = { ydp} ( p =


1 ,2 .............., P , padrões ), de tal forma que se ela for endereçada com um vetor arbitrário y ,
retornará como saída aquele vetor ydp ∈ ψ, cuja distância for a menor para y.

A memória associativa pode ser considerada como uma variante de um classificador de padrões, no
qual as categorias de classificação são representadas pelos vetores armazenados.

Um padrão isolado p pode ser classificado pela memória numa das categorias de padrões,
dependendo apenas do critério de proximidade (ou distância) que se definiu para a memória.
Um dos critérios de distância ou proximidade entre dois ou mais vetores com componentes
binárias e de mesma dimensão, normalmente adotada em estudo de memória associativa como um
associador linear é à distância de Hamming.

Antes, porém de definir a distância de Hamming, falaremos sobre espaço de Hamming.


O espaço de Hamming é definido como o conjunto de vetores n-dimensionais, com cada
componente pertencente ao conjunto dos números reais, R, sujeitas à condição de cada uma estar
restrita a assumir os valores ± 1. A distância de Hamming entre dois vetores x e y com o mesmo
número de componentes é denotada por h(x, y), e, é igual ao número de componentes diferentes
entre os dois vetores.

Se x é igual ao complemento de y, h (x,y) = n


Se x é igual a y, h(x,y) = 0

Baseado na definição de distância de Hamming podemos dizer que:

0≤h≤n

Considerações sobre a distancia de Hamming considerando-se as componentes dos vetores para os


quais está sendo calculada a distância de Hamming.

Se os vetores são binários constituídos de por zero e um ( [0,1]) a distância é dada por:
h(x,y) = ∑( yi( 1- xi) + ( 1- xi) xi)

Se os vetores são binários constituídos de por [-1,1] a distância é dada por:

h(x,y) = ∑1/2( 1- xiyi) = n/2 – 1/2∑ xiyi

02/05/02 64
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Podemos estabelecer a relação entre a distância de Hamming e a distância Euclidiana. Para isto
vamos considerar dois vetores x = { x1, x2 ,...........xn}™ e y = {y1, y2,.........., yn}™, no espaço
Euclidiano, sujeito às restrições de que xi e yi ∈ {± 1}. A distância Euclidiana entre os dois vetores
é;

d = (∑( xi - yi)²)½

Desde que xi e yi ∈ {± 1}, então ( xi – yi )² ∈ {0,4}

Se xi = yi então ( xi – yi )² = 0
Se xi ≠ yi então ( xi – yi )² = 4

Então a distância Euclidiana pode ser escrita como:

d= (4 (número de componetes))½

Definimos h como sendo igual ao número de componentes diferentes ou os bits que são diferentes
nos dois vetores.
Assim sendo à distância de Hamming é relacionada à distância Euclidiana pela equação
d = 2 (h)½ ou h = d²/ 4

O exemplo mais elementar de memória associativa é aquela que armazena apenas um vetor binário
de dimensão n, yd1 e seu complemento ydc1, isto é ψ = { yd1, ydc1} e com um critério de
proximidade entre dois vetores definido por uma medida de distância entre eles.

Exemplo de aplicação da memória associativa como separador linear: dado um vetor y arbitrário,
poderíamos simplesmente calcular as distâncias h = (y, yd) e h = (y, ydc) e classifica-lo numa
categoria ou em outra segunda:

Se h = ( y, yd) ≥ h = ( y, ydc) ⇒ y ∈ categoria A

Se h = ( y, yd) < h = ( y, ydc) ⇒ y ∉ categoria A

Este método é conhecido como método da força bruta ou da busca exaustiva e implica no cálculo de
todas distâncias dos vetores do conjunto. Este método pode –se tornar complexo e muito lento
quando a dimensão dos vetores que compõem o conjunto ψ é grande.
Exemplo: quando ψ representa os elementos de uma imagem detalhada e complexa.

O associador linear -

Suponha que temos L pares de vetores (X1,Y1) , (X2,Y2),........., (XL, YL), com Xi ∈ Rn, e Yi ∈
Rm. Podemos distinguir três tipos de memórias associativas:

02/05/02 65
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

1. Memória heteroassociativa : Implementa um mapeamento, φ, de X para Y / φ( Xi) = Yi, e , se


um X arbitrário é próximo a Xi e não de outros Xj, j = 1,........,L, então
φ(X) = Yi. Nesta e nas definições seguintes próximo significa com respeito à distância de
Hamming.
2 . Memória associativa interpolativa : Implementa um mapeamento, φ, de X para Y / φ( Xi) = Yi,
mas , se o vetor de entrada X difere de um dos exemplares pelo vetor d, / X = Xi + d então a saída
da memória também difere a partir de exemplares de algum vetor e : φ( X) = φ( Xi + d ) = Yi + e.

3. Memória autoassociativa: Assume Yi = Xi e implementa um mapeamento φ, de X para Y /


φ(Xi) = Xi, e, se algum X arbitrário é mais próximo a Xi do que de qualquer outro vetor Xj, j =
1,...........,L, então φ(X) = Xi.

Construir uma tal memória não é uma tarefa matematicamente difícil se nós fazemos restrição
adicional que os vetores, Xi, forma um conjunto ortonormal, um tal conjunto é definido pela
relação, Xi Xj = δij, onde δij = 1 se i = j, e δij = 0 se i ≠ j.

Para construir uma memória associativa interpolativa, definimos a função.

φ( X) = ( Y1X1 + Y2X2+ ............+ YLXL)X

Se Xi é o vetor entrada , então φ(Xi) = Yi, uma vez que o conjunto de vetores X é ortonormal.
Este resultado pode ser visto a partir do exemplo seguinte. Seja X2 o vetor de entrada. Então a partir
da equação anterior podemos escrever:

φ( X2) = ( Y1X1 + Y2X2+ ............+ YLXL)X2

φ( X2) = Y1X1 X2 + Y2X2 X2+ ............+ YLXL X2

φ( X2) = Y1δ12+ Y2δ22+ ............+ YL δL2

Na equação precedente todos os termos δij desaparecem, exceto δ22, que é igual a 1. O resultado é:

φ( X2) = Y2δ22 ou φ( X2) = Y2


Se o vetor de entrada é diferente de um dos exemplares, / X = Xi + d, então a saída é
φ(X) = φ(Xi + d) = Yi + e

Onde
e = ( Y1X1 + Y2X2+ ............+ YLXL)d

Note que não existe na discussão do associador linear a exigência de que os membros dos vetores
de entrada e saída serem membro do espaço de Hamming. A exigência é deles serem ortonormal.
Outra observação é de que não foi envolvido treinamento na definição do associador linear. A
função que mapea X em Y foi definida pela expressão:
φ( X) = ( Y1X1 + Y2X2+ ............+ YLXL)X
02/05/02 66
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Memória Associativa Bidirecional – BAM


Foi desenvolvida por Kosko (1988), é uma matriz de peso simétrica. Cada neurônio em cada
camada tem uma entrada externa e entradas a partir de neurônios de outro campo de neurônios.
Suponha que desejamos construir uma BAM para armazenar três padrões (par de padrões) : [X1,
Y1], [X2, Y2], [X3, Y3]. Uma vez que a BAM é bidirecional, podemos entrar com X e recuperar Y
correspondente, ou podemos entrar com Y e recuperar o X correspondente.
O processo em uma BAM é fundamentalmente diferente daquela operação em outros tipos de redes
neurais como exemplo, na backpropagation, na qual os pesos são treinados para prover a saída
desejada (mapea a entrada na saída). No caso de uma BAM, a matriz peso não é treinada, mas sim
construída usando cada par de entradas – saída. O processo envolverá construção de uma matriz
para cada par de entradas – saída e então as combinando numa matriz mestre. Xi e Yi . São tratados
como vetor coluna, e então a matriz é construída tomando o produto do vetor Xi e o vetor
transposto de Yi (Yi):

Exemplo:
Vamos considerar os três pares dados a seguir:

X1 : ( 1,-1,-1,-1,-1,1) ⇔ ( (-1, 1, -1) : Y1

X2 : ( -1,1,-1,-1, 1,-1) ⇔ ( (1, - 1, -1) : Y2

X3 : ( -1,-1,1,-1,-1,1) ⇔ ( (-1, -1, 1) : Y3

Matriz peso Representação –


Desde que X1 tem 6 elementos e Y1 tem 3 elementos, a matriz para cada par de conjuntos é uma
matriz 6x3. È importante notar que cada par de padrões é constituído de valores +1 e –1 (poderia ser
(0,1)). A matriz correlação Mi é obtida pelo produto cruzado de Xi e Yi, isto é
Mi = Xi x Yi
As três matrizes são:

M1 = X1 x Y1 = -1 +1 –1
+1 -1, 1, -1 +1 -1 +1
-1 +1 -1 +1
-1 = +1 -1 +1
-1 +1 -1 +1
-1
-1 +1 -1
+1

02/05/02 67
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

M2 = X2 x Y2 = -1 -1 +1 +1
+1 +1, -1, -1 = +1 -1 -1
-1 -1 +1 +1
-1 -1 +1 +1
+1 +1 -1 -1
-1 -1 +1 +1

-1 +1 +1 –1
M3 = X3 x Y3 = -1 -1, -1, 1 +1 +1 -1
+1 = -1 -1 +1
-1 +1 +1 -1
-1 +1 +1 -1
+1 -1 -1 +1

Note que cada matriz é produto de duas quantidades, uma componente de X e uma componente de
Y este produto xiyi é uma indicação clássica que o aprendizado de Hebb esta envolvido.

A fim de obter uma memória associativa (chamada matriz mestre dos pesos) capaz de armazenar os
três pares ( X1,Y1), ( X2,Y2), ( X3,Y3), nós simplesmente adicionamos as três matrizes de
correlação o resultado é :

M = M1 + M2 + M3

-1 +3 –1
M = +3 –1 –1
-1 –1 + 3
1 1 1
+3 -1 -1
-3 +1 +1

Obs: As matrizes só podem ser adicionadas se tiverem o mesmo tamanho. Então isto significa que
todos Xi padrões devem ter o mesmo número de componentes, e todos os Yi padrões devem ter o
mesmo número de componentes . Contudo, o número de componentes de Xi pode ser diferente do
número de componente de Yi.
02/05/02 68
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

A fim de colocar qualquer Xi e obter qualquer Yi, (ou colocar qualquer Yi e obter qualquer Xi)
temos que tomar o produto do vetor de entrada e a matriz. Isto é equivalente a tomar o produto
escalar do vetor e a matriz mestre. O resultado é:

Xi = M . Yi (A)
E

Yi = MXi (B)

Onde a matriz M é no caso uma matriz 6x3 e Xi é um vetor 6x1, e Yi é um vetor coluna 3x1. Note
que a transposta de M é:

-1 +3 -1 1 3 -3
3 -1 -1 1 -1 -1
M =
-1 -1 3 1 -1 1

Exemplo:

Usando BAM, vamos usar a expressão (A) para obter X2 a partir de Y2

-1 +3 –1
1
+3 –1 –1
-1 –1 + 3
-1
1 1 1
+3 -1 -1
-1
-3 +1 +1

O resultado do produto anterior da matriz M e vetor Y2 , é o vetor X2, que tem como transposto cujo X2.

X2 = [ -3 5 –3 –1 5 -5] , adotando como regra a seguinte orientação :

Se xi é menor do que zero faz –se xi = - 1

Se xi é maior do que zero faz –se xi = 1,

Adotando este procedimento obtemos para


X2 = [ -1 1 –1 –1 1 –1], que é o transposto do vetor X2.

02/05/02 69
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Operação da BAM –
Se qualquer vetor Xs e Ys são introduzidos para a matriz mestre de maneira apropriada, a resposta
correspondente é dada imediatamente. O problema acontece quando a entrada é uma versão
distorcida de X ( ou Y) que chamaremos de X’ (ou Y’) é introduzido, especialmente se X’ tem
alguma similaridade para com mais do que um dos Xs.
A resposta do produto M X’ pode não resultar num dos Ys armazenados na matriz, mas pode ser
alguma combinação de dois ou mais vetores Ys que chamaremos de Y’. O vetor Y’ é enviado de
volta para a BAM resultando X’’, como resultado do produto de M.Y’, o vetor X’’ é enviado de
volta a BAM , dando como resultado Y”, como resultado do produto de M X’’, novamente Y’’ é
apresentado a matriz mestre dos pesos, resultando X’’’, como resultado do produto de M.Y’’.
Esta condição continua até quando os valores sucessivos de X* e Y* não mudarem.

Algoritmo –
1. Um vetor padrão X é apresentado a BAM;
2. Os neurônios no campo X geram um padrão atividade que é passado para o campo onde é
armazenado Y através da matriz mestre de peso M;
3. O campo de Y aceita a entrada a partir do campo de X e gera uma resposta de volta para o
campo de X, através da transposta da matriz mestre dos pesos M™;
4. O campo X aceita o retorno da resposta a partir de Y, e então ele gera uma resposta de volta ao
campo Y através da matriz mestre dos pesos M;
5. A atividade continua até a ressonância ser alcançada. O que significa que não Haverá mudanças
nos padrões (isto é valores sucessivos de Xs e Ys não modificam). Neste ponto, a saída Y é um
dos valores armazenados na matriz mestre, e é corrigida a resposta para entrada X distorcida.
Esta metodologia aparentemente arbitrária permite gerar uma matriz memória a partir da qual
podemos recuperar (relembrar) os padrões de entrada usados para produzi-la.

Onde estão realmente armazenados os padrões na matriz BAM?


Eles não estão armazenados em qualquer elemento individual da matriz peso, porque se fosse para
mudarmos um dos três padrões, não haveria necessidade de mudar a matriz inteiramente, conforme
pode ser observado no processo de construção da matriz mestre dos pesos. Portanto podemos
concluir que a informação é armazenada não num elemento individual, mas na matriz como um
todo, e cada padrão é distribuído sobre a matriz inteira.

Adicionado e deletando par de padrões à matriz mestre –

Nós podemos adicionar outro par de padrões [X4,Y4] à matriz mestre, adicionando a matriz
correlação M4, associado a ele a matriz mestre M :

M nova = M1 + M2 + M3 + M4

Alternativamente podemos a pagar um par de padrões, pela subtração da matriz correlação daquele
padrão da matriz mestre. Por exemplo se desejamos remover o padrão [X3,Y3] da matriz memória
(matriz mestre), bastaria subtrair da matriz memória a matriz M3 :

M (nova) = M (antiga) – M3

02/05/02 70
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Este sistema tem toda característica de um sistema memória. Ele pode armazenar na memória, ele
pode relembrar a partir da memória, ele pode escrever novas informações, e ele pode apagar
informações antigas.

Capacidade e eficiência de uma rede com sistema de memória-

A capacidade de uma rede NxN neurônios é teoricamente limitada à aproximadamente N par de


padrões. Na realidade, a capacidade real é maior da ordem de 10 a 15 % de N. Por exemplo, na
matriz de 288 bits foi necessário (18 elementos de 16 bits por elemento) para armazenar três
padrões de 9 (total) bits, ou 27 bits total. A operação de armazenar e relembrar requer varias
operações com matriz(multiplicação, transposição, e adição). Com a tecnologia atual isto é muito
menos eficiente que simplesmente armazenar os dados convencionalmente.

Desvantagens –
Existem muitas desvantagens a serem consideradas:
1. O número de conexão.- Uma rede de 100 nós tem 100x100 0u seja 10000 conexões no total;
2. Entrada somente binária – Para implementar um problema analógico, algumas transformações
adequadas devem ser feitas para converter as quantidades analógicas em sinais digitais;
3. Capacidade – A armazenagem teórica é baixa para o número de conexões, e a capacidade real
de armazenagem é ainda muito menor;
4. Ortogonalidade – Para melhor resultado, os padrões dados deverão ser ortogonais para
minimizar a superposição;
Tipo de redes memória associativa -
Citamos a seguir algumas redes neurais baseadas no principio das memórias associativas e princípio
de aprendizado não supervisionado:
Rede BAM (Memória BAM)
Rede Crossbar
Rede Hopfield
Rede Estocástica
Camada de Kohonen
Rede Counterpropagation
Rede Probabilística
Rede Função radial
Rede Adapitativa Ressonate (ART)

02/05/02 71
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Camada de Kohonen
A camada de Kohonen é um tipo de rede adaptativa e, um caso de redes neurais não
supervisionadas, pertencente à classe de redes competitivas dentro das memórias adaptativas.
Como o próprio nome indica, elas adaptam as novas situações. Todavia é desejável que as
novas situações não difiram muito daquelas utilizadas na fase de estruturação da rede.
O número de neurônios da rede deve ser igual aos possíveis grupos (aglomerações) que
possam existir na operação normal da rede. A característica desta rede é que ela é treinada em
operação (enquanto esta operando o sistema), devido a isto é indicada para alguns casos para
operação on-line

Estrutura Básica da rede Camada de Kohonen

X1
Y1

W1
Xn .
.
.

YL
WL

Algoritmo –

1. Inicialize os pesos Wj (j = 1, 2,...........L) iguais , os pesos associados a cada vetor Wj;


2. Apresente um vetor Xq (normalizado) à entrada da rede; o processo de adaptação consiste
em fazer os pesos da unidade que se identifique mais com o vetor Xq, tenham seus valores
trocados pelo do vetor Xq;
3. Se existe um Wk próximo de Xq, fazer Wk = Xq (o critério de proximidade é realizado
calculando a distância Euclidiana entre o vetor de entrada e o vetor peso utilizando a
expressão d = (∑ (xqi- wki)²)½);
4. Se não existe alguma unidade próxima (Wk) ou que se identifique com Xq, escolher outra
unidade (mais próxima que não tenha sido modificada e fazer):
Wk = Xq
Obs:
Pode acontecer situações não previstas, e que novos conjuntos apareçam na entrada
da rede, em tal situação será preciso criar mais neurônios para que a rede tenha capacidade de
reconhecer esta nova situação outras vezes.

Rede Neural Counterpropagation

02/05/02 72
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Introdução à rede Counterpropagation


A rede counterpropagation foi desenvolvida por Robert Hecht Nielsen no período de 1987 a 1988.
Quando comparada com a rede backpropagation em termos de tempo gasto para treinamento, para o
mesmo vetor de entrada, ela reduz o tempo cerca de 100 vezes. A counterpropagation não é tão
geral quanto a backpropagation, mas ela provê soluções para aquelas aplicações que não pode ter
longas sessões de treinamento. Algumas aplicações em que apresentaram resultados satisfatórios
são classificação de imagens visão artificial aplicada a robot, classificação de padrões, classificação
de “cluster “ (categoria), em que os vetores de entrada são similares.

A counterpropagation é uma combinação de dois conhecidos algoritmos; o mapa auto-organizável


de Kohonen (1987) e a rede de Grossberg (1982). Juntos eles possuem propriedades não disponíveis
em uma delas somente.
O processo de treinamento associa vetor de entrada com correspondente vetor de saída. Estes
vetores podem ser binários constituídos de um e zero, ou contínuos. Uma vez treinada, a aplicação
de um vetor na entrada produz o vetor de saída desejado. A capacidade de generalização da rede
permite a ela produzir uma saída correta, mesmo que o vetor de entrada seja parcialmente
incompleto ou parcialmente impreciso. Isto torna a rede útil para reconhecimento de padrões.

Estrutura da rede
W11 K1 G1 Y1
X1 V11
W21 V21
Wm1 Vn1

X2 K2 G2 Y2

.
.
.
Gn Yn
Xm
Kn

Camada de Kohonen Camada de Grossberg

02/05/02 73
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Rede counterpropagation completa

Onde: X = {x1, x2,............,xm} vetor de entrada ∈ a uma dada classe ou categoria (isto é; uma
classe corresponde a vetores similares, com mesmo comprimento, todavia nem todas as
componentes dos vetores são iguais, mas são próximas).
Wi é o vetor peso conectando o vetor de entrada a cada neurônio ki da camada de
Kohonen;

Exemplo:
W1 = { w11, w21,.........................................., wm1 }, é o vetor peso que liga o vetor de
entrada X ao neurônio K1, na camada de Kohonen

02/05/02 74
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Vi é o vetor peso conectando os neurônio da camada de Kohonen a cada neurônio da


camada de Grossberg;

Exemplo:
V1 = { v11, v21,............................, vn1 }, é o vetor que liga o vetor Ki da camada de
Kohonen correspondente a uma dada classe de vetor Xi de entrada, ao neurônio G1 da
camada de Grossberg;

No modelo counterpropagation, a camada 0 é denominada de camada de entrada, ela não


desenvolve nenhum cálculo, cada neurônio na camada de entrada conecta a cada neurônio na
camada 1, chamada de camada de Kohonen através de pesos separados wij, estes serão referidos
coletivamente como uma matriz W, de maneira similar, cada neurônio da camada de Kohonen
conecta a cada neurônio da camada de Grossberg através de um peso vnp, estes compreendem os
elementos da matriz peso V.
Esta estrutura é parecida com a de outros modelos, todavia a diferença esta no processamento feito
pelos neurônios na camada de Kohonen e de Grossberg.

Como em qualquer rede, a função counterpropagation é desenvolvida em dois modos:


1) modo normal, em que ela recebe um vetor de entrada X e produz um vetor de saída Y ;
2) modo de treinamento, em que um vetor é aplicado e os pesos são ajustados para produzir o vetor
desejado de saída.

Modo normal de operação – Camada de Kohonen

Na sua simples forma, a camada de Kohonen para um dado vetor de entrada, um e somente um
neurônio de Kohonen, apresenta saída lógica 1, e todos demais apresentam saída zero, isto é para
um dado vetor de entrada existe um único neurônio vencedor.
Conforme mostrado na figura anterior, associado a cada neurônio de Kohonen esta um conjunto de
pesos conectando - o a cada vetor de entrada .
Por exemplo o neurônio K1 da camada de Kohonen, tem associado a ele, os pesos w11,
w21,..........., wm1, compreendendo um vetor W1 conectando –o aos sinais de entrada x1,
x2,...................., xm, compreendendo um vetor de entrada X . Como na maioria das redes, o Net de
cada neurônio de Kohonen é simplesmente a soma das entradas ponderadas. Isto pode ser expresso
por:

Net j = x1.wij + x2.w2j + ...........................+ xm.wmj

Onde o Netj é o Net do j-ésimo neurônio de Kohonen

Netj = ∑ xi.wij
i

ou em notação vetorial

02/05/02 75
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

N = X. W

Onde N é o vetor saída da camada de Kohonen

O neurônio com o maior Net é o vencedor, sua saída é ajustada para um e os demais neurônios da
camada de Kohonen tem suas saídas são ajustadas em zero.

Camada de Grossberg –

Na camada de Grossberg o Net de cada neurônio é a soma ponderada das saídas da camada de
Kohonen, k1, k2,..............., kn, formando o vetor Ki. Os pesos conectando o vetor é designado
como vetor V constituído pelos pesos v11, v21, ..................., vn1 . O Net do neurônio de saída da
camada de Grossberg é então:

Netj = ∑ ki.vij
i =1, 2, .....,n

ou na forma vetorial

Y = K.V

Onde Y vetor é à saída da camada de Grossberg


K vetor saída da camada de Kohonen
V Matriz peso da camada de Grossberg

Se a camada de Kohonen é operada de modo que somente um neurônio está no nível “um” e todos
outros com nível zero na saída, resulta que somente um elemento do vetor K é “um” e os demais
são zero. Nesta condição, cada neurônio na camada de Grossberg reproduzirá na sua saída o
valor do peso que conecta –o ao neurônio não zero da camada de Kohonen.

Treinando a camada de Kohonen –


Para o treinamento da camada de Kohonen, um vetor de entrada é aplicado e seu produto escalar
com vetor peso associado com cada neurônio de Kohonen é calculado. O neurônio com maior
produto escalar é declarado vencedor e seus pesos são ajustados. Por causa da operação produto
escalar para calcular o NET, o seu valor é uma medida de similaridade entre os vetores de entrada e
os vetores pesos. O processo de treinamento consiste realmente em selecionar o neurônio de
Kohonen cujo vetor peso é mais similar ao vetor de entrada. É somente necessário garantir que o
treinamento separa os vetores em grupos similares.
A rede é auto organizada de forma que um dado neurônio de Kohonen tenha saída máxima
para um dado vetor de entrada.
A camada de Kohonen classifica os vetores de entrada em grupo que são similares. Isto é
acompanhado pelo ajuste dos pesos da camada de Kohonen, de modo que vetores de entrada
similares ativam o mesmo neurônio de Kohonen.
02/05/02 76
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Treinamento de Kohonen é um algoritmo auto – organizado que opera em um modo não


supervisionado. Por este motivo é difícil predizer qual neurônio específico da camada de Kohonen
será ativado para um dado vetor de entrada.
Por outro lado. é responsabilidade da camada de Grossberg produzir a saída desejada a
partir dos neurônios vencedores da camada de Kohonen, conforme será abordado posteriormente.
O treinamento é baseado na equação seguinte:

Wnovo = Wvelho + α(X – Wvelho)


Onde:

Wnovo é o novo valor de um peso conectando uma componente de entrada do vetor X ao


neurônio vencedor;
Wvelho é o valor de um peso conectando uma componente de entrada do vetor X ao neurônio
vencedor na iteração anterior;
α ( µ ) é a taxa de treinamento que pode variar durante o processo de treinamento.

Cada peso associado com o neurônio vencedor Kohonen é modificado por uma quantidade
proporcional à diferença entre seu valor e o valor da entrada a qual é conectado. A direção da
mudança minimiza a diferença entre o peso e sua entrada. Na figura dada a seguir é ilustrado esse
processo geometricamente num espaço de duas dimensões.

Preprocessamento do vetor de entrada –

É altamente desejável (mas não mandatária) normalizar todos os vetores de entrada antes de aplica-
lo à rede. Isto é feito dividindo cada componente do vetor de entrada pelo comprimento do vetor.
Este comprimento é determinado tomando a raiz quadrada da soma dos quadrados das componentes
do vetor.
x´i = xi / ( ∑ (x i)² )½
02/05/02 77
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Isto converte o vetor de entrada num vetor unitário na mesma direção. Isto é um vetor de
comprimento unitário num espaço n – dimensional.
A equação apresentada anteriormente para normalização do vetor de entrada aplicada a um espaço
de duas dimensões, generaliza o caso em que o comprimento do vetor é igual à hipotenusa do
triângulo retângulo.
Na figura apresentada a seguir é ilustrado o processo de normalização da como mencionado
anteriormente.

Na figura apresentada o vetor V tem duas componentes x = 4 e y = 3. Dividindo cada componente


do vetor V pelo seu módulo obtendo um vetor V´ com componentes 4/5 e 3/5, com V´ na mesma
direção de V, mas com comprimento unitário. Num espaço de duas dimensões os vetores
normalizados de entrada serão os pontos de um circulo de raio unitário. Esta idéia pode ser
extendida para uma rede tendo um número arbitrário de entradas, onde cada vetor termina sobre
uma hiper – superfície.

A normalização dos dados de entrada aumentará a estabilidade numérica do processamento da rede


neural e dos dados de saída é necessário devido à característica da função ativação que é usada na
unidade de processamento da rede neural

ALGORITMO

Passo 1
As unidades da camada intermediárias ou de Kohonen deve ter seus
respectivos pesos iniciados com os valores dos elementos de X que
melhor representa cada ângulo;
02/05/02 78
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Passo 2
Aplicar um vetor X para a entrada da rede;
Passo 3
Propagar calculando o net de cada unidade;

Passo 4
Determinar a unidade vencedora r (aquela unidade que possuir maior Net)
Net = max {netk}

Passo 5
Atualizar os pesos da unidade vencedora da camada escondida

W ri = Wri + µ ( xi - Wri) 0<µ < 1, i = 1, 2 ......N


(Obs: convém iniciar µ com valor grande e ir diminuindo à medida que (xi –wri) vai diminuindo).
µ é geralmente tomado com valor inicial igual 0.7, sendo reduzido à medida que o treinamento
vai avançando e µ = 0.1 é tomado nas iterações finais.)
Passo 6

normalizar os elementos Wri

Wri = Wri / √∑(Wri)²

Passo 7
Repetir os passos de 2 até 6 para todos os conjuntos de padrões (imagens)

Passo 8
Repetir o passo 7 até classificar as aglomerações de vetores de entrada

Ajuste dos pesos da camada de saída (camada de Grossberg)

Passo 1 -
Inicializar os pesos da camada de saída aleatoriamente

Passo 2 -
Aplicar o vetor de entrada X

Passo 3 -
Determinar a unidade vencedora yi

Passo 4 -
Atualizar os pesos
v kr(novo) = vkr(antigo) + β ( yq – vkr(antigo)) 0<β < 1, k = 1, 2 ......m

Obs: β é geralmente tomado com valor inicial igual 0.1 e é gradualmente reduzido à medida que
o treinamento vai progredindo.
02/05/02 79
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Passo 5-
Repetir os passos de 2 até 4 para que todas as entradas correspondam satisfatoriamente às saídas

Exemplo:

Seja o mapa representativo de posição, representado pela matriz 8x8. A dimensão da matriz é
64. Isto corresponde a um vetor X de dimensão 64

X1 X2 X3 X4 X5 X6 X7 X8
X9 X10 X11 X12 X13 X14 X15 X16
X17 X18 X19 X20 X21 X22 X23 X24
X25 X26 X27 X28 X29 X30 X31 X32
X33 X34 X35 X36 X37 X38 X39 X40
X41 X42 X43 X44 X45 X46 X47 X48
X49 X50 X51 X52 X53 X54 X55 X56
X57 X58 X59 X60 X61 X62 X63 X64

( x1.............,..........x64)

Os elementos do vetor X podem assumir valores " um ou zero "

Assim para representar uma posição de um objeto em 45° o vetor de entrada X45 terá os
elementos : x8,x15,x22, x29 iguais a 1 (um) e os demais componentes iguais a zero

Assim para representar uma posição de um objeto em 135° o vetor de entrada X135 terá os
elementos: x1,x10,x19,x20 iguais a 1 (um) e os demais componentes iguais a zero

Assim para representar uma posição de um objeto em 225° o vetor de entrada X225 terá os
elementos: x36,x43,x50,x57 iguais a 1 (um) e os demais componentes iguais a zero

Assim para representar uma posição de um objeto em 315° o vetor de entrada X315 terá os
elementos: x37,x46,x55,x64 iguais a 1 (um) e os demais componentes iguais a zero

Assim para representar uma posição de um objeto em 90° o vetor de entrada X90 terá os
elementos: x4,x55,x12,x13, x20, x21, x28,x29 iguais a 1 (um) e os demais componentes iguais a
zero

02/05/02 80
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Assim para representar uma posição de um objeto em 210° o vetor de entrada X210 terá os
elementos: x36,x37,x44,x45, x52, x53, x60,x61 iguais a 1 (um) e os demais componentes iguais a
zero

COMPRESSÃO DE IMAGEM

A imagem é subdividida em sub imagens, e cada sub imagem tem um vetor que melhor a
represente.

02/05/02 81
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

ASPECTOS PRÁTICOS DO USO DA REDE NEURAL

Seleção de rede neural

O procedimento de seleção de rede neural para solução de um problema, se faz


comparando suas características com aquelas em outras aplicações que têm sido bem
sucedidas. Com o objetivo de dar uma visão do campo de aplicação das redes neurais
artificiais, Bailey e Thompson em 1990 fizeram um estudo no sentido de identificar o
potencial de aplicação das redes neurais e um procedimento heurístico para orientação
no uso com sucesso em suas aplicações. A seguir é dada uma orientação para os tipos
de aplicação com sucesso:
• Tecnologia convencional de computador é inadequada;
• Problema que requer raciocínio qualitativo ou quantitativo complexo;
• Solução é derivada a partir de parâmetros altamente interdependentes que não tem
quantificação precisa;
• O fenômeno envolvido depende de parâmetros múltiplos interangindo;
• Os dados estão prontamente disponíveis, mas, são multivariados e intrinsecamente
com ruído ou sujeitos a erros;
• Existe uma grande quantidade de dados a partir de exemplos específicos úteis para
modelar o sistema;
• Alguns dos dados podem ser errôneos ou perdidos;
• O fenômeno envolvido é tão complexo que outra abordagem não é apropriada,
demasiadamente complicada ou demasiadamente expansiva;
• O tempo para desenvolvimento do projeto é curto, mas o tempo disponível para
treinamento da rede é suficiente.

Aplicações bem sucedidas de redes neurais envolve reconhecimento de padrões,


mapeamento estatístico, ou modelamento. Dentre aplicações bem sucedidas pode-se
incluir validação de sinal, processo de monitoramento, diagnóstico, processamento de
sinal e informação e controle de sistema complexo freqüentemente não
linear.Contudo, problemas que pode ser resolvido usando metodologia convencional
de computador especialmente aquelas que requer alta precisão ou envolve rigor
matemático, não são usualmente adequado para uma abordagem com redes neurais
artificiais.

Escolha do Tipo de Rede –

A adequada escolha do tipo de rede neural artificial (aprendizado supervisionado,


não supervisionado ou reforçado), depende dos dados disponíveis. O aprendizado
supervisionado requer pares de dados consistindo de padrões de entrada e saída
desejada, que são algumas vezes difícil de obter. Já o treinamento não
supervisionado classifica internamente os padrões e não necessita de resultados
esperados. Os dados necessários para treinamento não supervisionado são desta
forma mais fáceis e menos dispendiosos, mas a capacidade da rede é
significativamente menor que para treinamento supervisionado. Um compromisso
02/05/02 82
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

entre treinamento supervisionado e não supervisionado é o treinamento reforçado,


que necessita de uma entrada e somente um grau ou sinal recompensa como saída
desejada.
O tempo necessário para o treinamento e lembrança é também importante no
desenvolvimento da rede neural. Geralmente as redes neurais artificiais têm um tempo
treinamento relativamente grande, mas o tempo para lembrar é por outro lado curto,
envolve somente uma simples passagem do exemplo de teste através da rede.
Quando a rede neural artificial é implementada em hardware com os neurônios
operando em paralelo, o tempo de lembrança é virtualmente instantâneo.
Por outro lado, certos modelos, tais como o probabilístico, função básica radial, e
regressão geral, treina numa simples passada de exemplos através da rede, mas o
tempo de execução é essencialmente o mesmo que o tempo de treinamento. Portanto
a necessidade de satisfazer exigência on-line (no controle de um sistema de controle
ativo) pode ditar o tipo de rede neural usado, ou ela pode requerer que a rede neural
seja implementada em hardware.

Projeto da rede neural

Os tamanhos da rede neurais são algumas vezes relacionados à experiência do


usuário tanto quanto da natureza do problema. Usuários principiantes tendem a fixar
um tamanho pequeno para rede e com isto reduzindo o tamanho da aplicação
consequentemente. Aqueles usuários com considerável experiência com rede neural
são geralmente inclinados a deixar a natureza do problema decidir o tamanho da
rede. Hoje em dia com o software de simulação de redes neurais artificiais para
computadores pessoais e workstation, uma rede neural com cerca de 1000 neurônio e
cerca de 100mil conexões pode não ser um limite superior muito prático para modelos
não estatístico como backpropagation ou counterpropagation.

Escolha da saída

O tipo de saída é determinado usualmente pela natureza da aplicação. A saída da


função ativação (função ativação) pode ser binária ou escala contínua (muitos
valores individuais).

Função de Ativação do Neurônio

Tipicamente, a função de ativação é uma função contínua que cresce


monotonicamente entre um limite inferior e um limite superior (0 e 1 ou -1 e 1) quando
a soma pondera líquida aumenta em magnitude ( Net).
As funções de ativação com estas características freqüentemente usadas são:
Sigmoide ( tem saída contínua no intervalo [0, 1];
Tangente hiperbólica ( tem saída contínua no intervalo [-1, 1];
Além deste tipo de função existem outras funções cujas saídas assumem valores
descontínuos limitados inferiormente e superiormente respectivamente como as
funções:

02/05/02 83
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Step (tem saída limitada binária {0, 1}), freqüentemente utilizada quando a entrada e
saída são binárias;
Sinal (tem saída bipolar {-1, 1}), freqüentemente utilizada quando a entrada e saída
são bipolares.
Certos modelos de rede como Backpropagation, requer que a função de ativação e
sua derivada sejam contínuas, então neste modelo de rede são usadas somente
funções contínuas como função de ativação.

Número de neurônio das Camadas

Uma rede Neural Perceptron Multicamada (NPM), tipo Backpropagation, com três
camadas, possui uma camada de entrada, uma camada intermediária e uma camada
de saída. O número de camada pode ser maior dependendo da precisão que se
deseja no mapeamento da entrada na saída. O aumento do número de camadas
intermediárias aumenta a potência da rede neural, mas requer um tempo
significativamente maior para treinamento e um número grande de exemplo de
treinamento para treinar a rede adequadamente. As camadas intermediárias atuam
como camada de síntese, extraindo as características dos padrões de entrada da
rede neural.

Número de Neurônio por Camada

Os números de nuerônios nas camadas de entrada e de saída são determinados pela


natureza do problema. Determinação do adequado número de neurônio para a
camada intermediária é freqüentemente realizado através de experimentação. Poucos
neurônios na camada intermediária impedem que a rede mapei corretamente a
entrada para a saída, enquanto que muitos impedem a generalização e aumenta o
tempo de treinamento. Quando o número de neurônio é muito grande, a rede
memoriza os padrões de entrada sem extrair características para generalizar. Assim
quando apresentado novo padrão para a rede ela é incapaz de processa-lo
adequadamente, porque ela não é capaz de descobrir os princípios básicos do
sistema. Para uma rede neural com uma camada intermediária, é comum na prática
fazer o número de neurônios da camada intermediária igual à cerca de dois terço do
número de elementos do vetor de entrada. Quando existe mais que uma camada
intermediária, o número de neurônio é significativamente menor em cada camada
intermediária. Testes feitos com grandes e pequenos números de neurônios na
camada intermediária muda o tempo de treinamento bem como a habilidade da rede
neural generalizar. Técnicas de otimização tem sido implementada como metodologia
para determinar o número de neurônio ótimo para camada intermediária. Podemos
citar como técnicas; programação linear, algoritmo genético e outras.

REFERÊNCIAS BIBLIOGRÁFICAS PARA ESTUDO DE REDES NEURAIS ARTIFICIAIS

02/05/02 84
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

As referências abaixo relacionadas estão dispostas para uma orientação de


leitura de maneira gradativa como uma iniciação ao estudo de redes neurais
artificiais.

1. Redes Neurais Artificiais – Teoria e Aplicações


Antonio de Pádua Braga
Teresa Bernarda Ludeemir
Andre´Carlos Ponce de Leon Ferreira Carvalho
Editora – Livros Técnicos eCientíficos Editora S.A. - 2000

2. Redes Neurais Artificiais – Fundamentos e Aplicações


Zsolt L. Kovács
Editora collegium cognito – São Paulo - Segunda Edição –1996

3. Neural Computing – Theory and Practice


Philip D. Wasserman
Editora: Van Nostrand Reinhold , New York, 1989

4. Neural Netowrks Algorithms, Applications and Programinng Techniques


James A. Freeman and David. M. Skapura
Editora: Addison Wesley – Publishing Company, USA, 1991

5. Neural Networks : A Comprehensive Fundation


Simon Haykin
Editora: Prentice Hall, USA, New Jersey, 1999

6. Neuro – Fuzzy and Soft Computing A Computational Approach to Learning and


Machine Intelligence,
J. S. R. Jang, C. T. Sun, E. Mizutani
Editora: Prentice Hall – Upper Saddle River, USA, 1997

7. Computational Intelligence : An Introduction


Witold Pedrycz
Editora: CRC – Press – 1998

Aplicações:
8. Patter Recognition with Neural Networks in C++
Abhijit S. Pandya and Robert B. Macy
Editora: CRC – Press – IEEE Press, USA , 1995

9. Artificial Neural Networks for Intelligence Manufacturing


Cihan H. Dagli
02/05/02 85
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

Editora: Chapman & Hall, London, 1994

02/05/02 86
CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO PUC - MG

ANEXO

TOOLBOX DE REDES NEURAIS

02/05/02 87

Vous aimerez peut-être aussi