You are on page 1of 57

Sistemas Inteligentes

Alexandre Romariz

24 de Agosto de 2007
Conteúdo

1 Sistemas Inteligentes e Redes Neurais 4


1.1 Introdução aos Sistemas Inteligentes . . . . . . . . . . . . . . . . 4
1.1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.2 A abordagem de Engenharia para I.A. . . . . . . . . . . . 5
1.2 Introdução às Redes Neurais . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Definição e Motivação . . . . . . . . . . . . . . . . . . . 5
1.2.2 O que redes neurais não são . . . . . . . . . . . . . . . . 7
1.2.3 Histórico . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.4 A motivação biológica . . . . . . . . . . . . . . . . . . . 9
1.2.5 Exemplos de operação . . . . . . . . . . . . . . . . . . . 14

2 Rede de Hopfield e Rede de Retropropagação 15


2.1 Rede de Hopfield . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.1 Arquitetura e Definições . . . . . . . . . . . . . . . . . . 15
2.1.2 Definição da matriz de interconexões . . . . . . . . . . . 16
2.1.3 Características da Rede de Hopfield . . . . . . . . . . . . 17
2.1.4 Resfriamento simulado . . . . . . . . . . . . . . . . . . . 18
2.2 A rede de retropropagação . . . . . . . . . . . . . . . . . . . . . 19
2.2.1 O Perceptron e a regra delta . . . . . . . . . . . . . . . . 19
2.2.2 O Perceptron multicamada e a regra de retropropagação
de erro . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.3 Algumas observações sobre a rede de retropropagação . . 25
2.2.4 Roteiro para treinamento . . . . . . . . . . . . . . . . . . 27
2.2.5 Limitações da rede de retropropagação . . . . . . . . . . 29

3 Outras Redes Neurais e Algoritmos de Treinamento 32


3.1 Melhoramentos ao algoritmo de gradiente . . . . . . . . . . . . . 32
3.1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.2 Algoritmo de descida mais íngreme (steepest descent) . . 33
3.1.3 Algoritmo de gradiente conjugado . . . . . . . . . . . . . 33
3.2 Redes de funções de base radiais . . . . . . . . . . . . . . . . . . 35

2
CONTEÚDO

3.3 Aprendizado por reforço . . . . . . . . . . . . . . . . . . . . . . 36


3.4 Redes de Kohonen e sistemas auto-organizáveis . . . . . . . . . . 37

4 Sistemas nebulosos 40
4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2 Lógica nebulosa . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3 Regras nebulosas e possibilidade . . . . . . . . . . . . . . . . . . 42
4.4 Saída de uma regra nebulosa . . . . . . . . . . . . . . . . . . . . 43
4.5 Dificuldades e Aplicações Práticas . . . . . . . . . . . . . . . . . 44
4.6 Redes Neurais e Lógica Nebulosa . . . . . . . . . . . . . . . . . 45

5 Algoritmos Genéticos 47
5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.2 Elementos Principais e Exemplo . . . . . . . . . . . . . . . . . . 48
5.3 Aplicações típicas . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.3.1 Evoluindo tabelas de transição em autômatos celulares . . 50
5.3.2 Predição de valores . . . . . . . . . . . . . . . . . . . . . 52
5.3.3 Evoluindo Redes Neurais . . . . . . . . . . . . . . . . . . 52
5.4 Questões de implementação . . . . . . . . . . . . . . . . . . . . 53
5.4.1 Quando usar . . . . . . . . . . . . . . . . . . . . . . . . 53
5.4.2 Codificação . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.4.3 Seleção . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Sistemas Inteligentes 3
Capítulo 1

Sistemas Inteligentes e Redes


Neurais

1.1 Introdução aos Sistemas Inteligentes


1.1.1 Motivação
O princípio básico de funcionamento dos computadores digitais não se distanciou
do proposto na década de 40. Houve um gigantesco avanço tecnológico, mas a
arquitetura do computador permanece basicamente a mesma. Há diferenças muito
acentuadas entre esta arquitetura e o que parece ser a maneira humana de racioci-
nar, diferenças que não foram atenuadas por mudanças na tecnologia empregada.
Para que um computador possa ser usado na solução de uma classe especí-
fica de problemas, um algoritmo geral de solução para esta deve ser definido. A
atuação do computador limita-se à execução repetitiva dos passos do algoritmo,
com rapidez e precisão. Não há paralelo possível com a capacidade humana de
buscar criativamente soluções para problemas novos, de aprender com os próprios
erros, ou de buscar uma solução aproximada para um problema complexo, com
uso razoável de tempo e recursos. Além disso, as linguagens compreendidas pelos
computadores estão muito longe da flexibilidade e robustez da linguagem natural.
Tudo isso contribui para que classes de problemas, tratadas com facilidade por
animais, representem um grande desafio para os mais poderosos computadores.
Como exemplos, podemos citar a interpretação de imagens, o controle motor e a
tomada de decisões.
A Inteligência Artificial (IA), ou Inteligência Computacional, reúne técnicas
que buscam integrar aos sistemas de processamento características típicas do com-
portamento inteligente. A dificuldade em se encontrar uma definição consensual
de IA e definir claramente seus limites reside no problema da definição do próprio
conceito de inteligência. Pode-se dizer que a capacidade de solucionar problemas

4
1.2. INTRODUÇÃO ÀS REDES NEURAIS

relacionados à percepção, interpretação, inferência e tomada de decisões, com


elevado grau de auto-adaptação, define inteligência no escopo de IA.

1.1.2 A abordagem de Engenharia para I.A.


Veremos a seguir que a história da IA inclui muitas promessas não cumpridas de
“comportamento inteligente” para as máquinas. Esta série de relativos insucessos,
associada à polêmica existente na questão da definição de inteligência e sobre a
possibilidade de máquinas exibirem verdadeira inteligência resulta, de tempos em
tempos, em uma violenta reação contrária a todo este campo de pesquisa.
Mesmo entre os que se dedicam ao assunto, profundas diferenças entre con-
cepções filosóficas e políticas dividem a área em escolas praticamente irreconci-
liáveis. Os pesquisadores que investigam as chamadas Redes Neurais Artificiais,
por exemplo, enfatizam a capacidade de aprendizado de seus modelos de com-
putação. Já os que se dedicam à chamada IA Clássica ou Simbólica, estudando
mecanismos inteligentes de manipular lógica e raciocínio em computadores, en-
fatizam um processamento estruturado em regras pré-definidas. Independente das
vantagens técnicas dessas diferentes abordagens, o que realmente torna estes dois
campos praticamente irreconciliáveis é muito mais a questão filosófica da impor-
tância relativa daquilo que nos é inato e do que aprendemos, uma das discussões
mais acaloradas da história do pensamento.
Neste minicurso, estas interessantes questões não serão abordadas. Discutire-
mos especificamente as técnicas conhecidas como Redes Neurais, Lógica fuzzy e
Algoritmos Genéticos, interessados em possíveis aplicações em engenharia. Es-
tas aplicações se justificam porque parte dos problemas atacados por I.A. são de
grande interesse nas áreas de controle, otimização e processamento de sinais, pro-
blemas essenciais em engenharia.

1.2 Introdução às Redes Neurais


1.2.1 Definição e Motivação
Redes Neurais Artificiais (ou simplesmente Redes Neurais) são sistemas de pro-
cessamento numérico, de inspiração biológica, constituídos por um grande nú-
mero de processadores simples altamente interconectados, em uma arquiteturas
de processamento inspiradas no sistema nervoso dos seres vivos. A idéia princi-
pal por trás desta abordagem é a de que computações complexas podem ser obti-
das pela combinação de muitos processadores simples altamente interconectados,
o que é denominado conexionismo. Substitui-se, nesta abordagem, a arquitetura
baseada em um processador central por um sistema de Processamento Paralelo e

Sistemas Inteligentes 5
CAPÍTULO 1. SISTEMAS INTELIGENTES E REDES NEURAIS

P a r t i d o
P a n c o
Figura 1.1: No reconhecimento de padrões, seres humanos não têm dificuldade
de relacionar estímulos iguais a significados diferentes, dependendo do contexto.
Na Figura, o “P” da palavra superior e o “B” da inferior são, na verdade, o mesmo
símbolo. Adaptado de McClelland et al.[1].

Distribuído, um dos nomes pelos quais os sistemas conexionistas são conhecidos.


Características importantes dos processos cognitivos, como a capacidade de con-
siderar simultaneamente múltiplas restrições ou de combinar múltiplas fontes de
conhecimento são representadas com naturalidade nesta arquitetura. Tais caracte-
rísticas contribuem, por exemplo, para a rapidez e robustez do processo humano
de reconhecimento de padrões, como poder ser ilustrado na Figura 1.1.
Outra característica do comportamento inteligente que se torna mais facil-
mente representada nesta abordagem é a capacidade de generalização. Os estí-
mulos complexos recebidos do mundo exterior por um sistema inteligente nunca
se repetem exatamente. Torna-se fundamental para a operação nestas condições
utilizar-se o princípio segundo o qual estímulos semelhantes devem levar a com-
portamento semelhante. Ao substituirmos o processamento de símbolos discretos
(do tipo presente ou não presente) por padrões de saída em processadores (fun-
ções contínuas), torna-se possível reconhecer proximidade entre estímulos e daí
generalizar a experiência existente.
Certos sistemas conexionistas enfatizam também um novo ponto de vista para
o processo de computação: o ponto de vista de sistema dinâmico. Computar uma
solução corresponde a acompanhar a dinâmica natural de um sistema que evolui
com o tempo até seu ponto de equilíbrio, onde as restrições impostas estarão,
dentro do possível, obedecidas.
Finalmente, o conexionismo nos propõe uma mudança no nível de análise
do comportamento inteligente. Os modelos propostos trabalham com represen-
tações distribuídas, nas quais a cada conceito simbólico corresponde um padrão
de ativação em um certo conjunto de unidades processadoras. O sinal de saída
de um processador isolado não costuma representar um conceito claro, pelo que a
abordagem conexionista é conhecida também como subsimbólica. O ideal cone-
xionista é demonstrar como os processos cognitivos conscientes e a manipulação

Alexandre Romariz 6
1.2. INTRODUÇÃO ÀS REDES NEURAIS

Rede Neural Arquitetura Clássica


Processamento paralelo e distri- Processamento centralizado,
buído com grau variável de parale-
lismo
Processamento numérico Processamento numérico e/ou
simbólico
Aprendizado Programação
Sujeita a erros Precisa, nas condições normais
de operação
Tolerante a falhas Falhas catastróficas
Aplicada quando apenas exem- Aplicada onde há um bom algo-
plos são conhecidos ritmo geral de solução
Tabela 1.1: Comparação entre rede neural e arquitetura clássica de processamento.

de conceitos simbólicos emergem do nível subsimbólico.


Uma comparação entre um computador em arquitetura clássica e uma rede
neural é feita na Tabela 1.1.

1.2.2 O que redes neurais não são


Não são uma “imitação do cérebro”. A soma de sinais de entrada efetuada pelo
neurônio artificial apresentado anteriormente pode ser associada ao pro-
cesso, efetuado pela capacitância da membrana do neurônio biológico, de
integração temporal dos pulsos elétricos recebidos. Ainda nesta analogia,
o valor de saída representa a freqüência dos pulsos gerados pelo neurônio.
Esta analogia será melhor desenvolvida na Seção 1.2.4.
O modelo pode causar estranheza pela sua simplicidade quando comparado
ao que se conhece da intrincada troca de sinais elétrico-químicos no sistema
nervoso. Há uma série de aspectos conhecidos da fisiologia do cérebro que
não estão representados nas chamadas redes neurais artificiais. A maioria
destes modelos não lida com a organização espacial dos neurônios e das
interconexões, e não prevêem a existência de vários tipos de sinais entre
processadores. Se a inspiração biológica é um dos fundamentos do conexi-
onismo, é de se estranhar a ausência, nos modelos pesquisados, de análogos
a estruturas conhecidas do sistema nervoso natural. Mas um equilíbrio deve
ser buscado entre a plausibilidade biológica dos modelos e sua tratabilidade
matemática. Conhecimentos de neurologia são usados como inspiradores
de princípios gerais que os modelos estudados procuram seguir. Alguns dos

Sistemas Inteligentes 7
CAPÍTULO 1. SISTEMAS INTELIGENTES E REDES NEURAIS

mais importantes são os seguintes as interconexões entre os neurônios for-


mam uma rede densa, a comunicação entre eles é feita pelo envio de sinais
excitatórios e inibitórios, e o aprendizado envolve alterações nas conexões.
É de se esperar que novos conhecimentos de fisiologia neurológica venham
a contribuir para a evolução do modelo, mas as propostas no campo de re-
des neurais não se limitam a reproduzir ou modelar fatos conhecidos da
morfologia cerebral.
No entanto, recentemente a questão do caráter temporal do processamento
biológico de informações foi retomada, e alguns novos modelos processam
pulsos ao longo do tempo, ao invés de números reais.
Não são uma novidade de interesse meramente acadêmico. As pesquisas no se-
tor são tão antigas quanto a idéia do computador digital. Seus conceitos fun-
damentais podem ser encontrados no século passado! O que de fato ocorreu
foi um ocaso das pesquisas na década de 40 (o que coincide com o “boom”
da máquina a programa armazenado) e uma forte retomada do fim dos anos
80 (ver histórico). Hoje a tecnologia neural faz parte de sistemas comerciais
de reconhecimento, controle e automação em todo o mundo.
Não são o paradigma do “computador do futuro”. Não há motivo para se pen-
sar que Redes Neurais vão substituir o paradigma clássico de computação
em todas as áreas (em operações matemáticas, por exemplo). O que se
imagina que possa ocorrer é a interação entre computação simbólica e sub-
simbólica em sistemas inteligentes.
Não são sistemas com pouco fundamento matemático. A matemática envolvi-
da é muito bem fundamentada, e conhecida há muito tempo. Não há nada
de aleatório ou misterioso em sua operação. Como qualquer sistema não
linear, existe dificuldade de análise no que diz respeito a certas questões
(estabilidade, definição de estrutura, algoritmo e parâmetros de treinamento
ótimos para um dado problema) e por isso há espaço para heurísticas e pro-
cedimentos de tentativa e erro.

1.2.3 Histórico
Como dissemos acima, os sistemas conexionistas têm uma história tão ou mais
antiga do que a dos computadores digitais. Já nos trabalhos de James (1890) en-
contramos os princípios fundamentais do que são hoje o modelo de neurônio e
o princípio da associação. Mas a primeira análise matemática das potencialida-
des de redes de elementos processadores inspirados em neurônios data da década
de 40. A demonstração (feita por McCulloch e Pitts) de que associações des-
tes neurônios artificiais podem implementar qualquer função lógica finita foi o

Alexandre Romariz 8
1.2. INTRODUÇÃO ÀS REDES NEURAIS

primeiro sucesso teórico do conexionismo. John von Neumann, ao propor a má-


quina a programa armazenado, cita este trabalho e procura associar as operações
de sua máquina aos neurônios de McCulloch e Pitts.
A primeira onda de entusiasmo com redes neurais surgiu com o Perceptron
de Rosenblatt (1958). Este sistema consegue aprender a classificação de padrões
a partir de exemplos. Pela primeira vez via-se um modelo de aprendizado e per-
cepção com resultados concretos. Ao entusiasmo seguiu-se uma grande crise com
a descoberta das limitações do Perceptron. Tornou-se clássico o caso da função
ou-exclusivo, que apesar de sua aparente simplicidade não pode ser ensinada a
este sistema. A extensão do Perceptron para superar estas limitações envolvia
uma metodologia matemática desenvolvida na década de 70 e que só viria a ser
empregada nos anos 80. O trabalho de Minsky e Papert (1969) onde todas estas
dificuldades são apontadas, acompanhadas da declaração de uma crença pessoal
(e errônea) dos autores de que a extensão do modelo seria inútil, marca o ocaso
das pesquisas em redes neurais na década de 70.
No início dos anos 80, o físico Hopfield traz de volta o interesse na área ao
propor um sistema dinâmico baseado em neurônios que desempenha a função de
memória associativa. Barto et al. (1983) também utilizam neurônios artificiais
com aprendizado associativo para tarefas complexas de controle. Kohonen (1984)
estuda a capacidade de auto-organização destes sistemas. Mas o ressurgimento
do interesse em conexionismo a que nos referimos anteriormente ocorreu com
o uso do algoritmo de treinamento por retropropagação de erro por um grupo
auto-intitulado PDP (Parallel Distributed Processing) em 1986, que permitiu a
extensão do Perceptron de Rosenblatt para várias camadas de neurônios e assim
superou as dificuldades daquele modelo. Observou-se então uma explosão de apli-
cações de redes neurais nos mais variados campos: reconhecimento de padrões
(com aplicações industriais, militares, em medicina e finanças), previsão de séries
temporais (com aplicações em economia e finanças), identificação e controle de
sistemas dinâmicos complexos, compressão de dados, etc.
Temas recentes da pesquisa em redes neurais incluem métodos numéricos
mais eficientes para treinamento, algoritmos genéticos aplicados ao treinamento,
arquiteturas dedicadas ao controle de sistemas dinâmicos, arquiteturas modulares,
sistemas híbridos redes neurais / lógica nebulosa e modelos que incorporam as
características dinâmicas geralmente desprezadas nos modelos tradicionais.

1.2.4 A motivação biológica


Aplicar engenharia reversa para soluções existentes em biologia é um caminho
atraente mas difícil. No caso particular da arquitetura de processamento de sis-
temas nervosos complexos, a questão de quais características são fundamentais e
quais detalhes de implementação podem ser abstraídos está longe do fim. Ainda

Sistemas Inteligentes 9
CAPÍTULO 1. SISTEMAS INTELIGENTES E REDES NEURAIS

assim, o sucesso prático das redes neurais artificiais lembra-nos da diferença entre
modelagem precisa de sistemas biológicos (ou teorias convincentes de comporta-
mento inteligente) e computação útil de inspiração neural.
Uma característica peculiar da organização do sistema nervoso é o seu caráter
distribuído e não-centralizado, bem diferente da arquitetura mais bem sucedida
dos computadores digitais. A tese de que o comportamento inteligente é resultado
de um processo coletivo, emergente de muitas unidades simples, conectadas de
maneira densa e plástica deu origem à idéia de redes neurais artificiais.
Por outro lado, uma característica fundamental de modelos abstratos de com-
putação é sua universalidade e independência de mecanismos de implementação.
O mesmo conjunto de funções computáveis pode ser gerado por modelos que apa-
rentam não ter semelhança alguma. Do ponto de vista teórico, há ainda debates
sobre serem os sistemas conexionistas uma porta para um novo nível de análise
da computação [2] ou apenas uma alternativa de implementar certas funções [3].
De um ponto de vista de engenharia, computação neural pode ser vista como útil
para uma classe específica de problemas, e seu valor é portanto independente de
sua eventual relevância em Inteligência Artificial.
Pesquisadores do campo de Redes Neurais gostariam de dispor de um modelo
simples que representasse todas as características principais do neurônio, já que
se acredita que o poder computacional destes sistemas emerge da complexidade
de suas interações. Uma visão qualitativa de propriedades neurais é apresentada a
seguir.
Neurônios são sistemas dinâmicos intrincados, e sua operação depende de uma
cadeia de fenômenos bio-eletroquímicos. Vamos nos concentrar em característi-
cas relativamente comuns de neurônios, ainda que praticamente qualquer afirma-
tiva nesse campo possa ser contestada com um contra-exemplo de uma célula
nervosa específica [4]. A Figura 1.2 apresenta esquematicamente um neurônio.
Nele, duas estruturas originam-se do corpo celular: a árvore dendrítica (que pode
ser vista como uma coleção de terminais de entrada) e um axônio, pelo qual o
sinal de saída propaga.
Neurônios mantêm uma diferença de potencial elétrico em sua membrana ex-
terna, em decorrência de permeabilidade seletiva de íons e bombas ativas, que car-
regam íons contra o gradiente de concentração. Uma perturbação deste potencial
de equilíbrio (provocada, por exemplo, por um estímulo externo em um neurô-
nio sensorial, ou pela influência da atividade de outro neurônio, como discutido
abaixo), propaga-se pela célula em um processo análogo à transmissão de um si-
nal elétrico em uma linha de transmissão. Este mecanismo passivo de condução
não é efetivo para distâncias grandes. Um mecanismo periódico de regeneração é
necessário, já que axônios podem se estender por uma grande fração do cérebro,
ou mesmo por todo o corpo [5].
Um processo ativo de regeneração existe [6]. A permeabilidade seletiva dos

Alexandre Romariz 10
1.2. INTRODUÇÃO ÀS REDES NEURAIS

Nodes of Ranvier

Axon
(a)
Myelin sheath
Axon
Cell Body hillock
Dendrites

(b)
Σ
W W

Figura 1.2: (a) Visão esquemática de um neurônio típico. Sinais elétricos múl-
tiplos se propagam pelos dendritos. Potenciais de ação são gerados inicialmente
no hillock do axônio e podem ser restaurados em cada seção não-mielinada (Nós
de Ranvier). Na visão detalhada, uma conexão sináptica é mostrada. Na maio-
ria dos casos, a interconexão entre neurônios é mediada por substâncias químicas
(neurotransmissores). (b) Uma abstração típica para fins computacionais.

canais iônicos é, ela mesma, controlada por tensão, criando um laço de realimen-
tação. Quando um segmento da célula é despolarizado além de um certo valor,
certos canais iônicos (principalmente canais de Na+ ) tornam-se cada vez mais
permeáveis, e assim o fluxo iônico leva o sistema a um desequilíbrio ainda maior
de potencial. Outros canais (principalmente de K+ ) de dinâmica mais lenta são
ativados mais tarde, e trazem o sistema de volta ao estado de repouso. O resultado
global é um pico bem definido na tensão da membrana, conhecido como potencial
de ação.
Este processo ativo de produção de pulsos geralmente ocorre primeiro no seg-
mento inicial do axônio (hillock), onde a concentração de canais controlados por
tensão é maior e o limiar para a geração do AP é menor [6]. Ainda que haja
evidência para propagação ativa e não-linear de APs na árvore dendrítica, é co-
mum modelar esta propagação como passiva, com o axônio realizando uma soma
e comparação com um limiar. APs permitem transmissão por distâncias longas, já
que eles podem ser regenerados em cada região não-mielinada do axônio (nós de
Ranvier) por um processo fundamentalmente igual ao da geração inicial de APs.

Sistemas Inteligentes 11
CAPÍTULO 1. SISTEMAS INTELIGENTES E REDES NEURAIS

Eles também têm papel essencial na comunicação entre neurônios, como veremos
abaixo.
Sinais de entrada fracos, que não atingem o limiar de geração de APs não se
propagam eficientemente. Quanto mais forte o sinal, mais cedo ocorre o AP. Uma
vez que a permeabilidade dos canais demora um pouco para se re-estabelecer, a
produção de um novo AP em um tempo curto é relativamente difícil. Estes fatos
sugerem que a relação entre intensidade do sinal de entrada e freqüência dos APs
é uma função crescente com limiar e saturação, uma característica comum a quase
todos os modelos de redes neurais artificiais.
O processo pelo qual os neurônios são acoplados (sinapse) é também um sis-
tema dinâmico complexo. Na maioria dos casos, não há contato elétrico. Um AP
inicia a liberação de substâncias químicas (neurotransmissores) que se ligam a sí-
tios específicos do neurônio receptor, abrindo canais iônicos, e despolarizando-o.
A eficiência desta conexão, que afeta a amplitude e o atraso do potencial pós-
sináptico, varia no espaço (conexões chegando a posições diferentes de um neurô-
nio podem ter efeitos diferentes) e em múltiplas escalas de tempo. Em particular,
um processo de aumento seletivo de eficiência sináptica no longo prazo, baseado
na correlação de atividades pré e pós-sinápticas (Potenciação de Longo Prazo) é
considerado fundamental para aprendizado e memória [7].
Dado este processo complexo, não fica claro nem ao menos quais variáveis
físicas realmente representam informação de alto nível. O potencial de ação cer-
tamente tem um papel relevante, uma vez que ele desempenha função fundamental
na comunicação neural. Uma abordagem bastante comum, denominada hipótese
do código freqüencial (ver Recce 1999 [8]) toma a freqüência de disparo como
variável principal. Esta, como mencionado acima, é uma função crescente, não-
linear, das entradas. A idéia de que a temporização dos pulsos carrega informação
(hipótese do código temporal) só ganhou atenção recentemente em estudos ori-
entados a computação. Esta idéia não necessariamente é oposta a anterior, já que
é concebível que ambos os códigos estejam sendo usados para tarefas diferentes
de transmissão da informação, ou que cada um é adequado para tarefas em escalas
temporais diferentes [9].
O desenvolvimento dos primeiros computadores eletrônicos trouxe um au-
mento no interesse de modelos neurais para computação [10, 11]. Eles baseiam-se
principalmente no código freqüencial e dão ênfase a dois aspectos da arquitetura
do sistema nervoso: soma adaptativa de entradas, e função de ativação geralmente
não-linear. Este modelo de neurônio artificial é descrito pelo mapa não-linear e
multidimensional f : RN → R

y = f wT (t)x(t)

(1.1)
onde y é a saída do neurônio, w um vetor real de ’pesos sinápticos’ e x um vetor de

Alexandre Romariz 12
1.2. INTRODUÇÃO ÀS REDES NEURAIS

Output Connection Layer


(a)

Hidden Connection Layer

Adaptive Connections
(b)
Delayed recurrent connections
Input connection (initial state)

Lateral inhibition
(c)

Figura 1.3: Exemplos de conectividade de Redes Neurais Artificiais. Círculos es-


curos representam entradas externas. (a) Arquitetura multi-camada feed-forward)
usada na rede de retropropagação. (b) Arquitetura recursiva totalmente conectada
da rede de Hopfield. (c) Conexões monocamada lateralmente inibitórias (com
raios de atuação variantes no tempo) no Mapa auto-organizável de Kohonen.

valores de entrada de outros neurônios ou do ambiente externo. Os pesos sinápti-


cos w variam lentamente no tempo, durante a adaptação ou aprendizado. Funções
de ativação f comuns são as chamadas funções logísticas, como a sigmóide e a
tangente hiperbólica.
Esses neurônios artificiais podem ser combinados de muitas formas para for-
mar redes neurais artificiais (veja a Figura 1.3). Redes feed-forward (1.3a) são
estruturas de camadas de neurônio, com conexão total entre camadas vizinhas.
Esta é a arquitetura da rede de retropropagação de erro (Backpropagation) [12],
possivelmente o modelo mais usado de rede neural. Também é possível ter to-
das os neurônios recebendo uma mesma entrada, com interações inibidoras entre
neurônios vizinhos ( 1.3c). Esta configuração é usada no mapa auto-organizável
de Kohonen [13]. Outro exemplo de conectividade é a rede recorrente e totalmente
conectada ( 1.3b), usada no modelo de Hopfield para memória associativa [14].

Sistemas Inteligentes 13
CAPÍTULO 1. SISTEMAS INTELIGENTES E REDES NEURAIS

1.2.5 Exemplos de operação


Terminamos este capítulo com exemplos de operação de algumas das redes apre-
sentadas na seção anterior. Estes exemplos serão apresentados em maior detalhe
adiante.
Em primeiro lugar, consideremos a utilização da rede backpropagation para
reconhecimento de padrões (1.3a). Em particular, imaginemos que as entradas
sejam valores de intensidade luminosa em cada pixel de uma imagem, e as saídas
sejam classes entre as quais as imagens devam ser classificadas (podemos imagi-
nar uma aplicação em que a rede deve indicar qual letra do alfabeto está indicada
pela imagem apresentada).
O número de camadas deve ser definido por tentativa e erro (geralmente duas
ou três), bem como o número de neurônios nas camadas intermediárias. Na ca-
mada de saída, o número de neurônios corresponde ao número de classes existen-
tes. (exceto na camada de saída, na qual o número de neurônios corresponde ao
número de classes existentes). A função de ativação dos neurônios costuma ser
do tipo sigmóide ou tangente hiperbólica.
A esta rede aplica-se aprendizado supervisionado: uma série de exemplos (va-
lores dos pixels de imagens conhecidas, e a respectiva classe) é fornecida à rede,
que ajusta os pesos das conexões entre neurônios seguindo algoritmo específico.
Se o aprendizado é concluído com sucesso, a rede é capaz de classificar com
grande taxa de acerto padrões diferentes dos estudados (capacidade de generali-
zação)
Vejamos, como segundo exemplo, uma rede de Hopfield (1.3b) aplicada em
um problema de otimização. Neste problema desejamos encontrar que conjunto
de parâmetros minimiza uma certa função. Como todos os neurônios estão liga-
dos a todos os outros, a partir de uma condição inicial, vários neurônios mudarão
de estado, o que produzirá a mudança de estados de outros neurônios, e assim por
diante, até que um equilíbrio seja encontrado. Pode-se dizer que a rede minimiza
uma função de energia, como se fora um sistema dinâmico agindo sob as leis da
física. Esta função é determinada pelos valores das interconexões. Se conseguir-
mos valores de interconexão tais que a função de energia seja análoga à função
que desejamos minimizar, a simples computação sucessiva dos valores de ativação
dos neurônios acabará por indicar, quando a rede se estabilizar, o valor mínimo da
função como esperado.

Alexandre Romariz 14
Capítulo 2

Rede de Hopfield e Rede de


Retropropagação

2.1 Rede de Hopfield


2.1.1 Arquitetura e Definições
É uma rede neural totalmente interconectada, como mostrado na Figura 2.1. Todos
os neurônios são ligados entre si .A saída de cada um deles é dada por
X
sj = wij yi (2.1)
(i
−1, sj < 0
yj = (2.2)
1, sj >= 0

onde o somatório é realizado sobre todos os neurônios conectados ao neurônio j.


A atualização dos valores da rede pode ser feita de dois modos: no modo sín-
crono, todos os neurônios são atualizados “ao mesmo tempo”, isto é, os valores
antigos de todos os neurônios são usados para o cálculo dos novos valores. Na
atualização assíncrona, estabelece-se uma ordem aleatória de atualização. Ao atu-
alizarmos o neurônio j, valores novos de neurônios atualizados anteriormente já
serão empregados.
Esta rede, a rigor, não tem entradas. A “pergunta” ao sistema é feita definindo-
se o estado inicial dos neurônios. Voltemos ao exemplo do reconhecimento de
caracteres. Imaginemos que cada pixel aceso de uma imagem corresponda a um
neurônio com valor 1. Uma imagem, corrompida, é informada ao sistema para re-
conhecimento. Neste caso, os valores dos pixels (1 ou -1) da imagem corrompida
inicializa os valores dos neurônios. A partir daí, a rede evolui segundo a regra

15
CAPÍTULO 2. REDE DE HOPFIELD E REDE DE RETROPROPAGAÇÃO

w41

1 w21 2 3 4

w14

Figura 2.1: Rede de Hopfield de 4 neurônios.

apresentada acima. Espera-se que ela se estabilize em um estado que corresponda


à imagem mais próxima que foi armazenada no sistema.
Toda a dinâmica da rede depende da matriz de interconexão. Hopfield conse-
guiu estudá-la fazendo uma analogia com um sistema físico (spins em um material
paramagnético). Assim, se o sistema físico busca em sua dinâmica a minimização
de sua energia, este sistema também minimiza naturalmente em sua operação uma
certa função, relacionada à matriz de interconexão.
X
E=− wij si sj (2.3)
i<j

O problema passa a ser então determinar a matriz de interconexão de maneira


a termos uma função-energia com mínimos locais (pontos estáveis) em estados
que nos interessam. A existência de pontos estáveis é garantida para matriz de
interconexão simétrica e atualização assíncrona.

2.1.2 Definição da matriz de interconexões


Existem diversas regras, mas apresentamos apenas duas delas: a que se baseia na
correlação das atividades dos neurônios nos padrões a armazenar e a que se baseia
no conceito de matriz pseudo-inversa.
Sejam v~1 , v~2 . . . v~M um conjunto de vetores a armazenar. Isto é, queremos que
estes sejam estados estáveis da rede. O método da correlação, diretamente ligado
à regra de Hebb para aprendizado, prescreve que a matriz de interconexão W seja

Alexandre Romariz 16
2.1. REDE DE HOPFIELD

calcula de acordo com


M
1 X
W= p~i p~i T − M I, (2.4)
N =1

onde N é o número de neurônios na rede e I a matriz identidade. O último termo


da equação faz com que a diagonal principal de W seja nula.
Uma outra abordagem utiliza o conceito de matriz pseudo-inversa. Seja P a
matriz formada pelos vetores a serem armazenados, isto é, P = [v~1 , v~2 . . . v~M ].
Queremos então resolver a equação WP = P, para garantir que todos os
vetores p~i sejam armazenados. Em geral P é uma matriz retangular com N >
M , ou seja, o número de padrões a armazenar (número de colunas da matriz) é
menor que o tamanho da rede (número de linhas da matriz). Assim, a equação
matricial acima representa um sistema linear com mais incógnitas que equações.
Uma solução com boas propriedades é dada pela matriz pseudo-inversa., definida
a seguir.
Seja A uma matriz m × n. A sua pseudo-inversa A+ é a matriz que apresenta
as seguintes propriedades.

• AA+ A = A

• A+ AA+ = A

• AA+ e A+ são simétricas.

Se A é quadrada e não-singular, A+ = A−1 . Para o caso geral, se rank(A) =


n, mostra-se que
−1 T
A+ = AT A A (2.5)

E assim, basta definir a matriz de interconexão como W = PP+ .

2.1.3 Características da Rede de Hopfield


Devem ser notadas as seguintes características:

• Não necessita de treinamento. A matriz de interconexão é calculada em um


só passo, a partir do conhecimento que se tem do problema.

• Apresenta várias vantagens em problemas de otimização: sua dinâmica na-


tural pode corresponder à computação simultânea de múltiplas restrições, e
além disso a complexidade da operação não aumenta dramaticamente com
o número de variáveis.

Sistemas Inteligentes 17
CAPÍTULO 2. REDE DE HOPFIELD E REDE DE RETROPROPAGAÇÃO

Uma limitação aparente é a necessidade de independência linear dos pontos de


equilíbrio. Esta limitação não é grave, no entanto. Quanto maior o tamanho dos
vetores, menos provável se torna a existência de dependência linear entre eles.
Uma limitação mais grave é a existência de mínimos espúrios de energia. A
expressão da matriz T garante que padrões de interesse correspondam a mínimos
da função de energia, mas o contrário não necessariamente é verdade: haverá
mínimos da função de energia que não corresponderão a nenhum padrão de in-
teresse. Observe, por exemplo, que a simetria da função de energia faz com que
o “inverso” de um padrão — o padrão obtido trocando-se os valores de todos os
neurônios 1 por -1 e vice-versa — tem o mesmo valor de energia. Assim, para
cada padrão armazenado, seu inverso é armazenado também.
À medida em que o número de padrões armazenados aumenta, o mesmo
ocorre com o número de mínimos espúrios, o que na prática limita a aplicação
da rede. Mostra-se que o número de padrões que podem ser armazenados na prá-
tica é apenas 0,15 vezes o número de neurônios. Tenta-se melhorar esta limitação
definindo-se alguns neurônios “ocultos”, isto é, que não correspondem a nenhum
elemento dos vetores a serem armazenados. Neste caso, é necessário usar uma
forma de treinamento, porque o valor “correto” destes neurônios não é definido
pelo padrão de entrada. Esta rede é chamada Máquina de Boltzmann.

2.1.4 Resfriamento simulado


Chama-se de resfriamento simulado (“simulated annealing”), uma técnica de oti-
mização que visa evitar mínimos locais. Na Figura 2.2, temos uma abstração
monodimensional de uma função a ser otimizada. O ponto A é um mínimo da
função, mas não é uma solução tão boa quanto o ponto B. Formas de escapar
destes mínimos locais são sempre buscadas em algoritmos de minimização.
A inspiração para a técnica de resfriamento simulado vem da metalurgia.
Observa-se que um resfriamento controlado do material processado leva a um
número menor de defeitos. A razão é que, a altas temperaturas, a possibilidade
de ficarmos “ presos” a um mínimo local é pequena, porque a agitação térmica
garante a existência de movimentos contrários à dinâmica natural. O resfriamento
lento aumenta a chance de o sistema se equilibrar em um mínimo efetivamente
global.
Nesta técnica, sobrepõe-se à dinâmica natural do sistema (descendente na
função-energia) uma dinâmica aleatória, controlada por um parâmetro que decai
com o tempo, denominado “temperatura” por analogia.
Em termos específicos, para implementar esta técnica na rede de Hopfield,
inclui-se uma probabilidade de que um neurônio passe para o estado ativo (yj = 1)

Alexandre Romariz 18
2.2. A REDE DE RETROPROPAGAÇÃO

Figura 2.2: Visão simplificada de uma função a otimizar. O ponto A é mínimo,


mas não o mínimo global. Um bom método de otimização deve, se for iniciado nas
proximidades do ponto A, avançar na direção contrária do gradiente para poder
encontrar o ponto B.

mesmo que ele tenha excitação global negativa (sj < 0), de acordo com
1
pk = (2.6)
1 + exp( −∆E
T
k
)
onde ∆Ek é o quanto aumenta a função energia da rede com a ativação do neurô-
nio k.

2.2 A rede de retropropagação


2.2.1 O Perceptron e a regra delta
Como foi dito na seção 1.2.3, o Perceptron de Rosenblatt (1957) iniciou a primeira
onda de interesse em redes neurais. A característica mais impressionante deste
sistema é sua habilidade de aprender a partir de exemplos. A Figura 2.3 mostra
um Perceptron típico, usado para distinguir pontos de duas regiões de um plano.
A operação do Perceptron segue o princípio já apresentado de modelo de
neurônio. As entradas são somadas (com ponderação dada pelo vetor de inter-
conexões), e aplica-se à soma resultante uma função não linear.

Sistemas Inteligentes 19
CAPÍTULO 2. REDE DE HOPFIELD E REDE DE RETROPROPAGAÇÃO

x1
x0

Entradas

Saida
x0
xN-1

Figura 2.3: Neurônio típico de uma rede perceptron. À esquerda, vemos um


exemplo de classificação linear bidimensional de padrões. A rede deve aprender
quais parâmetros definem uma reta que separa os dois padrões.

O tipo de aprendizado operado sobre esta rede é chamado supervisionado.


Nele, dispomos de um “professor” que fornece à rede exemplos de entrada com
as respectivas respostas corretas. O algoritmo de treinamento deve modificar os
parâmetros da rede (pesos) de forma a otimizar sua performance. Terminado o
aprendizado, espera-se que a rede consiga bom desempenho em questões diferen-
tes das apresentadas no treinamento (é o que se chama capacidade de generaliza-
ção).
Rosenblatt propôs uma regra de adaptação para este neurônio, provando um
resultado bastante forte: se as classes apresentadas são separadas nos espaço de
parâmetros por hiperplanos (no caso bidimensional da Figura 2.3, uma linha reta),
o vetor de pesos converge para uma classificação perfeita.
A regra proposta é extremamente simples. Seja wi [t] o valor atual do peso que
conecta o neurônio à i-ésima entrada xi . Seja y a saída do neurônio, e seja d a
saída desejada para o exemplo ora apresentado. O novo peso será

wi [t + 1] = wi [t] + ∆wi [t] (2.7)

onde
∆wi [t] = α(d − y)xi (2.8)

A constante positiva α é por vezes denominada taxa de aprendizado (“learning


rate”) e costuma ser definida por tentativa e erro. Tipicamente, α ≪ 1.
Observar que, para um exemplo em que a classificação foi perfeita, não há
mudança nos pesos. Se a rede deveria ter tido uma saída maior do que a obtida
(d > 0), o peso de uma entrada positiva aumenta, e de uma negativa diminui. Da

Alexandre Romariz 20
2.2. A REDE DE RETROPROPAGAÇÃO

x y x⊕y
0 0 0
0 1 1
1 0 1
1 1 0

Tabela 2.1: Definição da função ou-exclusivo, que é o mais célebre exemplo de


classificação não-linearmente separável de padrões.

próxima vez que a mesma entrada for apresentada, é de fato mais provável que se
tenha uma resposta correta.
A rede aprende a partir dos erros cometidos na classificação. Os exemplos
são apresentados várias vezes, até se obter a convergência do vetor de pesos, ou
até que o erro de classificação seja aceitável. A desvantagem do uso da função
limiar, é que o vetor de pesos pode oscilar quando os padrões não se apresentam
claramente separados (por causa de ruído, por exemplo).
Se a função de ativação for diferenciável (não é o caso da função de limiar),
uma regra semelhante a esta será encontrada a partir de considerações da teoria de
aproximação estocástica de funções. O sistema resultante será idêntico, a menos
de nomenclatura, do filtro adaptativo ADALINE (Adaptive Linear Element) de
Widrow, e a regra de aprendizado (neste caso chamada de adaptação ) é conhecida
como Regra Delta na teoria de Redes Neurais e como algoritmo LMS (Least Mean
Squares) em processamento digital de sinais. Isto revela uma clara relação entre
redes neurais e PDS, apesar de das diferenças de motivação em cada caso.
A capacidade de aprendizado a partir dos próprios erros, encontrada no Per-
ceptron, foi motivo de muito entusiasmo na época, visto que este é claramente um
dos objetivos da Inteligência Artificial. No entanto, a necessidade de separação
linear entre as classes é uma limitação muito grave. No livro Perceptrons, editado
em 1969, os pesquisadores Minsky e Papert (defensores da abordagem simbó-
lica de IA), deixam isto muito evidente com a função ou-exclusivo, mostrada na
Tabela 2.1
É fácil perceber que nenhuma reta no plano xy é capaz de separar os pontos
onde a função vale 0 dos pontos onde vale 1. Por isso, o Perceptron falhará na
tentativa de aprender este relacionamento extremamente simples entre duas variá-
veis.
Evidentemente, havia a esperança de se poder estender de alguma forma as
habilidades do Perceptron para problemas mais complexos. A idéia mais simples
seria utilizar uma estrutura multicamada (um conjunto de Perceptrons alimenta
um outro e assim sucessivamente). Para o caso do ou-exclusivo, é até possível
construir por inspeção uma rede como esta que resolve o problema adequada-

Sistemas Inteligentes 21
CAPÍTULO 2. REDE DE HOPFIELD E REDE DE RETROPROPAGAÇÃO

mente. Mas como treinar a rede para problemas do mundo real, cuja resposta
não sabemos a priori? Deparamo-nos aqui com um problema: como determinar o
comportamento destes Perceptrons intermediários, cuja saída não representa ne-
nhuma variável especificada pelos exemplos disponíveis? A extensão da regra
delta para várias camadas de processadores só foi conseguida em meados dos anos
80. Até então, houve praticamente o abandono das pesquisas em conexionismo.

2.2.2 O Perceptron multicamada e a regra de retropropagação


de erro
Quando foi conseguida, a extensão do Perceptron de Rosenblatt causou o ressur-
gimento da pesquisa em redes neurais. Este ainda é o tipo de rede mais utilizado
em aplicações, pelo que vamos nos deter em algum detalhe em sua estrutura e seu
treinamento. Cabe ainda notar que estruturas como estas são aproximadores uni-
versais: dada uma função contínua qualquer definida em um domínio compacto,
existe uma rede neural com uma matriz de conexão entre camadas que a aproxima
com erro arbitrariamente pequeno.
Este tipo de rede costuma ser chamada “rede backpropagation”, ainda que
o termo “backpropagation” se refira mais especificamente à sua regra de treina-
mento, e não à sua arquitetura. O termo “perceptron multicamada” também é
usado, ainda que a rigor, a técnica de treinamento necessita das derivadas da fun-
ção de ativação, ao contrário do que ocorria na regra delta original. As funções
de ativação mais usadas para neurônios desta rede são as funções denominadas
“balísticas”, como a tangente hiperbólica ou a sigmóide.
A rede utiliza uma topologia de camadas de neurônios, com conexões unila-
terais de uma camada para a seguinte, mas sem conexões dentro de uma mesma
camada (arquitetura “feed forward”). A Figura 2.4 mostra um trecho de uma rede
PMC hipotética, para definirmos a notação utilizada.
Lembramos que a grande dificuldade para definir o treinamento desta estrutura
reside no fato de que os exemplos a princípio só nos permitem calcular o erro dos
neurônios de saída (como o valor y31 mostrado). Para os neurônios da camada
escondida (como o que produz a saída y22 ), os exemplos não nos fornecem saídas
desejadas.
Queremos encontrar a derivada do erro com relação a uma certa interconexão
w1ij ou w2ij , para podermos modificar esta interconexão no sentido contrário do
aumento de erro (descida de gradiente).
Vamos definir o erro das saídas da rede como
1X
E= (dj − y3j )2 . (2.9)
2 j

Alexandre Romariz 22
2.2. A REDE DE RETROPROPAGAÇÃO

w111 y21
x1
w211

x2
y31

y3k

xn w2mk
w1nm y2m

Figura 2.4: Estrutura da rede “backpropagation” Neste exemplo, temos uma rede
com 2 camadas, com n entradas, m neurônios na camada escondida e k neurônios
na camada de saída.

A saída de um neurônio da camada de saída vale:


!
X
ykj = g wk−1 i j yk−1 i (2.10)
i

Para os neurônios da camada escondida, basta trocar yk−1 i por xi na expressão


acima.
Seja Ikj o argumento de g, ou seja,
X
Ikj = wk−1 i j yk−1 i . (2.11)
i

Vamos calcular a derivada do erro com relação a uma interconexão da última


camada:
∂E ∂E ∂I3j
= (2.12)
∂w2ij ∂I3j ∂w2ij
∂I3j
= y2i (2.13)
∂w2ij
∂E ∂E ∂y3j
= = −(dj − y3j )ġ ′ (s)|s=I3j (2.14)
∂I3j ∂y3j ∂I3j

Sistemas Inteligentes 23
CAPÍTULO 2. REDE DE HOPFIELD E REDE DE RETROPROPAGAÇÃO

Finalmente, encontramos

∂E
= (−dj − y3j )ġ ′ (s)|s=I3j ẏ2i (2.15)
∂w2ij

e assim a atualização de uma interconexão da última camada será:

∆w2ij = α(dj − y3j )ġ ′ (s)|s=I3j ẏ2i (2.16)

Observar que a única diferença para a regra de Rosenblatt é o termo g’(s), relativo
à derivada da função de ativação.
Para a camada escondida, começamos da mesma maneira:

∂E ∂E ∂I2j
= (2.17)
∂w1ij ∂I2j ∂w1ij
∂I2j
= xi (2.18)
∂w1ij
∂E ∂E ∂y2j ∂E ′
= = ġ (s)|s=I2j (2.19)
∂I2j ∂y2j ∂I2j ∂y2j

Como já comentamos, o único problema é o cálculo da derivada do erro com


relação à saída de um neurônio da camada escondida. Mas, esta questão que
paralisou as pesquisas em redes neurais durante 32 anos, resolve-se com uma
simples aplicação da regra da cadeia!
  X  ∂E 
∂E X ∂E ∂I3k
= = w2jk (2.20)
∂y2j k
∂I3k ∂y2j k
∂I 3k

Portanto, chega-se a
X
∆w1ij = α g ′ (s)|I2j d3k w2jk (2.21)
k

onde
∂E
d3k = − = (dk − y3k )g ′ (s)|I3k (2.22)
∂I3k
observe que a quantidade d3k é calculada na atualização de pesos da camada
de saída e propagada “para trás” em direção às camadas anteriores, através das
mesmas conexões usadas para calcular a saída. Daí o nome retropropagação de
erro.

Alexandre Romariz 24
2.2. A REDE DE RETROPROPAGAÇÃO

2.2.3 Algumas observações sobre a rede de retropropagação


Como já dissemos, a extensão do Perceptron de Rosenblatt para várias camadas
com um algoritmo eficiente de aprendizado fez renascer a pesquisa em conexio-
nismo. O PMC com regra delta modificada de aprendizado (ou regra de retropro-
pagação de erro ou ainda “backpropagation”) tornou-se uma ferramenta poderosa,
aplicada nas mais diversas áreas. Antes de estudarmos algumas de suas aplica-
ções, faremos alguns comentários gerais sobre aspectos teóricos e práticos do uso
desta rede.
A polêmica da criação do algoritmo. O termo “backpropagation” e seu uso em
redes neurais surgiu em um trabalho do grupo de pesquisa PDP (Parallel
Distributed Processing), liderado pelos americanos Rumelhart e McClel-
land, em 1986. No entanto, aparentemente, este tipo de adaptação de parâ-
metros é conhecido no campo da matemática aplicada desde a década de 70
(vide os trabalhos de Werbos) e possivelmente antes. De qualquer forma,
foi a partir de 1986 que esta teoria foi aplicada.
A capacidade de aproximação universal. Já nos referimos a este resultado an-
teriormente. Foram demonstrados vários teoremas afirmando que, dada
uma função contínua em um domínio limitado, existe um PMC com duas
camadas de interconexão que a aproxima arbitrariamente bem. Este resul-
tado deve ser visto com cautela em termos práticos. Em primeiro lugar, ele
é puramente existencial (nenhuma pista de que rede seria esta é fornecida).
Nem mesmo a finitude da rede está garantida! Não há hoje como saber,
fixada uma rede com certo número de neurônios, se ela é capaz ou não de
representar arbitrariamente bem uma ampla classe de funções.
A capacidade de generalização . Verifica-se na maioria dos casos um excelente
desempenho da rede após treinamento, em pontos do espaço que não ha-
viam sido apresentados. É preciso observar que não há garantias matemáti-
cas rigorosas de que isto deva acontecer. Nossa garantia intuitiva é de que a
função de saída da rede será contínua, como é contínua a maioria dos mape-
amentos de interesse em problemas reais. Assim, em regiões próximas aos
pontos “estudados” no treinamento, teremos respostas próximas aos valores
conhecidos de saída, o que é uma estratégia razoável de aproximação.
A constante de aprendizado. Como já dissemos anteriormente, este valor é de-
finido por tentativa e erro, acompanhando-se a evolução do erro médio du-
rante o treinamento. Um comportamento excessivamente oscilante deste
erro é indício de um valor muito elevado para a constante. Os valores abso-
lutos de entrada e saída, o número de pontos de treinamento e a estratégia
de atualização (ver adiante) têm influência nesta escolha.

Sistemas Inteligentes 25
CAPÍTULO 2. REDE DE HOPFIELD E REDE DE RETROPROPAGAÇÃO

Aprendizado estocástico e em batelada (“batch learning”). Há basicamente du-


as estratégias para atualização a partir do erro. Para cada padrão apresen-
tado, uma mudança em cada peso ∆wijk será computada. O peso pode
então ser modificado imediatamente, ou então este valor será somado com a
modificação devida aos outros padrões, e só após a apresentação de todos os
padrões modificam-se os pesos. Nas aplicações de redes neurais, estas duas
estratégias têm sido usadas indistintamente, com bons resultados. É curioso
notar que as descrições matemáticas destas duas formas de treinamento são
completamente diferentes.
Se modificamos os parâmetros da rede à cada apresentação de um exem-
plo, estaremos em cada passo com um diferente gradiente de erro, já que
o erro “instantâneo” é também função do exemplo apresentado. A dedu-
ção da regra delta apresentada acima não se aplica diretamente. A descida
de gradiente passa a ser um processo estocástico. Uma regra idêntica seria
obtida a partir desta teoria, mas este aprendizado estocástico ou on-line le-
arning exige algumas considerações especiais. O passo do algoritmo (α)
deve tender a zero a medida que o treinamento evolui (isto às vezes é igno-
rado na prática, e raramente tem conseqüências muito danosas), e a ordem
dos pontos apresentados passa a ter muita importância (isto sim, deve ser
observado na prática). É importante que os exemplos venham de regiões
diferentes do espaço a cada instante. O treinamento comporta-se muito mal
quando os exemplos de regiões próximas são apresentados em seguida. Este
gênero de aprendizado é obrigatório quando se tenta fazer adaptação on-line
(por exemplo, quando se tenta a identificação de um sistema dinâmico em
tempo real).
O outro gênero de aprendizado (em batelada ou batch-learning ) permite
uma implementação eficiente em termos de matrizes e, em algoritmos de
treinamento mais complexos (gradiente conjugado, por exemplo) é sempre
preferido. Como a amplitude das mudanças será a soma das amplitudes
devidas a cada padrão, o valor de a aqui deve ser menor do que no treina-
mento estocástico, e deve ser tão menor quanto mais pontos de treinamento
houver. Evidentemente, a ordem dos exemplos não é importante aqui.

O número de camadas e de neurônios em uma camada . Não há teoria que gui-


e esta escolha. O resultado de aproximação universal nos garante que uma
camada escondida é suficiente, mas a adição de camadas extra parece po-
der substituir a adição de um grande número de neurônios em uma camada
única.

A validação cruzada. Em geral, prolongar em demasia o treinamento faz a rede


começar a reproduzir o ruído inerente aos dados de entrada, fenômeno co-

Alexandre Romariz 26
2.2. A REDE DE RETROPROPAGAÇÃO

nhecido como sobretreinamento (“overtraining”). O erro continua a cair no


arquivo de treinamento, mas a performance real do sistema irá piorar. Existe
uma prática bastante eficiente para contornar este problema: separam-se al-
guns dos pontos de treinamento apenas para validação, ou seja, eles são
usados para avaliar a performance mas não para ajustar os pesos. A per-
formance sobre estes pontos melhora do início do treinamento até quando
começa a ocorrer o “overtraining”. Neste ponto de mínimo o treinamento
deve ser interrompido.

Normalização dos valores de entrada. As equações do algoritmo de treinamento


mostram que a atualização dos pesos é função da magnitude do erro. Assim,
valores absolutos muito elevados na entrada ou na saída exigem constantes
de aprendizado pequenas. Pode haver problemas de instabilidade numérica
neste ajuste, pelo que é recomendável a normalização dos valores. Cabe
notar ainda que se neurônios com saída do tipo sigmóide (limitada entre 0 e
1) forem usados na camada de saída, esta normalização é imprescindível. A
única outra alternativa seria usar neurônios de função de ativação identidade
(apenas soma as entradas) na camada de saída.
Além de uma simples normalização de escala, outras transformações sobre
os valores de entrada são úteis. Por exemplo, é interessante transformar os
dados para que tenham média zero, e que os desvios das diversas variáveis
de entrada sejam semelhantes. Observando-se que a função de ativação lo-
gística tem derivada nula para módulo muito elevado de entrada, deve-se
evitar que os neurônios atinjam valores exremos de saida no início do trei-
namento, ou então a alteração de pesos terá um valor insignificante. Assim,
os pesos inciais, aleatórios, devem ter uma faixa de valores que resultem em
saídas próximas ao meio da faixa dinâmica do neurônio.

Plausibilidade biológica. Temos aqui um exemplo em que o algoritmo resultante


não tem aparentemente nenhuma relação com sistemas de aprendizado bio-
lógico. Não parece haver nenhum indício de “retropropagação de erro” no
sistema nervoso animal (embora uma minoria de pesquisadores ainda de-
fenda que fenômenos como estes ainda podem ser encontrados). Como já
havíamos comentado, se um algoritmo de aprendizado tem revelado bons
resultados, a inexistência de paralelo natural conhecido não costuma ser le-
vada em conta.

2.2.4 Roteiro para treinamento


Apresentamos a seguir uma descrição serial das atividades geralmente envolvidas
na aplicação de redes neurais do tipo MLP em problemas de engenharia.

Sistemas Inteligentes 27
CAPÍTULO 2. REDE DE HOPFIELD E REDE DE RETROPROPAGAÇÃO

Dados de entrada Deve-se definir quais são as entradas e saídas da rede. Não é
necessário conhecer uma função analítica que relacione entradas e saídas,
mas algum conhecimento sobre o problema ajuda a retirar dados irrelevan-
tes da entrada. Um trabalho de pré-processamento adequado pode ser a
diferença entre sucesso e fracasso da aplicação. Em uma anãlise de ima-
gens, por exemplo, dificilmente o uso direto dos valores de intensidade de
todos os pixels, sem nenhum pré-processamento, levará a uma boa perfor-
mance. Medidas comuns de pré-processamento incluem a representação em
freqüência (Transformada de Fourier) e outras transformações para garantir
certas invariâncias (escala, translação, rotação, etc.)
Dados de saída A saída pode ser uma função contínua (por exemplo, se deseja-
mos estimar o valor de uma variável econômica futura, dado seus valores
recentes) ou valores discretos (por exemplo, a rede indica se há ou não há
uma anomalia no sistema, a partir da leitura dos parâmetros atuais). No
segundo caso, a escolha mais comum é termos um neurônio de saída para
cada classe (no exemplo dado, um neurônio para indicar “Sistema Normal”
e outro para indicar “Sistema Defeituoso”) .
Arquivos de Treinamento e Teste Os exemplos conhecidos devem ser divididos
em 2 ou 3 arquivos. O principal (de treinamento) contém a maior parte dos
dados, e será usado para o ajuste da rede. Uma parcela menor deverá ter
exemplos que não são usados para ajuste de pesos, mas apenas para verifi-
cação de desempenho. Este denomina-se “arquivo de teste”, embora alguns
autores façam uma distinção entre Validação (teste de desempenho durante
o treinamento, para escolher o momento de parada) e Teste (para uma es-
timativa final de desempenho, ao final do treinamento). Se pretendermos
usar treinamento estocástico ou on-line, é preciso garantir que o arquivo de
treinamento esteja “embaralhado”, isto é, que os exemplos semelhantes não
sejam linhas vizinhas do arquivo.
Topologia da Rede Definidos os dados de entrada, sabemos quantas variáveis de
entrada existem, e quantos neurônios na saída. Infelizmente, não sabemos
quantos neurônios serão usados na camada escondida, nem se é conveniente
termos mais de uma camada escondida. Isto é definido por tentativa e erro.
Treinamento Definidos todos os parâmetros, inicia-se um laço de treinamento.
Para cada exemplo, apresenta-se os valores de entrada à rede, e computa-se
a sua saída. Comparando-se a saída desejada com a obtida, temos os erros
da camada de saída. Aplicando-se o algoritmo backpropagation,calculam-
se as modificações em todos os pesos da rede1 . No treinamento on-line, esta
1
Lembre-se de que cada neurônio tem um valor de limiar ou viés (“bias”), que para todos os

Alexandre Romariz 28
2.2. A REDE DE RETROPROPAGAÇÃO

modificação é aplicada de imediato. No treinamento off-line esta modifica-


ção será somada à modificação calculada para todos os outros exemplos, e
então finalmente aplicada.

Repetições Um erro comum entre estudantes é imaginar que, apresentado um


exemplo, ele seja “compreendido” imediatamente, ou seja, que quando to-
dos os exemplos foram apresentados a rede esteja treinada. Na verdade,
cada apresentação da rede resulta em uma pequena melhoria de perfor-
mance. Em qualquer problema complexo, todo o arquivo de treinamento
é apresentado centenas, milhares, ou até centenas de milhares de vezes à
rede.

Avaliação de desempenho Ao longo do treinamento, é preciso avaliar o desem-


penho geral da rede. A soma do erro quadrático de todos os neurônios em
todo o arquivo de treinamento é uma boa medida. No caso de reconheci-
mento de padrões, é comum interpretar a “decisão” da rede como a classe
correspondente ao neurônio com maior saída.No exemplo dado acima, se o
neurônio ligado a “Sistema normal” fornece 0.7 e o neurônio “Sistema de-
feituoso” fornece 0.6, a decisão da rede naquele momento é “Sistema Nor-
mal”. Para acompanhar o desempenho nestes casos, é comum empregar-se
o percentual de erros (ou acertos) em todo o arquivo de treinamento. Se
a rede neural encontrar-se em uma situação de baixo desempenho que não
melhora com o treinamento prolongado, pode-se tentar uma variação nos
parâmetros de treinamento ou na arquitetura da rede (número de neurônios
nas camadas escondidas, por exemplo).

2.2.5 Limitações da rede de retropropagação


O PMC ainda é hoje em dia a rede neural mais utilizada. Listaremos a seguir
as principais limitações desta rede, que motivaram as pesquisas mais recentes em
conexionismo, que serão estudadas adiante:

Onde entra o tempo? O PMC tem sido usado com sucesso na identificação e
controle de sistemas dinâmicos. No entanto, a variável tempo é nestes ca-
sos mapeada como outra qualquer (a dinâmica do sistema é estudada como
um mapeamento estático entre valores anteriores e futuros das variáveis de
estado). Parece natural esperar que o tempo tenha um papel mais importante
no aprendizado, e que se a própria rede se comportar como um sistema dinâ-
mico (como a rede de Hopfield) teremos melhores resultados. Imaginemos
efeitos é um peso ligado a uma entrada fictícia que vale sempre 1. Evidentemente, este parâmetro
também é ajustado.

Sistemas Inteligentes 29
CAPÍTULO 2. REDE DE HOPFIELD E REDE DE RETROPROPAGAÇÃO

por exemplo o problema de interpretação da linguagem natural. A inter-


pretação correta é sempre dependente do contexto, e não parece haver uma
forma simples de modelar esta dependência sem que o sistema tenha algum
tipo de memória.
Vários esquemas de realimentação foram propostos para este fim. A idéia
é de que a saída de pelo menos alguns neurônios sejam função também dos
valores de saída em tempos anteriores. A questão é que o algoritmo de trei-
namento complica-se enormemente. No algoritmo de retropropagação de
erro no tempo (“backpropagation through time”), por exemplo, o erro deve
ser calculado “para trás” não apenas da saída para camadas anteriores, mas
também do presente para o passado (acumulam-se informações sobre toda
uma trajetória do sistema, e então inicia-se a retropropagação). Ele exige,
portanto o armazenamento de muita informação intermediária, e não é ade-
quado para identificação on-line. O treinamento de uma rede recorrente é
em geral uma tarefa difícil. A própria rede é agora um complexo sistema
dinâmico não linear, exibindo fenômenos de difícil análise.
A inclusão de dinâmica nos próprios modelos neurais, que passariam a se
assemelhar mais a seus equivalentes biológicos, só recentemente passou a
ser estudada.

Existem estratégias melhores do que a de gradiente? Andar “um pouco” no sen-


tido contrário do gradiente do erro é a estratégia mais simples de otimiza-
ção. Naturalmente, é também a mais limitada. Não há nenhuma informação
de quanto caminhar em cada passo, obrigando-nos a usar um passo padrão
bastante pequeno. A amplitude da atualização é dependente do módulo da
derivada do erro, o que leva a um comportamento contrário ao que intuitiva-
mente se deseja: o algoritmo dá grandes saltos nos pontos mais movimenta-
dos da função e caminha lentamente em regiões planas. Algoritmos de gra-
diente conjugado (ver o Capítulo 3) têm sido usados, e mostra-se que seu
maior custo computacional é plenamente compensado pela performance.
Deve-se dizer também que qualquer algoritmo que use o gradiente como
informação ficará preso no primeiro mínimo local que encontrar. Reinicia-
lizar o processo de um novo ponto (novos valores aleatórios para os pesos)
muitas vezes é a única alternativa.

O que significam os valores processados internamente na rede? Esta é uma das


questões mais importantes. Discutimos anteriormente que Redes Neurais
são sistemas subsimbólicos, no sentido de que a saída de um processador
isolado não costuma poder ser associada facilmente a um símbolo ou va-
riável importante do problema. Como já comentado, acredita-se que isto
ajude a representação de habilidades muito poderosas do comportamento

Alexandre Romariz 30
2.2. A REDE DE RETROPROPAGAÇÃO

inteligente. Por outro lado, a capacidade de extrair relações simbólicas pre-


cisas a partir do aprendizado não parece poder ser representada desta forma.
O PMC efetua uma série de operações numéricas que podem resolver um
problema complexo, para o qual não havia uma teoria completa, mas o co-
nhecimento intrínseco nesta solução não pode ser recuperado, já que tudo
o que temos são números representando valores de saída e de interconexão.
As conseqüências desta limitação são bastante graves quando se imagina o
projeto de grandes sistemas inteligentes. A transferência de conhecimento
de uma rede para outra ou para qualquer outro sistema é praticamente im-
possível. Ter treinado uma rede para efetuar uma certa tarefa não nos adi-
anta de quase nada para o treinamento de uma outra rede que executaria
tarefa semelhante. Conhecimento humano sobre o problema não pode ser
passado de nenhuma forma explícita, mas apenas através de exemplos. Se
o conexionismo pretende mostrar como o pensamento estruturado “emerge
do nível subsimbólico”, estruturas que efetuem a ligação entre estes níveis
ainda precisam ser buscadas.

E quando não sabemos qual o erro? A hipótese de que sempre dispomos de exem-
plos de operação desejada relacionando explicitamente todas as entradas e
saídas é bastante forte. Os casos mais importantes de aprendizado (envol-
vendo controle motor, por exemplo) desenvolvem-se sobre um ambiente que
retorna muito pouca informação. O algoritmo de retropropagação de erro
está longe de modelar esta habilidade dos sistemas animais.

Sistemas Inteligentes 31
Capítulo 3

Outras Redes Neurais e Algoritmos


de Treinamento

3.1 Melhoramentos ao algoritmo de gradiente


3.1.1 Introdução
O processo de aprendizado de uma rede neural não é conceitualmente diferente do
que se conhece por adaptação de parâmetros. Valores dos pesos das interconexões
(ou sinapses) são modificados para minimizar a diferença entre o desempenho
atual e o desejado para o sistema.
A maioria dos algoritmos de otimização baseiam-se em um mesmo procedi-
mento iterativo: a cada passo, uma direção de mudança do vetor de parâmetros e
a amplitude desta mudança são determinadas, e o vetor é atualizado. Se deriva-
das da função a ser minimizada podem ser calculadas, a direção mais simples a
escolher é o sentido contrário do vetor gradiente da função com relação aos parâ-
metros. Assim, sendo w o vetor de parâmetros e E(w) a função a ser minimizada,
um passo de atualização de parâmetros pelo método de gradiente simples pode ser
expresso por:
w[k + 1] = w[k] − ǫ∇E(w[k]) (3.1)
onde ǫ determina o passo de adaptação. No caso de redes neurais, e é conhecido
como taxa ou constante de aprendizado, e a função a ser minimizada é geralmente
o erro quadrático entre saídas desejada e obtida.
Em sua forma mais simples, o algoritmo não prevê nenhum procedimento
de cálculo de ǫ. Este valor é fixo, determinado por tentativa e erro. Um valor
muito baixo implica em convergência demorada, um valor elevado demais leva a
oscilações que podem acabar impedindo a convergência.
Além de todos os problemas com a dificuldade de escolha do valor de e, o fato

32
3.1. MELHORAMENTOS AO ALGORITMO DE GRADIENTE

deste valor ser fixo faz com que a influência do módulo do vetor gradiente sobre
a amplitude resultante de mudança contrarie o que intuitivamente se espera [4]: a
mudança de pesos será pequena nos trechos em que a superfície de erro é plana,
e maior onde há inclinaçoes abruptas. Intuitivamente, uma busca eficiente pelo
mínimo de erro deveria ter comportamento contrário, sendo "mais cuidadosa"nos
trechos movimentados da superfície de erro, e tomando passos maiores nas regiões
mais planas.
Algoritmos mais sofisticados do que os de gradiente simples já são conheci-
dos há muito no campo de otimização e matemática aplicada, e agora vêm sendo
aplicados em Redes Neurais. A seguir, descrevemos os princípios teóricos dos
algoritmos de gradiente conjugado.

3.1.2 Algoritmo de descida mais íngreme (steepest descent)


A primeira idéia para determinação automática do passo no algoritmos de gradi-
ente é obtida observando-se que, definida uma direção de mudança, achar a ampli-
tude ótima desta mudança é um problema de otimização monodimensional (line
search), relativamente simples de ser resolvido. Esta idéia leva ao algoritmo stee-
pest descent, no qual garante-se que em cada passo do processo a adaptação leva
a função ao mínimo alcançável na direção definida. As equações deste algoritmo
são então:
w[k + 1] = w − η∇E(w[k]) (3.2)
onde o valor de η é a solução do seguinte problema de minimização monodimen-
sional:
min {E (w[k] − η∇E(w[k]))} (3.3)
k

Com estimativas do valor ótimo do passo, o algoritmo de gradiente costuma


convergir, como se espera, em menor número de iterações. No entanto, a pesquisa
monodimensional associada aumenta o custo computacional do algoritmo. Os
testes que realizamos com steepest descent revelaram que, em geral, o emprego
da pesquisa monodimensional por si só não é compensador em termos de tempo
de convergência, ainda que o algoritmo se torne mais robusto quanto a escolha de
parâmetros. Esta pesquisa é usada, no entanto, como parte de alguns algoritmos
de gradiente conjugado, como veremos na seção seguinte.

3.1.3 Algoritmo de gradiente conjugado


Os polinômios de segundo grau são as funções analíticas mais simples que têm
ponto de mínimo. A aproximação de segunda ordem da função de erro por série de
Taylor em torno de um vetor de parâmetros w fornece-nos uma função quadrática

Sistemas Inteligentes 33
CAPÍTULO 3. OUTRAS REDES NEURAIS E ALGORITMOS DE
TREINAMENTO
com propriedades interessantes para minimização.

E(w + ∆w ) ≃ Eq (∆w ) (3.4)


T 1
Eq (∆w ) = E(w) + E ′ (w) ∆w + ∆w T E ′′ (w)∆w (3.5)
2
onde E ′′ (w) é a chamada matriz hessiana de E com relação a w.
Um ponto crítico desta aproximação satisfaz:

Eq′ (∆w ) = 0 (3.6)

o que nos dá
E ′′ (w)∆w + E ′ (w) = 0 (3.7)
Esta é a equação do chamado método de Newton para o problema de minimização
de funções.
A cada passo do algoritmo, o ponto crítico ∆w é determinado a partir da so-
lução destes sistema de equações que envolve a hessiana. Ao invés de buscar a
solução direta, os algoritmos de gradiente conjugado usam uma solução iterativa
por meio de conjuntos de vetores conjugados. Para funções quadráticas, estes
algoritmos chegam ao ponto crítico em um número de passo não superior à di-
mensão do espaço. De fato, vamos supor que dispomos de uma base de vetores
do espaço ℜn . O ponto crítico buscado pode ser então expresso como
n
X
∆w = αi pi (3.8)
i=1

onde pi são os vetores da base. Os valores de α só podem ser obtidos analitica-


mente para funções quadráticas. Em geral, busca-se a cada passo, o valor de α que
miminiza a função na direção determinada (como no algoritmo steepest descent).
A base pode ser obtida de acordo com a regra de Polak-Ribiere:

p1 = −E ′ (w0 ) (3.9)
pj+1 = rj+1 + βj pj (3.10)
rj+1 = −E ′ (wj ) (3.11)
wj+1 = wj + αj pj (3.12)
(rj+1 − rj )T rj+1
βj = (3.13)
||rj ||2
onde w0 é o valor do conjunto de pesos antes deste passo de otimização, e wi o
valor após cada um dos n sub-passos. Ao final do processo, estaríamos em um
mínimo se E(W) realmente fosse quadrática. Como provavelmente não o é, o
algoritmo é repetido por mais n subpassos.

Alexandre Romariz 34
3.2. REDES DE FUNÇÕES DE BASE RADIAIS

Figura 3.1: Rede de Funções de Base Radiais

Como dito acima, αi é obtido em uma pesquisa monodimensional. No entanto,


verifica-se experimentalmente que a determinação de melhores direções de busca,
promovida pelo algoritmo de gradiente conjugado, compensa o custo computaci-
onal da pesquisa, o que não ocorria quando esta busca era usada no algoritmo de
gradiente simples.
A pesquisa monodimensional envolve em geral duas etapas: uma heurística
para definir um pequeno intervalo onde um mínimo garantidamente ocorre, e uma
técnica de subdivisão deste intervalo para pesquisa do mínimo. Uma estratégia
popular é a divisão em segmentos áureos (golden search), que garante uma redu-
ção eficiente do intervalo a cada passo, porque um dos pontos pesquisados será
sempre um ponto ótimo também para a secção efetuada no passo seguinte.

3.2 Redes de funções de base radiais


As redes de funções de base radiais (“Radial Basis Function Networks” - RBFN’s)
são estruturas inspiradas no modelo biológico de campos sobrepostos de recepção,
presentes em regiões do córtex cerebral. Procura-se representar neste modelo o
caráter localizado e espacialmente organizado da resposta de neurônios em certas
regiões do sistema nervoso, especialmente no processamento de dados sensoriais.
Várias propriedades interessantes de aprendizado são obtidas nestes sistemas.
A Figura 3.1 mostra um diagrama de RBFN. Os neurônios da primeira camada
computam funções com simetria radial, geralmente gaussianas, e a saída é uma
soma ponderada dos valores da primeira camada (eventualmente normalizada pela

Sistemas Inteligentes 35
CAPÍTULO 3. OUTRAS REDES NEURAIS E ALGORITMOS DE
TREINAMENTO
soma das ativações).
Os parâmetros da rede são os centros e aberturas (variância) das funções ra-
diais e os pesos W . Fixados os centros e as variâncias, otimizar os valores dos
pesos é um problema linear relativamente simples. A escolha dos centros pode
ser feito por um método não-supervisionado, como veremos na rede de Kohonen
(seção 3.4).
Uma característica importante das RBFN’s é a de que o valor de ativação da
camada gaussiana pode ser tomado como indicação de novidade. Baixos valores
em todos os neurônios da camada, por exemplo, podem indicar a presença de um
vetor de entrada x muito diferente daqueles com os quais a rede foi treinada. Este
tipo de informação não pode ser obtida em uma rede neural convencional.
As RBFN’s valorizam ainda o caráter local do treinamento (pontos distantes da
área de atuação de uma unidade não influenciam o ajuste de seus parâmetros). A
atualização de pesos em redes convencionais tem caráter global e costuma impedir
a identificação de estruturas locais. Já o treinamento local, além de permitir aná-
lise da representação resultante, faz com que novos aspectos do problema sejam
aprendidos sem prejuízo do que já se conhece. Esta característica incremental do
aprendizado não é obtida no Perceptron multicamadas apresentado anteriormente.

3.3 Aprendizado por reforço


As redes neurais usadas nas aplicações descritas anteriormente baseiam-se no cha-
mado treinamento supervisionado. Nele, conhece-se a saída desejada para cada
caso, e a diferença entre este valor desejado e o obtido guia o processo de adap-
tação. No entanto, em muitas tarefas de controle, principalmente naquelas relaci-
onadas a controle motor, o retorno obtido do ambiente é pouco informativo. Em
geral, só ficamos sabendo, após uma série de ações, se houve sucesso ou fracasso
na tarefa. O ambiente não retorna para cada ação um sinal de erro.
O chamado aprendizado por reforço (Reinforcement Learning, RL) procura
tratar a questão do aprendizado no caso em que o retorno do ambiente é pouco
informativo. O problema, no caso de controle, não é simplesmente generalizar
exemplos apresentados da operação desejada, mas o de aprender uma lei de con-
trole por tentativa e acúmulo de experiência. Esta idéia está mais próximo do que
efetivamente ocorre no aprendizado motor animal.
Basicamente, a falta de retorno do ambiente procura ser contornada pela cri-
ação de um crítico, capaz de avaliar a performance do sistema de uma maneira
adequada para aprendizado. O problema então passa a ser o de alterar a política
de controle para obter a aprovação do crítico. Para isto há basicamente dois mé-
todos. No RL indireto um modelo diferenciável do crítico é construído, e técnicas
de otimização baseadas em gradiente podem ser empregadas. Em RL direto não

Alexandre Romariz 36
3.4. REDES DE KOHONEN E SISTEMAS AUTO-ORGANIZÁVEIS

se conhece um modelo diferenciável do crítico. A otimização de performance é


obtida pela exploração ativa do espaço das ações de controle e incorporação das
ações que resultaram em melhoria. Por exemplo, o autômato estocástico começa
o aprendizado escolhendo aleatoriamente suas ações. O sinal do crítico é usado
para atualizar as probabilidades associadas a cada ação. O comportamento vai
tornando-se então menos aleatório com a evolução do treinamento, e termina por
convergir para uma política determinista de controle.
A função do crítico, como afirmado acima, é suprir a falta de retorno do am-
biente com relação ao desempenho da lei de controle. O crítico deve, portanto
avaliar o quanto cada ação contribui para que se caminhe na direção de um estado-
objetivo, possivelmente com restrições sobre a eficiência da trajetória escolhida.
A teoria de controle ótimo se preocupa com critérios deste tipo, e seus algoritmos
(programação dinâmica, por exemplo) são usados na construção do crítico. A di-
ferença principal entre os algoritmos de RL e de controle ótimo está no fato de
que neste último exige-se um modelo preciso da planta, suposição que não está
presente em RL. Além disto, RL trabalha com o aprendizado “on-line” da política
ótima de controle.
Apesar de ser uma área atraente de pesquisa em inteligência dada sua forte
relação com aprendizado dos animais, as técnicas de RL não se comparam às de
treinamento supervisionado em termos de tempo de aprendizado e esforço com-
putacional. São poucas as aplicações práticas efetivamente demonstradas. Seu
uso é recomendado, portanto, apenas para o caso em que a informação disponível
para o treinamento é realmente de baixa qualidade.

3.4 Redes de Kohonen e sistemas auto-organizáveis


A idéia do mapa auto-organizável de Kohonen é a de construir sistemas que se
organizam internamente a partir da distribuição dos dados de entrada, sem a pre-
sença de um professor. A inspiração biológica vem do fato de que a representação
interna de informações no cérebro é freqüentemente organizada espacialmente.
Áreas do córtex parecem claramente formar “mapas” de espaços sensoriais, com
neurônios com resposta específica a impulsos de certas regiões do espaço. Como
exemplo, citamos as respostas específicas para freqüências nas áreas do cérebro
responsáveis por visão e audição.
O objetivo principal é a formação de aglomerados com máxima atividade de
resposta a um dado tipo de estímulo. Em termos de implementação biologica-
mente plausível, isto pode ser obtido com realimentação lateral entre neurônios
próximos. Na prática, este mecanismo é estimulado da seguinte maneira:
A rede é composta por uma única camada de neurônios, espacialmente organi-
zados (em linha, ou em espaços de várias dimensões. O importante é que haja um

Sistemas Inteligentes 37
CAPÍTULO 3. OUTRAS REDES NEURAIS E ALGORITMOS DE
TREINAMENTO
conceito de vizinhança). Todos os neurônios recebem o mesmo vetor de entrada.
A função de ativação dos neurônios é identidade, o que significa que eles simples-
mente efetuam o produto interno entre a entrada e seus vetores de interconexão.
Imaginemos que num instante inicial, os vetores de interconexão foram aleatoria-
mente fixados, todos com o mesmo módulo. Dada uma entrada, o neurônio cujo
vetor estiver mais alinhado (por pura sorte) terá melhor resposta e será o vence-
dor. Ao vencedor e uma certa vizinhança, será dada a oportunidade de aprender
(adaptar seu vetor de pesos), segundo:

w[t + 1] = w[t] + α[t](x[t] − w[t]) (3.14)

seguido de re-normalização, para que todos os vetores tenham o mesmo módulo.


Os neurônios fora da vizinhança não modificam o seu peso.
A expressão acima aproxima o vetor w do neurônio do vetor de entrada x.
Em uma apresentação subseqüente do mesmo vetor de entrada, será ainda mais
provável que o mesmo neurônio apresente a melhor resposta. Neurônios podem,
assim, se especializar em regiões específicas do espaço de entrada.
O processo é feito para todos os vetores de entrada existentes, e repetido várias
vezes. O tamanho da vizinhança onde se permite aprendizado começa com valor
elevado (que pode começar como toda a rede) e diminui com o tempo, assim como
a taxa de aprendizado α.
A Figura 3.2 mostra um exemplo simplificado de operação da rede, em um
caso bidimensional com 6 neurônios. Na primeira figura, temos os seis vetores w
e um hipotético vetor de entrada x. O neurônio 2 será, neste caso, o vencedor, e no
segundo círculo vemos que os vetores dos neurônios 2, 1 e 3 (sua vizinhança) fo-
ram modificados para se aproximarem dos valores de entrada. Se esse processo se
repetir por muitas vezes, com apresentação de pontos uniformemente distribuídos
no círculo, os vetores finais devem convergir para o que mostra a terceira figura,
com pesos uniformemente distribuídos, e com um claro conceito de vizinhança
(neurônios definidos como vizinhos têm pesos sinápticos mais semelhantes).
Para que servem estes mapas obtidos autonomamente pela rede? Em primeiro
lugar, no caso de reconhecimento de padrões, o mapa pode indicar claramente
a aglomeração natural em torno dos padrões. Neste caso, basta dar nomes às
classes. Em outros casos, a rede é usada como sistema de pré-processamento,
Por exemplo, os vetores resultantes podem ser usados para definir os centros das
funções de base da rede RBFN.

Alexandre Romariz 38
3.4. REDES DE KOHONEN E SISTEMAS AUTO-ORGANIZÁVEIS

1
5 5 1
3
3

6 6

4 x
4
2
2

1
6

5 2

3
4

Figura 3.2: Exemplo simplificado de operação do mapa de Kohonen. Há seis


neurônios, e o espaço sináptico é bidimensional. No primeiro circulo, vemos a
disposição inicial dos vetores sinápticos, e a apresentação de um vetor de en-
trada x. Os neurônios vencedores (2, 1 e 3) modificam seus pesos sinápticos, que
se aproximam mais do vetor de entrada. Com a repetição de diversos padrões,
espera-se que os vetores sinápticos aproximem-se do apresentado no último cír-
culo.

Sistemas Inteligentes 39
Capítulo 4

Sistemas nebulosos

4.1 Introdução
A lógica sempre foi estudada em Inteligência Artificial como um formalismo para
representação do conhecimento. A representação obtida é, no entanto, inflexí-
vel demais para lidar com conceitos do mundo real sem exigir um nível elevado
de simplificação. Na lógica clássica lidamos com um mundo de clareza, rigor e
precisão no qual conceitos reais não se encaixam com facilidade.
A habilidade humana para manipular conceitos imprecisos é vista como a prin-
cipal diferença entre inteligência humana e artificial. Consideremos um paradoxo
conhecido desde a grécia antiga: um homem com um fio de cabelo a mais do que
um homem calvo é também calvo? Aparentemente, o bom senso no diz que sim.
No entanto, esta afirmação em lógica clássica nos força a concluir que todos são
calvos. Afinal, se um homem com nenhum fio de cabelo é calvo por definição,
e aquele com 1 fio de cabelo a mais continua calvo, então são calvos os homens
com 2 fios de cabelo, 3 fios de cabelo, ou qualquer número finito de fios de cabelo.
Obviamente, o conceito de calvície não se descreve corretamente com um número
máximo de fios de cabelo.
A lógica nebulosa (“fuzzy logic”)1 .pretende formalizar a habilidade humana
de chegar a decisões razoáveis baseadas em dados imprecisos e qualitativos. Com
ela procura-se tratar a imprecisão e o caráter vago dos processos mentais humanos.
Um artigo de Zadeh (1965), que propõe uma extensão da teoria clássica de
conjuntos, costuma ser citado como ponto de partida das pesquisas sobre lógica
nebulosa, ainda que estas relacionem-se com as lógicas multivaloradas, cuja ori-
gem é bem mais antiga. Na apresentação que se segue, estudaremos conceitos
de maior emprego em aplicações práticas. No entanto, devemos ressaltar que este
1
Os termos “nebuloso” e “difuso” costumam ser usados para traduzir a palavra inglesa fuzzy.
Adotaremos aqui o termo nebuloso.

40
4.1. INTRODUÇÃO

Normas Triangulares Co-normas Triangulares


min(x, y) max(x, y)
xẏ x + y − xẏ (soma algébrica)
Tabela 4.1: Algumas normas e co-normas triangulares, usadas na definição de
pertinência para a intersecção e união de conjuntos nebulosos, respectivamente.

assunto inspira diferentes abordagens. Sempre que necessário, citaremos os cami-


nhos alternativos, que fogem ao escopo deste curso. Os conceitos serão apresen-
tados, quando for possível, como extensão de seus equivalentes da teoria clássica,
o que nos parece facilitar a compreensão.
Um conjunto nebuloso é caracterizado por uma função de pertinência (ou fun-
ção indicadora) que toma valores no intervalo [0,1]. Em outras palavras, é um
conjunto no qual o conceito clássico de pertinência (“pertence” ou “não pertence”)
é substituído pela idéia de grau de pertinência. Desta maneira, podemos caracteri-
zar de forma mais razoável certos conjuntos nos quais a fixação de limites nítidos
de pertinência é muito artificial. Como exemplo, podemos citar o conjunto das
pessoas altas em uma população, ou o conjunto dos números pequenos em um
intervalo, ou pessoas calvas.
A extensão das operações de união e conjunção para conjuntos nebulosos é
feita usando-se as chamadas normas triangulares (intersecção) e co-normas trian-
gulares (união). Explicitamente, se A e B são conjuntos nebulosos em um universo
de discurso U, e IA (x) é o valor da função de pertinência do conjunto A no ponto
x ∈ U — ou seja, uma indicação de quanto o ponto x pertence ao conjunto A —,
temos
IA∪B = IA ⊕ IB (4.1)
IA∩B = IA ⋆ IB (4.2)
onde ⋆ representa alguma norma triangular e ⊕ alguma co-norma. A Tabela 4.1
mostra algumas normas e co-normas freqüentemente utilizadas.
É fácil notar que estas operações concordam com a união e a intersecção clás-
sicas quando as funções de pertinência tomam valores 0 e 1. Portanto, a união
e intersecção de conjuntos nebulosos podem ser realizadas de várias maneiras, e
a escolha de uma delas é normalmente guiada por procedimentos de tentativa e
erro ou por considerações de custo computacional (estas evidentemente levam a
uma preferência pelo máximo para união e mínimo e produto para intersecção).
Voltaremos a este assunto na discussão dos controladores nebulosos.
O complemento de um conjunto nebuloso é usualmente definido segundo
I¬A = 1 − IA (4.3)

Sistemas Inteligentes 41
CAPÍTULO 4. SISTEMAS NEBULOSOS

Há muitas outras alternativas (por exemplo, todas a família de funções (1−x)n ,


mas não encontramos na literatura aplicações práticas em que definições diferen-
tes fossem usadas.

4.2 Lógica nebulosa


A definição dos conceitos da chamada lógica nebulosa a partir da extensão da te-
oria clássica de conjuntos costuma ser apresentada como um simples trabalho de
associação entre conceitos da teoria de conjuntos e conceitos de lógica. Assim,
associa-se o conceito de pertinência ao de valor-verdade de uma proposição ló-
gica, o de união, intersecção e complemento de conjuntos às operações ou, e e
não, respectivamente; a inferência é vista como uma relação entre conjuntos.
Estas associações estão plenamente justificadas no campo da lógica clássica,
porque é conhecido o isomorfismo entre álgebra de Boole e a estrutura do cálculo
proposicional clássico. No campo da teoria dos conjuntos nebulosos, as inúmeras
maneiras de estender as operações clássicas trazem dificuldades quanto à maneira
mais adequada e rigorosa de apresentar os fundamentos da lógica nebulosa. Os
trabalhos no campo de engenharia não costumam preocupar-se com esta questão.
Considera-se que as associações feitas são razoáveis e, principalmente, levam a
bons resultados.

4.3 Regras nebulosas e possibilidade


Regras (ou afirmações condicionais) são formas eficientes de formalizar conheci-
mento nos sistemas de inteligência artificial (Nilsson 1980). O emprego de ele-
mentos da teoria dos conjuntos nebulosos permite a manipulação mais flexível de
regras, com inferências sobre condições não totalmente satisfeitas ou não clara-
mente definidas. Um exemplo de regra que pode ser tratada desta forma é : "Se o
alvo está próximo, a velocidade deve ser diminuída". Este tipo de inferência, de-
nominada raciocínio aproximado (Zadeh 1975) procura reproduzir a capacidade
humana de lidar com imprecisão e incerteza, e estabelece pontos de contato entre
teoria de conjuntos nebulosos e probabilidade.
De fato, podemos dar à função de pertinência de um conjunto nebuloso uma
interpretação que torna este relacionamento mais claro. Imaginemos que uma va-
riável X tome valores em um universo de discurso U. Uma afirmação do tipo "X é
F", onde F é representado por um conjunto nebuloso sobre U, pode ser vista como
uma restrição nebulosa aos valores de X. Por exemplo, o fato "João é alto"cria
restrições (não rígidas) sobre os valores aceitáveis para a sua altura. Diz-se en-
tão que a função de pertinência IF (x) representa a distribuição de possibilidades

Alexandre Romariz 42
4.4. SAÍDA DE UMA REGRA NEBULOSA

associada a x.
A palavra "possível", em linguagem natural, tem basicamente dois significa-
dos: um físico ("factível") e um lógico ("compatível com a informação disponí-
vel"). Na definição apresentada acima, este conceito origina-se não de freqüências
de eventos (probabilidade) mas da tradução de restrições suaves sobre variáveis
em termos de conjuntos nebulosos. No entanto, probabilidade e possibilidade não
são totalmente independentes. Um evento de possibilidade reduzida não pode ter
elevada probabilidade e, no caso limite, um evento impossível tem necessaria-
mente probabilidade nula. Podemos então requerer que graus de probabilidade
sejam um limite inferior para o grau de possibilidade (princípio da consistência).
Eventos mutuamente excludentes podem ter simultaneamente graus elevados de
possibilidade. Assim, graus de possibilidade não são aditivos, ao contrário dos de
probabilidade. Vale notar que a noção de que graus subjetivos de certeza não são
aditivos é bastante antiga.
Estes conceitos intuitivos podem ser formalizados com a definição de medidas
e integrais nebulosas. Em uma medida nebulosa, o requerimento de aditividade
!
[ X
m Aj = m Aj (4.4)
j j

é substituído pela condição mais fraca de monotonicidade:


A ⊆ B → m(A) ≤ m(B) (4.5)
Ainda há uma enorme polêmica sobre o relacionamento exato entre probabili-
dade e conjuntos nebulosos, e sobre as vantagens e desvantagens destas ferramen-
tas no tratamento da incerteza.

4.4 Saída de uma regra nebulosa


Ainda que não tenhamos acompanhado em detalhes as características internas de
um sistema nebuloso, podemos compreender que há um conjunto de regras que re-
presentam o conhecimento (impreciso) sobre as ações a tomar. Dada uma situação
específica, algumas regras são plenamente aplicáveis, outras apenas parcialmente.
Ao combinarmos as diversas regras, temos uma distribuição de possibilidade para
a variável de saída (digamos, a posição de uma válvula). Obviamente, esta dis-
tribuição de possibilidades precisa ser transformado em um valor numérico único
para ser apresentado ao controlador. O método mais difundido para definir o valor
numérico de saída a partir de uma distribuição nebulosa é o cálculo do centro de
massa: Pn ′
j=1 C (zj )zj
z = Pn (4.6)
j=1 C (zj )

Sistemas Inteligentes 43
CAPÍTULO 4. SISTEMAS NEBULOSOS

PP ZE NP

x dx F

ZE
ZE
ZE

x dx
F
x=10 dx=-10

F=-3

Figura 4.1: Exemplo de determinação da saída de um sistema fuzzy. A primeira


linha representa a aplicação da regra “se x é pequeno e positivo e dx é zero, então
F é negativo e pequeno”. A segunda representa a aplicação de outra regra “se
x é zero e dx é zero, então F deve ser zero”. Ambas são aplicadas para o caso
específico x=10 e dx=-10. O conjunto nebuloso resultante para F é mostrado na
última linha. A aplicação do método do centro de massa daria o valor final F=3
para este caso. O exemplo foi baseado em [15].

onde zj são os valores possíveis para a saída do atuador, e C ′ (zj ) (mais exatamente
IC′ (zj ) é a pertinência do valor zi ao conjunto nebuloso C’ definido pela combi-
nação das regras aplicadas. A Figura 4.1 mostra um exemplo de determinação de
valores de saída a partir de regras nebulosas.

4.5 Dificuldades e Aplicações Práticas


É comum dizer-se que, no projeto de controladores nebulosos, o conhecimento de
operadores humanos experientes pode ser aproveitado. Deve-se notar, no entanto,
que este é apenas o ponto de partida. O ajuste das funções de pertinência dos
conjuntos nebulosos envolvidos e a escolha dos operadores costuma levar a um
longo trabalho de tentativa e erro. A transferência das estratégias de decisão de

Alexandre Romariz 44
4.6. REDES NEURAIS E LÓGICA NEBULOSA

especialistas e operadores humanos para estes sistemas não é tarefa fácil, mesmo
com a flexibilidade apresentada por regras nebulosas. Esta dificuldade, aliada ao
fato de serem recentes os resultados teóricos quanto à estabilidade e robustez des-
tes controladores, faz com que alguns especialistas tenham restrições aos sistemas
nebulosos de controle, apesar dos bons resultados obtidos.
Encontram-se na literatura numerosas aplicações de controle nebuloso. Desta-
camos: controle de aquecedores, de sinais de trânsito, de tráfego aéreo, robótica,
controle automático de velocidade e da transmissão em automóveis, controle de
reatores nucleares. A empresa Hitachi Ltd. desenvolveu um sistema de operação
automática de trens baseado em lógica nebulosa, que vem sendo usado no metrô
de Sendai (Japão) desde 1987.
Uma aplicação interessante encontrada na literatura é o controle de direção de
veículo proposto por Sugeno & Nishida (1985). O problema é definir a direção a
ser seguida por um carro mantido a velocidade constante em um percurso sinuoso,
dadas a direção atual e as distâncias para os limites da pista. São empregadas re-
gras nebulosas com conseqüentes lineares, como visto anteriormente. A partição
do espaço de entrada (número de conjuntos nebulosos) foi arbitrariamente fixada.
Então, a partir de exemplos do percurso do carro quando guiado por operadores
humanos, foram identificados os parâmetros dos conseqüentes de 20 regras. Os
autores apresentam bons resultados, não apenas em simulações, mas no controle
efetivo de um pequeno modelo a baixa velocidade.
A pesquisa em sistemas nebulosos ainda encontra algumas restrições em cer-
tos meios. São várias as razões para este fato. Em primeiro lugar, a teoria dos
conjuntos é um campo extremamente fértil para polêmica em matemática, e é de
uma extensão desta teoria que partimos ao definir conjuntos nebulosos.
Em segundo lugar, ainda não está bem resolvida a relação entre conjuntos
nebulosos e teoria da probabilidade. Há uma enorme resistência por parte de
estatísticos em aceitar esta nova teoria como algo útil e não coberto pelo cálculo
de probabilidades.
As aplicações em controle, o ponto mais "vendido"de lógica nebulosa também
recebem críticas de membros da teoria de controle. Em parte, por haver uma
nuvem de marketing em torno do tema, em parte porque as pesquisas em controle
nebuloso raramente envolvem especialistas em controle.
De qualquer forma, os resultados da teoria de conjuntos nebulosos são nume-
rosos e significativos, e não há motivo para o preconceito que a área desperta.

4.6 Redes Neurais e Lógica Nebulosa


Procuramos, na teoria dos conjuntos nebulosos, um formalismo adequado para
uma descrição aproximada das operações internas de uma rede neural. É interes-

Sistemas Inteligentes 45
CAPÍTULO 4. SISTEMAS NEBULOSOS

sante observar neste ponto as semelhanças e diferenças existentes entre esta teoria
e a de redes, e discutir que vantagens podemos esperar da combinação das duas.
Tanto redes neurais quanto lógica nebulosa se propõem a desenvolver computa-
cionalmente habilidades típicas do raciocínio humano, diminuir a diferença entre
inteligência humana e artificial, entender "o que torna as pessoas mais espertas
do que as máquinas". As abordagens são, no entanto, bem diferentes. A teoria
dos conjuntos nebulosos tornar formalismos tradicionais (conjuntos, relações, re-
gras, etc.) tolerantes à imprecisão e adequados ao processamento de informações
vagas. Já as redes neurais surgem fundamentalmente de considerações quanto à
arquitetura do processamento e quanto ao nível de análise dos processos cogniti-
vos. As abordagens diferentes não nos impedem de identificar vários pontos de
contato entre as teorias.
Fundamentalmente, em ambas está presente a idéia de substituir símbolos dis-
cretos por quantidades contínuas. Ambas enfatizam o processamento numérico
de informações. Os trabalhos que procuram analisar a estrutura das operações
internas das redes neurais indicam em vários momentos pontos de contato com
lógica nebulosa. O processamento em certos modelos de redes neurais pode ser
visto como uma busca por um estado no qual a obediência às restrições repre-
sentadas pelas conexões é a maior possível. Existe, portanto, algo semelhante ao
disparo simultâneo de muitas regras possivelmente conflituosas e com condições
parcialmente satisfeitas.
Até mesmo a sutil relação com probabilidade e estatística é um ponto comum
a redes neurais e lógica nebulosa. Vimos que a definição de conjuntos nebulosos
pode ser interpretada como uma distribuição de possibilidade, um conceito subje-
tivo de factibilidade ou compatibilidade com a informação disponível. Por outro
lado, Smolensky afirma que um sistema sub-simbólico realiza um conjunto de in-
ferências que, como um todo, produzem a saída que melhor se ajusta às condições
de entrada "num sentido definido pelo conhecimento estatístico armazenado em
suas conexões".
Surge então a expectativa de que os conceitos de lógica nebulosa constituam
uma ferramenta para a análise interna de redes neurais. Além disso, as redes neu-
rais podem contribuir muito na construção de sistemas nebulosos, principalmente
no ajuste automático de parâmetros. Técnicas de aprendizado podem substituir o
difícil processo de ajuste por tentativa.

Alexandre Romariz 46
Capítulo 5

Algoritmos Genéticos

5.1 Introdução
No Capítulo 1, vimos que o processamento de informação realizado em sistemas
biológicos serve de inspiração para uma nova arquitetura computacional, deno-
minada sistemas conexionistas ou redes neurais artificiais. O processo biológico
de evolução também serve de inspiração para uma classe relativamente nova de
algoritmos computacionais, denominados Algoritmos Genéticos (GAs). Faremos
uma exposição dos fundamentos desta técnica, acompanhando aquela feita por
Mitchell 1998 [16].
A identificação do mecanismos de seleção natural, e o seu uso para explicação
da variedade e complexidade da vida sobre a Terra é um dos maiores feitos do pen-
samento científico. Os elementos para que ocorra evolução envolvem uma seleção
de indivíduos que chegam à fase reprodutiva, hereditariedade de características
entre animais e suas proles, e pequenas alterações aleatórias dessas característi-
cas. A repetição deste processo seletivo por muitas gerações faz surgirem ajustes
específicos e complexos nos seres vivos, mesmo que o processo de variação seja
aleatório em sua origem.
Também na engenharia, a determinação de uma melhor solução para o pro-
blema é dificultada pela aparente inexistência de modelos para guiar numerica-
mente a avaliação de propostas. No caso de Redes Neurais, vimos como em mui-
tas situações sabemos apenas se o resultado final é bom ou ruim, mas não qual
variável interna do sistema produziu um erro, ou de quanto foi esse erro. Assim,
GAs são soluções atraentes quando o problema envolve uma variedade exponen-
cial de possíveis alternativas e nosso conhecimento sobre o assunto é incompleto
para definir um método quantitativo de análise. Um processo artificial de sele-
ção dentre uma população inicial de possíveis soluções, alteradas ligeiramente de
uma geração para a outra, pode produzir uma solução próxima à ótima, mesmo

47
CAPÍTULO 5. ALGORITMOS GENÉTICOS

que este processo de seleção se baseie apenas no resultado final.


A primeira menção do uso de tal inspiração biológica pode ser encontrada no
termo “estratégias evolutivas” (Evolutionsstrategie) por Rechenberg nos anos 60
e 70. Tratava-se de um método de otimização parâmetros reais. No campo de
programação, Fogel, Owens e Walsh trabalharam na definição de “programação
genética”, onde cada proposta de solução era representada por uma máquina de
estados, e mutações ocorriam em parte da tabela de transição de estados de uma
geração para outra. O termo Algoritmo Genético propriamente dito foi usado por
Holland nos anos 60. Sua pesquisa visava inicialmente estudar em termos compu-
tacionais a adaptação biológica, mas seus estudos formalizaram a área, aplicando
uma definição mais abrangente da estratégia evolutiva aplicada à computação.

5.2 Elementos Principais e Exemplo


Os elementos principais, presentes em praticamente todas as aplicações de GAs,
são: representação de soluções na forma de cromossomos e a aplicação de opera-
dores a estas soluções. Os principais operadores são seleção, mutação, crossover.
Vamos definir estes conceitos em maior detalhe, com exemplos.
Cromossomos Um GA trabalha com populações de possíveis soluções a um pro-
blema dado. Uma solução difere de outra por uma série de parâmetros.
A codificação deste parâmetro é feita na forma de um string denominado
cromossomo. Por exemplo: na definição de novos materiais ou novos fár-
macos, encontrar uma proteína que tenha um dado formato tridimensional
de interesse é um problema muito difícil. Ele depende de quais aminoácidos
compõem a proteína. Supondo que estejamos interessados em uma proteína
composta por 50 aminoácidos, podemos imaginar que cada possível solução
deste problema está codificada na forma de uma lista de 50 letras, cada qual
representando um aminoácido de um conjunto de possíveis aminoácidos.

Seleção As soluções existentes em um dado passo do algoritmo servem de base


para soluções do passo seguinte. No entanto, nem todas as soluções partici-
parão deste processo (ou seja, nem todas poderão se reproduzir). A escolha
de quais cromossomos geram soluções boas o bastante para sobreviver e
participar da próxima etapa é o resultado do operador de seleção. Tipica-
mente, a adequação de cada solução deve ser testada quantitativamente, e
apenas as soluções de melhor adequação (fitness) participam do processo
de reprodução. No caso em questão, poderíamos calcular o valor de energia
potencial para cada uma das soluções propostas na configuração 3D dese-
jada. A de menor energia potencial tem mais chances de se manifestar neste
formato na prática, e tem assim melhor índice de adequação.

Alexandre Romariz 48
5.2. ELEMENTOS PRINCIPAIS E EXEMPLO

1 0 0 1 1 0 1 0 1 0 1 0 1 1

1 0 0 1 0 1 1 0 1 0 1 1 0 1

Figura 5.1: Exemplo de crossover no sítio 3. Os cromossomos que representam


as soluções (linha superior) são quebrados em dois pedaços, e as novas soluções
geradas misturam trechos dos cromossomos antes e depois das quebras (linha in-
ferior).

Crossover Existe, no algoritmo, uma chance de que os cromossomos-pais sejam


intercambiados em um certo ponto para gerar os cromossomos-filhos. Por
exemplo, se os cromossomos 1001101 e 0101011 forem selecionados como
pais para uma nova geração, e ocorrer crossover na terceira posição, serão
geradas soluções-filhas 1001011 e 0101101 (ver Figura 5.1).

Mutação Existe também uma probabilidade (geralmente pequena) de que cada


bit do cromossomo seja invertido (de 0 para 1 e vice-versa) na definição de
novas soluções.

Dados esses elementos, podemos definir os rudimentos de um algoritmo ge-


nético da seguinte forma, ainda que haja diversas variações e outros detalhes que
não mencionamos:

1. De início, tem-se uma população gerada aleatoriamente de n cromossomos


de l bits. Cada cromossomo representa uma possível solução para o pro-
blema em questão.

2. Calcula-se a adequação (fitness) de cada cromossomo da população.

3. Repetem-se os passos a seguir até que n soluções-filhas tenham sido gera-


das:

(a) Selecionar um par de cromossomos da população. A probabilidade de


seleção deve ser uma função crescente da adequação da solução. A se-
leção é feita “com recolocação”, isto é, um cromossomo selecionado

Sistemas Inteligentes 49
CAPÍTULO 5. ALGORITMOS GENÉTICOS

pode ser selecionado mais de uma vez. Um método comum de sele-


ção é o método da amostragem por roleta (roulette-wheel sampling),
em que a cada cromossomo é atribuída uma fatia, proporcional à sua
adequação, de uma roleta imaginária.
(b) Com probabilidade pc , realizar crossover em um sítio aleatoriamente
escolhido para formar dois filhos. Se não há crossover, os dois filhos
são cópias idênticas dos pais.
(c) Com probabilidade pm , realizar mutações em cada sítio de cada filho.

4. Substitua a população atual pela nova população gerada.

5. Retorne ao passo 3.

Cada repetição deste processo é chamada uma geração. Ao final de várias


gerações (tipicamente centenas), espera-se que haja soluções de alta adequação
na população final.
Como exemplo simples, vejamos a tarefa de descobrir um código de 8 dígitos.
A única informação dada é o número de dígitos corretos. Usamos neste caso l =
14, pc = 0.7 e pm = 0.001. A Tabela 5.1 mostra a melhor solução em diferentes
gerações para uma rodada específica do algoritmo. A solução foi encontrada após
3993 gerações, o que significa que apenas 3993 × 14 = 55902 soluções foram
tentadas, de um total de 10 milhões possíveis!. Os valores de pm e pc são valores
típicos encontrados na literatura. O valor da população foi obtido por tentativa
e erro. Na verdade, com l = 50, a resposta era encontrada tão rapidamente que
diminuímos esse valor para acompanharmos melhor a evolução das soluções.
Como o GA consegue um resultado tão melhor do que tentativa e erro? A de-
monstração rigorosa do funcionamento do algoritmo é, obviamente, difícil, ainda
que avanços recentes tenham ocorrido. O mais importante é notar que, ao avaliar
uma solução, o algoritmo na verdade avalia muitas soluções semelhantes (aquelas
que podem ser obtidas a partir de pequenas modificações da solução avaliada).
Assim, o enorme espaço de busca é pesquisado em paralelo.

5.3 Aplicações típicas


5.3.1 Evoluindo tabelas de transição em autômatos celulares
A capacidade, existente em GAs, de encontrar strings com uma dada proprie-
dade com uma busca eficiente, torna-os adequados a todo tipo de problema cujas
soluções podem ser bem representadas por seqüências finitas de símbolos. Encon-
traremos um exemplo na definição de regras de transição em autômatos celulares.

Alexandre Romariz 50
5.3. APLICAÇÕES TÍPICAS

Geração Melhor Acerto


1 78706430 1
101 88545768 2
301 86645728 3
501 86625528 4
601 86125528 5
1301 85125228 6
3701 84125220 7
3992 87125220 8

Tabela 5.1: Exemplo de resultado de GA simples. O objetivo era produzir a


seqüência 87125220, sabendo-se apenas o número de dígitos corretos em cada
seqüência testada. Estão mostradas as melhores seqüências de cada geração, e o
número de dígitos corretos. Havia 14 seqüências em cada geração, com probabi-
lidade de 30% de crossover e 1% de mutação.

Autômatos celulares são arquiteturas de computação com ênfase em interação


local. São máquinas simples, cuja saída é uma função apenas dos estados de
máquinas vizinhas. Isto nos lembra a rede de Hopfield estudada no capítulo 2.
Mas a idéia aqui é mais geral: a mudança de estado não envolve necessariamente
uma operação matemática, mas pode ser descrita por exemplo por uma função
lógica.
Por exemplo, imaginemos uma coleção de autômatos celulares binários — no
sentido de suas saídas estarem limitadas a 0 ou 1 — arranjados em uma linha. A
cada passo, o autômato decide um novo estado (0 ou 1), baseado apenas no estado
dos seus vizinhos. A regra de transição pode ser pensada como uma tabela que
indica, para cada configuração dos vizinhos imediatos e a do próprio autômato,
qual será o próximo estado.
O interesse nas pesquisas em ACs está no fato de, em alguns casos, estas estru-
turas poderem realizar computações globais, isto é, responderem especificamente
a uma condição global de todos os autômatos, embora suas decisões sejam base-
adas apenas em interações locais. Há um enorme interesse em computações deste
tipo por várias razões, mas citaremos apenas uma: já está claro que a intercone-
xão entre elementos processadores será um obstáculo grave ao desenvolvimento
de computadores ainda mais potentes. Se os mecanismos que fazem estes autô-
matos processarem coletivamente a partir de interações locais forem conhecidos,
o problema de interconexão pode ser amenizado.
No caso específico do exemplo citado em Mitchell 1998 [16], o objetivo era
descobrir tabelas de transição em uma vizinhança que contém 7 autômatos, que

Sistemas Inteligentes 51
CAPÍTULO 5. ALGORITMOS GENÉTICOS

permitissem resolver o seguinte problema: determinar se a população inicial de


autômatos tinha uma maioria de células no estado 1 ou no estado 0. Assim, se
começamos em um estado com maioria de 1’s, queremos que em algum momento
no futuro todos os autômatos mudem para o estado 1. No caso de uma maioria de
0, queremos que em algum momento futuro todos os autômatos estejam em um
estado zero.
Algumas das soluções descobertas por um GA têm propriedades interessantes.
Por exemplo, as regras que foram evoluídas fazem com que blocos com número
quase igual de 1’s e 0’s (para os quais é difícil tomar uma decisão) originem pa-
drões de atividade que se propagam por toda a rede, contribuindo assim para uma
decisão conjunta.

5.3.2 Predição de valores


Pode parecer que GAs não são adequados para identificar o valor de funções con-
tínuas, mas esse não é necessariamente o caso. Meyer e Packard (1992) [17]
atacaram o problema de prever séries de dinâmica complexa (inclusive caótica)
procurando evoluir regras do tipo “se y vale entre y1 e y2 no ponto x = x0 , então
y vale y1 no ponto x1 ”. Em outras palavras, as regras definem um conjunto de
condições que, se verificadas, permitiriam definir a função em um ponto futuro, o
que de fato foi conseguido.

5.3.3 Evoluindo Redes Neurais


GAs podem ser empregados em diversos pontos do projeto de uma rede neural: na
definição da arquitetura (número de neurônios por camada, número de camadas,
etc.), na definição dos pesos de uma rede de arquitetura fixa e na definição da regra
de aprendizado.
A definição dos pesos por GAs é buscada para evitar os problemas do trei-
namento supervisionado (tais como mínimos locais) ou a impossibilidade de usar
treinamento supervisionado pela ausência de bons modelos diferenciáveis de erro.
Neste caso, o cromossomo consiste no conjunto de vetores da rede. Resultados
mostram que, em alguns casos, GAs podem funcionar melhor do que o algoritmo
tradicional de retropropagação de erro, mas acredita-se que esta aplicação só se
justifique em geral nos casos de treinamento não-supervisionado, ou em casos
nos quais a resposta do ambiente é atrasada ou de difícil quantificação, como nos
casos de navegação e controle motor.
No caso da arquitetura de redes, há duas alternativas: codificação direta e
codificação gramatical. Na primeira, naturalmente, a arquitetura está diretamente
definida nos cromossomos. Na segunda, o que está definido é uma gramática, ou
seja, uma regra de geração que permite a criação de arquiteturas de rede.

Alexandre Romariz 52
5.4. QUESTÕES DE IMPLEMENTAÇÃO

No caso da codificação direta, uma possibilidade é que o cromossomo defina,


em uma rede com número fixo de neurônios por camada, quais neurônios de uma
camada devem ou não ser ligados aos neurônios da camada seguinte. A adequação
da solução envolve treinamento supervisionado por um número fixo de épocas1 .
No caso de codificação gramatical, evita-se a codificação direta de toda a rede,
que pode fazer o tamanho do cromossomo se tornar impraticável para redes muito
grandes. No caso, usa-se uma gramática como método de definir a geração de
um conjunto de estruturas (frases em uma linguagem, programas de computador,
arquitetura de redes neurais, etc.). Por exemplo: a gramática definida por

S → aSb,
S → ǫ.

onde S é um string inicial qualquer e ǫ é o string nulo gera todos os strings cons-
tituídos por um número igual de ’a’s à direita e ’b’s à esquerda.
De forma semelhante, uma regra de geração de grafos determina a substituição
de símbolos por matrizes de interconexão. Um GA pode evoluir regras para tais
substituições, e a arquitetura da rede fica determinada por um número menor de
parâmetros.
No caso de regras de aprendizado, foi mostrado que a regra delta (para a rede
perceptron) podia ser “redescoberta” por um GA. Não se espera que GAs evoluam
regras melhores do que a de retropropagação, mas talvez seja possível aplicá-lo
na determinação de bons algoritmos de treinamento não-supervisionado.

5.4 Questões de implementação


5.4.1 Quando usar
Algumas condições devem ser testadas no problema estudado antes de saber se
devemos tentar aplicar um algoritmo genético.

Espaço de soluções Deve ser amplo, ou então uma busca exaustiva por todas as
soluções deve ser tentada.

Função de erro Deve ser difícil de quantificar, ou deve definir uma superfície
rugosa (com múltiplos pontos extremos). Se não for o caso, algoritmos de
gradiente provavelmente serão melhores.
1
Chama-se uma época uma passagem por todos os exemplos do arquivo de treinamento super-
visionado.

Sistemas Inteligentes 53
CAPÍTULO 5. ALGORITMOS GENÉTICOS

Conhecimento de área Se existe bom conhecimento analítico sobre o problema,


métodos específicos de otimização podem ter melhor performance do que o
GA, que não aproveita nenhum tipo de conhecimento parcial sobre o pro-
blema, apenas a adequação absoluta das soluções tentadas.

5.4.2 Codificação
A codificação em strings binários é a mais comum, ainda que haja exemplos de
codificação em alfabetos finitos, ou com valores reais. A vantagem de cada uma
parece depender do problema. Estruturas em árvore podem gerar problemas com
o crescimento sem controle dos objetos sob análise.
Uma questão séria na escolha de uma codificação é conhecida como o pro-
blema da ligação (“linkage problem”): é interessante que características funcio-
nalmente relacionadas estejam representadas em locais próximos do cromossomo,
para diminuir a chance de que o “crossover” desvirtue por completo a solução. No
entanto, se estamos aplicando um GA, sabemos pouco sobre os parâmetros funci-
onalmente relacionados das soluções para determinar a ordem das representações!
Para atacar esta questão, alguns autores incluem um “endereço” na represen-
tação de cada sítio do cromossomo. Assim, a ordem dos cromossomos não afeta,
porque o significado é reordenado no momento da avaliação. Neste caso, um
operador inversão — troca da ordem de cromossomos —- mantém a mesma ade-
quação mas permite variar o efeito do operador “crossover”. Uma outra idéia é
a de incluir no cromossomo a posição em que “crossovers” podem ocorrer com
maior probabilidade, e deixar também a escolha destes locais especiais evoluir.

5.4.3 Seleção
Além do uso de uma probabilidade de reprodução proporcional à adequação do
cromossomo, são empregadas outras estratégias de seleção. O principal perigo da
regra simples é a de que soluções melhores nas primeiras gerações rapidamente
dominem a população, impedindo o algoritmo de avaliar soluções diferentes. Uma
forma de diminuir esta possibilidade é levar em conta não apenas a adequação da
solução, mas também a média e desvio-padrão de toda a população. Como de
início o desvio-padrão deve ser elevado na população, uma vantagem inicial em
termos absolutos não deve permitir que uma solução domine toda a população de
imediato.
Outra solução, é usar seleção por “ranking”. Nela, os melhores indivíduos têm
chances uniformes de se reproduzir, ao invés de ter uma probabilidade de repro-
dução proporcional à adequação. Finalmente, o algoritmo de seleção Boltzman
lembra o resfriamento simulado utilizado em redes de Hopfield: de início, a pres-

Alexandre Romariz 54
5.4. QUESTÕES DE IMPLEMENTAÇÃO

são evolutiva não é forte, permitindo a reprodução de soluções inferiores. Com o


passar do tempo, a exigência para participação em reprodução aumenta.
Deve-se notar também que, no algoritmo simples, a nova população substitui
toda a antiga. Uma série de estratégias denominadas elitistas não substituem, de
um passo para o outro, os melhores indivíduos da população.

Sistemas Inteligentes 55
Bibliografia

[1] J. McClelland, D. Rumelhart, and G. Hinton, “The appeal of parallel distri-


buted processing,” in Parallel Distributed Processing: Explorations in the
Microstructure of Cognition (D. Rumelhart, J. McClelland, and P. R. Group,
eds.), vol. 1, (Cambridge, USA), MIT Press, 1986.

[2] P. Smolensky, “On the proper treatment of connectionism,” Behavioral and


Brain Sciences, vol. 11, pp. 1–74, 1988.

[3] J. Fodor and Z. Pylyshyn, “Connectionism and cognitive architecture: a cri-


tical analysis,” Cognition, 1988.

[4] F. Hoppensteadt and E. Izhikevich, Weakly Connected Neural Networks.


New York, USA: Springer, 1997.

[5] P. Dayan and L. Abbott, Theoretical Neuroscience. Cambridge, USA: MIT


Press, 2001.

[6] E. Kandal, J. Schwartz, and T. Jessel, eds., Essentials of Neural Science and
Behavior. Stamford, USA: Appleton & Lange, 1995.

[7] D. Hebb, The organization of behavior. New York, USA: Wiley, 1949.

[8] M.Recce, “Encoding information in neuronal activity,” in Pulsed Neural


Networks (W. Maass and C. Bishop, eds.), (Cambridge, USA), pp. 111–126,
The MIT Press, 1999.

[9] J. Hopfield and C. Brody, “What is a moment? Transient synchrony as a col-


lective mechanism for spatiotemporal integration,” Proceedings of the Nati-
onal Academy of Sciences USA, vol. 98, pp. 1282–1287, January 2001.

[10] W. McCulloch and W.Pitts, “A logical calculus of the ideas immanent in


nervous activity,” Bulletin of Mathematical Biophysics, vol. 5, no. 115–133,
1943.

56
BIBLIOGRAFIA

[11] F. Rosenblatt, “Two theorems of statistical separability in the perceptron,”


in Mechanisation of thought processes, vol. 1, (London,UK), pp. 421–456,
HM Stationery Office, 1959.

[12] D. Rumelhart, G. Hinton, and R. Williams, “Learning internal representati-


ons by error propagation,” in Parallel Distributed Processing: Explorations
in the Microstructure of Cognition (D. Rumelhart, J. McClelland, and P. R.
Group, eds.), vol. 1, (Cambridge, USA), MIT Press, 1986.

[13] T. Kohonen, Self-Organizing Maps. Berlin, Germany: Springer Verlag,


1995.

[14] J. Hopfield, “Neural networks and physical systems with emergent collective
computational abilities,” Proceedings of the National Academy of Science
USA, vol. 79, pp. 2554–2558, 1982.

[15] B. Kosko, Neural Networks and Fuzzy Systems: A Dynamical Approach to


Machine Intelligence. Prentice-Hall, 1991.

[16] M. Mitchell, An introduction to genetic algorithms. Cambridge, USA: MIT


Press, 1988.

[17] T. Meyer and N. Packard, “Local forecasting of high-dimensional chaotic


dynamics,” in Nonlinear modeling and forecasting (M. Casdagli and S. Eu-
bank, eds.), Addison-Wesley, 1992.

Sistemas Inteligentes 57

You might also like