Você está na página 1de 323

Inteligncia Artificial

Alexandre C. B. Ramos
www.ice,unifei.edu.br/ramos
ramos@unifei.edu.br
Objetivos
Estimular a capacidade de elaborao de
projetos baseados em algoritmos de redes
neurais.
Incentivar a realizao de projetos utilizando
tcnicas e ferramentas de algoritmos
genticos.
Despertar o interesse pela pesquisa cientfica
e pelo conhecimento de novas tecnologias.
Programa
Sistemas Especialistas
Representao do conhecimento
Arquiteturas
Aplicaes
Redes Neurais
Redes neurais naturais x artificiais
Arquiteturas e algoritmos
Treinamento e aplicaes
Lgica Fuzzy
Representao
Exerccios e Aplicaes
Algoritmos Genticos
Representao
Funes de seleo e reproduo
Parmetros genticos e aplicaes
Treinamento e aplicaes
Bibliografia
Russel, S. Norvig, P. Inteligencia
Artificial, Prentice Hall
Kasabov, N. K. Foundations of Neural
Networks, Fuzzy Systems and Knowledge
Engineering. The MIT Press. 1996.
Braga, A. P. Redes Neurais Artificiais. LTC.2000.
Michalewicz, Z. Genetic Algorithms + Data
Structures = Evolution Programs, 3 ed. Berlin:
Springer, 1996.
Aplicaes da IA
Onde Usar as Tcnicas de IA?
1. Processamento simblico intenso, isto , a manipulao de grandezas no
quantificveis numericamente;
2. O problema no possui metodologia concisa de resoluo, isto , no
existe (ou existe, mas computacionalmente invivel) um procedimento
que sempre leve a soluo;
3. O problema complexo o suficiente para justificar o investimento na
soluo;
4. O domnio do conhecimento necessrio soluo do problema bem
delimitado;
5. O conhecimento necessrio para a soluo do problema se encontra
disponvel;
6. Uma soluo sub-tima aceitvel; e
7. Caso haja uma falha na soluo no deve levar a perdas irreparveis.
Onde no usar IA?
1. Para resolver um sistema de equaes lineares (infringe o item
2);
2. Desenvolver um programa de xadrez que vena qualquer
adversrio (infringe 3)
3. Ministrar drogas anestsicas em pacientes durante cirurgias,
sem a interveno humana (infringe 7)
reas da IA
IA uma rea fortemente interdisciplinar, exigindo de seus especialistas cera
especializao em determinadas reas, tais como:
Resoluo de problemas, formulao e aprimoramento de procedimentos
gerais de manipulao de conhecimento para problemas no algortmicos
Representao do conhecimento e aprimoramento de formalismos,
linguagens e sistemas para a codificao, anlise e manipulao do
conhecimento
Sistemas Especialistas, simulao em computador dos mecanismos de
resoluo de problemas empregados por especialistas humanos num
domnio bem especfico
Aprendizado, elaborao de tcnicas que permitem melhorar o
desempenho do software em tempo de execuo
Percepo artificial, dotar o computador de capacidade sensitiva atravs
de viso artificial, processamento de linguagem natural escrita ou falada
reas da IA
Redes neurais, concepo de estruturas computacionais que modelam
os neurnios e sinapses do crtex cerebral
IA distribuda, estudo da forma de comunicao entre diferentes
agentes, em geral, distribudos por um certo n de processadores
Impactos na Utilizao de IA
A medida em que aumenta a utilizao do computador, deparamos com
problemas intratveis, aparentemente, se nos limitarmos s tcnicas
de resoluo habituais (notadamente algortmicas). Normalmente estes
problemas so bem especficos, e por isso, no existe algoritmo de
soluo, exemplo:
reconhecimento de padres
diagnose de falhas
treinamento em controle de processos
Internet (softbots) etc.
Nestes casos tcnicas de IA so imprescindveis para a implementao
de automatismos avanados, cuja implantao depende da
disponibilidade de recursos para o projeto (SW, HW e PW)
IA em Controle de Processos
Vrias tarefas relativas ao controle e automao de processos
necessitam procedimentos corretos de soluo devido aos seguintes
fatores:
1. Ausncia de modelos simples e precisos para a descrio de sua
dinmica ou da inter-relao para a descrio de seus componentes;
2. Complexidade do problema;
3. Rudos externos ao processo;
4. Emulao de aes tomadas por operadores experientes; e
5. Adaptao de procedimentos empregados em situaes semelhantes.
Controle Inteligente
uma filosofia de controle de sistemas dinmicos que combina
tcnicas tradicionais de controle de processos (identificao,
controle avanado etc.) com mtodos baseados no
conhecimento atuando num nvel mais elevado, de modo a
poder monitorar a prpria estratgia de controle.
Auxlio Inteligente Operao
de Processos
So sistemas inteligentes que monitoram
os valores das variveis de um processo
e que a partir de uma base de
conhecimento fornecida por um
operador experiente propiciam uma
melhora e padronizao no tratamento
das instabilidades e operaes do
processo.
Treinamento Assistido por
Computador
No sentido de melhorar e agilizar a
eficincia das atitudes tomadas por um
operador menos experiente a partir de
um treinamento especfico em
instabilidades do processo realizado off-
line;
Projeto Assistido por
Computador
Sistemas CAD para a engenharia de
controle so ambientes de SW que
agregam de forma harmoniosa uma
srie de ferramentas utilizadas no
projeto de sistemas de controle,
exemplos Matlab e Simulink
Controladores Neurais,
Genticos e Fuzzy
Que empregam tcnicas de IA baseadas em
analogias com o funcionamento de certos
processos biolgicos, no caso processos cerebrais
e genticos
Controladores fuzzy empregam o formalismo da
lgica nebulosa e definem diferentes polticas de
controle para diferentes regies do espao de
estados do processo, que so delimitadas atravs
de conjuntos nebulosos.
Dificuldades da IA
Representao:
Como traduzir uma tarefa em informao
estruturada e processos de informao
Generalidade x eficincia
Exploso combinatria (espao de
soluo):
reproduzir as jogadas possveis do Xadrez
Dificuldades: Xadrez
Impossvel reduzir o problema a um
formalismo matemtico
Uma busca exaustiva do melhor
movimento impraticvel
Soluo baseada em heursticas

Dificuldades: Viso
Como reconhecer uma ma no
supermercado?
Contexto: mas sero encontradas junto com
outras frutas (conceito)
Segmentao: como saber onde comea e acaba
uma fruta? preciso reconhecer cores, textura,
tamanho
Representao e similaridade: como diferenciar
mas de peras, mangas? H vrios modelos
visuais para representar formas de diferentes
frutas, comparveis entre si
Representao do Conhecimento
Representao do Conhecimento
Primordial para o desenvolvimento de
programas que empregam tcnicas de
IA.
Considerando o estado da arte atual, as
quantidades de conhecimento que
conseguimos manipular em computador
fica muito aqum daquela que o ser
humano utiliza em seu cotidiano.
Tipos de Representao do
Conhecimento
Baseado em Regras
a representao do conhecimento se
d atravs de estruturas
denominadas regras de produo,
estas compem-se de 2 partes:
Premissas SE
Concluso ENTO
Tipos de Representao do
Conhecimento
Baseado em Hierarquias
A representao se d atravs de
estruturas de dados organizadas
hierarquicamente, descrevendo
conceitos em diferentes nveis de
detalhes (abstraes).
A inferncia se processa atravs da
busca e atualizao nestas estruturas
Tipos de Representao do
Conhecimento
Orientado a procedimentos
O conhecimento estruturado num
conjunto de sub-rotinas de vrios
nveis de especificidade.
A inferncia se processa atravs da
evocao destes procedimentos numa
ordem adequada
Tipos de Representao do
Conhecimento
Orientado a objetos
O conhecimento encapsulado em
estruturas autnomas (objetos) que se
comunicam pelo envio de mensagens.
A inferncia se processa atravs da
interao entre objetos;
Tipos de Representao do
Conhecimento
Baseado em lgica
Estruturas inspiradas nos formalismos
lgicos (axiomas, relaes,
predicados etc.) armazenam o
conhecimento.
A inferncia se processa atravs de
algoritmos que testam a veracidade
ou no de asseres
Exerccio 1
Represente algortmicamente a soluo
dos seguintes problemas:
Sejam 2 vasilhames dgua, um de 4 litros
e outro de 3 litros. Nenhum deles possui
qualquer marcao de medida. H uma
torneira que pode ser utilizada para encher
os vasilhames de gua. Como voc poder
colocar exatamente 2 litros dgua dentro
do vasilhame de 4 litros?
Exerccio 2
Trs missionrios e trs canibais se encontram em
um lado do rio. Todos concordam que precisam
chegar do outro lado.
Mas os missionrios no confiam nos canibais. Assim,
os missionrios querem atravessar o rio de modo tal
que o nmero de missionrios em qualquer das
margens nunca seja inferior ao nmero de canibais
que estiver do mesmo lado.
O nico barco disponvel s carrega 2 pessoas por
vez. Como todos podero chegar ao outro lado, sem
que os missionrios arrisquem suas vidas?
Exerccio 3
Prximo de Hani h um monastrio cujos monges devotam suas vidas
a uma tarefa muito importante.
Em seu ptio h trs postes altos. Nestes postes h um conjunto de
sessenta e quatro discos, cada um deles com um furo no centro e de
tamanhos diferentes.
Quando o monastrio foi fundado, todos os discos estavam em um dos
postes, cada disco repousando sobre o imediatamente maior que ele.
A tarefa dos monges deslocar todos os discos para um dos outros
postes. Apenas um nico disco pode ser deslocado de cada vez e todos
os demais discos devero estar em um dos postes. Alm disso, em
nenhuma ocasio durante o processo de transferncia, um disco maior
poder ser colocado em cima de um menor.
Pode-se utilizar o terceiro poste como local de repouso temporrio
para os discos. Segundo a lenda, o mundo terminar quando eles
houverem terminado a tarefa.
Mtodos Bsicos de Soluo
de Problemas
Raciocnio forward x backward
Um procedimento de busca visa descobrir um
caminho atravs de um espao do problema, a
partir de uma configurao inicial at um
estado final, isso pode ser feito a partir de
duas direes:
Para frente (forward), a partir dos estados
iniciais; ou
Para trs (backward), a partir dos estados
finais.
Raciocnio forward x backward
Trs fatores influenciam a opo de raciocinar
para frente ou para trs:
1. Existem mais estados iniciais ou estados finais? (
melhor comear do conjunto menor para o maior).
2. Em que direo o nmero mdio de ns que podem
ser alcanados a partir de um nico n maior (fator de
ramificao - FR)? O ideal seguir na direo do FR
mais baixo).
3. Ser necessrio justificar o processo de raciocnio? Se
for deve-se prosseguir na direo que mais se assemelha
forma do usurio pensar.
Funes heursticas
A funo heurstica a funo que mapeia
as descries do estado do problema
para medidas de desejabilidade,
normalmente representadas com
nmeros. Portanto o valor da funo
heurstica num dado n de um processo
de busca nos fornece uma estimativa to
boa quanto possvel no sentido de se o
n est no melhor caminho da soluo.
Funes heursticas
Para que as funes heursticas
normalmente precisam estar unidas a
algum mtodo heurstico de finalidade
especial, apropriado para aquele
domnio,estes mtodos so
normalmente chamados mtodos
fracos, quais sejam:
Gerar-e-testar
Subida de encosta
Funes heursticas
Busca em amplitude
Busca pela melhor escolha
Reduo do problema
Satisfao de restries
A escolha da estratgia correta para um
problema em particular depende muito das
caractersticas do problema.
Exemplos em:
http://www.slideshare.net/rafael.joi/ia-
problemas-heuristicas#
Gerar-e-testar
Corresponde a estratgia mais simples de todos os mtodos de busca.
Gerar-e-testar um algoritmo de busca em profundidade, j que solues
completas devero ser testadas antes de serem testadas.
Tambm considerado uma busca exaustiva do espao do problema,
caso opere produzindo solues aleatoriamente, no existe garantia de
encontrar uma soluo.
Nesta forma, tambm conhecido como o algoritmo do Museu Britnico,
uma referncia ao fato de que, se um nmero suficiente de macacos
forem colocados em frente a um conjunto de mquinas de escrever e
deixados sozinhos o tempo suficiente, ento sua implementao neste
algoritmo geraria todos os livros contidos no museu.
Gerar-e-testar - algoritmo
1. Gerar uma soluo possvel. Para alguns problemas,
isto significa gerar um ponto em particular no espao
do problema. Para outros, significa gerar um caminho
a partir de um estado inicial.
2. Testar para ver se ela uma soluo, comparando o
ponto escolhido ou o ponto final do caminho
escolhido com o conjunto de estados meta
aceitveis.
3. Se uma soluo tiver sido encontrada, parar; Caso
contrrio, retornar ao passo 1.
Subida de encosta
Subida de encosta uma variao do gerar-e-testar em
que a retroalimentao do procedimento de teste
utilizada para ajudar o gerador a decidir em que
direo se deslocar no espao de busca.
Num procedimento de gerar-e-testar, a funo de teste
responde apenas com um sim ou no.
Se a funo de teste for ampliada com uma funo
heurstica que fornea uma estimativa do quo
prximo um dado estado est de um estado meta, o
procedimento de gerar pode explor-lo ampliando
sua eficincia.
Subida de encosta - algoritmo
1. Forme uma fila de um elemento consistindo do n raiz.
2. At que a fila esteja vazia ou que o destino tenha sido alcanado,
determine se o primeiro elemento da fila o n destino.
2.1. Se o primeiro elemento o n destino, no faa nada.
2.2. Seno, remova o primeiro elemento da fila, coloque os filhos do
primeiro elemento, se existentes, ordenados segundo a distncia
restante estimada, e adicione os filhos do primeiro elemento, se
existentes, na frente da fila.
3. Se o n destino tiver sido encontrado, proclame sucesso; caso
contrrio, proclame fracasso.
4. Pegue o melhor elemento encontrado acima e utilize-o como a prxima
soluo proposta. Este passo corresponde a um movimento atravs do
espao do problema na direo que parece estar levando o mais
rapidamente no sentido de uma meta.
5. Volte ao passo 2.
Busca em amplitude
Tanto gerar-e-testar quanto a subida de encosta so
procedimentos de busca em profundidade. Estes so
muitas vezes fceis de implementar e podero atingir
uma boa soluo rapidamente. Entretanto gastam
muito tempo explorando caminhos inteis.
A busca em amplitude uma alternativa mais simples,
onde todos os ns de um nvel da rvore so
examinados antes dos ns seguintes.
Este procedimento garante encontrar uma soluo,
desde que haja um nmero finito de ramos da
rvore.
Busca em amplitude - algoritmo
1. Forme uma fila de um elemento consistindo do n raiz.
2. At que a fila esteja vazia ou que o destino tenha sido
alcanado, determine se o primeiro elemento da fila o
n destino.
2.1. Se o primeiro elemento o n destino, no faa
nada.
2.2. Seno, remova o primeiro elemento da fila, coloque
os filhos do primeiro elemento, se existentes, no fim da
fila.
3. Se o n destino tiver sido encontrado, proclame sucesso;
caso contrrio anote fracasso.
Busca pela melhor escolha
Se uma soluo no for encontrada, aquele ramo
parecer menos promissor do que um dos ramos do
nvel mais alto que havia sido ignorado. Nesse ponto, o
ramo anteriormente ignorado, e agora mais promissor,
ser explorado.
O ramo antigo no esquecido. Seu ltimo n
permanece no conjunto de ns gerados e no
expandidos e a busca pode retornar a ele sempre que
os demais fiquem suficientemente ruins e ele seja
novamente o caminho promissor.
A busca pela melhor escolha pode ser feita tambm em
um grafo, de modo a evitar caminhos em duplicata,
isso pode ser realizado atravs do Algoritmo A*.
Busca pela melhor escolha - A*
1. Forme uma fila de vias parciais; Faa a fila inicial consistir de via de
comprimento zero, passo zero, desde o n raiz at lugar nenhum.
2. At que a fila esteja vazia ou que o destino tenha sido alcanado,
determine se a primeira via na fila alcana o n destino.
2.1. Se a primeira via alcanar o n destino, no faa nada.
2.2. Se a primeira via no alcanar o n destino:
2.2.1. Remova a primeira via da fila.
2.2.2. Forme novas vias a partir da via removida pela extenso
de um passo.
2.2.3. Acrescente as novas vias fila.
2.3.4. Ordene a fila pela soma de custos acumulados at este
ponto, com as vias de menor custo na frente.
2.3.5. Se duas ou mais vias alcanarem um n comum, apague
todas as vias, exceto a que alcana o n comum com o custo mnimo
3. Se o n destino foi achado, proclame sucesso; seno proclame
fracasso.
Resumindo
A ideia comear com o estado inicial (configurao
completa, soluo aceitvel) e melhor-lo iterativamente.
Os estados (=soluo) esto representados sobre uma
superfcie (grfico).
A altura de qualquer ponto na superfcie corresponde
funo de avaliao do estado naquele ponto
O algoritmo se move pela superfcie em busca de
pontos mais altos (melhor avaliao do estado)
O ponto mais alto (mximo global) corresponde a
soluo tima.
Reduo do problema
As estratgias de busca vistas at o momento utilizam grafos
OU, para encontrar um nico caminho para uma meta.
Outro tipo de estrutura, o grafo E-OU, til para soluo de
problemas resolvveis pela decomposio do problema em
problemas menores, esta decomposio gera arcos (arcos E)
que pode apontar para qualquer nmero de ns sucessores,
devendo ser todos resolvidos para que o arco aponte para
uma soluo. Neste caso utiliza-se o algoritmo AO*,
semelhante ao A*.
Satisfao de restries
Em IA muitos mtodos podem ser vistos como satisfao de
restries, em que a meta descobrir algum estado de
problema que satisfaa um dado conjunto de restries,
por exemplo, quebra-cabeas de criptografia.
Entretanto, a estrutura desses problemas requer o aumento
da descrio do estado de problema, a partir de uma lista
de restries que se modifica medida que peas sejam
resolvidas e a ampliao do mecanismo de busca para
manipular essa lista.
Satisfao de restries - algoritmo
1. At que uma soluo completa seja encontrada, ou que todos os
caminhos tenham levado a becos sem sada, faa:
1.1. Escolha um n no expandido do grafo de busca.
1.2. Aplique as regras de inferncia de restries ao n
escolhido a fim de gerar as novas restries possveis.
1.3. Se um conjunto de restries contiver uma contradio,
reporte este caminho como um beco sem sada.
1.4. Se o conjunto de restries descrever uma soluo
completa, reporte sucesso.
1.5. Se no encontrar, nem contradio, nem soluo
completa, aplique as regras de espao de problema para gerar
novas solues parciais que sejam compatveis com o
conjunto atual de restries. Insira essas solues parciais
dentro do grafo de busca.
Exemplo prtico - Busca
Seja uma empresa area com as seguintes rotas (em
kilmetros):
So Paulo a Braslia 1000
Braslia a Palmas 1000
So Paulo a Belo Horizonte 800
So Paulo a Palmas 1900
Belo Horizonte a Fortaleza 1500
Belo Horizonte a Manaus 1800
Belo Horizonte a Braslia 500
Palmas a Salvador 1000
Palmas a So Luiz 1500
So Luiz a Manaus 1500
Palmas a Manaus 1000


Representao grfica
Com base no grfico de rotas, um passageiro
deseja viajar de So Paulo a Manaus, fazendo-
se vos em escala.
Desenvolver um programa em C
que defina as rotas e as distncias,
utilizando os seguintes mtodos
de busca:
Profundidade
Superfcie
Subida de encosta

Representao em rvore
Para tornar as coisas mais fceis de entender,
redesenha-se o diagrama de rotas como uma
rvore, a meta Manaus, envolvida por um
crculo. Notar que vrias cidades aparecem mais
de uma vez para simplificar a construo do
diagrama.
Profundidade
Escrever um programa em c, para encontrar uma rota entre So
Paulo e Manaus requer um banco de dados que contenha
informaes sobre os vos da empresa. Cada entrada no banco
de dados deve conter as cidades de origem e de destino, a
distncia entre elas e um indicador para ajudar no retorno,
conforme a seguinte estrutura:
#define MAX 100
/* Estrutura do banco de dados sobre os voos */
struct FL {
char from[20]; /* de */
char to[20]; /* para */
int distance;
char skip; /* usado no retorno */
};
struct FL flight[MAX]; /* matriz de estruturas do banco
de dados */
int f_pos = 0; /* numero de entradas do BD dos voos */
int find_pos = 0; /* indice de pesquisa no BD dos voos
*/

Entrada de dados
As entradas so colocadas no banco de dados, com a
funao assert_flight(), e setup() inicializa a informao.
A varivel f_pos contm o ndice do ltimo item no banco
de dados. Conforme a seguir:
void setup(void)
{ assert_flight("Sao Paulo","Brasilia",1000);
assert_flight("Brasilia","Palmas",1000);
assert_flight("Sao Paulo","Belo Horizonte",800);
assert_flight("Sao Paulo","Palmas",1900);
assert_flight("Belo Horizonte","Fortaleza",1500);
assert_flight("Belo Horizonte","Manaus",1800);
assert_flight("Belo Horizonte","Brasilia",500);
assert_flight("Palmas","Salvador",1000);
assert_flight("Palmas","Sao Luis",1500);
assert_flight("Sao Luis","Manaus",1500);
assert_flight("Palmas","Manaus",1000);
}
Armazenamento de fatos
/* Coloca os fatos no banco de dados */
void assert_flight(char *from, char *to, int dist)
{
if (f_pos < MAX) {
strcpy(flight[f_pos].from,from);
strcpy(flight[f_pos].to,to);
flight[f_pos].distance = dist;
flight[f_pos].skip = 0;
f_pos++;
}
else printf("banco de dados de vos cheio.\n");
}
No banco de dados ficam armazenados os fatos, o
programa a ser desenvolvido usar estes fatos para
chegar a uma soluo. Assim podemos nos referir ao
banco de dados como um banco de conhecimento.

Rotinas de suporte
Precisamos de uma rotina que determine se h um vo
entre as duas cidades (origem e destino). Essa funo
chamada match() e devolve zero se no existe o vo ou
devolve a distncia entre as duas cidades se h um vo,
veja a seguir:
/* se ha o voo entre from e to, entao devolve a
distancia do voo; caso */
/* contrario, devolve 0 */
match(char *from, char *to)
{ register int t;
for (t=f_pos-1; t>-1; t--);
if(!strcmp(flight[t].from,from) &&
!strcmp(flight[t].to,to)) return
flight[t].distance;
return 0; /* nao encontrado */
}

Outra rotina necessria find() que, dada uma cidade, pesquisa
no banco de dados qualquer conexo. Se uma conexo
encontrada, o nome da cidade destino e sua distncia so
devolvidos; caso contrrio, zero devolvido, exemplo:
/* Dado from, encontre anywhere */
find (char *from, char *anywhere)
{find_pos = 0;
while (find_pos < f_pos) {
if (!strcmp(flight[find_pos].from, from) &&
!flight [find_pos].skip) {
strcpy(anywhere, flight[find_pos].to);
flight[find_pos].skip = 1; /* torna ativo */
return flight[find_pos].distance;
}
find_pos++;
}
return 0;
}

Retorno
O retorno um ingrediente crucial em muitas tcnicas de IA,
sendo efetuado pelo uso de rotinas recursivas e de uma
pilha de retorno. Quase todas as situaes de retorno
tm operao tipo pilha - isto , elas so primeira a
entrar e ltima a sair. Conforme umpercurso explorado,
n so colocados na pilha medida que so encontrados.
A cada ponto sem sada, o ltimo n retirado da pilha e
um novo percurso, a partir desse ponto, tentado. Esse
processo continua at que a meta seja alcanada ou
todos os percursos tenham se exaurido.
As funes push() e pop(), que gerenciam a pilha de
retorno, mostradas a seguir, usam as variveis globais tos
e bt_stack para guardar o apontador ao topo da pilha e a
matriz que contm a pilha, repectivamente.
Rotinas de pilha
/* Rotinas de pilha */
void push (char *from, char *to, int dist)
{ if(tos < MAX ) {
strcpy(bt_stack[tos].from,from);
strcpy(bt_stack[tos].to,to);
bt_stack[tos].dist=dist;
tos++;
} else printf("Pilha cheia \n");
}
void pop (char *from, char *to, int dist)
{ if(tos > 0) {
tos--;
strcpy(from,bt_stack[tos].from);
strcpy(to,bt_stack[tos].to);
dist = bt_stack[tos].dist;
} else printf("Pilha vazia \n");
}

Encontrando uma rota
Isflight() a rotina principal para se encontrar a rota entre duas cidades.
/* Determina se ha uma rota entre from e to */
void isflight(char *from, char *to)
{int d, dist;
char anywhere[20];
if (d = match(from,to)) {
push(from, to, d); /* a meta */
return; }
/* Tenta outra conexao */
if(dist=find(from,anywhere)) {
push (from, to, dist);
isflight (anywhere, to);
}else if(tos > 0) {
pop(from,to,dist);
isflight(from,to);
}
}

Isflight
Isflight() opera da seguinte forma. Em primeiro lugar, o
banco de dados verificado por match() para ver se
existe um vo entre from e to. Se existir a meta j foi
encontrada - a conexo colocada na pilha e a funo
retorna. Caso contrrio, find() verifica se h alguma
conexo entre from e algum outro lugar. Se houver, essa
conexo colocada na pilha e isflight() chamada
recursivamnte. Esse processo continua at que a meta
seja encontrada. O campo skip necessrio no retorno
para evitar que as mesmas conexes sejam tentadas
repetidamente.
Isflight() no devolve a soluo ela a gera. Ao sair isflight()
deixa na pilha de retorno a rota entre as cidades origem e
destino que a soluo.

Resultado do programa
A funo route() serve para escrever o percurso a seguir e a
distncia total percorrida:
/* Mostra a rota e a distancia total */
void route(char *to)
{
int dist, t;
dist = 0;
t = 0;
while (t < tos) {
printf("%s para ", bt_stack[t].from);
dist += bt_stack[t].dist;
t++;
}
printf("%s \n",to);
printf("a distancia : %d\n",dist);
}

Exerccios
1. Defina Inteligncia. O que um comportamento
inteligente de uma mquina?
2. Em que consiste o teste de Turing?
3. O que voc entende por IA? Contraste sua resposta com
as quatro categorias:
a)Sistemas que pensam como humanos
b)Sistemas que agem como humanos
c) Sistemas que pensam racionalmente
d) Sistemas que agem racionalmente
4. Quais os principais desafios da IA hoje?
5. Represente em forma de arvore o problema do jogo dos 8

Prolog
Prolog
uma linguagem de computao inventada em
1970 por Alain Colmerauer e seus colegas da
Universit de Marseille, significa PROgramming
LOGig (lgica programada)
No havia muito interesse em Prolog at o
momento em que os cientistas de computao
japoneses lanaram seu projeto de quinta
gerao, coma finalidade de desenvolver novos
computadores com software que reinaria
supremo na dcada de 90 e alm.
Para que serve o Prolog
Linguagens de computao especficas raramente
so boas para todos os tipos de problemas:
FORTRAN: utilizado principalmente por cientistas
e matemticos para desenvolvimento de
programas para tratar de problemas
numericamente complicados;
COBOL: utilizado principalmente no mundo dos
negcios
PROLOG: foi projetado para cuidar de problemas
lgicos, isto , problemas para os quais uma
deciso tem de ser tomada de uma forma
ordenada. Prolog tenta fazer com que o
computador raciocine ao encontro de uma
soluo
Lgica
Prolog depende de manipulao lgica e no a
nica! Linguagens que operam com lgica de
proposio (ou lgica de predicados ou clculo
proposicional), por exemplo:
As seguintes declaraes so fatos:
Pessoas com tnis para futebol jogam
futebol.
A pessoa #1 tem tnis para futebol.
O que pode ser deduzido, determinado,
calculado, computado e determinado desses
fatos que a pessoa #1 joga futebol.
Prolog
Prolog faz com que o computador cuide da parte
dedutiva, visto que possui uma mquina de
deduo interna que automaticamente percorre
os fatos e constri ou testa concluses lgicas.
O exemplo anterior parece trivial, mas se
tivssemos um banco de dados tcnico,
carregado com milhares de fatos e regras, no
seria prtico passar esta lista para uma pessoa
e solicitar uma resposta rpida.
Resoluo e unificao
Resoluo uma regra de deduo - permite ao
computador dizer que proposies seguem de
uma forma lgica de outras proposies. O
software que emprega o princpio da resoluo
opera com clusulas lgicas.
Unificao o ato de combinar os lados direito e
esquerdo das clusulas de uma forma lgica
pela investigao dos valores variveis que
permitem uma concordncia adequada, as
bases tericas do Prolog esto descritas em
Programing in Prolog, de W.F.Clocksin e
C.S.Melish.
Linguagem procedural x
declarativa
Prolog uma linguagem declarativa, isto , ela exige
que sejam declaradas regras e fatos a respeito de
determinados smbolos, para depois perguntar-lhe se
uma determinada meta segue de uma forma lgica
destas regras e fatos, a deduo destes fatos parte do
prprio Prolog.
Pascal, BASIC e outras linguagens de programao so
linguagens procedurais, nestas alm de declarar
fatos e regras necessrio utilizar a linguagem para
informar ao compilador como procurar uma soluo,
onde olhar, quando parar etc.
Poucas linhas de uma linguagem declarativa podem fazer
tanto trabalho como muitas linhas de uma linguagem
procedural.
Objetos e relacionamentos
Prolog cuida de objetos e do relacionamento entre
eles, sendo inclusive chamada de linguagem
orientada a objetos. Um objeto no ser
necessariamente algo tangvel, pode ser
qualquer coisa que possamos representar
simbolicamente no computador, exemplos de
objetos e relacionamentos:
Objetos Relacionamentos
vaca animal
bananeira vegetal
ibmpc computador
basalto mineral
alface vegetal

Fatos
A primeira maneira de combinar um objeto e um
relacionamento utilizando-os para definir um
fato, a forma geral de definio de fatos em
Prolog :
relao (objeto)
exemplo:
mamfero(morcego)
mineral(ferro)
_um_vegetal(bananeira)
Utilizando o Turbo Prolog
Utilizando o Turbo Prolog
O ambiente do Turbo Prolog muito parecido com
os ambientes do Turbo Pascal e Turbo C, sendo
vlidos a maioria dos comandos de edio de
programas, no ambiente de desenvolvimento
existem 4 janelas principais:
1. Editor: onde so escritos os programas Prolog;
2. Dilogo: utilizada para interagir com os
programas em Prolog (onde so feitas
perguntas e obtidas respostas);
3. Mensagem: apresenta informaes sobre
programas carregados, compilao erros etc.; e
4.Trace: para acompanhar a execuo do
programa passo a passo.

Partes de um programa
A maioria dos programas Turbo Prolog ser
organizada em quatro partes principais:
1. Clusulas: os fatos que voc constri a partir
de seus objetivos e relacionamentos;
2. Predicados: so os relacionamentos;
3. Domnios: informa os tipos (como no
Pascal) de coisa um argumento pode ser; e
4. Meta: informa o que se quer descobrir ou o
que queremos que o computador faa com as
informaes fornecidas nas trs sees
anteriores.
Primeiro exemplo de
programa
Disparar o Turbo Prolog, ir at o editor e digitar a
primeira linha:
/* Exemplo 1 - animal, vegetal ou computador */
domains
coisa = symbol
predicates
animal (coisa)
vegetal (coisa)
goal
clauses
animal (vaca).
animal (morcego).
Gravando e compilando
Utilize o menu para gravar o programa, teclar F e
depois write to: EX1.pro para guarda-lo num
local apropriado.
Tecle C para compilar e, caso no encontre
nenhum erro, tecle R para rodar o programa.
Na janela Dialog aparecer a palavra Goal:_
Ento voc poder fazer uma pergunta ao Turbo
Prolog, por exemplo: Um morcego um
animal?, utilizando o comando:
animal(morcego)
e ver a resposta Yes.
Variveis
Caso conhea o relacionamento mas no o objeto,
pode-se utilizar variveis. Qualquer palavra-
objeto que inicie com letra maiscula
considerada, uma varivel. A maneira mais
rpida de ver o que uma varivel pode fazer
interrogando o programa. Tente
animal(X)
como uma meta, e veja o resultado.
Turbo Prolog toma a meta com a varivel e a
compara s clusulas. Primeiro verifica se o
predicado o mesmo da primeira clusula. Se
, ento testa para ver se a meta e o predicado
tm o mesmo nmero de argumentos.
Varivel annima ou vazia
A varivel annima utilizada nos mesmos
moldes das variveis-padro, mas nunca
inicializada com um valor padro e
representada por um travesso _, exemplo:
ve(claudia,_)
e que significaria, verificar se claudia ve algum.
Nesse caso Prolog apenas procura um fato que
tem o predicado ve, dois argumentos
(claudia como primeiro e qualquer coisa como
segundo argumento) e s devolver yes pois
ele no precisa saber mais, caso tente a meta:
ve(_,_)
ser possvel saber se algum observa algum

Um programa mais
complexo
Aridade
o nmero de argumentos que aquele
predicado tem, exemplo:
filho(tiago) aridade 1
pai(joao,maria) aridade 2
bebe(jose,pinga,guaran) aridade 3

Metas compostas - o
operador and
Caso seja proposta a meta: ve(joao,maria)
and ve(pedro,ana) estar se perguntando:
verdade pelas clusulas que Joo ve
Maria e Pedro ve Ana?
esta meta ser considerada verdadeira apenas se
as duas metas individuais forem verdadeiras
a meta composta acima poder tambm utilizar
uma vrgula , no lugar do and assim esta
poderia ser escrita como:
ve(joao,maria),ve(pedro,ana)

Metas compostas - o
operador or
Metas compostas que utilizam o operador or
so tambm chamadas conjunes. Da
mesma forma que uma vrgula , pode
substituir o operador and, um ponto e vrgula
; pode substituir o operador or, exemplo:
ve(joao,maria) or ve(joao,pedro)
A outra meta individual poder ser verdadeira ou
falsa que no afetar a verdade da meta
composta.
ve(joao,maria);ve(joao,pedro)

O operador - not
Utilizado para garantir a no existncia de uma
clusula, por exemplo:
acrescentar ao programa a regra:
feliz(joao) if not (ve(joao,maria))
depois a clausula:
feliz(alexandre) if ve(maria,alexandre)
Regras
Na seo clauses tambm pode-se colocar
regras. Uma regra tpica diz que alguma coisa
verdadeira (uma meta ser bem sucedida) se
algumas outras coisas so verdadeiras. Pode-se
utilizar tanto o operador if quanto o sinal :-
para representar uma regra, exemplo:
feliz(paulo) if ve(paula,paulo) que significa:
Paulo est feliz se ele estiver sendo observado por
Paula
triste(Alguem) :- ve(tiago,Alguem) que significa:
Alguem est triste se estiver sendo observado por
Tiago

Exemplo de regra
Retrocesso (backtraking)
Sempre que uma submeta tem de ser satisfeita,
Prolog retrocede pelo banco de dados, sempre
procurando de cima para baixo e da esquerda para
a direita, para encontrar uma concordncia. O
retrocesso poder, facilmente, ficar complexo
quando as regras e as metas forem complexas.
A partir do goal:feliz(paulo), Prolog sai procurando
pelos fatos e encontra o fato ve(paula,paulo). Aplica
a submeta quele fato e volta regra feliz(paulo) if
ve(paula,paulo), onde sabe que o lado esquerdo da
regra, feliz paulo, pode ser utilizado para
concordar com a meta original, porque o lado direito
da regra era yes(verdadeiro).
Instanciamento e ligao
Ao tentar a meta: feliz(Quem)
obteremos a resposta paulo depois de uma
pesquisa muito parecida. A nica diferena
que a varivel Quem tem de sofrer
instanciamento para paulo. Prolog vai
encontrar o predicado feliz, verificar a aridade,
fazer o instanciamento da varivel Quem
constante paulo, recolocar a meta do lado
direito da regra, combinar a nova meta e voltar
regra. Depois vai colocar o lado esquerdo da
regra em yes, aplicar o lado esquerdo meta,
informar que a meta foi bem sucedida, e
mostrar o valor ligado da varivel.
Exemplo de instanciamento
Acompanhamento - tracing
Pode-se acompanhar o progresso passo a passo
de um programa, utilizando o comando trace
acima da linha domains
A seguir disparar o programa com alt+r
Tentar a meta feliz(Quem)
Continuar a execuo pressionando a tecla F10
Exemplo de tracing
Entrada de dados
O Turbo Prolog fornece ao programador os
seguintes predicados para a entrada e sada de
dados:
WRITE: usado para escrever uma mensagem
no dispositivo padro de sada, geralmente a
janela de dilogo. O argumento do write pode
ser tanto uma varivel como um objeto
(smbolo, inteiro, string, etc.). Exemplo:
write(Que dia lindo!!!).
write(Nome).

Sada de dados
READLN: usado para ler uma string ou um smbolo
do dispositivo padro de entrada e guard-lo em
uma varivel. O Turbo Prolog possui vrios
predicados de leitura, um para cada tipo de objeto a
ser lido os mais usados so:
READINT: para a leitura de um nmero inteiro.
READCHAR: para a leitura de um caracter.
READREAL: le de um nmero em ponto flutuante.
Exemplo:
readln (Nome).
readint (Dia).


Exemplo
Grficos
Prolog possui dois mtodos para manipulao
de grficos:
Predicados de ponto e linha, que permitem
traar linhas e pontos em qualquer uma das
cores oferecidas pelo PC;
Grficos da tartaruga, que permite utilizar
predicados que movimentam uma
tartaruga imaginria na tela.
Grficos de linhas e pontos
So os seguintes os predicados padro para a
construo de grficos de linhas e pontos na
tela:
graphics(ModeParam,Palette,BackGround)
text
dot(Row,Column,Color)
line(Row 1,Col 1, Row 2, Col 2, Color)
Modos grficos
Modos grficos
Exemplo
Grficos tartaruga
A idia de uma tartaruga para a gerao de
grficos representa os fundamentos da linguagem
de computao Logo e foi adotada por vrias outras
linguagens.
A tartaruga um rob imaginrio para traados na
tela. Ele pega suas instrues do programa na forma
de predicados. Os predicados lhe informam se deve
se movimentar para frente (forward) ou para trs
(back), virar esquerda (left) ou direita (right),
pressionar uma pena contra a tela (pendown) (como
se a tela fosse papel de desenho) ou levantar a
pena (penup), e finalmente, escolhe a cor da pena a
utilizar (pencolor).
Exemplo - tartaruga
Sons
Existem 2 predicados:
beep, emite um rpido parecido com o
som de tecla errada
sound(durao,frequencia), permite
tocar notas musicais. Durao e
frequncia so nmeros inteiros,
sendo que durao dado em
centsimos de segundo e frequencia
interpretado como Hz (ciclos por
segundo) podendo ir de 41 at 17500
Hz.
Exemplo
Janelas
Turbo Prolog contm predicados que permitem ao
usurio formar suas prprias janelas para entrada e
sada de programas. Predicados da janela padro:
makewindow(WindowNo,ScrAtt,FrameAtt,Header,Row,Col,Heig
ht,Width), onde:
WindowNo: int, nmero de identificao da janela;
ScrAtt: int, determina o tipo de janela (em termos de cores);
FrameAtt: int, determina a existncia e estilo para a moldura da
janela;
Header: string, nome dajanela;
Row: int,0 a 25, nmero de linha da janela;
Col: int, 0 a 80, nmero de coluna da janela;
Height: int, nmero de linhas da janela; e
Width: int, nmero de colunas da janela.
Janelas - atributos
window_attr(Attr): altera o estilo da tela ou a
cor da janela aberta, sem retroceder ao
predicado makewindow;
removewindow: remove a janela ativa da tela;
shiftwindow(WindowNo): permite trocar entre
mltiplas janelas que podem estar na tela; e
clearwindow: retira todos os caracteres da
janela.
Cursores - atributos
cursor(row,Column): determina as posies
atuais do cursor na janela ativa ou na tela;
cursorform(Starline,Endline): na rea de um
caractere, se estabelce a posio do cursor X-Y;
Cada caractere ocupa 14 linhas de varredura da
tela ento Starline e Endline devem estar
ligados a valores enre 1 e 14 (inclusive);
window_str(ScreenString): escreve o valor de
ScreenString na janela ativa
Exemplo
LISP - List Processing
Lisp - Introduo
A linguagem Lisp j existe h mais
de 30 anos, seu principal uso tem
sido para escrever programas na
res de IA.
Os crticos de Lisp tambm a
denominam Lista Interminvel de
eStpidos Parnteses.
Tipos de Dados
Em Lisp existem somente dois
blocos constituintes:
tomo: que possui ainda dois
tipos: numrico e no numrico;
e
Lista, ou par interno.
tomo
Numrico: que corresponde ao valor numrico em Pascal
e um nmero qualquer, por exemplo: 15 -666 +3.2
No numrico: correspondem s variveis em Pascal,
para reconhecer um tomo no numrico basta utilizar a
regra:
eles devem comear por letras e somente possurem letras ou
nmeros
Exemplos:
istoeumatomo, istoeumatomotambem 1
tomo
isto e um atomo 1 atomo
isto e um atomo 4 atomos
+22opa +22 tomo numrico
opa tomo no numrico
Resumo
Um nmero deve comear com um
algarismo (ou sinal seguido de
algarismo), sendo usualmente
terminado por espao ou um
parntese. Um tomo no numrico
pode comear com um no
algarismo (letra) podendo ser
seguindo de letras ou nmeros.
Lista
Tambm chamada par interno simplesmente um
parntese esquerdo, uma sequncia de tomos ou de
outras listas e um parntese direito, exemplo:
(+15 A -3) uma lista composta por 3 tomos:
o nmero 15, o tomo A e o nmero negativo -3.
parecido com o array de 3 elementos do Pascal, sendo que
este no necessitamos declarar explicitamente e o
contedo dos seus elementos pode ser diferente,
exemplos:
(+15 (A) -3) nesta lista: 15 o primeiro elemento
-3 o ltimo elemento
(A) outra lista
Funes bsicas
CAR
uma funo do Lisp, que retorna o primeiro
elemento de uma lista, exemplo:
Seja (+15 A -3) ento (CAR (+15 A -3))
devolve: +15
(CAR ((A) 5 D)) (A)
(CAR ((A (B (C)) (D) 5)) (A B(C))
Funes bsicas
CDR
uma funo do Lisp que devolve o corpo da lista
menos seu primeiro elemento, exemplo:
(CDR (5 (B) C)) ((B) C)
(CDR ((A) 5 D)) (5 D)
(CDR (((A B (C)) (D) %)) ((D) 5)
Nem CDR nem CAR destroem ou
alteram nada nas listas as quais
forem aplicadas.

Funes bsicas
CONS
uma abreviao de CONStruo, e usada para
construir pares internos como elementos de
listas (e, portanto, construir listas), exemplo:
(CONS A NIL) o que mostra na tela a lista (A)
(CONS B (A)) (B A)
(CONS B (CONS A NIL) (B A)
Estruturas complexas
Vetores
Representar o vetor: ( 1 2 3 4 5 ) (CONS (1 2 3
4 5) NIL)
pedindo (CAR (1 2 3 4 5) 1 como conseguir o
primeiro elemento?
pedir (CAR (CDR (1 2 3 4 5) ) ) 2
e o terceiro?
Pedir (CAR (CDR (CDR (1 2 3 4 5) ) ) ) 3
Estruturas complexas
Matrizes 1 2 3 4
A = 5 6 7 8
9 10 11 12 Solicitando:
(CAR ((1 2 3 4) (5 6 7 8) (9 10 11 12)) NIL) vem
(1 2 3 4) (5 6 7 8) (9 10 11 12)
Para saber a
11
:
(CAR (CAR ((1 2 3 4) (5 6 7 8) (9 10 11 12)) )) 1
Para saber a
12
:
(CAR (CDR (CAR((1 2 3 4) (5 6 7 8) (9 10 11 12)) ) 2
Para saber a
21
:
(CAR (CAR (CDR((1 2 3 4) (5 6 7 8) (9 10 11 12)) ) 5


Estruturas complexas
Registros
Seja: (CONS (ALEX 18 4 59) NIL)
Para a impresso do nome:
(CAR (ALEX(18 4 59))) ALEX
Para imprimir a data completa:
(CAR (CDR (ALEX (18 4 59) )) ) 18 4 59
e o ms?
e o ano?

Variveis
Lisp usa a notao polonesa ou do tipo prefixo,
onde a operao a ser executada colocada
antes de seus operandos, exemplo:
(= X 1) SQR(5) (* 3 (SQR 9))

Operadores
Pode ser que o exemplo anterior no funcione pois
nem sempre Lisp utiliza *, +, -, / e = para
as operaes normais e sim TIMES, PLUS,
DIFFERENCE, QUOTIENT E SETQ, exemplos:
(* 3 5) ou (TIMES 3 5) (+ 2 3) ou (PLUS 2 3)
(- 2 3 4) ou (DIFFERENCE 2 3 4) resposta -1
(talvez!)
Para fazer: x = 1 (SETQ X 1)
X = 3 * (5 + 6) (SETQ X (TIMES 3 (PLUS 5 6) ))
Y = X - 5 (SETQ Y (DIFFERENCE X 5))
Entrada e sada
Entrada de dados:
Em Pascal read (A,B); em Lisp (PLUS (READ)
(READ))
write(A+B);
Sada de dados:
Em Pascal X:= 33; em Lisp (SETQ X 33)
write (X); (PRINT X)
Exerccio:
Testar o comando:
(PLUS (PRINT(READ)) (PRINT (READ)) )
Programas
Um programa em Lisp, consiste em uma ou
mais funes, chamadas em sequencia.
Assim como o Pascal, o Lisp aguarda
uma srie de declaraes definindo uma
funo, entretanto diferentes verses de
Lisp possuem mtodos diferentes de
definir as funes.
Funes e parmetros
Em Lisp definir uma funo significa estabelecer 3
coisas:
o nome da funo;
os parmetros; e
um conjunto de instrues que so executadas quando a
funo chamada.
Algumas verses de Lisp utilizam para definir uma
funo a palavra reservada DEFUN, outras
verses DEF ou ainda DE.
Definio com parmetros
Pascal
Function F42

(x,y:integer):integer;
begin
F42:= x * (y + 3);
end;
Lisp
(DEFUN F42 (x y )


(times x (plus y 3 ))
)
Definio sem parmetros
Pascal
Function 43: integer;
var i,j: integer;
begin
read (i,j);
F43:= i+j;
end;
Lisp
(DEFUN F43 NIL
(plus (read) (read))
)

Chamando funes em Lisp
Tendo definido as funes, como chama-las?
Simplesmente:
para a funo com parmetro:
(F42 3 5)
para a funo sem parmetro:
(F43)
Funes com variveis
locais
As funes vistas anteriormente so muito
simples, com cada funo consistindo em
apenas uma declarao, entretanto muitas
funes precisam ser formadas por vrias
declaraes, e no apenas uma.
Em Lisp o valor devolvido pela funo o valor da
ltima declarao, entretanto pode-se retornar
qualquer valor interno.
Exemplo
Pascal
Function F44: integer;
var i,j: integer;
begin
read (i,j);
write (j-i);
F44:= j-i;
end;
Lisp
(DEFUN F44 ((i) (j))
(setq i (read))
(setq j (read))
(print (difference j i ))
)
Exemplo
Outra forma de declarar
variveis locais
(adotada por Supersoft
Lisp): o operador
progdefine as
variveis locais e sua
forma geral :
(prog <lista de variveis
locais> <s1> <s2>
...<sn>)
onde s
i
so declaraes
executadas em
sequencia.
(DEFUN F45 NIL
(prog (I J)
(setq I (read))
(setq J (read))
(print (difference J
I))
)
)
Retornando valores de
funes
Deve-se utilizar a
declarao
return para
devolver o
resultado
(DEFUN F46 NIL
(prog (I J)
(setq I (read))
(setq J (read))
(return (print (- J
I )))
)
)
Obtendo um elemento de
vetor
Primeiro
elemento:
(First (1 2 3 4
5))
(DEFUN First (x)
car(x)
)
Segundo elemento:
(Second (1 2 3 4 5))
(DEFUN Second (x)
(Prog (T1)
(setq T1 (cdr x))
(return (car T1))
)
)
Ou tambm:
(DEFUN Second
(x)
(car (cdr x))
)

Obtendo um elemento de
vetor
3. Terceiro elemento:
(DEFUN Third (x)
(car (cdr (cdr x )))
)
Obtendo elementos de
matrizes
Pode-se utilizar as funes descritas anteriormente
em matrizes, por exemplo:
Primeira fila da matriz:
(First ((1 2 3 4) (5 6 7 8) ( 9 10 11 12) ))
Segunda fila da matriz:
(Second ((1 2 3 4) (5 6 7 8) (9 10 11 12) ))
Primeiro elemento da segunda fila:
(First (Second ((1 2 3 4) (5 6 7 8) (9 10 11 12) ))
Seleo de campos de
registros
Foram vistos anteriormente alguns exemplos de
registros do tipo (Benedita (22 03 75)),
podemos escrever as seguintes funes:
1. Seleciona o campo nome do registro:
(DEFUN nome (rec)
(First rec)
)
2. Seleciona a data do registro:
(DEFUN data (rec)
(Second rec)
)
Seleo de campos do
registro
3. Seleciona o dia:
(DEFUN dia (rec)
(First (data rec))
)


5. Seleciona o ano?

4. Seleciona o ms
(DEFUN mes (rec)
(Second (data rec))
)
Criando novos registros
A funo list pega todos os seus
argumentos e os insere numa lista,
exemplo:
(list A B C) forma como valor a lista: (A B
C)
e a declarao:
(list (First (1 2 3 4)) (Third (1 2 3 4))) ter
como seu valor a lista (1 3)
O comando list
List s vezes mais conveniente que cons
para construir listas, por exemplo:
(DEFUN novoreg (nome dia mes ano)
(list nome (list dia mes ano))
)
assim fazendo: (setq rec1 (novoreg Smith 6 8
79)) temos:
(Smith (6 8 79))
e para imprimir o ms: (ms rec1)
Grandezas Booleanas
Lisp usa apenas um valor para representar
FALSE e qualquer outra coisa para
representar TRUE, a constante usada pelo
Lisp para representar FALSE o NIL, isso
significa que NIL usado em dois
contextos:
1. Representar o fim de uma lista; e
2. Representar o valor FALSE.
Para representar o valor booleano TRUE Lisp
usa o tomo T, entretanto qualquer valor
diferente de NIL aceito como TRUE.
Outras grandezas
booleanas
(setq Z T)
(and T nil) imprime nil, pois true and
false = false
(or T nil) imprime T, pois true or false
= true
(or nil (A B)) imprime T, pois a lista (A B)
no nil, e por isso tratada como se fosse
T
(not T) imprime nil
(not nil) imprime T
Operadores realcionais
(< 7 6) nil
(> 7 6) T
(= x x) T
(= 5 5) T
(= (read) Joe) imprime T se digitar Joe e
nil caso contrrio
Comando de Seleo
Pascal Lisp
if A < 2000 then (cond ((< A 200)
B:=100; (setq B
100))
)
if x = 10 then (cond ( (= x
10)
y:= 100 (setq
y 100))
else z:= 50; (T (setq
z 50))
)
Repetio
Lisp implementa ciclos usando as
declaraes PROG e GO, junto com
etiquetas, exemplo:
Pascal Lisp
var i,j:integer; (prog (i) (setq i
(read))
label 1010; RPT (print (* i
(read)))
begin (go
RPT)
read (i); )
1010: read (j);
writeln (i * j);
goto 1010;
end.
Recursividade
uma outra maneira de implementar
iteraes, por exemplo, a sequencia de
Fibonacci:
(defun Fibonacci (N)
(cond ( (= N 0) 1) : N = 0 ?
( (= N 1) 1) : N = 1 ?
(T(+ (Fibonacci (- N 1)) : recurso
(Fibonacci (- N 2)) : recurso
) )
)
)
Sistemas Especialistas
Sistemas Especialistas
Sistemas especialistas, uma aplicao
da inteligncia artificial, so programas
de computador planejados para adquirir
e disponibilizar o conhecimento
operacional de um especialista humano.
So tradicionalmente vistos como
sistemas de suporte deciso, pois so
capazes de tomar decises como
especialistas em diversas reas.
Sistemas Especialistas
Sua estrutura reflete a maneira como o
especialista humano arranja e faz
inferncia sobre o seu conhecimento.
Estrutura de um Sist.
Especialista
Um modelo bsico da arquitetura dos sistemas
especialistas pode ser apresentado com trs
componentes bsicos: a base de conhecimento,
a mquina de inferncia, e a interface com o
usurio.
A Base de Conhecimento
A marca principal de um sistema especialista o uso do
conhecimento especfico de seu domnio de aplicao
atravs de um programa de raciocnio relativamente
simples.
Neste sentido utiliza-se o termo base de conhecimento
para representar a coleo de conhecimento do domnio,
ou seja, as informaes do especialista, necessrias para
resolver problemas de um domnio especfico.
Portanto, este conhecimento precisa ser organizado de uma
maneira adequada para que a mquina de inferncia
consiga trata-lo convenientemente.
Fatos e Heursticas
O conhecimento em um sistema
especialista consiste de fatos e
heursticas.
Os fatos constituem as informaes que
estaro sempre disponveis para serem
compartilhadas e atualizadas pelo
especialista do domnio.
Fatos e Heursticas
As heursticas so regras prticas que caracterizam
o nvel de tomada de deciso do especialista em
um domnio.
Portanto, uma base de conhecimento pode ser
vista como um conjunto de regras, cada qual
podendo ser validada independentemente de
estrutura de controle.

Problemas
Um dos problemas mais srios, e ao mesmo tempo
muito comum, encontrado na implementao de
sistemas especialistas, que usualmente parece
impossvel fornecer um conhecimento completo
sobre o qual o sistema vai operar.
Portanto , o nvel de desempenho de um sistema
especialista est relacionado ao tamanho e a
qualidade de sua base de conhecimento
A Mquina de Inferncia
Tenta imitar os tipos de pensamento que o especialista
humano emprega quando resolve um problema, ou
seja, ele pode comear com uma concluso e
procurar uma evidncia que a comprove, ou p ode
iniciar com uma evidncia para chegar a uma
concluso.
Em sistemas especialistas, estes dois mtodos so
chamados de backward chaining e forward
chaining respectivamente.
A Mquina de Inferncia
Nem todos os sistemas utilizam a mesma
abordagem para a representao do
seu conhecimento, portanto, a mquina
de inferncia deve ser projetada para
trabalhar com a representao de
conhecimento especfica utilizada.
Interface com o Usurio
A interface com o usurio visa facilitar a
comunicao entre o sistema especialista
e o usurio.
Permite a interao com o sistema atravs
da entrada de fatos e dados e atravs da
sada em forma de perguntas ,
concluses e explicaes.
Interface com o Usurio
Muitos princpios baseados nas teorias cognitivas
tm sido propostos para projetos de interface,
como resultado de pesquisas na rea de
interao homem-mquina.
Uma das consideraes principais no projeto de
qual quer interface homem-mquina deve ser a
facilidade de uso, reduzindo ao mximo a carga
cognitiva sobre o usurio.
Consideraes Sobre SE
Nos tempos atuais, as organizaes tm no
conhecimento acumulado de seu quadro de pessoal,
um patrimnio muito importante para seus
empreendimentos futuros e para sua prpria
sobrevivncia face s constantes concorrncias de
mercado.
Processos como downsizing, reengenharia e
aposentadorias prematuras tm sido utilizados
constantemente pelas grandes instituies,
comprometendo a memria institucional da empresa
Evaso de pessoal
Funcionrios experientes aposentam-se ou deixam
as organizaes, resultando em uma perda
incalculvel.
O conhecimento de vrios anos de experincia e
treinamentos destes indivduos sero perdidos, a
menos que haja uma maneira de captar e
preservar estas experincias dentro da empresa.
Evaso de pessoal
A tecnologia dos sistemas especialistas ideal para
atingir estes propsitos.
Os processos e experincias funcionais da
organizao podem ser documentados atravs do
uso de sistemas especialistas.
A tecnologia do conhecimento poder ser utilizada
para capitalizar o conhecimento como um
produto estratgico para as corporaes.
Desenvolvendo um SE
Utilizao da linguagem OPS5
Passo 1 - Especificar o Sistema
Uma empresa que desenvolve cafeteiras eltricas deseja, embarcar
em suas mquinas um Sistema Especialista para auxiliar os
clientes usurios de seu produto, na preparao do caf, para
tanto levar em considerao as seguintes informaes:
1. Fora eltrica (ligada, desligada)
2. Nvel de gua no reservatrio (repor, bom, demais)
3. Nvel de p de caf no reservatrio (repor, bom, demais)
4. Nvel de gros de caf para a moenda (repor, bom, demais)
5. Quantidade de acar no reservatrio (repor, bom, demais)
6. Temperatura da gua (fria, quente, vapor)
7. Tipo de caf desejado (amargo, meio a meio, forte)
8. Quantidade de caf desejado (1 copinho, 2 copinhos ou 1 copo
grande)
Passo 2 - Contextualizar
Sero definidos 3 contextos de funcionamento do Sistema
Especialista:
1. Hibernao, onde so avaliadas as condies de energia para a
operao da cafeteira;
2. Pr-Preparo, onde usurio informa a quantidade de caf
desejado e avaliada se a cafeteira possui ingredientes em
quantidade suficiente; e
3. Preparo, onde a cafeteira efetivamente produz o caf e o
fornece ao usurio.
Passo 3 - Definir as Classes
Exemplo de classes:
Contexto: define o estado e fase de operao da cafeteira
(hibernao, pre-preparo, preparo)
Ingrediente: define se a quantidade de material para a produo do
caf est OK! (gua, caf e acar)
Dose: define a quantidade de caf exigido pelo usurio (1 ou 2
copinhos ou 1 copo grande)

Programa OPS5 Base de conhecimento

Passo 4 - Definir os Atributos
Para cada classe definir os atributos a serem utilizados na base de
conhecimento, por exemplo:
; EXEMPLO CAFE
;INGREDIENTES: GUA,CAF,ACAR
;EQUIPAMENTOS: CAFETEIRA
;DOSE: 1 OU 2 COPINHOS OU 1 COPO GRANDE

(literalize CONTEXTO FASE ESTADO)
(literalize INGREDIENTE AGUA CAFE ACUCAR)
(literalize EQUIPAMENTO CAFETEIRA)
(literalize DOSE COPO)


Passo 5 - Definir as Regras
Procurar ser o mais sistemtico (lgico) possvel. Exemplos de regras:
; No estado de hibernacao, verifica se a cafeteira no esta energizada
(p cafe01
(CONTEXTO ^FASE HIBERNACAO ^ESTADO OK)
(EQUIPAMENTO ^CAFETEIRA OFF )
-->
(make CONTEXTO ^FASE PREPREPARO ^ESTADO OFF) )

; No estado de hibernacao, verifica se a cafeteira esta energizada
; caso positivo a habilita para a proxima fase
(p cafe02
(CONTEXTO ^FASE HIBERNACAO ^ESTADO OK)
(EQUIPAMENTO ^CAFETEIRA ON )
-->
(write |OK! POSSO FAZER O CAFE! | (crlf))
(make CONTEXTO ^FASE PREPREPARO ^ESTADO OK) )

Passo 6 - Testar as Regras
Utilizar as premissas das regras acrescidas do comando make, colocando-as na
memria de trabalho, por exemplo:
; MEMORIA DE TRABALHO
(make CONTEXTO ^FASE HIBERNACAO ^ESTADO OK)
(make EQUIPAMENTO ^CAFETEIRA ON)
(make DOSE ^COPO 1)
(make INGREDIENTE ^AGUA OK ^CAFE OK ^ACUCAR OK)
; COMANDOS DE GERENCIAMENTO DO PROGRAMA
(wm) ; mostra o conteudo da memoria de trabalho
(watch 1) ; mostra quais premissas foram satisfeitas
(run) ; roda o programa

Passo 7 - Implantao
Entregar para o usurio realizar testes
beta

Acompanhar os testes

FIM!
Ciclo de execuo
O ciclo de execuo de um sistema de regras de produes consiste,
normalmente, de trs fases:
1. Casamento (matching): para todas as produes, seus lados
esquerdos so comparados aos dados armazenados (fatos, conjecturas e
objetivos) para determinao se o lado esquerdo satisfeito por um
conjunto de dados (um lado esquerdo pode ser satisfeito por vrios
conjuntos de dados e um mesmo conjunto de dados pode satisfazer
vrios lados esquerdos);
2. Resoluo de conflito: escolhe-se uma instncia, ou seja, uma
produo e um conjunto de dados que a satisfaa; se no houver uma
produo nessas condies, o ciclo pra;
3. disparo (firing): as aes do lado direito da produo escolhida
so executadas para os dados da instncia.
Ciclo de execuo
A caracterstica mais importante da linguagem OPS5 a
eficincia de execuo, conseguida atravs do uso do
algoritmo Rete (Forgy 1983).
A cada ciclo, os dados armazenados que compem a memria
de trabalho so alterados muito pouco.
O algoritmo Rete deriva sua eficincia por no casar todos os
dados a cada ciclo (s os elementos alterados so
recomputados) e por compartilhar testes iguais mesmo
entre regras diferentes.
Resoluo de conflito
Um conjunto de regras para a ordenao do conjunto de
conflito chamado de estratgia de resoluo de
conflito. OPS5 prov duas regras: a LEX e a MEA.
Alem disto, uma instncia que disparou num ciclo
retirada do conjunto de conflito para que no dispare
de novo. Este mecanismo chamado de refrao. Os
princpios gerais destas estratgias so:
1. As estratgias do preferncia a dados mais
recentemente introduzidos ou modificados, ou seja, com
marcas-de-tempo maiores.
2. Se duas instncias tm os mesmos elementos, dada
preferncia produo com mais testes, isto ,
produo mais especfica.

Estratgia LEX
A regra LEX ordena as instncias de acordo com os critrios seguintes:
1. Entre duas regras, dada preferncia quela que tenha elemento
mais recente;
2. Se houver empate no dado mais recente, examina-se o dado
seguinte quanto antiguidade, dando preferncia ao mais recente;
3. Aps o critrio (2), a preferncia decidida pelo nmero de testes
necessrios para casar uma regra, contadas em todas as condies: a
regra com mais testes preferida.
4. Se o empate continuar, uma instncia qualquer escolhida.
Estratgia MEA
A regra MEA ordena as instncias de acordo com os critrios seguintes:
1. Entre duas regras, dada preferncia quela que tenha elemento
que casa a primeira condio mais recente;
2. Se houver empate no dado mais recente, examina-se os
elementos que casam as demais condio; d-se preferncia instncia
que possuir um dado mais recente.
3. Se persistir empate no dado mais recente, examina-se o dado
seguinte quanto antiguidade, dando preferncia ao mais recente.
4. Aps o critrio (3), a preferncia decidida pelo nmero de testes
necessrios para casar uma regra, contadas em todas as condies: a
regra com mais testes preferida.
5. Se o empate continuar, uma instncia qualquer escolhida.

OPS5 Arquivo de inicializao
A ferramenta OPS5 fornece vrios modos de utilizao, que devem ser
utilizados de acordo com a necessidade do projeto, por exemplo:
1. Interpretador de comandos, utilizado durante o aprendizado da
ferramenta e tambm na fase de testes de regras.
2. Linha de comando, utilizado durante a fase de desenvolvimento e
implantao do sistema especialista.
3. Arquivo de inicializao, utilizado na fase de implantao do sistema
e entrega do produto.
4. Embarcado dentro de um aplicativo em linguagem C++, utilizado na
fase de implantao do sistema e entrega do produto.
Modos de execuo
1. Interpretador de comandos, nesse caso usamos os comandos do
OPS5 interativamente a partir do prompt de comando da ferramenta:
ops5: (load teste.ops) os
comandos so executados linha a linha pelo projetista.
2. Linha de comando, neste modo executamos o OPS5 a partir da tela do
sistema operacional, a partir do comando:
ops5 teste.ops sendo
que todos os comandos necessrios para o funcionamento da mquina
de inferncia devero estar colocados no arquivo teste.ops logo apos a
descrio de todas as regras da base de conhecimento. Nesse caso os
comandos para a maquina de inferencia sero executados um a um at o
seu trmino
Modos de execuo
3. Arquivo de inicializao, muitas vezes interessante que o usurio a
quem se destina uma dada aplicao no interaja diretamente com o
interpretador OPS5.
Por exemplo, para se executar um programa preciso carreg-lo,
fornecer dados iniciais para a memria de trabalho e executar o comando
run.
Para deixar o interpretador, preciso, tambm, fornecer o comando
exit. Para que estas aes sejam feitas automaticamente, estes comandos
podem ser colocados num arquivo especial e chamado na linha de comando
que ativa o interpretador. Por exemplo, se a linha de comando for:
ops5 teste.ini

Modos de execuo
e se nesse caso teste.ini contiver os comandos:
(strategy mea)
(load teste.ops)
(make testcase ^type general ^name start)
(run)
(exit)
ento a estratgia trocada para mea, o programa (teste.ops) carregado,
um elemento de memria criado, o programa executado e deixado o
interpretador sem que o programador precise interagir com o OPS5.
4. Embarcado, esse modo no ser estudado nesse curso, maiores
informaes podem ser obtidas no manual da ferramenta.
Integrando com VB
Para fazer o OPS5 funcionar em conjunto com o MSVisualBasic, utilizamos
Trs artifcios:
1. Utilizamos a interface grfica para criar um arquivo de inicializao
do OPS5, por exemplo, o arquivo teste.in, contendo todos os comandos
necessrios para a execuo dos comandos da mquina de inferncia,
como representado a seguir:
'Escreve os dados no arquivo
Call mTxtStream.WriteLine("(load c:\vbops5\selec.ops)")
Call mTxtStream.WriteLine("(strategy lex)")
Call mTxtStream.WriteLine("(make ingrediente ^nome " & Nome.Text
& " ^nivel " & nivel.Text & ")")
Call mTxtStream.WriteLine("(run)")
Call mTxtStream.WriteLine("(exit)")

Integrando com VB
2. Utilizamos um arquivo em lotes, por exemplo, teste.bat contendo
comandos para garantir a execuo do arquivo de inicializao do OPS5,
ou seja, o comando:
ops5 teste.ini
3. Utilizamos o comando Shell de execuo de programas externos do
MSVisual Basic, como apresentado a seguir:
'Executa o programa DOS
Shell ("c:\vbops5\selec.bat")
Para que o comando Shell funcione corretamente preciso:
1. Escolher a opo Project da barra de menu
2. Marcar a checkbox Microsoft scripting runtime na janela
References
Redes Neurais
Utilizao da ferramenta Nets3.0
Redes Neurais
O que aprender?
Incrementar o conhecimento
adaptar-se melhor s novas situaes do ambiente
...
Como se aprende?
Observando
Memorizando
Generalizando
Especializando
.....
O que necessrio para o
aprendizado?
Aspecto externo (do ambiente)
exemplos, experincias, ensino, ....
Aspecto estrutural (do agente)
sentidos
crebro (baixo nvel)
memria e processador de smbolos (alto nvel)
Aspecto funcional (mecanismos de
aprendizado)
modelo simblico: representao de conhecimento,
induo, deduo
modelo conexionista: redes neurais

Redes Neurais
Tcnica de aprendizado que tem como
modelo o crebro.
Q_ _m n_ _ Ch_ r _ , n_ _ m _ m _ !
Voc consegue identificar a frase?
Pegar uma borracha sendo arremessada
Apesar de no ser to rpido quanto um
computador, nosso crebro consegue calcular a
trajetria da borracha muito bem.
O crebro humano formado por 100 bilhes
de neurnios, cada um, ligado a outro ou a
100.000 outros!
Aplicaes de RN
Reconhecimento de voz
Reconhecimento de texto (OCR)
Avaliao de risco de financiamento
Detector de bombas
Auxlio na identificao de reservas de
petrleo
...
Neurnio natural
Funcionamento do neurnio
Pelos dentritos, o neurnio recebe sinais de
outros neurnios a ele conectados atravs de
sinapses
Os sinais so acumulados no corpo do
neurnio
Quando a soma dos sinais passa de um certo
limiar (~ -50mV) um sinal propagado no
axnio.
As sinapses tem um peso que pode ser
exitatrio: incrementam a soma dos sinais
inibidor: decrementam
Computador x Crebro
Computador Crebro
Humano
Velocidade Nanosegundo Milisegundo
Tipo de processamento Seqencial Paralelo
Nmero de unidades de
armazenamento
10
9
bits 10
14
sinapses
Nmero de unidades de
processamento
+- 1024 10
11
Bandwich 10
9
bits/seg 10
14
bits/seg
Perceptron


Arquitetura
Algoritmo
Exemplos

Estrutura do neurnio artificial
A estrutura de um neurnio formada por
Um conjunto de links de conexo com outros
neurnios (sinapses)
Os links podem ser de
entrada (dendritos): h um peso associado a cada link (W)
sada (axnio): o peso da sada dado por uma funo de
ativao
Alguns neurnios podem ser conectados diretamente ao
ambiente externo
Uma funo de transferncia (ativao) que
dispara a sada
Funes de ativao
t = limiar
step
t
( x)=
{
1, x t
0, x<t
}
sign( x)=
{
+ 1, x 0
1, x<0
}
sigmoid ( x)=
1
1+e
x
Neurnio artificial
Descrito por Frank Rosemblat (psiclogo, 1957) o neurnio
do tipo perceptron (aprende!) serve para classificardois
tipos de padres.
Ser ativado quando a soma dos pesos dos links de
entrada (funo de entrada) atingem um certo limiar,
ento, o neurnio disparado ativando a sada (funo de
ativao):

Onde:
n: o nmero de entradas do neurnio
w
i
: o peso associado entrada x
i
: o limiar (threshod) do neurnio

Sendo assim, a sada y do neurnio ser:
Y = 1 Se x
i
w
i
> 0
Y = -1 Se xi wi <= 0

Neurnio de McCulloch e Pits (1943).
No aprende!
Deficincia
Um nico Perceptron consegue resolver
funes linearmente separveis
(por exemplo And, Or e Not).


Em funes do tipo xor, o perceptron
no consegue classificar visto que ser
um tipo de funo no linearmente
separvel, isto , no se consegue
traar um hiperplano (linha) que separe
os valores + (verdadeiro), dos
valores - (falso).
Treinamento do Perceptron
Se com um nico perceptron possvel computar
And, Or, Nor ento com vrias camadas de
perceptrons interconectados possvel computar
todos os tipos de funes (inclusive XOR).
Normalmente, existem dois tipos de algoritmos:
1. Perceptron Rule
2. Delta Rule



Perceptron training rule
1. Inicializar todos os pesos aleatoriamente
2. Iterativamente aplicar cada par de treinamento ao
perceptron
3. Modificar os pesos do perceptron enquanto as amostras
no estiverem classificadas
4. Efetuar o procedimento tantas vezes quanto necessrio
at que todos o conjunto de treinamento esteja
classificado corretamente.
Perceptron training rule
O treinamento envolve a alterao do peso de w
i
associado
com x
i
Alterao dos pesos: w
i
w
i
+ w
i

Onde: w
i
= (d Y) x
i

uma constante positiva chamada taxa de
aprendizado e serve para moderar a forma como cada
peso alterada a cada passo. Normalmente possui
valor pequeno (0.1) e diminui a medida em que as
iteraes aumentam.
d a sada desejada do neurnio
Y a sada atual do neurnio

Perceptron training rule
Porque o algoritmo converge?
Sendo os pesos alterados por: w
i
w
i
+ w
i
e

w
i
= (d Y) x
i

1. Supondo que os pares de treinamento esto corretamente
classificados:
Ento: d Y = 0 assim os pesos no so mais atualizados.
2. Supondo que a sada do perceptron Y =-1, ao invs de d=+1
(desejado):
Os pesos devero ser alterados para aumentar o produto ||w ||
* ||x||
Se x
i
= 0 (todos os atributos so positivos)
Ento aumentando w
i
o perceptron ser levado a classificar
esse exemplo
A regra de treinamento aumentar w
i
visto que (d-y) e x
i
so
todos positivos.
Perceptron training rule
Sendo os pesos alterados por: w
i
w
i
+ w
i
e

w
i
= (d Y) x
i
1. Supondo Y = -1 e d = +1 Os pesos devero ser alterados para
aumentar o produto ||w || * ||x||
Se x
i
= 0.8 e = 0.1 ento: w
i
= 0.1 (1 (-1)) 0.8 = 0.16
2. Se d = -1 e Y = +1 ento os pesos sero associados com o x
i
positivo
sero decrementados ao invs de incrementados:
Se x
i
= 0.8 e = 0.1 ento: w
i
= 0.1 (-1 1) 0.8 = -0.16
O aprendizado converge
Dentro de um nmero finito de aplicaes
Classificam corretamente todos os exemplos de treinamento
Desde que os exemplos de treinamento so linearmente separveis e
que seja utilizado um valor de suficientemente pequeno de
Definio de RN
Uma RN um processador
massivamente paralelo que tem a
tendncia de armazenar conhecimento
experimental.
Modela o crebro em dois aspectos:
O conhecimento adquirido pela rede
atravs de um processo de aprendizado
As conexes entre neurnios (sinapses)
so usadas para armazenar o
conhecimento
RNAs aprendem
Redes neurais, aprendem a partir de exemplos,
podendo interpolar e extrapolar o que aprenderam.
a alterao da intensidade das conexes entre os
neurnios que sugere o aprendizado.
Existem dezenas de diferentes algoritmos de
aprendizado, cada um adaptado a uma determinada
aplicao.
Arquiteturas de RNAs
A definio da arquitetura de
uma RNA um parmetro
importante, visto que pode
restringir o tipo de problema a
ser tratado, por exemplo:
Redes de uma camada, tipo A), s conseguem tratar problemas
linearmente separveis. Por outro lado redes de mltiplas
camadas, tipo B), tratam tambm os problemas linearmente no
separveis. Enquanto redes de mltiplas camadas e recorrentes,
tipo C, so mais apropriadas para resolver problemas que
envolvem processamento temporal.
Taxonomia das RNAs
Quanto ao tipo de
algoritmo de aprendizado
Pesos fixos
Supervisionado
o conjunto de treinamento
classificado por um
especialista
No-supervisionado
o conjunto de treinamento
no tem um parecer de
classificao associado a
cada valor.
Quanto arquitetura
Feedforward
todas as sinapses se ligam
somente aos neurnios
da camada seguinte.
Recorrente
h sinapses com os
neurnois da mesma
camada (feed-lateral) e
com da camada anterior
(feed-back)
Multi-camada
Aprendizado
Segundo J. M. Mendel:
Aprendizagem o processo pelo qual os parmetros de
uma RNA so ajustados atravs de uma forma
continuada de estmulo pelo ambiente no qual a rede
est operando, sendo o tipo especfico de aprendizagem
realizada definido pela maneira particular como ocorrem
os ajustes realizados nos parmetros.
Tipos de Aprendizado
Supervisionado
No supervisionado
Aprendizado supervisionado
A entrada e a sada desejadas para a rede so fornecidas
por um professor (supervisor) externo com objetivo de
ajustar os parmetros da rede de forma a encontrar uma
ligao entre os pares E/S fornecidos.
O professor indica um comportamento bom ou ruim para a
rede visando direcionar o processo de treinamento.
O aprendizado supervisionado pode ser de duas formas:
Off-line, os dados do conjunto de treinamento no
mudam, uma vez encontrada a soluo, esta no muda.
On-line, os dados mudam forando a rede a estar em
treinamento contnuo.
Aprendizado no-supervisionado
Nesse caso, no h professor para acompanhar o processo
de treinamento.
Nos seres humanos os estgios iniciais da viso e da
audio ocorrem com aprendizado no-supervisionado.
Nesses algoritmos somente os padres de entrada esto
disponveis para a rede.
Este tipo de aprendizado s possvel quando existe
redundncia nos dados de entrada.
RNAs desse tipo podem ter ligaes entre os neurnios da
mesma camada.
Multi Layer Perceptron


Arquitetura
Algoritmo
Exemplos

Aprendizado hebbiano
Regra de aprendizado de D. O. Hebb
O peso de uma conexo sinptica deve ser ajustado se
houver sincronismo entre os nveis de atividade das
entradas e sadas.
Isto , se o neurnio pr-sinptico tiver grande influncia
na ativao do neurnio ps-sinptico, a conexo entre
eles deve ser reforada.
Matematicamente:
w
ij
= y
i
x
j

onde: = taxa de aprendizado (cte. positiva)
Algoritmo Back-propagation
Algoritmo de aprendizado mais conhecido para treinamento de
RNAs do tipo Multi Layer Perceptron - MLP e implementa
aprendizado supervisionado que utiliza pares E/S para, por meio
de um mecanismo de correo de erros, ajustar os pesos da rede.
O treinamento ocorre em duas fases:
1. Forward, utilizada para definir a sada da rede para um dado
padro de entrada.
2. Backward, utiliza a sada desejada e
a sada fornecida pela rede para
atualizar os pesos de suas conexes.
Fase forward
Esta fase envolve os seguintes passos:
1. A entrada apresentada primeira camada da rede, a camada
C
0
2. Para cada camada C
i
a partir da camada de entrada
2.1 Aps os nodos da camada C
i
(i>0) calcularem seus sinais
de sada, estes servem como entrada para a definio das
sadas produzidas pelos nodos da camada C
i+1
3. As sadas produzidas pelos nodos da ltima camada so
comapradas s sadas desejadas.
Fase backward
A fase backward envolve os seguintes passos:
1. A partir da ltima camada, at chegar na camada de entrada:
1.1 Os nodos da camada atual ajustam seus pesos de forma
a reduzir seus erros
1.2 O erro de um nodo das camadas intermedirias
calculado utilizando os erros dos nodos da camada
seguinte conectados a ele, ponderadas pelos pesos das
conexes entre eles.
Algoritmo back-propagation
O algoritmo back-propagation, faz uso destas duas fases do
seguinte modo:
1. Inicializar pesos e parmetros
2. Repetir at o erro ser mnimo ou at a realizao de um dado
nmero de ciclos:
2.1 Para cada padro de treinamento X
2.1.1 Definir sada da rede atravs da fase forward
2.1.2 Comparar sadas produzidas com as sadas
desejadas
2.1.3 Atualizar pesos dos nodos atravs da fase
backward
Regra delta
A regra do perceptron no converge quando os exemplos so
linearmente separveis.
A regra delta foi projetada para eliminar essa defigincia
Se as amostras no so linearmente separveis
A regra delta converge at um valor desejado aproximado.
Idia chave:
Usar o algoritmo do gradiente descendente para encontrar
uma hiptese no espao do vetor de pesos de possveis
solues de modo que o erro seja mnimo.
Clculo da ativaes
O algoritmo back-propagation requer funes de ativao dos
nodos, contnuas e geralmente no decrescentes da entrada total
recebida pelo nodo.
Estas funes so chamadas semilineares conforme a equao:
Onde:
n = nmero de conexes de entrada
do nodo j
w
ji
= o peso da conexo entre a
entrada x
i
p
e o nodo j
Clculo do erro
O algoritmo back-propagation define os erros dos nodos das
camadas intermedirias, possibilitando o ajuste de seus pesos.
A funo do erro a ser minimizada definida pela soma dos erros
quadrticos, conforme a equao:



Onde: E = medida de erro total
p = nmero de padres E/S
k = nmero de unidades de sada
d
i
= i-sima sada desejada
y
i
= i-sima sada gerada pela rede
Clculo do ajuste dos pesos
Para reduzir o erro quadrtico, utiliza-se o algoritmo do gradiente
descendente, calculando a derivada parcial de E em funo dos pesos:
Erro: Ajuste dos pesos: w
ij
= y
i
x
j
Ou seja, a variao do peso para um dado padro ser: W
ij
- E
W
ij
E = E Y
i
= 1 (d
i
- Y
i
)
2

W
ij
Y
ij
W
ij
W
ij
2
_ E = E Y
i
= 1 (d
i
Y
i
)
2
= (d
i
Y
i
) (d
i
W.X
i
)
W
ij
Y
ij
W
ij
2 W
ij
W
ij
E = (d
i
Y
i
) ( X
i
)
W
ij


Ento: W
ij
= (d
i
Y
i
) X
i
Clculo do ajuste dos pesos
O processo de aprendizado pode ser entendido como:
1. Supondo que cada cmbinao de pesos e limiares corresponda a um
ponto na superfcie de soluo.
2. Considerando que a altura de um ponto diretamente proporcional
ao erro associado a esse ponto.
Ento a soluo est nos pontos mais baixos da superfcie.
O algoritmo back-propagation procura minimizar o erro
obtido pela rede ajustando pesos e limiares para que eles
corresponam s coordenadas dos pontos mais baixos da
superfcie de erro. Para isso usa o mtodo do gradiente
desecendente.
Gradiente descendente
O gradiente de uma funo uma qualidade que a leva na direo e
sentido em que a funo tem taxa de variao mxima. Isso garante que
a rede caminha na superfcie na direo que vai reduzir mais o erro
obtido.
Em problemas simples, este mtodo encontra o erro mnimo.
Em problemas mais complexos, esta garantia no existe podendo levar o
algoritmo a convergir para mnimos locais.
Back-propagation fornece uma aproximao da trajetria no espao de
pesos calculado pelo mtodo
do gradiente descendente. Estes
pontos podem incluir plats,
mnimos locais ou arestas.
Parmetros de treinamento
A seleo de parmetros de treinamento de redes MLP, um problema to
pouco compreendido que muitas vezes chamado de magia negra.
Pequenas diferenas nestes parmetros levam a grandes diferenas tanto no
tempo de treinamento quanto na generalizao obtida.
Quando parar o treinamento
A maior dvida saber quando parar o treinamento. Existem alguns
critrios para encerrar o treinamento de RNAs:
1. Aps n ciclos.
2. Aps o erro mdio quadrtico ficar abaixo de uma constante


3. Quando uma percentagem de classificaes corretas estiver acima de uma
constante

(mais indicado para sadas binrias)
4. Combinao dos mtodos acima.
Parmetros de treinamento
Frequencia de atualizao dos pesos:
Esta frequencia influencia o desempenho obtido durante o
treinamento. Existem duas abordagens diferentes:
1. Por padro (on-line), geralmente mais rpida, nesta os pesos
so atualizados aps a apresentao de cada padro de
treinamento. Esta abordagem estvel se a taxa de
aprendizado for pequena e instvel com taxas maiores.
2. Por cliclo (batch), geralmente mais precisa, nesta os pesos so
atualizados aps todos os padres terem sido apresentados. Esta
tcnica geralmente mais estvel, mas pode ser lenta se o
conjunto de treinamento for grande e redundante
A escolha da abordagem depende da aplicao e da distribuio
estatstica dos dados.
Dificuldade no treinamento
O algoritmo back-propagation oferece uma srie de dificuldades
ou deficincias. O principal problema refere-se a lentido do
algoritmo para problemas mais complexos.
Uma forma de minimizar esse problema considerar efeitos de
segunda ordem para o gradiente descendente. No raro o
algoritmo convergir para mnimos locais. Algumas tcnicas para
acelerar o algoritmo e evitar mnimos locais:
Utilizar taxa de aprendizado decrescente
Adicionar ns intermedirios
Utilizar um termo momentum
Adicionar rudo aos dados
Momentum
Normalmente utilizado para acelerar o processo de treinamento da
rede e evitar mnimos locais. Sua utilizao influenciada por ser ela
uma tcnica simples e efetiva. O termo momentum representado
pela equao:
= (w
ji
(t) - w
ji
(t-1))
A formula completa do ajuste de pesos utilizando momentum fica:
w
ji
(t +1) = w
ji
(t) +
j
(t) + (w
ji
(t) - w
ji
(t-1))
O termo momentum acelera o treinamento em regies muito planas da
superfcie de erro.
Alem de eliminar a oscilao
dos pesos em vales e ravinas.
Overfitting
Ou excesso de treinamento, ocorre quando a partir de um certo ciclo de treinamento, a
rede, em vez de melhorar, comea a piorar a sua taxa de acertos para padres
diferentes daqueles utilizados para os ajustes dos pesos. A rede decorou
Alternativas nesse caso:
1. Encerrar o treinamento mais cedo (quando o erro de validao comea a subir)
2. Podar (pruning) os pesos da rede, eliminando neurnios indesejveis (neurnios
com valores muito proximos de zero) na camada do meio. , neste caso pode-se:
1. Utilizar uma medida de erro que tenda para infinito quando a derivada da
sigmoidal tender para zero
2. Adicionar uma constante derivada da funo sigmoidal, evitando que o erro
seja igual a zero
3. Utilizar uma funo de erro no linear
Redes tambm podem esquecer dados antigos, ao aprender novas informaes.
Algoritmo de aprendizado supervisionado
//Para redes com uma s camada
rede := rede com pesos aleatrios entre [-0.5, 0.5]
repita
para cada e e conjunto de treinamento
O := sada da rede para e
T := sada esperada para e
Erro := T - O
para i de 1 at nmero de sadas
se Erro[i] = 0
para j de 0 at nmeros entradas
W[i,j] := W[i,j] + o * I[j] * Erro[i]
// o > 0, taxa de aprendizado
// I, valores entrada, I[0]=1
fim tudo
at atingir uma taxa aceitvel de erro
Adaline


Arquitetura
Algoritmo
Exemplos

O modelo Adaline
Desenvolvido por Bernard Widrow , surgiu na literatura na mesma poca
do Perceptron.
Inicialmente chamado Adaptative Linear Element e aps a popularizao
de sua regra de aprendizado foi chamado Adaptative Linear Neuron
Como o perceptron, baseia-se na idia de ter-se elementos de
processamento executando operaes de soma ponderada e posterior
comparao com um valor de limiar.
Seu algoritmo de treinamento conhecido como regra delta e, portanto,
foi quem deu origem ao algoritmo back-propagation para treinamento de
perceptron multicamada.
configurao de rede com Multiplos Neuronios do tipo Adaline,
dispostos em duas camadas com todos os nernios da camada de
entrada ligando-se a camada de sada d-se o nome de Madaline.
O modelo Adaline
1. Possui sadas binrias bipolares ( Y [-1,+1]),
2. Tem seus pesos adaptados em funo do erro de sua sada linear
(Y =
i
w
i
x
i
) , antes da aplicao da funo de ativao,
da seu nome Neuronio Adaptativo Linear.
S existe ajuste nos pesos quanto e 0 -> w 0, o algoritmo de treinamento
Adaline tenta minimizar o erro das sadas em relao aos valores desejados d
i

pertencentes ao conjunto de treinamento:
= {(x
i
, d
i
)}
p
i=1
A funo de custo a ser minimizada a soma dos erros quadrticos:
=
p
i=1
(d
i
Y
i
)
2
para uma condio qualquer w(0) = w
i
deseja-se obter a direo do ajuste a ser
aplicado no vetor de pesos de forma a caminhar em direo soluo tima.
Nesse caso a direo do ajuste no tempo t pode ser obtida pela equao do
gradiente da funo de custo no ponto w(t).

O gradiente no modelo Adaline
O ajuste dos pesos deve ser feito em direo contrria ao vetor gradiente no ponto
w(t), ou seja:

Ento os componentes do vetor gradiente podem ser definidos como:
J = J Y
W
i
Y

W
i

Y = - X
i
(d (w
0
+ w
1
X
1
+ w
2
X
2
+ ... + w
n
X
n
)) = - X
i
e
W
i
Portanto para o ajuste do vetor de pesos em direo contrria ao vetor gradiente:
w
i
= - X
i

w
i
= e X
i

Onde uma constante de proporcionalidade que define a rapidez com que o vetor
de pesos modificado (taxa de aprendizado)
Finalmente, identicamente ao perceptron, a regra delta do nernio Adaline :
w(t+1) = w
k
(t) + e X(t)
Desenvolvendo RN
O atual estado da arte no campo de simuladores de redes neurais
artificiais deve-se ao desejo de produzir programas que
representem, da melhor forma possvel, as caractersticas
operacionais dos sistemas biolgicos.
O processo para o desenvolvimento de redes neurais envolve 3
fases:
1. Traduzir o problema num formato que utilize pares
Entrada/Sada;
2. Projetar a configurao da rede para o problema; e
3. Treinar a rede com pares E/S at que encontremos um erro
aceitvel.
Traduo do Problema
Deve-se representar o problema num
formato de pares de entrada-sada. Isso feito a partir de um
mapeamento dos dados do problema para uma forma numrica,
por exemplo:
Para a seguinte tabela de variveis do topo de uma torre de
debutanizao: temperatura do topo, vazo de refluxo e
presso; temos os seguintes valores de intemperismo (qualidade
do gs de cozinha).

Pode-se mapear esta tabela para uma
rede mensal onde poderemos
prever o valor do intemperismo
(sada) a partir dos dados de entrada
da torre de debutanizao.
Projeto da RNA - Back Propagation
Uma vez definidos os pares E/S podemos projetar a rede. No caso
da tabela anterior observam-se as seguintes caractersticas:
a) Trs elementos de entrada (T,P, e V); e
b) Um elemento de sada (I).
Portanto pode-se sugerir uma rede neural com 3 neurnios de
entrada (cada um representando um elemento) e um neurnio
de sada, (representando a varivel I) conforme a figura:
A Camada do meio
Um dos maiores problemas na definio da arquitetura
de RN a definio dos neurnios da camada do
meio, existem vrios mtodos:
1. O n de neurnios da camada do meio deve ser 10%
do n de pares E/S;
2. O n de neurnios da camada do meio deve ser
menor que o n de neurnios da camada de entrada;
3. O n de neurnios da camada do meio deve ser 20%
maior que o n de neurnios da camada de entrada;
e
4. 2. O n de neurnios da camada do meio deve ser
definido empiricamente.
Treinamento da RN
Na escolha do n de neurnios da camada intermediria
deve-se tomar cuidado para que esse n no seja
muito grande, pois isso acaba afetando o
desempenho do treinamento, visto que para cada
neurnio a mais na camada do meio acrescentam-se
uma somatria e uma multiplicao na poca do
treinamento sendo assim a carga de processamento
aumenta bastante com o n de neurnios na camada
do meio.
O processo de treinamento repetitivo. A partir da
especificao de um valor aceitvel de erro para a
resposta na sada da rede, o usurio cria condies
para que o processo de treinamento possa parar.
A ferramenta Nets 3.0
Nets 3.0 uma ferramenta de desenvolvimento de
redes neurais com algoritmo Back Propagation, de
domnio pblico, desenvolvida pelo Lyndon B.
Johnson Space Center (NASA) a partir de um
programa especial para desenvolvimento de sistemas
inteligentes denominado do Cosmic Program.
Nets 3.0 funciona no sistema operacional DOS e em
Windows a partir da verso 6.0.
Com esta ferramenta possvel projetar, treinar e
testar redes neurais, alm de fornecer um programa
em linguagem C correspondente ao resulta do
treinamento da rede.
Instalando Nets3.0
Nets 3.0 pode ser encontrado facilmente na internet em
vrios sites para download. Uma vez instalado em um
computador, Nets3.0 criar os seguintes diretrios:
Examples, contendo vrios arquivos de exemplo de arquiteturas
de RN;
Exe, contendo os arquivos executveis (Nets_flt.exe e
Nets_int.exe);
Headers, com arquivos de cabealho em C (*.h) para utilizao
em programas desenvolvidos pelo usurio; e
Source1 e Source2, com o cdigo fonte das subrotinas utilizadas
dentro do programaNets3.0.
Utilizando Nets3.0
Para de utilizar o programa Nest3.0 (Nets_flt.exe ou
Nets_int.exe), contido no subdiretrio EXE, devemos
criar a rede neural propriamente dita, para um
problema especfico. Neste caso utilizaremos o
problema da torre de debutanizao apresentado
anteriormente.
Como j foi definida a quantidade de neurnios das
camadas de entrada e de sada,
resta a definio da quantidade
de neurnios da camada
intermediria, por comodidade
definiremos uma rede com 5
neurnios nesta camada.
Definindo a arquitetura da RN
A arquitetura da RN, deve ser
definida em um arquivo
criado pelo usurio no caso
especfico o arquivo chama-se debut.net, onde:
Global-learn-rate, define a taxa de
aprendizado da RN sendo que quanto
maior este valor, mais rpido ser o
aprendizado.
Global-momentum, uma poro do erro
calculado na sada da RN aps a apresentao
de um par E/S, que incorporada em um fator
aditivo e somada ao valor dos pesos das conexes,
fazendo com que a curva do erro caia de forma mais acentuada
acelerando o aprendizado.
Criando o arquivo de E/S
O arquivo de pares E/S para a torre debutanizadora
ter o seguinte formato:
(10.0 3.87 70.0 2.0) -- Valores de P V T I
(10.5 3.77 68.0 1.8)
(10.8 3.52 72.0 2.1)
(11.0 3.50 75.0 2.2)
(10.0 3.56 69.0 2.0)
Estes valores representam os dados reais da torre e
devero ser normalizados no momento do
treinamento.
Treinando a RN
Com os arquivos .net e .iop no subdiretrio EXE, d-se
incio ao treinamento da rede executando o programa
nets_flt.exe, mostrando o seguinte menu:
b-- mostra valores de bias c-- cria a RN
d-- seta valores de drible e-- mostra estatsticas de erro
g-- gera cdigo C da rede i-- seta pares E/S
j-- reseta pares E/S l-- muda taxa de aprendizado
m-- menu n-- mostra configurao da RN
o-- reordena pares E/S p-- propaga uma entrada pela RN
r-- reseta pesos do arquivo s-- salva pesos no arquivo
t-- treina a rede u-- escalona pares E/S
v-- escalona um arquivo w-- mostra pesos entre 2 camadas
q-- termina o programa

Criando a RN no Nets3.0
Selecionando a opo c no menu, responder as seguintes
perguntas:
Enter filename with net configuration: debut.net
Enter maximum weight value (default = 0.223607): .
Enter minimum weight value (default = 0.000010): .
Use biases in network (y/n default = y)? .
Em azul esto as respostas tpicas. Em caso de RN onde os
valores de momento (momentum) e taxa de aprendizado
(learning rate) no foram pr-definidos, podem ocorrer
outras perguntas relativas a estas caractersticas. Com o
tempo e a experincia pode-se fornecer valores
diferentes dos valores default o que influenciar no
treinamento da RN.

Inicializando o arquivo de pares E/S
Selecionando a opo i no menu do Nets, ocorrero as seguintes
perguntas:
Enter name of file containing I/O pairs (default debut.iop): .
*** 5 I/O Pairs read ***
Do you wish to scale this I/O pairs? y
Scalefile name <fname>.scl debut
File debut.scl not found
Re-enter file name or carriage return to create> .
Choose scaling option
Response Action
0 No scaling
1 Scale input
2 Scale output
3 Scale both input and output
Response> 3
Enter respectively minimum and maximum input values < 0.1500 0.8500> .
Enter respectively minimum and maximum output values < 0.1500 0.8500> .
Write a new file for I/O pairs <n> y
File name for scaled I/O pairs> debuts
Treinando a RN
Uma vez concludos todos os preparativos iniciais, pode-se comear o
treinamento da RN.
Selecionando a opo t do menu, ocorrero as seguintes perguntas:
Enter constraint error: 0.0001
Enter max number of cycles (default = 10000): .
Enter cycle increment for showing errors (default = 1): 1000
*** Learning; Press ctrl-c to suspend ***
Net learned after 559 cycles
Learning time: 2.5 seconds
O tempo de treinamento foi curto devido ao tamanho do arquivo de E/S
ser muito pequeno (poucos pontos para aprender)
Testando a RN
Uma vez concludo o treinamento, deve-se verificar a
aficincia da RN, uma forma de fazer isso
propagando uma entrada pela rede, selecionando a
opo p tem-se:
Enter filename with INPUT (default = manual entry): .
Enter OUTPUT destination file (default = screen): .
Enter input for node 0: 0.150000 0.710000
Enter input for node 1: 0.850000 0.187838
Enter input for node 2: 0.350000 0.550000
O valor correto seria: 0.500000 0.675068
The Outputs for Input 1 are:
for node 0 the value 0.50089 0.675068

Salvando os pesos da RN
A memria da RN est contida nos pesos das conexes
entre os neurnios, para efetuar o salvamento destes
pesos deve-se selecionar a opo s, cujas
perguntas sero:
Save weights in FAST or PORTABLE FORMAT (f/p, default = f): p
Enter file name for storing weights (default = debut.pwt): .
Alm do valor dos pesos Nets3.0 tambm pode fornecer um arquivo
contendo um cdigo em linguagem C contendo referente a rede
treinada, para isso basta selecionar a opo g:
Enter filename with PORTABLE weight values (default = debut.pwt): .
Enter name of delivery file: debut
Uma vez com este arquivo (debut.c) pode-se montar um programa
em linguagem C para utilizao da RN treinada.
Pode-se tambm utilizar diretamente os pesos do arquivo .pwt
para montar um programa em uma linguagem qualquer.
// Algoritmo da rede Xor treinada com uma arquitetura de
// 2 neurnios na camada de entrada (camada 0) 0 2 1
// 2 neurnios na camada do meio (camada 2)
// 1 neurnio na camada de sada (camada 1)
//Camada de entrada (nessa camada tudo o que entra - sai)
Xin0 = Yin0
Xin1 = Yin1
//Camada oculta --> Neurnio 0
Yoc0 = (Xin0 * Wi00) + (Xin1 * Wi10) + bias0 // Entra no neurnio
Xoc0 = 1.0 / (1.0 + exp (-Yoc0)) //Saida do neurnio
//Camada oculta --> Neurnio 1
Yoc1 = (Xin0 * Wi01) + (Xin1 * Wi11) + bias1 // Entra no neurnio
Xoc1 = 1.0 / (1.0 + exp (-Yoc1)) //Saida do neurnio
//Camada de sada --> Neurnio 0
Yout0 = (Xoc0 * Wo00) + (Xoc1 * Wo11) + bias2 // Entra no neurnio
Xout0 = 1.0 / (1.0 + exp (-Yout0)) //Saida do neurnio e da rede

Algoritmo da rede treinada
0
Exerccio
Desenvolver uma rede neural para reconhecer os seguintes
padres:
Exerccio
Desenvolver uma rede neural para realizar a previso das
condies do tempo para o dia seguinte na cidade de So
Paulo, conforme a tabela:
Data Temp.Min. Temp.Max. Umid.Relat
19/09/05 15,7 C 26,3 C 62,00%
18/09/05 14,4 C 21,3 C 93,00%
17/09/05 15,7 C 26,3 C 62,00%
16/09/05 16,8 C 26,7 C 79,00%
15/09/05 13,8 C 27,1 C 58,00%
14/09/05 11,7 C 16,7 C 86,00%
13/09/05 11,8 C 16,1 C 82,00%
12/09/05 17,9 C 23 C 83,00%
10/09/05 17,7 C 30,3 C 38,00%
09/09/05 14,5 C 28 C 49,00%
08/09/05 13,1 C 18,3 C 82,00%
07/09/05 14,3 C 16,9 C 84,00%
06/09/05 14,9 C 22,7 C 86,00%
05/09/05 15,4 C 27,9 C 53,00%
04/09/05 14,7 C 26,7 C 51,00%
Redes Self-Organizing


Arquitetura
Algoritmo
Exemplos

Introduo
Existem vrias aplicaes em que necessrio que a rede
seja treinada sem um supervisor externo
(punio/recompensa).
Nestes casos, a nica informao fornecida est no
conjunto de padres de entrada.
Desta forma estas redes definem seus parmetros por si
mesmas, sm auxlio externo.
Esta a idia principal dos modelos self-organizing, os
quais utilizam o paradigma de aprendizado no
supervisionado.
Introduo
Redes self-organizing so mais parecidas s estruturas
neurobiolgicas que as redes supervisionadas.
A estrutura bsica de modelos self-organizing formada por uma
camada de entrada (fonte) e uma camada de sada
(representao).
Redes self-organizing podem ser utilizadas em problemas de
reconhecimento de padres e categorizao de dados em que as
classes no so conhecidas a priori.
Pares E/S redundantes (ou dados que compartilham
caractersticas comuns) facilitam o agrupamento de dados
necessrios para que estas redes os identifiquem.
J a ausencia de redundncia torna os dados semelhantes a
rudos aleatrios.
Modelo de aprendizado
Com relao ao algoritmo de treinamento redes self-organizing
podem ser divididas em:
1. Aprendizado competitivo, os neurnios competem entre si pelo
direito a atualizar seus pesos, seu uso mais comum em problemas
de classificao, compresso de dados, extrao de caractersticas,
formao de clusters (agrupamentos).
2. Aprendizado hebbiano, baseados nos conceitos de atualizao de
pesos propostos pelo neurofisiologista Hebb em The Organization of
Behavior. Seu uso mais comum em extrao de caractersticas,
anlise de dados e memria associativa.

Self-organizing - Princpios
Os algoritmos das redes self-organizing acompanham os seguintes
princpios:
1. Modificaes dos pesos associados s conexes tendem a
aumentar estes pesos.
2. Limitaes de recursos levam competio entre as sinapses e
seleo das mais aptas em detrimento de outras.
3. Diferentes modificaes nos pesos tendem a cooperar entre si.
Self-organizing - redundncia
Redundncia necessria para que seja desenvolvida uma funo de
processamento til durante o processo de aprendizagem.
A redundncia dos padres de entrada fornece o conhecimento
incorporado rede.
Parte do conhecimento pode ser obtida por meio da observao de
parmetros estatsticos (mdia, varincia e matriz de correlao do vetor
de entrada).
Ao incorporar este tipo de conhecimento, a rede aprende a distinguir
padres nos dados de entrada.
Este conhecimento necessrio para o aprendizado no-supervisionado.
Os modelos de redes self-organizing mais conhecidos so os mapas de
Kohonem e baseiam-se em aspectos neurofisiolgicos, e a famlia de
redes ART de Grossberg que basieam-se na Teoria da Ressonncia
Adaptativa.
Redes ART1
Uma caracterstica das redes neurais sua generalizao.
Entretanto existem certos problemas que que os dados de entrada mudam com o
tempo, nesse caso uma rede neural treinada com o algoritmo back-propagation
perderia o seu desempenho ao longo do tempo, visto que os pares E/S definidos no
treinamento no refletem mais as novas situaes.
A essa adaptao de nos padres indefinidamente d-se o nome de Plasticidade do
Algoritmo de Aprendizado.
Para eliminar o problema da plasticidade pode-se retreinar a rede com os novos
padres. Entretanto corre-se o risco da perda de informaes aprendidas
anteriormente.
Para evitar o problema do esquecimento o algoritmo de treinamento deveria ser
plstico, mas tambm estvel. Este um problema conhecido como Dilema da
estabilidade-plasticidade e envolve as seguintes questes:
1. Como adaptar indefinidamente a rede em resposta a padres significativos e continuar
indiferente a padres irrelevantes?
2. Como preservar o conhecimento previamente adquirido enquanto se adquire novos?
3. O que evita que um novo conhecimento se superponha a conhecimentos prvios?
ART1 - arquitetura
A arquitetura bsica de uma rede ART envolve duas camadas de
neurnios. Uma camada de entrada F
1
que processa os dados de
entrada, e uma camada de sada F
2
que agrupa padres de
treinamento em grupos (clusters).
Estas duas camadas so conectadas por meio de dois conjuntos de conexes que
conectam cada neurnio de uma camada a todos os da outra:
1. O primeiro conjunto representado por conexes feedforward, W, assume valores reais e
segue da camada de entrada para a de sada.
2. O segundo conjunto que contm conexes feedback, B, assume valores binrios e
conecta os neurnios da camada de sada aos de entrada.
Assim o neurnio i da camada de entrada est conectado ao j' da camada de sada
pelo peso W
ij
. Do mesmo modo o neurnio j da camada de sada est ligado ao i da
entrada pelo peso B
ij
.
Os pesos feedforward e feedback so conhecidos por filtros adaptativos por adaptarem
dinamicamente seus valores para possibilitar o aprendizado de novos padres.
Na sada, possui um conjunto de pesos bipolares no-adaptveis. Onde o peso -1 se
este se liga a neurnios diferentes e +1 se ele liga a si mesmo.
ART1 - treinamento
O algoritmo de aprendizado de ART1 no supervisionado e pode ser
ativado a qualquer momento, permitindo que a rede aprenda novos
padres continuadamente. H dois tipos de aprendizado em ART1:
1. Aprendizado rpido, os pesos feedforward so setados para seus valores
timos em poucos ciclos, geralmente em apenas um ciclo de treinamento
2. Aprendizado lento, os pesos so ajustados lentamente em vrios ciclos de
treinamento possibilitando um ajuste melhor dos pesos da rede aos padres
de treiamento.
Os valores iniciais dos pesos feedforward (W) so definido pela equao:
W
ji
(0) = ( 1 / (1+n) ) para todo i,j
onde n o nmero de neurnios da rede
A velocidade do processo de classificao controlada pelo limiar de
vigilncia que inicializado num valor entre 0 e 1.
ART1 - reconhecimento
Cada neurnio da camada de entrada pode receber at trs
sinais:
1. Um sinal do vetor de entrada
2. Um sinal de feedback da camada de sada
3. Um sinal da unidade de controle C, existe uma unidade de
controle para a camada de entrada C
1
e outra para a de sada
C
2
que controlam:
1.O fluxo de entrada C
1
= 1 se uma entrada estiver sendo
apresentada rede e C
1
= 0 se algum neurnio da camada
de sada est ativo.
2.J a unidade C
2
tem duas funes:
1.Determinar o fluxo de dados para a camada de sada
2.Habilitar ou desabilitar neurnios da camada de sada.
ART1 - reconhecimento
Regra dos 2/3: um neurnio da camada de entrada somente ser ativado
se receber pelo menos dois sinais excitatrios, caso contrtio a ativao
no ocorre. O vetor resultante comparado com todos os vetores de
pesos feedforward, W, para encontrar o mais semelhante, isto feito
calculando-se o produto interno entre o vetor d resultante e o vetor de
pesos feedforward para cada neurnio da camada de entrada como
indica a equao:
Y
j
=
i
W
ji
X
i
Onde Y
j
a ativao do neurnio de sada j, definido pelo produto
interno entre seu vetor de pesos W
ji
e seu vetor de entrada X
i
.
ART1 - comparao
J foi visto que cada neurnio da camada de entrada pode receber trs sinais: do vetor de
entrada, do vetor do prottipo no neurnio de sada selecionado na fase de reconhecimento, e
da unidade de Controle C
1
que neste instante igual a 0, uma vez que o neurnio foi ativado na
fase de reconhecimento.
A regra dos 2/3 aplicada novamente, resultando na ativao ou no de cada neurnio da
camada de entrada.
Como o sinal da unidade de controle C
1
= 0 ocorre um AND entre o vetor prottipo do neurnio
selecionado e o vetor de entrada, produzindo um novo vetor, chamado vetor de comparao, Z.
Este vetor enviado para o mecanismo de reset juntamente com o vetor de entrada.
O mecanismo de reset testa a similaridade entre o vetor de entrada e o vetor de comparao.
O teste feito calculando a razo P, por meio da equao:
P = || X
i
Z
ij
||
|| X
i
||
O valor de P ento comparado com o limiar de vigilncia e:
Se P > ento o padro de entrada includo no cluster do neurnio da camada de
sada ativado
Seno outro neurnio da camada de sada dever ser encontrado para armqzenar o
vetor de entrada e a rede entra na fase de busca.
ART1 - busca
Na fase de busca a rede procura selecionar um novo neurnio da camada de
sada para representar o vetor de entrada corrente.
O neurnio da camada de sada rejeitado na fase de comparao anterior
impedido de participar desta seleo, sendo desabilitado (seu valor vai para
0).
O vetor de entrada reapresentado e a rede entra novamente na fase de
comparao, que termina com o teste do mecanismo de reset para
determinar a similaridade entre o novo prottipo escolhido e o padro de
entrada atual.
Este processo repetido, desabilitando neurnios da camada de sada, at
encontrar um neurnio de sada que melhor se assemelhe ao vetor de
entrada corrente, dentro dos limites do limiar de vigilncia .
Se nenhum neurnio de sada for encontrado, o vetor de entrada
considerado de uma classe desconhecida, sendo alocado um neurnio de
sada livre (que no esteja associado a nenhum cluster) para representa-lo.
ART1 algoritmo de aprendizado
1. Inicializar pesos e parmetros
2. Repetir
2.1 Para cada padro de treinamento X faa
2.1.1 Definir neurnio vencedor
2.1.2 Comparar prottipo do vencedor com a entrada
2.1.3 Se comparao > limiar de vigilncia
Ento atualizar os pesos do neurnio vencedor
Seno desabilitar neurnio
Se ainda existir neurnio habilitado
Ento voltar a 2.1.1
Seno alocar novo neurnio ao padro de entrada e
atualizar seus pesos
2.1.4 Habilitar neurnios desabilitados
3. At o mapa de caractersticas no mudar.
Exemplo Passo 1
Na figura ao lado a rede possui 4 neurnios na
entrada e inicialmente um na sada. C
1
e C
2

so iguais a zero, o parmetro de vigilncia
= 0.6, os pesos feedback para o neurnio
de sada possuem os valores [0,1,1,1], e os pesos feedforward so todos iguais a 0.25.
O vetor de entrada X aplicado camada de entrada F
1
.
A regra dos 2/3 determina a resposta da camada de entrada para o padro de entrada.
Nesse ponto, cada neurnio da camada de entrada recebe dois sinais excitatrios:
1. Um sinal do vetor de entrada X
2. Um sinal de C
1
significando que h uma entrada vlida na rede.
Os sinais excitatrios correspondem ao valor 1, e os inibitrios correspondem ao valor 0.
A tabela a seguir mostra o resultado, vetor x', definido aps a aplicao da regra dos 2/3:
Entrada (x') C
1
Resultado (B)
0 1 0
1 1 1
1 1 1
1 1 0
Exemplo
O neurnio selecionado como vencedor (com
maior produto interno) envia seu prottipo
para a camada de entrada F
1
e inibe C
1
,
setando seu valor para 0. A camada de
entrada recebe trs sinais:
1. Do vetor de entrada,
2. Do neurnio vencedor da camada de sada, e
3. Do controle C
1
.
Como pode ser visto na figura. O resultado aps a aplicao da regra dos 2/3 est na
tabela:
Entrada (x') Pesos Feedback C
1
Resultado (B)
0 0 1 0
1 1 1 1
1 1 1 1
1 1 1 0
Exemplo Passo 3
O vetor de comparao Z e o vetor de entrada X so
enviados ao mecanismo de reset para o teste de
vigilncia. A razo P entre esses dois vetores
calculada pela equao abaixo produzindo o valor 1:
P = || X
i
Z
ij
||
|| X
i
||
Esta razo comparada ao limiar de vigilncia . Como 1 maior que 0.6 o vetor de
entrada pode ser armazenado no cluster associado ao neurnio vencedor.
Em seguida os vetores de pesos do neurnio so ajustados para incorporar as
caractersticas do vetor de entrada corrente, conforme as equaes:
b
ij
(t+1) = b
ij
(t) X
i
(t) Onde operador lgico E
W
ji
(t+1) = L * X
i
(t)
L 1 + b
ij
(t) X
i
(t)
onde L um parmetro (L > 1) utilizado na atualizao dos pesos feedforward.
Quando a razao P < , R dispara e inibe o neurnio ativado da camada de sada,
como pode ser visto na figura.
Neste caso o padro de entrada ser atribudo a outro neurnio da camada de sada. Aps a
aplicao do prximo vetor de entrada rede, aunidade de controle C
2
habilita todos os
neurnios desabilitados da camada de sada para que voltem a competir entre si.
Lgica Fuzzy
Princpios
Tcnicas
Aplicaes
Lgica Nebulosa
Quando as leis da Matemtica referem-
se realidade elas no esto certas.
Quando estas leis esto certas elas no
se referem a realidade. Albert Einstein
No se imagina como tudo vago at
que se tenta faze-lo de maneira
precisa. Bertrand Russel
Lgica Aristotlica
Caractersticas:
Os objetos so classificados em categorias
muito bem definidas
Um objeto pertence a uma categoria ou
no. Uma figura geomtrica ou um
quadrado ou no.
O se ou no.
Serve para separar os objetos em
categorias bem definidas.
Lgica Aristotlica
Como classificar exatamente?
O carro est andando muito rpido.
Ele uma pessoa muito feliz.
Esta sala pequena.
Nesta cidade a temperatura
freqentemente est abaixo de zero.
Paradoxos
Bertrand Russel, ao tentar formalizar a Matemtica
encontrou a possibilidade de ser e no ser ao mesmo
tempo nos paradoxos, exemplo:
O filsofo Cretense: Um filsofo Cretense dizia que todos os
Cretenses mentem. O filsofo est mentindo?
O barbeiro de Sevilha: Em Sevilha existe um barbeiro que
s faz a barba de quem no barbeia a si prprio . Quem
barbeia o barbeiro?
O conjunto de todos os conjuntos que no so membros de
si mesmo, um membro de si mesmo? Se ele membro
ento no , se ele ento
Pensamento Fuzzy (Nebuloso)
Se a taxa de juros subir muito e o dficit
for alto teremos uma recesso moderada.
Se estamos na hora do rush aumente
muito a freqncia dos trens.
Se temos muita roupa na mquina de lavar
aumente o tempo de lavagem.
Se a terra est muito seca e a temperatura
est alta regue durante mais tempo.
Se Xi ento Yj
Teorema da Aproximao
sempre possvel cobrir uma curva com um
nmero finito de remendos. Bart Kosko.
Remendos so pedaos de conhecimento
sobre o problema.
Cada remendo corresponde a uma regra, ou
proposio da forma: if... then...
Sistema Fuzzy
Fuzzy: transforma a entrada em um conjunto nebuloso.
Defuzzy: transforma o valor nebuloso de sada em um valor
ntido.
Mquina de inferncia: faz todos os clculos.
Gerente de informaes: obtm da base de conhecimentos,
informaes sobre como regras devem ser resolvidas.
Base de conhecimentos: contm definies sobre as regras,
conjuntos e
operadores.
Construo do Sistema Fuzzy
1. Definir entradas e sadas (Variveis
nebulosas de E/S)
1. Definir faixas de valores (Universo de discurso
das variveis)
2. Dividir o universo de discurso em conjuntos
nebulosos (rtulos)
3. Definir a semntica dos conjuntos (funes de
incluso)
2. Construir a base de regras
3. Simular o sistema
4. Testar o sistema
Vantagens do Sistema Fuzzy
Utilizam regras que conseguem expressar as
imprecises e aproximaes dos mtodos de decises
dos especialistas. Assim so mais fceis de construir,
entender, manter e testar.
Podem ser prototipados em menos tempo.
So mais robustos e conseguem trabalhar com falta
de regras.
Necessitam menos regras.
Podem trabalhar com informaes imprecisas
Podem chegar a concluses de maneira paralela.
Acumulam evidncias contra e a favor de
proposies.
Desvantagens
Verificao e validao: embora sejam mais fceis de
construir e prototipar que sistemas convencionais,
eles necessitam que sejam executadas mais
simulaes e necessitam mais sintonia antes de
serem definitivamente aprovados.
Formalismo: no tem uma definio matemtica
precisa e ntida como os sistemas tradicionais.
Capacidade de aprendizado: no aprendem com a
experincia. Sistemas hbridos so utilizados para
diminuirem esta desvantagem.
Determinao das funes e regras: difcil o
estabelecimento de regras nebulosas corretas.
Produtos Comerciais
Villares: elevador inteligente.
Hitachi: sistema de controle de trfego
do Metro Sendai com 16 estaes e
13,5 Km de trilhos.
Continental: lavadora de roupas.
Sony: Filmadoras, mquinas
fotogrficas, fornos de microondas.
Incio
Lofty Zadeh, Fuzzy Sets. Information and
Control. 1965.
Princpio da Incompatibilidade:
A medida que a complexidade de um sistema
aumenta, nossa habilidade para fazer afirmaes
precisas e que sejam significativas acerca desse
sistema diminui at que um limiar atingido alm
do qual preciso e significncia (ou relevncia)
tornam-se quase que caractersticas mutuamente
exclusivas.
Representao da Informao
Tipo Nominal: no h relaes de ordem e o nico
teste possvel se elemento pertencente ao
conjunto ou no, ex.:
Times = {Vasco, Fluminense, Santos,...}
Tipo Ordinal: identifica a posio de uma entidade
ou evento em uma hierarquia cujos intervalos no
so definidos exatamente. Os dados podem ser
comparados quanto a igualdade, superioridade e
inferioridade, ex:
Inteligente = {Paulo, Maria, Carlos, Ana}
intelig(Paulo)<intelig(Maria)<intelig(Carlos)<intelig(Ana)
Representao da Informao
3. Tipo Intervalo: dados cujos intervalos podem ser
definidos com exatido. No entanto, no h um
ponto zero claramente definido. Podem ser
comparados quanto a igualdade, superioridade e
podem ser subtrados um dos outros, ex.:
Calendrio. Graus Celsius
intelig(Maria)-intelig(Paulo)<intelig(Ana)<intelig(Carlos)
4. Tipo Proporcional: semelhantes aos do tipo intervalo,
mas h um zero absoluto, ex.:
Graus Kelvin
Conjuntos Clssicos
Universo de Discurso
Corresponde ao espao onde so definidos
os elementos do conjunto, ex.:
0m <= altura <= 3,0m
Funo de Incluso
Define se um elemento pertence ou no ao
conjunto, ex.:
Problemas de Representao
Com os Conjuntos Clssicos
Embora conjuntos clssicos sejam a base de toda a teoria
matemtica moderna, eles apresentam problemas
quando aplicados uma enorme classe de problemas do
mundo real
O problema da escolha do limiar entre dois conjuntos
(alto/baixo) denominado de paradoxo Sorites, atribudo
ao filsofo, Eubulides de Mileto, adversrio de
Aristteles:
Quando um monte de areia deixa de ser um monte de
areia, caso retiremos um gro de areia de cada vez?

Tipos de Incluso
1. Incluso com grau:
Um elemento pertence a um conjunto
com m determinado grau de certeza.
Alguns elementos do conjunto so mais
representativos da idia geral do conjunto
do que outros, ex.:
alunos excelentes = {Pedro, Ana, Paulo,
Marta}
muito altos = {Oscar, Tande, Jnior Baiano}
Tipos de Incluso
2. Incluso em diversos conjuntos:
Um elemento pode ser membro parcial de
mais de um conjunto, ex.:
Crianas = {Rita,Manoel,Adriana,Marta}
Adolescentes = {Rita,Mateus,Pedro,Felipe}

Crianas(Rita) = 0,2
Adolescentes(Rita) = 0,8
Funo de Incluso
A funo de incluso de um conjunto A
caracterizada pela funo
(A): X[0,1]
Que mapeia cada elemento de X em um nmero real no
intervalo [0,1].
Para um elemento em particular, a funo representa
o grau de incluso do elemento no conjunto, ex.:

Representao dos Conjuntos
Pares Ordenados:
Um conjunto fuzzy pode ser representado como um
conjunto ordenado de pares, sendo que o primeiro
elemento denota o elemento do conjunto
propriamente dito e o segundo o grau de incluso
deste elemento no conjunto.
Universo de Discurso de Notas:
X={0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10}
Conjunto Fuzzy A dos bons alunos:
A={(6,0),(6.5,0.25),(7,0.5),(7.5,0.75),(8,1),(8.5,0.75),(9,0.5),(9.5
,0.25),(10,0)}
Exerccios
Representar em termos de universo de
discurso e pares ordenados os conjuntos:
Meses do ano
Temperatura C entre 0 e 100
Notas dos alunos da classe
Representar graficamente estes valores com:
Estaes do ano
Estados da gua
Reprovaes, exame e aprovaes
Representao dos Conjuntos
Funo de Incluso (ou pertinncia):
Uma classificao por altura inclui as seguintes categorias
para a estatura: baixa, mdia e alta.
A equao caracterstica do conjunto estatura mdia :
0 se altura <= 1,50

media
(altura) = 5*altura-7.5 se 1,50<altura<1,70
-5*altura+9.5 se 1,70<altura<1,90
0 se altura >= 1,90


Funes de Incluso
Representao Linear:
Este um dos conjuntos nebulosos mais
simples
Funes de Incluso
Funes Triangulares e Trapezoidais:
Funes empregadas freqentemente devido a
simplicidade de representao e utilizao.
Podem ser representadas usando-se apenas 4
valores: dois para pontos em cada uma das retas
e os dois ngulos de inclinao.
Funo Trapezoidal
Funes de Incluso (cont.2)
Funo Sigmide definida usando-se trs
parmetros:
Seu valor 0 de incluso (),
Seu valor 1 de incluso ()
E o ponto de inflexo (|), que o ponto onde o valor da
funo de incluso vale 0.5.


S (x, , |, ) =
0
2 *


X

-
2
X -
-
2
x =
= x = |
| = x =
x =
1
1 2 *
Funes de Incluso (cont.3)
Funo Beta definida com dois parmetros, o
valor em torno do qual construda () e um valor
que indica a metade da largura da curva no ponto de
inflexo (|).

B (x, , | ) = 1


X -
|
2
1 +
Terminologia de Conjuntos - Suporte
Suporte de um Conjunto Nebuloso : um conjunto
ntido definido da seguinte maneira:

= {x X | A (x) > 0}
Suporte Compacto de um Conjunto
Nebuloso
O suporte compacto quando seu tamanho menor
que o Universo de Discurso original.
Caso a funo no seja compacta vrias regras sero
ativadas por cada entrada causando que o sistema
seja sobrecarregado.
Terminologia de Conjuntos
Corte Alfa
Conjunto corte : O conjunto ntido de elementos que
pertencem ao conjunto nebuloso A at pelo menos o
grau chamado de conjunto corte . O conjunto
corte ento definido como:
A =
A = {x X A (x) > }
{x X A (x) > }
O conjunto A chamado de
conjunto corte forte.

Terminologia de Conjuntos -
Cardinalidade
A cardinalidade de um conjunto nebuloso finito |A|
definida como:

|A| =

e a cardinalidade relativa de A definida como:

E
x X
(x)
||A|| =
|A|
|X|
Exemplo
A cardinalidade do conjunto
A = { (6,0), (6.5, 0.25), (7, 0.5), (7.5, 0.75), (8,1),
(8.5, 0.75), (9, 0.5), (9.5, 0.25), (10,0) }
vale
|A| = 0+0.25+0.5+0.75+1.0+0.75+0.5+0.25+0 = 4.0
e a cardinalidade relativa :
||A|| =

Para conjuntos X a cardinalidade : A =
x

A
(x)dx

4.00
20
= 0.20
Terminologia de Conjuntos - Altura
Altura de um conjunto nebuloso A
definida como:
H
A
= max
xeX
{u
A
(x)}
Um conjunto definido como normal se
H
A
= 1 e sub-normal no caso contrrio.
Terminologia de Conjuntos -
Distncia
Mede a distncia que um valor est da definio ideal
do conjunto e definida como:
se u
A
(x)=0
d(A,x) =
1 - 1 caso contrrio
u
A
(x)
Distncia entre um ponto e a definio ideal
Exerccios
Calcular a cardinalidade |A| e a
cardinalidade relativa ||A|| dos
conjuntos definidos no exerccio
anterior.
Variveis lingusticas
Uma varivel lingustica uma varivel cujos valores so
nomes de conjuntos fuzzy.
Por exemplo a altura de um determinado indivduo pode ser
uma varivel lingustica assumindo valores muito baixo,
baixo, medio, alto e muito alto. Estes valores so descritos
por meio de conjuntos fuzzy, como na figura, representados
por funes de pertinncia como na figura:
A funo das variveis linguisticas fornecer uma maneira
sistemtica para a caracterizao
aproximada de fenmenos
complexos mal definidos.
Defuzzificao
a interpretao da informao de sada do sistema, visto que foi obtido
o conjunto fuzzy de sada atravz de um processo de inferncia.
A defuzzificao necessria geralmente quando se necessita de sadas
precisas.
Existem vrios mtodos de defuzificao, entretanto os mais comuns
so:
Avaliao dos antecedentes, avalia-se os antecedentes das regras e
caso sejam ligados por e assume-se o menor valor para a resposta,
e caso sejam ligados por ou assume-se o maior valor.
Centro de gravidade, a sada o valor do universo de resposta do
problema que divide a rea sob a curva da funo de incluso em
duas partes iguais.
Mdia dos mximos, a sada precisa obtida tornando-se a mdia
entre dois elementos extremos no universo que correspondem aos
maiores valores da funo de pertinencia do consequente.
Deffuzificao
Centride


Antecedentes
Lgica Fuzzy na Prtica
Exemplo Prtico
Uma ONG deseja implementar um sistema
Fuzzy-especialista para selecionar atletas para
as seguintes modalidades esportivas:
Ginstica de Solo;
Vlei;
Futebol; e
Jud.
Os atletas devem ser selecionados de acordo
com as seguintes caractersticas:
Altura: baixo, mdio e alto.
Personalidade: individualista, pluralista e
agressivo.
Passo 1
Definio de regras fuzzy a partir do conhecimento
do especialista:
Se o atleta muito baixo e um pouco individualista Ento
est apto para a ginstica
Se o atleta muito alto e bastante pluralista Ento est
apto para o vlei
Se o atleta de estatura media e muito agressivo Ento
est apto para o jud
Exerccio
Continuar a definio de regras fuzzy para os atletas
Passo 2
As regras so definidas de acordo com o bom senso e escritas
em termos de variveis lingsticas.
Para um sistema de duas entradas e uma sada pode-se definir
a seguinte matriz antecedente 1 (altura) e antecedente 2
(personalidade):
Vlei Jud Jud Jud Ginstica Agressivo
Vlei

Futebol
ou Vlei
Futebol Jud Ginstica Pluralista
Futebol Futebol Jud Ginstica Ginstica Individualista
Muito Alto Alto Mdio Baixo Muito
Baixo
Altura
Personalidade
Passo 3
Definir o grau de relevncia de cada antecedente traando, a
partir de uma determinada altura do atleta, uma linha
perpendicular ao eixo x at encontrar o valor de y onde esta
intercepta as funes membros.
Exerccio
Definir o grau de relevncia para o antecedente
personalidade
Passo 4
Uma vez definidos os graus de relevncia dos antecedentes deve-se
definir o grau de certeza (a firmeza da regra) para cada regra. Nesse
caso usamos oos mtodo de avaliao dos antecedentes:
Se os antecedentes estiverem ligados pela condio e a certeza da regra
assume o menor valor de relevncia dos antecedentes.
Se os antecedentes estiverem ligados pela condio ou a certeza da regra
assume o maior valor de relevncia dos antecedentes.
Sempre melhor utilizar operadores e sempre que possvel.
Se o antecedente possuir o operador no a certeza da regra assumir o
valor = 1 relevncia ( ex.: not muito baixo (0.9) dever ser muito baixo
(0.1) )
Ento a regra fica:
Regra 2: Se o atleta de estatura baixa (0.20) E agressivo (.75) Ento est
apto para a Ginstica (0.20)
Regra 3: Se o atleta de estatura media (0.75) OU agressivo (.70) Ento
est apto para o jud (0.75)


Exerccio
Definir os graus de certeza para todas as regras definidas
anteriormente.
Finalmente
Considerando apenas a altura dos candidatos, podemos montar
o seguinte grfico de fuzzyficao:

Futebol=0,20
Vlei=0,35
1,85
Futebol=0,6 1,75
Futebol=0,5 1,65
Jud=0,40
Futebol=0,30
1,55
Ginstica=0,27
Jud=0,30
1,45
Ginstica=0,5 1,35
Ginstica=0 1,25
Sada Entrada
Exerccio
Definir o grfico de incluso para a
personalidade dos candidatos.
Trabalho 1
Desenvolver um sistema Neuro-Fuzzy para controlar
automticamente o freio de uma bicicleta. O sistema possui duas
entradas e uma sada:
Entrada 1: Velocidade
Entrada 2: Distncia do obstculo
Sada: Presso no freio
Exemplos de regras:
Se distncia pequena e velocidade alta ento freio forte
Se distncia grande e velocidade alta ento freio fraco
Valores de velocidade, ditncia e presso definidos a critrio do
grupo.
Algoritmos Genticos
Introduo
Teoria
Aplicaes
Introduo
Algoritmos Genticos AG, so mtodos de busca e otimizao
que simulam os processos naturais de evoluo, aplicando a
idia darwiniana de seleo.
Esto baseados nos processos genticos dos organismos
biolgicos, codificando uma possvel soluo a um problema a
partir de "cromossomos" compostos por cadeias de bits e/ou
caracteres.
Os cromossomos representam indivduos que so levados ao
longo de vrias geraes, na forma similar aos problemas
naturais, evoluindo de acordo com os princpios de seleo
natural e sobrevivncia dos mais aptos, descritos pela primeira
vez por Charles Darwin em seu livro "Origem das Espcies".
Aplicaes
Projeto estrutural de edifcios.
Projeto de redes de distribuio de gua.
Otimizao de uso de ambulncias.
Programao de mquinas de CNC.
Problemas de otimizao de modo geral.
Ciclo de funcionamento
Os AGs so algortmos de otimizao global empregando uma
estratgia de busca paralela e estruturada, mas aleatria,
voltada em direo da busca de pontos
de "alta aptido", ou seja, pontos nos
quais a funo a ser minimizada (ou
maximizada) tem valores relativamente
baixos (ou altos).
Os AGs exploram informaes histricas
para encontrar novos pontos de busca
onde so esperados melhores
desempenhos. Isto feito atravs de
processos iterativos, onde cada iterao
chamada de gerao.
O algoritmo
1. T = 0;
2. Gerar pupulao inicial P(0);
3. Para cada indivduo i da populao atual P(t) faa
4. Avaliar a aptido do indivduo i;
5. Fim para
6. Enquanto o Critrio de Parada no for satisfeito faa
7. t = t + 1;
8. Selecionar populao P(t) a partir de P(t-1);
9. Aplicar operadores de cruzamento sobre p(t);
10. Aplicar operadores de mutao sobre P(t);
11. Avaliar P(T);
12.Fim enquanto.
Representao
O AG processa populaes de indivduos ou cromossomos. O
cromossomo uma estrutura de dados, geralmente vetores ou
cadeia de valores, tradicionalmente binrios, que representa uma
possvel soluo do problema a ser otimizado.
Em geral, o cromossomo representa o
conjunto de parmetros da funo-objetivo
cuja resposta ser maximizada ou
minimizada.
O conjunto de todas as configuraes que o cromossomo pode
assumir forma o seu espao de busca. Se o cromossomo
representa n parmetros de uma funo, esto o espao de busca
um espao com n dimenses.
Alm da representao com cadeias de bits, podem ser utilizadas
vrias outras, por exemplo: caracteres, numeros reais etc.
Seleo
O princpio bsico do funcionamento dos AG que um critrio de
seleo vai fazer com que, depois de muitas geraes, o conjunto
inicial de indivduos gere indivduos mais aptos.
O AG comea com uma populao inicial de N cromossomos.
Quando no seconhece nada sobre o espao de busca os mesmos
so gerados aleatriamente. Caso contrrio, eles podem ser
definidos de forma deterministica.
Existem vrios mtodos de seleo, a maiorida deles procura
favorecer indivduos mais aptos, por exemplo:
Range, a escolha de indivduos dentro de uma faixa de aptido
interessante para a soluo do problema.
Roleta, escolhe os indivduos por sorteio sendo que os mais aptos
tem mais chances de serem escolhidos visto representarem
proporcionalmente fatias maiores na roleta do que os menos aptos.
Funo de Aptido
Funo de Aptido
Todo cromossomo possui uma funo de aptido
apt
que
um valor relacionado a constituio do mesmo e define quo
privilegiado o cromossomo est em relao aos outros e
depende da funo objetivo.
Funo Objetivo
Ou funo de custo uma expresso matemtica que mede o
quanto uma soluo est prxima ou distante da soluo
desejada (satisfaz o objetivo do problema).
Muitas vezes ela inclui restries que devem ser satisfeitas
pela soluo. Alguns problemas podem maximizar seu valor e
outros podem minimiz-lo.
Operadores genticos
Servem para que dada uma populao, seja possvel gerar
populaes sucessivas que (espera-se) melhorem sua aptido
com o tempo. Estes operadores sp:
1. Crossover, troca de informaes entre os cromossomos.
2. Mutao, alteraes aleatrias nos alelos.
Estes operadores so utilizados para a criao de uma nova
gerao mas com caractersticas de adaptao adquiridas pelas
geraes anteriores.
Para garantir que os melhores indivduos no desapaream da
populao pela manipulao dos operadores genticos, eles
podero ser mantidos na nova gerao, por meio de uma poltica
elitista.
Mutao
Este operador necessrio para a introduo e manuteno da
diversidade gentica da populao, alteranto arbitrriamente um ou mais
componentes do cromossomo.
A mutao assegura a probabilidade de chegar a qualquer ponto do
espao de busca nunca ser zero, alm de contornar o problema dos
mnimos locais por alterar a direo da busca.
O operador de mutao aplicado aos indivduos com uma probabilidade
dada pela taxa de mutao (0 P
m
1).
Geralmente se utiliza uma taxa de mutao pequena (0,00 P
m
1),
pois um operador gentico secundrio.
Cruzamento
Responsvel pela recombinao de
caractersticas dos pais durante a reproduo
permitindo que as prximas geraes herdem
essas caractersticas.
o operador gentico predominante e
aplicado com probabilidade dada pela taxa de
cruzamento (0 P
c
1), que deve ser maior que a taxa de
mutao, sendo usualmente (0,6 P
c
0,99).
Este operador pode ser usado de vrias maneiras, sendo que as
mais comuns so:
Cruzamento de um ponto, um ponto de cruzamento escolhido e a
partir dele ocorre a troca de informaes genticas entre o pai e a me.
Cruzamento multipontos, vrios pontos de cruzamento podem ser
utilizados para a troca gentica.
Parmetros genticos
O desempenho de um AG fortemente influenciado pela
definio dos parmetros a serem utilizados, a seguir so
apresentados alguns critrios para a escolha dos principais
parmetros:
Tamanho da populao, afeta o desempenho global e a eficincia do
GA, visto que em populaes pequenas o desempenho pode cair
devido a pequena cobertura do espao de busca j em grandes
populaes a cobertura mais representativa, entretanto consome
mais recursos computacionais.
Taxa de cruzamento, quanto maior mais estruturas so introduzidas
na populao. Se muito alta estruturas com boas aptides podero
ser retiradas mais rapidamente que a capacidade de seleo em criar
melhores estruuras. Se a taxa for muito baixa pode estagnar.
Parmetros genticos
Taxa de mutao, uma baixa taxa de mutao previne que a busca
fique estagnada em sub-regies do espao de busca alm de
possibilitar que qualquer ponto do espao de busca seja atingido.
Com a taxa muito alta a busca se torna seesncialmente aleatria.
Intervalo de gerao, controla a percentagem da populao que ser
substituda para a prxima gerao. Com um intervalo grande, a
maior parte da populao ser substituda e isso pode levar perda
de estruturas de alta aptido. Com um intervlo pequeno, o algoritmo
pode se tornar muito lento.
Critrio de parada, diferntes critrios podem ser utilizados para
terminar a execuo de um AG, por exemplo:
Aps um dado nmero de geraes.
Quando a aptido mdia ou do melhor indivduo no melhorar mais.
Quando as aptides dos indivduos de uma populao se tornarem muito
parecidas. Ao conhecer a resposta mxima da funo-objetivo, possvel
utilizar ese valor como critrio de parada.
Exerccio
Desenvolver um ambiente para a evoluo de AG considerando
que os a populao poder ter cromossomos numa faixa
devariao entre 8 e 32 alelos. Podero ser alterados pelo
usurio:
Quantidade de alelos no cromossomo.
Tamanho da populao
Funo de aptido.
Funo objetivo.
Taxa de cruzamento.
Taxa de mutao.
Intervalo de gerao.
Critrio de parada.