Anda di halaman 1dari 55

UNIVERSIDADE DO PLANALTO CATARINENSE

DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS


CURSO DE SISTEMAS DE INFORMAÇÃO
(BACHARELADO)

WILSON CASTELLO BRANCO NETO

INTELIGÊNCIA ARTIFICIAL – NOTAS DE AULA

LAGES (SC)
2010
LISTA DE ILUSTRAÇÕES

FIGURA 1 - Mapa com cidades para busca da melhor rota ......................................12


FIGURA 2 - Mapa com cidades e distâncias para busca da melhor rota...................16
FIGURA 3 - Etapas de um Algoritmo Genético ........................................................23
FIGURA 4 - Especialista Humano .............................................................................26
FIGURA 5 - Arquitetura de um Sistema Especialista ...............................................27
FIGURA 6 - Arquitetura Expandida de um Sistema Especialista .............................28
FIGURA 7 - Organização das regras na base de conhecimento ................................30
FIGURA 8 - Encadeamento para frente .....................................................................32
FIGURA 9 - Encadeamento para trás ........................................................................33
FIGURA 10 - Variáveis de uma Rede Bayesiana......................................................40
FIGURA 11 - Rede Bayesiana criada no Netica ........................................................41
FIGURA 12 - Conjunto clássico Alto ........................................................................44
FIGURA 13 - Conjunto difuso Alto...........................................................................45
FIGURA 14 - Função de pertinência do conjunto nebuloso Alto..............................46
FIGURA 15 - Conjuntos difusos Baixo, Médio e Alto..............................................47
FIGURA 16 - Neurônio biológico .............................................................................50
FIGURA 17 - Modelo de McCulloch e Pitts .............................................................51
FIGURA 18 - Perceptron Multicamada .....................................................................53

QUADRO 1 - Comparação entre buscas ....................................................................18


QUADRO 2 - Algoritmo Básico de Busca ................................................................19
QUADRO 3 - Definição do espaço de estados para o problema do Mapa ................19
QUADRO 4 - Definição dos Operadores para o problema do Mapa.........................20
QUADRO 5 - Variáveis da Base de Conhecimento para escolha do Vinho..............31
QUADRO 6 - Regras da Base de Conhecimento para escolha do Vinho ..................31
LISTA DE ABREVIATURAS E SIGLAS

AG - Algoritmo Genético
IA - Inteligência Artificial
IAC - Inteligência Artificial Conexionista
IAE - Inteligência Artificial Evolucionária
IAS - Inteligência Artificial Simbólica
SE - Sistema Especialista
SEP - Sistema Especialista Probabilístico
SUMÁRIO

1 INTRODUÇÃO ..........................................................................................................6
1.1 Tipos de Problemas ...................................................................................................6
1.2 O que é Inteligência Artificial? .................................................................................6
1.3 Histórico da Inteligência Artificial ............................................................................8
1.4 Domínios de Aplicação .............................................................................................8
1.5 Paradigmas.................................................................................................................9
2 RESOLUÇÃO DE PROBLEMAS POR MÉTODOS DE BUSCA ......................10
2.1 Introdução ................................................................................................................10
2.2 Formulação do Problema .........................................................................................11
2.3 Busca da Solução .....................................................................................................11
2.4 Estratégias de Busca Cega .......................................................................................13
2.4.1 Busca em Largura ........................................................................................................... 13
2.4.2 Busca em Profundidade ................................................................................................... 14
2.4.3 Busca com Profundidade Limitada ................................................................................. 14
2.4.4 Busca em Profundidade Iterativa .................................................................................... 15
2.4.5 Busca de Custo Uniforme ................................................................................................ 15
2.5 Estratégias de Busca Heurística...............................................................................17
2.5.1 Algoritmo A* ................................................................................................................... 17
2.6 Controle de Estados Repetidos ................................................................................18
2.7 Estruturas de Dados para Árvores de Busca ...........................................................19
3 ALGORITMOS GENÉTICOS ...............................................................................21
3.1 Conceitos Básicos ....................................................................................................21
4 SISTEMAS ESPECIALISTAS SIMBÓLICOS ....................................................25
4.1 Conceito e Aplicações .............................................................................................25
4.2 Estrutura de um Sistema Especialista ......................................................................26
4.3 Engenharia do Conhecimento..................................................................................28
4.4 Aquisição e Representação do conhecimento .........................................................29
4.4.1 Regras de Produção ........................................................................................................ 30
4.5 Estratégias de Inferência em Sistemas com Regras de Produção ...........................32
4.5.1 Encadeamento Progressivo (Forward Chaining) ........................................................... 32
4.5.2 Encadeamento Regressivo (Backward Chaining) ........................................................... 33
4.6 Representação de Conhecimento Incerto ................................................................34
4.6.1 Sistemas Especialistas Probabilísticos (SEP) ................................................................. 34
4.6.2 Sistemas Especialistas Nebulosos ou Difusos ................................................................. 43
5

5 INTELIGÊNCIA ARTIFICIAL CONEXIONISTA (IAC)..................................49


5.1 Inspiração Biológica ................................................................................................50
5.2 O Modelo de McCulloch e Pitts (MCP) ..................................................................51
5.3 Arquiteturas e modelos de RNA..............................................................................52
5.4 Aprendizagem em redes neurais artificiais .............................................................53
REFERÊNCIAS BIBLIOGRÁFICAS ......................................................................55
6

1 INTRODUÇÃO

Este capítulo apresenta uma introdução à Inteligência Artificial,


destacando seus conceitos básicos, um breve histórico e seus paradigmas e
potenciais aplicações.

1.1 Tipos de Problemas

Do ponto de vista da computação, os problemas podem ser


classificados em três categorias:
1) Sem solução;
2) Com solução algorítmica;
3) Sem solução algorítmica, mas não necessariamente sem solução.

Os problemas do tipo 1 são tratados pela teoria da computação. Os do


tipo 2 são resolvidos pelas técnicas tradicionais de computação. Os problemas do
tipo 3 podem ser tratados por técnicas de Inteligência Artificial, assim como
alguns problemas do tipo 2, cuja resolução por algoritmos tradicionais se torna
inviável devido aos recursos de tempo e espaço necessários.

1.2 O que é Inteligência Artificial?

Apesar das várias décadas de pesquisa na área, ainda não foi possível, e
dificilmente será, criar uma definição única para o termo Inteligência Artificial,
que seja aceita por toda a comunidade científica. Vários conceitos foram
definidos por diferentes autores, sendo alguns apresentados a seguir.
“Inteligência Artificial é o estudo de conceitos que permitem que os
7

computadores sejam inteligentes” (Patrick Winston).


Problema – O que é inteligência?

“Inteligência é a habilidade de resolver problemas difíceis?” (Marvim


Minsky).
Problema – O que são problemas difíceis?

“Inteligência Artificial é o estudo de como fazer os computadores


realizarem coisas, que no momento, as pessoas fazem melhor” (Elaine Rich,
Kelvim Knight).
Problema – Condena a Inteligência Artificial ao fracasso.

“Inteligência Artificial é o estudo das faculdades mentais com o uso de


modelos computacionais” (Eugene Cherniak, Drew McDermott).
É um conceito com boa aceitação, pois não atribui inteligência às
máquinas.

Guilherme Bittencourt, não entra nesta discussão sobre um conceito


para IA, ele apenas define que “o objetivo central da IA é simultaneamente
teórico – a criação de teorias e modelos para a capacidade cognitiva - e prático –
a implementação de sistemas computacionais baseados nestes modelos.

A inteligência artificial está baseada na:


1) Filosofia
2) Matemática
3) Psicologia
4) Tecnologia
8

1.3 Histórico da Inteligência Artificial

Alguns dos fatos mais marcantes da história da IA são os seguintes:


• Franskestein
• 1943: McCulloch e Pitts realizam os primeiros estudos para criar
um modelo de neurônio artificial capazes de resolver qualquer
função computável;
• 1956: criado oficialmente o campo Inteligência Artificial em um
congresso no Dartmouth College. O termo Inteligência Artificial é
atribuído a John McCarthy;
• Anos 60: Época de sonhos. Desejo de construir o General Problem
Solver (GPS);
• 1969: Minsky e Papert, escreveram um livro apresentando
problemas relacionados ao modelo de McCulloch e Pitts, fazendo
com que os investimentos nesta área fossem cortados;
• Anos 70: Grandes esforços na Inteligência Artificial Simbólica
(IAS). Desenvolvimento dos Sistemas Especialistas;
• Anos 80: Reinicia o interesse por Redes Neurais;
• Anos 90: Utilização da Inteligência Artificial comercialmente.

1.4 Domínios de Aplicação

A inteligência artificial é utilizada principalmente nos seguintes


domínios, nas mais variadas aplicações:
• Processamento de Linguagem Natural
• Demonstração Automática de Teoremas
• Bases de Dados Inteligentes
• Robótica
• Tomada de Decisão
• Diagnóstico
9

• Reconhecimento de Padrões
• Ensino
• Planejamento
• Entretenimento

1.5 Paradigmas

Para programar sistemas computacionais baseados nos modelos


cognitivos das pessoas, os cientistas estudaram o ser humano sob diferentes
enfoques. Desta forma surgiram alguns paradigmas dentro da IA, sendo a forma
pela qual o conhecimento é adquirido e, principalmente, representado, o que os
diferencia.
Inteligência Artificial Simbólica (IAS): Parte do princípio que o
conhecimento necessário para a resolução de um problema e as regras para a
manipulação deste conhecimento sejam suficientes para resolvê-lo. É utilizado
quando um problema é bem definido, ou seja, quando é claramente conhecida a
forma com que ele seria resolvido pelos humanos.
Exemplo: Sistemas para diagnóstico
Inteligência Artificial Conexionista (IAC): Procura modelar a forma
de raciocínio dos seres humanos, simulando o funcionamento biológico de parte
do seu cérebro. Seu desempenho é melhor que o da IAS em problemas mal
definidos, onde não se consegue explicitar a forma de resolução do problema.
Exemplo: Reconhecimento de Padrões (assinaturas, letra, voz, etc.)
Inteligência Artificial Evolucionária (IAE): utiliza as teorias da
evolução humana (Darwin) para a resolução de problemas de busca e de
otimização nos casos em que a IAS torna-se inviável devido a quantidade de
tempo ou espaço necessária para a resolução do problema. Neste paradigma não
é preciso conhecer o caminho que leva a solução, bastando apenas saber o que é
uma boa solução para poder alcançá-la. Também é utilizada em problemas de
aprendizagem de máquina.
Exemplo: Algoritmos Genéticos para definição de escalas de serviço.
10

2 RESOLUÇÃO DE PROBLEMAS POR MÉTODOS DE BUSCA

Este capítulo apresenta como um problema pode ser resolvido por meio
de algoritmos de busca em grafos. Inicialmente ele trata da formulação de um
problema, ou seja de sua representação computacional e, em seguida, descreve os
principais algoritmos que podem ser usados para realização das buscas.

2.1 Introdução

A resolução de problemas por métodos de busca é uma das técnicas da


IAS mais conhecidas, pois herdou uma série de conceitos e algoritmos da teoria
dos grafos. Dentre outras aplicações que são implementadas por meio de
algoritmos de busca, destacam-se:
• Vários tipos de jogos;
• Definição de rotas (Roteamento de redes, definição de rotas de
ônibus, aéreas, etc.);
• Layout de chips de silício (Microcontroladores e
Microprocessadores);
• Navegação de robôs;
• Outros problemas de busca e otimização em geral.

Para resolver um problema utilizando métodos de busca deve-se:


• Formular o problema;
• Passar o problema para um algoritmo de busca, que retorna como
saída a sua solução. Em geral, esta solução é uma seqüência de
passos que levam ao objetivo.
11

2.2 Formulação do Problema

Problema é, na verdade, um conjunto de informações utilizadas para se


decidir o que fazer. Dentre estas informações destacam-se os estados, que
representam a situação atual do problema; e as ações, que levam o problema de
um estado a outro.
A formulação de um problema consiste na definição dos seguintes
dados:
• Espaço de Estados: Conjunto de estados possíveis de se atingir,
partindo do estado inicial, após executar uma seqüência de ações;
• Um Estado Inicial: Estado de onde a busca é iniciada;
• Teste de Objetivo: Função que é aplicada a um estado para verificar
se aquele é um estado final;
• Operador: Conjunto de ações possíveis de serem executadas;
• Função de Custo de Caminho1: Uma função que associa um custo a
um caminho encontrado como resposta.

Exercícios para formulação:

• Quebra Cabeça;
• Encontrar a Melhor Rota.
• Grade de Horários.

2.3 Busca da Solução

Após a formulação do problema, seus dados devem ser passados para


um algoritmo capaz de chegar a uma solução. Esta tarefa é feita através de uma
busca em um espaço de estados.
Exemplo: Encontrar o melhor caminho para ir de Porto Alegre a
Manaus de avião. Os vôos da empresa passam pelas seguintes cidades. Porto

1
Opcional
12

Alegre, Florianópolis, Curitiba, São Paulo, Rio de Janeiro, Belo Horizonte, ,


Brasília, Salvador, Fortaleza, Cuiabá e Manaus.

FIGURA 1 - Mapa com cidades para busca da melhor rota

O processo de busca é iniciado levando-se em consideração o estado


inicial, neste caso Porto Alegre. Como este não é o estado final, geram-se novos
estados a partir dele, que são testados e, caso não sejam o estado final,
novamente expandidos gerando assim uma árvore de busca. A escolha de qual nó
expandir primeiro é denominada de estratégia de busca.
A efetividade de um algoritmo de busca pode ser medida utilizando
quatro parâmetros:
• Completude: Caso exista uma solução, a estratégia garante que ela
será encontrada;
• Complexidade de tempo: Quanto tempo levará para a solução ser
encontrada;
• Complexidade de espaço: Quanta memória será necessária para
efetuar a busca;
• Otimização: Caso exista mais de uma solução a estratégia
13

encontrará a melhor solução.

A seguir apresentam-se algumas das principais estratégias de busca, as


quais são analisadas de acordo com os quatro parâmetros definidos acima:
Existem dois grupos de estratégias de busca. A busca cega ou
desinformada e a busca heurística ou informada. Na busca cega, não está
disponível nenhuma informação para estimar a distância entre o estado atual e o
estado final. Já na busca heurística informações adicionais são utilizadas para
estimar a distância entre os estados atual e final, visando auxiliar na escolha do
melhor nó a ser expandido.

2.4 Estratégias de Busca Cega

Nas seções a seguir são apresentados os principais tipos de busca cega.

2.4.1 Busca em Largura

A busca em largura caracteriza-se por expandir todos os nós de


profundidade n, antes de expandir qualquer nó de profundidade n+1.
Com relação aos quatro critérios de comparação pode-se dizer que a
busca em largura:
• Sempre encontra a solução, se ela existir;
• Sempre encontra a melhor solução quando houver mais de uma;
• Pode ter um grande gasto de memória e tempo em problemas com
um fator de ramificação muito alto, pois o número de nós em um
nível é dado por:

1 + b2 + b3 + ... + bd, onde b é o fator de ramificação e d a


profundidade da árvore.

Exercício: Supondo que um computador consiga processar 1000 nós


por segundo e que cada nó ocupe 100bytes. Calcule o tempo e a quantidade de
memória utilizada para encontrar a solução de um problema com um fator de
14

ramificação médio igual a 10 e que a solução está no nível:

1) Quatro.
2) Oito.
3) Doze.

2.4.2 Busca em Profundidade

A busca em profundidade sempre expande um dos nós do nível mais


profundo da árvore. Apenas quando o fim da árvore é encontrado (um nó que não
pode ser expandido) é que a busca retorna e expande outros ramos da árvore.
Dos critérios de análise de estratégias de busca pode-se concluir que a
busca em profundidade:
• Nem sempre encontra a solução;
• Utiliza pouca memória;
• Quando encontra a solução, em geral, o faz rapidamente;
• Nem sempre encontra a melhor solução.

A busca em profundidade é interessante para problemas que possuem


várias soluções, principalmente, em níveis profundos da árvore. Porém, este tipo
de busca pode gerar árvores de busca muito profundas ou até infinitas ao fazer a
escolha errada de um nó para expansão.
Mecanismos para evitar a repetição de nós e a conseqüente geração de
ciclos repetitivos na árvore podem impedir que a busca seja realizada
infinitamente, entretanto a implementação deste controle pode fazer com que o
tempo de busca aumente de forma proibitiva, impedindo-os de serem usados. O
item 2.3.3 apresenta algumas estratégias para eliminação de estados repetidos e
destaca suas vantagens e desvantagens.

2.4.3 Busca com Profundidade Limitada

Esta estratégia evita as armadilhas da busca em profundidade,


limitando a quantidade máxima de níveis de uma árvore. Desta forma, quando
15

um nível pré-determinado é atingido sem que a solução tenha sido encontrada, o


processo de busca retorna para expandir outros ramos da árvore, evitando que
sejam geradas árvores infinitas.
A escolha da profundidade máxima é muito importante, pois, se existir
alguma solução acima deste nível ela será encontrada, tornando a estratégia
completa como a busca em largura. Entretanto, a estratégia não é ótima, pois não
garante que a melhor solução seja encontrada.
Se um valor errado for tomado como limite, a busca não encontrará
nenhuma solução, mesmo que ela exista.

2.4.4 Busca em Profundidade Iterativa

Para resolver o problema da definição do nível limite do algoritmo


anterior, foi desenvolvido a busca em profundidade iterativa, que é caracterizada
por várias buscas em profundidade limitada, sendo a primeira realizada com
limite igual a 0. Caso a solução não seja encontrada (o que geralmente acontece)
a busca é repetida, mas agora com um limite igual a 1. Este processo é repetido,
sempre incrementando o limite em uma unidade a cada nova busca, até que uma
solução seja encontrada.
A busca em profundidade iterativa é completa e ótima. A complexidade
de espaço desta busca é semelhante a da busca em profundidade. Apesar de
parecer muito demorada, já que vários nós serão criados muitas vezes, esta busca
tem uma complexidade de tempo semelhante a busca em largura, já que, como as
árvores possuem um crescimento exponencial, a maioria dos nós está no último
ramo, que é criado apenas uma vez pelas duas estratégias.

2.4.5 Busca de Custo Uniforme

As buscas cegas apresentadas anteriormente, não utilizam nenhuma


informação adicional para definir os valores de uma transição entre diferentes
estados, ou seja, todo passo realizado possui o mesmo peso. Por exemplo,
qualquer viagem realizada entre duas cidades conectadas no mapa possui o custo
16

“1”, independente da distância entre elas. Assim, considera-se que o caminho de


menor custo é sempre aquele que está mais próximo do nó raiz.
Considerando o mapa já visto, reapresentado na figura 2 com as
distâncias entre as cidades, percebe-se que a viagem entre Cuiabá e Fortaleza
pode ser feita, dentre outros, por dois caminhos diferentes, com as seguintes
quilometragens:
1) Cuiabá – Belo Horizonte – Brasília – Fortaleza = 3573 km;
2) Cuiabá – Manaus – Fortaleza = 3837 km.

FIGURA 2 - Mapa com cidades e distâncias para busca da melhor rota

Caso uma busca em largura fosse aplicada, ela encontraria o segundo


caminho e o consideraria o melhor, tendo em vista que ele apresenta o menor
número de nós. Contudo, percebe-se que isto não é verdade, pois pelo primeiro
caminho a distância é de 3573 km, embora ele passe por três cidades, enquanto
no segundo caminho, que passa apenas por duas cidades, é de 3873 km.
Para contornar este problema, deve-se utilizar a busca de custo
uniforme, que ao expandir cada nó calcula o seu custo (neste exemplo, a
17

distância entre o estado inicial e o nó atual). Para decidir qual o próximo nó a ser
expandido, o algoritmo busca aquele com menor custo associado.
Nem sempre a primeira solução encontrada é a melhor. Portanto, para
garantir que este algoritmo seja ótimo, faz-se necessário continuar a busca após
encontrar a primeira solução, enquanto houver nós com custos menores que o da
solução encontrada para expandir.

2.5 Estratégias de Busca Heurística

Nos métodos de busca heurística, alguma informação sobre o problema


é utilizada para guiar a busca e evitar que o programa perca tempo em regiões
improváveis de se encontrar a solução. A abordagem mais utilizada é a da
expansão do primeiro melhor. Nesta estratégia os nós considerados melhores são
inseridos nas primeiras posições da fila e, conseqüentemente, são expandidos
primeiro. Esta classificação é feita com base em uma função de avaliação.

2.5.1 Algoritmo A*

É o algoritmo mais comum de busca heurística. Para cada nó gerado é


calculado um valor que estima a sua distância em relação ao estado final. O
estado que possuir o menor (ou maior) valor será expandido primeiro. Isto é feito
através da seguinte fórmula.

f (n) = g(n) + h(n), onde:


• f(n) – custo estimado entre o estado inicial e o estado final;
• g(n) – custo real entre estado inicial e atual(n);
• h(n) – custo estimado entre estado atual(n) e final

Caso a função heurística h(n) nunca superestime o custo para se chegar


na solução, ela é considerada uma heurística admissível. O algoritmo A*, quando
implementado com uma heurística admissível, é completo e ótimo. A memória
18

necessária é menor que a utilizada pelos algoritmos de busca cega e o tempo de


processamento depende da complexidade da função heurística.
O quadro 1 apresenta a comparação dos resultados (quantidade de nós
gerados na árvore) para encontrar uma solução usando diferentes tipos de busca.

QUADRO 1 - Comparação entre buscas


Nível da Prof. Iterativa A* 1 A* Dist.
Solução Manhattan
2 10 6 6
4 112 13 12
8 6384 39 25
12 364404 227 73
20 -- 7276 676

2.6 Controle de Estados Repetidos

A repetição de estados em alguns problemas pode representar um


grande desperdício de memória e tempo de processamento. Algumas técnicas são
utilizadas para contornar este problema, são elas:
• Um nó não pode gerar um filho igual ao seu pai;
• Não gerar um nó que já esteja no caminho entre o nó atual e o
estado inicial;
• Não gerar nenhum nó que já esteja na árvore. (Todos os nós já
gerados devem estar na memória, em geral utiliza-se uma tabela
hash).

Estas opções estão listadas em ordem crescente de:


• eficiência para a diminuição do número de nós;
• complexidade de implementação;
• tempo de processamento.

Em muitos casos é mais viável não fazer o controle de estados


repetidos e deixar que a árvore cresça rapidamente, do que efetuá-lo para que a
árvore não cresça tanto, porém tornando o processo de geração de um nó muito
19

lento.

2.7 Estruturas de Dados para Árvores de Busca

Apesar de logicamente tratar-se de uma árvore de busca, no momento


da implementação os nós são armazenados em duas estruturas lineares, uma para
os nós já expandidos e outra para os nós que ainda não foram processados.
O algoritmo utilizado para a busca é o mesmo nas diferentes
estratégias. O que varia é a estrutura utilizada para armazenar os nós a expandir,
sendo uma fila na busca em largura, uma pilha nas buscas em profundidade e
uma lista com prioridades no algoritmo A*. Os quadros 2 a 4 apresentam alguns
exemplos de código dos algoritmos de busca.

QUADRO 2 - Algoritmo Básico de Busca


RealizeBusca(_origem,_dest:string;_abertos,_fechados:TLista);
var
atual : TEstado;
filho : TEstado;
begin
atual := TEstado.Create(nil,_origem);
filho := nil;
while (atual <> nil) and (filho = nil) do begin
filho := self.GereFilhos(atual,_dest,_abertos);
_fechados.Insere(atual);
atual := _abertos.Remove;
end;
end;

QUADRO 3 - Definição do espaço de estados para o problema do Mapa


TEstado = class
private
Pai : TEstado;
Descricao: string;
Proximo: TEstado;
end;

procedure TAlgBusca.InicieRotas;
begin
self.Rotas[1,1]:='Porto Alegre'; self.Rotas[1,2] := 'São Paulo';
self.Rotas[2,1]:='Porto Alegre';self.Rotas[2,2]:='Florianópolis';
self.Rotas[3,1]:= 'Florianópolis'; self.Rotas[3,2] := 'Curitiba';
self.Rotas[4,1]:= 'Curitiba'; self.Rotas[4,2] := 'São Paulo';
self.Rotas[5,1]:= 'Curitiba'; self.Rotas[5,2] := 'Rio de Janeiro';
self.Rotas[6,1]:= 'São Paulo'; self.Rotas[6,2] := 'Belo Horizonte';
self.Rotas[7,1]:= 'São Paulo'; self.Rotas[7,2] := 'Salvador';
self.Rotas[8,1]:='Rio de Janeiro';self.Rotas[8,2] := 'Belo Horizonte';
self.Rotas[9,1]:= 'Rio de Janeiro'; self.Rotas[9,2] := 'Cuiabá';
self.Rotas[10,1]:= 'Belo Horizonte'; self.Rotas[10,2] := 'Cuiabá';
self.Rotas[11,1]:= 'Belo Horizonte'; self.Rotas[11,2] := 'Fortaleza';
20

self.Rotas[12,1]:= 'Salvador'; self.Rotas[12,2] := 'Fortaleza';


self.Rotas[13,1]:= 'Fortaleza'; self.Rotas[13,2] := 'Manaus';
self.Rotas[14,1]:= 'Cuiabá'; self.Rotas[14,2] := 'Manaus';
end;

QUADRO 4 - Definição dos Operadores para o problema do Mapa


GereFilhos(_est:TEstado;_dest:string;_abertos:TLista):TEstado;
var
i : integer;
filho : TEstado;
begin
result := nil;
i := 1;
while i <= Qtd_Rotas do begin
if Rotas[i,1] = _est.Get_Descricao then
filho := TEstado.Create(_est,Rotas[i,2])
else
if Rotas[i,2] = _est.Get_Descricao then
filho := TEstado.Create(_est,Rotas[i,1])
else
filho := nil;

if (filho <> nil) then begin


_abertos.Insere(filho);
if (filho.Get_Descricao = _dest) then begin
i := Qtd_Rotas;
result := filho;
end
end;
i := i + 1;
end;
end;
21

3 ALGORITMOS GENÉTICOS

Este capítulo apresenta os principais conceitos e aplicações dos algoritmos


genéticos.

3.1 Conceitos Básicos

Os Algoritmos genéticos representam a técnica mais comum da IA


Evolucionária. Sua principal característica é que ele não precisa conhecer a
forma pela qual a solução é encontrada, para resolver um problema. Seu
funcionamento baseia-se os mecanismos evolutivos de seleção, cruzamento ou
reprodução e mutação. Eles são utilizados para resolver problemas de busca,
otimização e aprendizagem de máquina, principalmente nos casos onde os
algoritmos de busca em grafos tornam-se inviáveis devido ao tempo e/ou espaço
requeridos.
Alguns exemplos de aplicações de algoritmos genéticos são:

• Problemas de busca - Geração de Quadros de Horários;


• Cálculo de Rotas (Projetos de Redes, Logística);
• Treinamento de Redes Neurais (ajustes de pesos, otimização da
topologia);
• Composição Musical, Textos, Pinturas;
• Mineração de Dados.

O processamento de um algoritmo genético é iniciado pela codificação


e inicialização (em geral aleatória) de uma população inicial. Esta população é
formada por um conjunto de cromossomos (indivíduos) sendo que cada um deles
representa uma possível solução. Em seguida deve ser desenvolvida uma função
22

(função de avaliação) capaz de analisar como cada cromossomo resolve o


problema e atribuir um valor a ele de acordo com a qualidade de sua solução.
Por fim, são aplicados os operadores genéticos, que transformam a
população inicial, ao longo de várias gerações, até que a solução seja encontrada
ou um número pré-definido de gerações alcançado. Os principais operadores são:
• Seleção: Seleciona os cromossomos da população atual que serão
enviados para a próxima etapa (cruzamento) para gerar os
cromossomos da próxima geração. A probabilidade de um
cromossomo ser sorteado depende do seu resultado perante a função
de avaliação. Quanto melhor o resultado, maior sua chance de ser
sorteado;
• Cruzamento e Reprodução: É a troca de material genético entre
dois dos cromossomos selecionados na etapa anterior;
• Mutação: Este operador permite a realização de mudanças
aleatórias nos cromossomos, com o objetivo de evitar a estagnação
da população em máximos locais.

Além dos operadores básicos, também é bastante utilizado o operador


de elitismo, que é um tipo especial de seleção. Por meio desta técnica seleciona-
se um número pré-definido de cromossomos, sendo estes os que obtiveram
melhores resultados na função de avaliação, para repassá-los diretamente para a
próxima geração, sem a necessidade de sorteio ou cruzamento. Isto garante que
as características dos melhores cromossomos estarão presentes na próxima
geração. O fluxo de execução de um algoritmo genético é apresentado na figura
3.
Alguns problemas podem atrapalhar a convergência de um AG. Entre
eles destacam-se o surgimento de super indivíduos e a destruição muito rápida
dos cromossomos ruins. Isto leva a convergência precoce, fazendo com que a
busca fique estagnada em máximos locais.
23

FIGURA 3 - Etapas de um Algoritmo Genético

Uma das formas de contornar estes problemas é a utilização na etapa de


seleção de técnicas de normalização linear, nas quais o resultado da função de
avaliação é utilizado apenas para ordenar os cromossomos. Ao primeiro
24

colocado é atribuído um valor X, e aos demais são atribuídos valores que vão
diminuindo em um valor fixo de cromossomo para cromossomo.
Exercício: Montar o horário para três turmas de um curso noturno.
Cada turma possui três disciplinas de 4 créditos, sendo as 4 aulas ministradas em
um único dia de 2ª a 4ª.

Turma 1 – Algoritmos – Ricardo


Arq. de Computadores – Carlos
Introdução à Informática – Perin

Turma 2 - Programação I – Wilson


An. e Projeto de Sistema – Perin
Redes de Computadores – Marcos

Turma 3 - Programação II – Marcos


Estruturas de Dados – Wilson
Bancos de Dados – Perin

Disponibilidade dos Professores:


Ricardo – 2ª e 3ª
Carlos – 3ª e 4ª
Perin – 2ª, 3ª e 4ª
Wilson – 2ª e 3ª
Marcos – 3ª e 4ª
25

4 SISTEMAS ESPECIALISTAS SIMBÓLICOS

Este capítulo apresenta os conceitos básicos, estrutura e aplicações de


sistemas especialistas baseado em regras, bayesianos e difusos.

4.1 Conceito e Aplicações

“Sistemas Especialistas são programas de computador concebidos para


reproduzir o comportamento de especialistas humanos na resolução de tarefas de
um domínio específico” (BITTENCOURT, 2001).

Um SE pode ser utilizado para atividades de:


1) Diagnóstico: determinar o problema que está afetando o
funcionamento de algo;
2) Monitoração: compara o comportamento de um sistema com um
modelo do que se espera dele;
3) Controle: comanda o comportamento de um sistema. Normalmente
sistemas de controle também realizam as atividades de monitoração;
4) Interpretação: concluir algo a partir de um conjunto de
informações;
5) Previsão: identificar as conseqüências que serão geradas por uma
determinada situação;
6) Projeto: configurar as partes componentes de um sistema de forma
a atingir um objetivo;
7) Planejamento: definir uma seqüência de ações que podem levar a
um objetivo;
8) Simulação: cria situações hipotéticas para avaliar suas
26

conseqüências;
9) Tutorial: auxiliar no processo de aprendizagem, identificando as
características do aprendiz e guiando-o através das diversas lições;

em áreas como: agricultura; negócios; engenharia; eletrônica; medicina;


meteorologia; ensino; transporte, entre outros.
Um SE possui algumas características, tais como:
• Controle separado do conhecimento;
• Área de atuação limitada;
• Permite Raciocínio inexato;
• “Erra”.

4.2 Estrutura de um Sistema Especialista

Um ser humano para tomar alguma decisão utiliza os fatos que observa
em uma situação, que são armazenados em sua memória de curto termo. Estes
fatos são relacionados com o conhecimento sobre o domínio do problema que
está armazenado em sua memória de longo termo, por meio de seu raciocínio
como mostra a figura 4.

Memória de Longo Memória de Curto

Raciocínio

FIGURA 4 - Especialista Humano

Internamente um sistema especialista possui uma estrutura semelhante


a de um especialista humano, como mostra a figura 5.
27

Sistema Especialista

Base de Memória de
Conhecimento Trabalho

Mecanismo de
Inferência

Interface com
o Usuário

Usuário

FIGURA 5 - Arquitetura de um Sistema Especialista

• Base de conhecimento: Armazena o conhecimento de um ou mais


especialistas humanos sobre um determinado domínio. Estas
informações são obtidas pelo engenheiro do conhecimento e são
utilizadas em todas as consultas do sistema. As formas de
representar o conhecimento na base de conhecimento serão
discutidas posteriormente;
• Memória de trabalho: É o módulo que contém os fatos sobre o
problema, descobertos durante uma consulta. Estes fatos podem ter
sido informados pelo usuário ou obtidos através de inferências na
base de conhecimento;
• Máquina de inferência: É o mecanismo de processamento que
associa os fatos presentes na memória de trabalho, com o
conhecimento armazenado na base para chegar às conclusões;
• Interface com o usuário: É o módulo responsável por interagir
com o usuário da maneira mais natural possível. Em geral, esta
interação é feita através de perguntas e respostas.
28

Além dos componentes básicos apresentados na figura 4, um


sistema especialista pode conter outros módulos adicionais, conforme arquitetura
apresentada na figura 6.

Sistema Especialista

Mecanismo de Base de Memória de


Aprendizagem ou Conhecimento Trabalho
Interface do
Desenvolvedor

Mecanismo de Mecanismo de
Explanação Inferência

Interface com
Usuário

Usuário

FIGURA 6 - Arquitetura Expandida de um Sistema Especialista

• Mecanismo de explanação: É responsável por mostrar ao usuário o


raciocínio que está sendo desenvolvido pelo especialista, explicando
o motivo pelo qual uma pergunta foi feita, ou o que se espera como
resposta do usuário;
• Módulo de aprendizagem: Este módulo é responsável por atualizar
(de forma automática ou não) a base de conhecimento, visando
melhorar os resultados do sistema.

4.3 Engenharia do Conhecimento

É o processo de construção de um Sistema Especialista. Em geral, este


é um processo altamente iterativo, sendo composto das seguintes etapas:
1) Avaliação: Aqui é feito o estudo do problema candidato, definido
os objetivos, os recursos necessários e principalmente as fontes de
29

conhecimento;
2) Aquisição do conhecimento: é a etapa mais complexa e demorada,
nela deve-se, através de leituras, entrevistas com o especialista e
observações de casos, adquirir o conhecimento necessário para a
resolução do problema;
3) Projeto: Inicia com a escolha da forma que o conhecimento será
representado na base, a estratégia de inferência utilizada e de uma
ferramenta para a implementação do SE;
4) Implementação: Codificação do sistema usando uma linguagem de
programação genérica ou alguma ferramenta específica para
desenvolvimento de sistemas especialistas;
5) Teste: Aqui é validada a estrutura e o conhecimento do sistema.
Esta etapa é executada juntamente com as etapas 2, 3 e 4, unindo o
especialista, o engenheiro do conhecimento e o usuário final;
6) Documentação e Manutenção: Estas etapas são semelhantes às
realizadas no desenvolvimento de outros tipos de software.

4.4 Aquisição e Representação do conhecimento

A tarefa de aquisição do conhecimento consiste em “extrair” o


conhecimento sobre o domínio desejado de um ou mais especialistas. Ela é,
certamente, a etapa mais complexa no desenvolvimento de um sistema
especialista e depende de uma grande habilidade do engenheiro do
conhecimento, para que todos os detalhes sejam informados pelo(s)
especialista(s).
Técnicas similares a de análise de requisitos, tais como brainstorms,
entrevistas desestruturadas, entrevistas estruturadas, questionários e
acompanhamento in loco das atividades podem ser utilizadas. Antes de iniciar o
desenvolvimento de um SE é fundamental que se tenha certeza da
disponibilidade de um ou mais especialistas para auxiliar nesta etapa a qual, em
geral, leva bastante tempo para ser cumprida.
30

Após concluir a aquisição do conhecimento deve-se iniciar a sua


representação de uma forma processável pelo computador. A decisão sobre que
abordagem utilizar é muito importante, pois ela pode fazer com que um sistema
gere melhores ou piores resultados, além de tornar a tarefa de representação do
conhecimento mais simples ou mais complexa. Algumas formas clássicas para a
representação do conhecimento são: Lógica (booleana, de primeira ordem,
paraconsistente, entre outras), Objetos, Frames, Redes Semânticas e Regras de
Produção. Além destas, atualmente grande enfoque tem sido dado às formas de
representação de conhecimento capazes de modelar incertezas, entre elas, Redes
Bayesianas e Conjuntos Difusos. Nas seções seguintes serão apresentadas as
Regras de Produção, as Redes Bayesianas e os Conjuntos Difusos.

4.4.1 Regras de Produção

As regras de produção representam o conhecimento sobre como


relacionar diferentes informações já conhecidas para que novas informações
possam ser geradas.
Exemplo: SE Prato_Principal = Frango OU Peixe ENTÃO
Melhor_Cor := Branco

Para facilitar a criação da base de conhecimento, é utilizada uma


estrutura de blocos, que agrupa as regras relativas à resolução de um ponto
específico do problema. A figura 7 apresenta como exemplo a organização das
regras para um SE responsável por definir o melhor tipo de vinho para
acompanhar um jantar. Este sistema toma como base o prato que será servido e o
tipo do molho.
1. Melhor
Vinho

2.Melhor 3. Melhor
Tipo Cor

4. Prato 5. Tem 6. Tipo


Principal Molho Molho
FIGURA 7 - Organização das regras na base de conhecimento
31

Os quadros 5 e 6 apresentam a base de conhecimento deste sistema.

QUADRO 5 - Variáveis da Base de Conhecimento para escolha do Vinho


Melhor_Vinho Melhor_Cor
Valores: Cabernet Sauvignon Valores:
Riesling Branco
Pinot Noir Tinto
Sauvignon Blanc
Melhor_Tipo Tem_Molho
Valores: Valores:
Seco Sim
Suave Não
Molho Prato_Principal
Valores: Valores: Carne Vermelha
Tomate Frango
Picante Peixe
Massa

QUADRO 6 - Regras da Base de Conhecimento para escolha do Vinho


SE Prato_Principal = Carne Vermelha ENTÃO
Melhor_Cor := Tinto

SE Prato_Principal = Frango OU Peixe ENTÃO


Melhor_Cor := Branco

SE Tem_Molho = Não ENTÃO


Melhor_Tipo = Suave

SE Tem_Molho = Sim E Molho = Picante ENTÃO


Melhor_Tipo = Suave

SE Tem_Molho = Sim E Molho = Tomate ENTÃO


Melhor_Tipo = Seco

SE Prato_Principal = Massa ENTÃO


Melhor_Vinho = Cabernet Sauvignon

SE Melhor_Cor = Branco E Melhor_Tipo = Suave ENTÃO


Melhor_Vinho = Riesling

SE Melhor_Cor = Branco E Melhor_Tipo = Seco ENTÃO


Melhor_Vinho = Sauvignon Blanc

SE Melhor_Cor = Tinto E Melhor_Tipo = Suave ENTÃO


Melhor_Vinho = Pinot Noir

SE Melhor_Cor = Tinto E Melhor_Tipo = Seco ENTÃO


Melhor_Vinho = Cabernet Sauvignon
32

4.5 Estratégias de Inferência em Sistemas com Regras de Produção

A inferência em um SE é responsável por simular o raciocínio humano,


derivando novas informações a partir de informações já conhecidas. As
estratégias de inferência utilizadas em um SE baseado em regras de produção
são:

4.5.1 Encadeamento Progressivo (Forward Chaining)

Esta estratégia inicia com fatos ou informações conhecidas, através das


quais deriva novos fatos, repetindo este processo até que a solução seja
encontrada ou nenhuma outra regra possa ser disparada. A figura 8 apresenta o
fluxo de execução do mecanismo de inferência com encadeamento para frente.

Entrada de Informações
na Memória de Trabalho

Verifica a Primeira
Regra

Verifica a
Próxima Regra

Adiciona conclusão na V Premissa está na F Ainda


Memória de Trabalho Memória de Trabalho Existem Regras

Parar

FIGURA 8 - Encadeamento para frente

• Vantagens do Encadeamento para Frente:


• Deriva várias informações a partir de poucos fatos;
• Desvantagens:
• Faz muitas perguntas;
• As perguntas podem ser feitas de forma desorganizada;
33

• Pode derivar informações desnecessárias tornando o processo


mais lento;

É utilizado em tarefas de monitoramento, planejamento, previsão e


simulação.

4.5.2 Encadeamento Regressivo (Backward Chaining)

Nesta forma de inferência, inicialmente deve ser definido um objetivo


na memória de trabalho. Hipóteses são definidas para este objetivo, as quais
devem ser comprovadas através das regras na base de conhecimento. A figura 9
apresenta o fluxo de execução do mecanismo de inferência com encadeamento
para trás.

Definição
dos Objetivos

Criação de
uma Hipótese

Busca Nova
Hipótese
V

Existem Regras F Existem outras


para provar a Hipótese? Hipóteses

V F

Premissa da
regra é a nova Parar
hipótese (não encontrou resposta)
FIGURA 9 - Encadeamento para trás

É importante observar que o processo de comprovação de hipóteses é


recursivo, pois para comprovar que uma hipótese é verdadeira, outras hipóteses
são criadas e devem também ser comprovadas.
34

• Vantagens do Encadeamento para Trás:


• Deriva apenas as informações relevantes sobre o problema;
• As perguntas são feitas de maneira organizada, focando sempre
apena uma das hipóteses.
• Desvantagens:
• Dependendo da quantidade de hipóteses a ser analisada, o
processo pode se tornar lento.

É utilizado em problemas de diagnóstico.

4.6 Representação de Conhecimento Incerto

Uma das grandes virtudes do ser humano reside no fato dele ser capaz
de tomar decisões com base em informações incertas. A incerteza pode surgir
devido à aleatoriedade de eventos, à imprecisão de conceitos, à existência de
informações contraditórias ou à falta de alguma informação. Algumas
abordagens surgiram para criar modelos capazes de representar este tipo de
conhecimento, tornando o sistema mais robusto e mais parecido com um
especialista humano. Dentre elas destacam-se as redes bayesianas, a lógica
nebulosa e a lógica paraconsistente.

4.6.1 Sistemas Especialistas Probabilísticos (SEP)

Alguns domínios se caracterizam por apresentarem incerteza devido à


aleatoriedade em suas regras, ou seja, apresentam exceções. Nestes casos,
desenvolver um SE baseado em regras de produção torna-se muito trabalhoso
devido a grande quantidade de regras necessárias para tratar todas estas exceções.
Exemplo: A previsão do tempo é um domínio que apresenta uma forte
característica aleatória, pois mesmo apresentando as mesmas condições
(premissas) em dias diferentes, não se tem a certeza de que o comportamento do
tempo (resultado) será igual nestes dois dias. Simplificando bastante o problema,
35

pode-se dizer que para saber se em um determinado local choverá no período da


tarde, basta verificar se choveu de manhã naquele local.
Assim, definem-se como variáveis do sistema:
• CHUVA_TARDE: a variável de saída que pode ter como valores
Verdadeiro ou Falso;
• CHUVA_MANHA: variável de entrada que, também, pode ter
como valores Verdadeiro ou Falso.

As regras que compõem a base de conhecimento do sistema são:

Se CHUVA_MANHA = V então CHUVA_TARDE = V


Se CHUVA_MANHA = F então CHUVA_TARDE = F

Entretanto, não é preciso ser especialista no assunto para saber que as


regras acima não são capazes de modelar o conhecimento de forma correta, já
que nem sempre que chove pela manhã, chove durante a tarde também; da
mesma forma que pode chover durante a tarde sem que tenha chovido pela
manhã.
Uma forma de melhorar esta representação consiste na associação de
valores de probabilidade as regras. Desta forma, é possível, além de representar
os casos mais comuns (como feito nas regras acima), definir também as exceções
existentes no domínio, juntamente com as probabilidades de que elas aconteçam.
Exemplo:
Se CHUVA_MANHA = V então CHUVA_TARDE = V (90%)
Se CHUVA_MANHA = V então CHUVA_TARDE = F (10%)
Se CHUVA_MANHA = F então CHUVA_TARDE = F (80%)
Se CHUVA_MANHA = F então CHUVA_TARDE = V (20%)

Apesar de simples, as regras apresentadas acima mostram que


representar o conhecimento incerto através de regras de produção não é uma boa
estratégia, devido a grande quantidade de regras que são necessárias para
representar as exceções. Assim, outras formas estão sendo pesquisadas para
minimizar este trabalho. Uma delas é baseada nos conceitos de Probabilidade
Condicional e no Teorema de Bayes.
36

4.6.1.1 Revisão dos Conceitos Básicos de Probabilidade

Consciente ou inconscientemente, a probabilidade é utilizada por


qualquer pessoa que toma alguma decisão em situações de incerteza,
independente de conhecer ou não as regras para o seu cálculo. Ela é uma medida
de quão provável é a ocorrência de um evento.
Os experimentos podem ser aleatórios ou determinísticos. Nos eventos
do segundo tipo é possível prever o seu resultado, através de repetições. Por
exemplo, a quantos graus água ferve? Após o descobrimento de que, sob certas
condições, este evento ocorre aos 100 graus, pode-se garantir que o resultado
será o mesmo, se forem mantidas estas condições.
Já nos experimentos aleatórios é impossível prever com absoluta
certeza o seu resultado, independente do número de repetições feitas. Exemplos
clássicos deste tipo de evento são: lançamento de uma moeda, de um dado, ou
retirada de uma carta do baralho.
Um conceito importante para o entendimento de probabilidade é o de
espaço amostral, geralmente definido pela letra S. Este pode ser definido como o
conjunto de todos os eventos simples de uma experiência aleatória. De forma
mais simples, o espaço amostral é o conjunto de todos os resultados possíveis de
um experimento. No caso do lançamento da moeda o espaço amostral é S={cara,
coroa}, do lançamento do dado S={1, 2, 3, 4, 5, 6} e do baralho o conjunto das
52 cartas S={1 Copas, 2 Copas,...,Rei Copas,1 Paus,...,...,...,Rei Espada}.
Define-se P(A) como a probabilidade de um evento “A” ocorrer. Este
valor pode ser definido seguindo a escola objetivista, para a qual o valor da
probabilidade é definido pela seguinte fórmula:

P(A) = Número de casos favoráveis a A / Número de casos possíveis

Exemplos: Sendo X o lançamento de um dado, a probabilidade de X=1 é


definida como:
P(X=1) = 1 (número de casos favoráveis) / 6 (número de casos possíveis)
P(X=1) = 0.16667
37

Sendo X o lançamento de um dado, a probabilidade de X ser par é definida


como:
P(X=par) = 3 (número de casos favoráveis) / 6 (número de casos possíveis)
P(X=par) = 0.5

Outra forma de definir os valores de probabilidade é através da escola


subjetivista, que considera a probabilidade a medida de uma crença pessoal de
que determinado evento venha a ocorrer. Esta escola está ganhando cada vez
mais adeptos e tem grande aplicabilidade na avaliação de probabilidades nos
casos onde a escola objetivista é incapaz defini-las.

Regras básicas da probabilidade:


• 0 ≤ P(A) ≤ 1 A probabilidade de um evento deve ser um número
entre 0 e 1.
• P(S) = 1 A probabilidade do espaço amostral é 1.
• Dois eventos são ditos mutuamente exclusivos se a ocorrência de
um implica na não ocorrência de outro. P(A ∩ B) = 0.
• Dois eventos são ditos independentes se a ocorrência de um não
altera a probabilidade de ocorrência do outro. P(A ∩ B) =
P(A)*P(B).
• P(A U B) = P(A) + P(B) – P(A ∩ B) – A probabilidade de A ou B
ocorrer é dada pela soma das probabilidades de ocorrência de cada
um individualmente, menos a probabilidade de ocorrência
simultânea dos dois.
• Dois eventos são ditos dependentes caso a ocorrência de um deles
altere na probabilidade de ocorrência do outro. Neste caso tem-se
uma probabilidade condicionada. P(A | B) significa a probabilidade
de A ocorrer dado que (sabendo que) B ocorreu.

Com base nos conceitos de probabilidade condicional as seguintes


38

regras podem ser modeladas como segue:

Se CHUVA_MANHA = V então CHUVA_TARDE = V (90%)


Se CHUVA_MANHA = V então CHUVA_TARDE = F (10%)

Se CHUVA_MANHA = F então CHUVA_TARDE = V (20%)


Se CHUVA_MANHA = F então CHUVA_TARDE = F (80%)

Representação das regras através de probabilidades condicionais:

P(CHUVA_TARDE = V | CHUVA_MANHA = V ) = 0.9


P(CHUVA_TARDE = F | CHUVA_MANHA = V ) = 0.1
P(CHUVA_TARDE = V | CHUVA_MANHA = F ) = 0.2
P(CHUVA_TARDE = F | CHUVA_MANHA = F ) = 0.8

O Teorema de Bayes é um processo sistemático de revisão das


probabilidades condicionais, à medida que novas informações são obtidas. Sua
fórmula é:

P(A | B) = ( P(B | A) * P(A) ) / P(B)

Exemplo: Supondo que existem três gavetas iguais. Na primeira


existem duas moedas de R$ 0,50, na segunda uma moeda de R$0,50 e uma de
R$1,00 e na terceira duas moedas de R$1,00. Escolhes-se uma gaveta ao caso e
retira-se uma moeda.

1) Qual a probabilidade de ser escolhida cada uma das gavetas?


P(G1) = P(G2) = P(G3) = 1/3.

2) Sabendo que a moeda retirada é de R$1,00 qual o novo valor destas


probabilidades?
Considerando:
M1 – o evento de retirar a moeda de R$1,00;
P(M1 | Gn) – a probabilidade de retirar uma moeda de R$1,00 da
gaveta n
Chega-se aos seguintes resultados:
P(G1 | M1) = ( P(M1 | G1) * P(G1) ) / P(M1)
39

P(G1 | M1) = ( 0 * 0.33 ) / 0.5 = 0


P(G2 | M1) = ( P(M1 | G2) * P(G2) ) / P(M1)
P(G2 | M1) = ( 0.5 * 0.33) ) / 0.5 = 0.333
P(G3 | M1) = ( P(M1 | G3) * P(G3) ) / P(M1)
P(G3 | M1) = ( 1 * 0.33) ) / 0.5 = 0.667

Exercício: Refazer os cálculos considerando que a moeda retirada é de


R$ 0,50.

4.6.1.2 Construção da Base de Conhecimento de um SEP

Os SEP têm em sua base de conhecimento fatos e regras que


representam o conhecimento do especialista sobre um domínio. Aos fatos e às
regras estão associadas às incertezas, que são representadas por valores de
probabilidade. As Redes Bayesianas são esquemas utilizados para representar o
conhecimento de um SEP, sendo elas compostas de duas partes: uma qualitativa
e outra quantitativa.
A primeira, qualitativa, consiste em um conjunto de nós, que
representam as variáveis, e de arcos direcionados que representam as regras. A
parte quantitativa é formada por um conjunto de probabilidades a priori, que
estão relacionadas às variáveis de saída, e probabilidades condicionais, que estão
associadas aos arcos (relações entre as variáveis).
Como exemplo, será construída a base de conhecimento para calcular a
probabilidade de chover durante à tarde, considerando o fato de ter chovido de
manhã ou não e a estação do ano (apenas verão e inverno).
Utilizando regras de produção devem ser montadas todas as
combinações possíveis, como apresentado abaixo:

Se CHUVA_MANHA = V e EST = VERÃO então CHUVA_TARDE = V (X %)


Se CHUVA_MANHA = V e EST = VERÃO então CHUVA_TARDE = F (100-X%)
Se CHUVA_MANHA = V e EST = INVERNO então CHUVA_TARDE = V (Y%)
Se CHUVA_MANHA = V e EST = INVERNO então CHUVA_TARDE = F(100-Y%)

Se CHUVA_MANHA = F e EST = VERÃO então CHUVA_TARDE = V (Z%)


Se CHUVA_MANHA = F e EST = VERÃO então CHUVA_TARDE = F (100-Z%)
Se CHUVA_MANHA = F e EST = INVERNO então CHUVA_TARDE = V (W%)
Se CHUVA_MANHA = F e EST = INVERNO então CHUVA_TARDE = F(100-W%)
40

As relações definidas acima podem ser representadas pela Rede


Bayesiana da figura 10. Nela observa-se a presença das três variáveis utilizadas
nas regras acima e, também, que a variável Chuva_Tarde é influenciada pelo
resultado das demais.

FIGURA 10 - Variáveis de uma Rede Bayesiana

O próximo passo é a definição dos valores das probabilidades.


Inicialmente devem ser definidos os valores das probabilidades a priori das
variáveis de saída, neste caso apenas Chuva_Tarde. Estes valores representam a
crença que o especialista têm sobre cada uma das possíveis saídas do sistema,
sem que ele nada saiba sobre o estado das variáveis de entrada. As
probabilidades a priori podem ser obtidas tanto objetivamente quanto
subjetivamente.

CHUVA_TARDE
V F
20,00% 80,00%

Representados em outra notação, estes valores ficam como segue:

P(CHUVA_TARDE = V) = 0.2
P(CHUVA_TARDE = F) = 0.8

Neste momento, o especialista está definindo que em apenas 20% dos


dias ocorre chuva durante à tarde, sem considerar nenhuma informação sobre um
dia específico. Para chegar a este valor ele pode ter utilizado sua experiência
(método subjetivo) ou coletado os dados sobre a incidência de chuva durante
alguns anos e calculado estas proporções (método objetivo).
Após a atribuição das probabilidades a priori, segue-se com a definição
41

das probabilidades condicionais, que definem como uma variável influencia na


outra. Neste exemplo, duas tabelas de probabilidades condicionais devem ser
criadas. Uma para o arco entre as variáveis Chuva_Tarde e Chuva_Manha e
outra para as variáveis Chuva_Tarde e Estação.

Chuva_tarde Chuva_manhã
V F
V 70,00% 30,00%
F 20,00% 80,00%

Estes valores representam:


P(CHUVA_MANHA = V | CHUVA_TARDE = V) = 0.7
P(CHUVA_MANHA = F | CHUVA_TARDE = V) = 0.3
P(CHUVA_MANHA = V | CHUVA_TARDE = F) = 0.2
P(CHUVA_MANHA = F | CHUVA_TARDE = F) = 0.8

Chuva_tarde Estação
Verao Inverno
V 65,00% 35,00%
F 40,00% 60,00%

Estes valores representam:


P(ESTACAO = VERAO | CHUVA_TARDE = V) = 0.65
P(ESTACAO = INVERNO | CHUVA_TARDE = V) = 0.35
P(ESTACAO = VERAO | CHUVA_TARDE = F) = 0.4
P(ESTACAO = INVERNO | CHUVA_TARDE = F) = 0.6

Utilizando a shell Netica para desenvolvimento de SEP, foi


construída a Rede Bayesiana apresentada na figura 11. Nela podem ser vistas as
variáveis de entrada, com as respectivas probabilidades de cada um dos seus
valores, bem como a variável de saída (Chuva_Tarde).

FIGURA 11 - Rede Bayesiana criada no Netica


42

A variável de saída é chamada de Hipótese e cada um de seus possíveis


valores é uma hipótese de saída específica. Neste caso H1 significa Chuva_Tarde
= True e H2 significa Chuva_Tarde = False.
Cada um dos valores das variáveis de entrada é considerando uma
evidência (e). Neste caso e1 significa: Chuva_Manha = True; e2: Chuva_Manha
= False; e3: Estacao = Verão e e4: Estacao = Inverno.
As probabilidades apresentadas na variável Chuva_Tarde são as
probabilidades a priori já definidas pelo especialista, pois nenhuma evidência
específica foi informada. As probabilidades das variáveis de entrada são
calculadas pela seguinte fórmula:

Σj=1 k = P(Hj) P(e | Hj)

Exemplo: calcular a probabilidade de cada uma das evidências das


variáveis de entrada.

P(CHUVA_MANHA = true) = 0.2 * 0.7 + 0.8 * 0.2 = 0.14 + 0.16 =


0.3 ou 30%
P(CHUVA_MANHA = false) = 0.2 * 0.3 + 0.8 * 0.8 = 0.06 + 0.64 =
0.7 ou 70%
P(ESTACAO = verao) = 0.2 * 0.65 + 0.8 * 0.4 = 0.13 + 0.32 = 0.45
ou 45%
P(ESTACAO = inverno) = 0.2 * 0.35 + 0.8 * 0.6 = 0.07 + 0.48 =
0.55 ou 55%

Após o cálculo destas informações, o sistema está pronto para


recalcular as probabilidades da variável de saída, caso alguma evidência seja
informada ao sistema.

Exemplo: Calcular a probabilidade de CHUVA_TARDE ser True, sabendo que


CHUVA_MANHA = False.
P(CHUVA_TARDE = true | CHUVA_MANHA = false ) =
P(CHUVA_MANHA = false | CHUVA_TARDE = true)* P(CHUVA_TARDE
= true) / P(CHUVA_MANHA = false)
P(CHUVA_MANHA = false | CHUVA_TARDE = true) = 0.3
43

Probabilidade condicional definida pelo especialista;


P(CHUVA_TARDE = true) = 0.2
Probabilidade a priori definida pelo especialista;
P(CHUVA_MANHA = false) = 0.7
Probabilidade calculada no exemplo anterior
Substituindo os valores acima na fórmula tem-se que:
P(CHUVA_TARDE=true| CHUVA_MANHA=false) = 0.3*0.2 / 0.7 = 0.857 ou
8.57%

Exemplo: Calcular a probabilidade de CHUVA_TARDE ser True, sabendo que


ESTACAO = inverno.
P(CHUVA_TARDE = true | ESTACAO = inverno) =
P(ESTACAO = inverno| CHUVA_TARDE = true)* P(CHUVA_TARDE = true)
/ P(ESTACAO = inverno)
P(ESTACAO = inverno| CHUVA_TARDE = true) = 0.35
Probabilidade condicional definida pelo especialista;
P(CHUVA_TARDE = true) = 0.2
Probabilidade a priori definida pelo especialista;
P(ESTACAO = inverno) = 0.55
Probabilidade calculada no exemplo anterior
Substituindo os valores acima na fórmula tem-se que:
P(CHUVA_TARDE = true | ESTACAO = inverno) = 0.35*0.2 / 0.55 = 0.1272
ou 12,72%

Neste exemplo foi apresentado o cálculo das probabilidades de saída (a


posteriori) considerando apenas uma evidência. Nassar (2002) apresenta a
generalização do método para várias evidências.

4.6.2 Sistemas Especialistas Nebulosos ou Difusos

Outra forma de incerteza que está associada ao conhecimento humano


no momento em que este toma alguma decisão é a imprecisão. A teoria dos
44

conjuntos nebulosos é a forma mais tradicional para o tratamento de informações


imprecisas e vagas. Ela difere dos conjuntos clássicos por permitir graduações na
pertinência de um elemento a um dado conjunto. Os conjuntos nebulosos são
utilizados para criar sistemas que se comportem de forma semelhante ao ser
humano quando este raciocina com fatos imprecisos ou vagos, características que
são comuns na linguagem natural.

Conjuntos Clássicos
f(x) = 1 se x Є A
f(x) = 0 se x Є/ (não pertence) A

Ex: Conjunto Alto Clássico.


A = {x Є A | X ≥ 180}

Dos elementos abaixo, apenas x2 e x5 pertencem ao conjunto alto,


como pode ser visto no diagrama apresentado na figura 12, embora x3 tenha
valor muito próximo da altura mínima estabelecida para que uma pessoa pertença
ao conjunto das pessoas altas.
1) x1 = 170
2) x2 = 185
3) x3 = 179.9
4) x4 = 160
5) x5 = 180.1

FIGURA 12 - Conjunto clássico Alto

Para contornar problemas como este, os conjuntos difusos estendem a


45

teoria dos conjuntos clássicos. Nos conjuntos difusos, um elemento além de


pertencer completamente ou não pertencer a um conjunto ele pode ter uma
pertinência parcial, determinada por um valor entre 0 e 1, que é calculado por
uma função de pertinência.
µA(x) : X → [0,1]
Função de pertinência pode ser definida como uma função que associa
valores entre 0 e 1 a elementos, sendo que estes valores representam a
pertinência deste elemento em relação ao conjunto em questão.
O conjunto alto do exemplo anterior pode ser visualizado através de
uma modelagem nebulosa como apresentado na figura 12.

Conjunto Alto Difuso

FIGURA 13 - Conjunto difuso Alto

Nesta figura pode-se observar que os elementos x2 e x5, que


pertenciam ao conjunto Alto clássico, pertencem completamente ao conjunto
Alto difuso. Da mesma forma, o elemento x4 que não pertencia ao conjunto Alto
clássico continua não pertencendo no conjunto Alto difuso, por estar muito longe
da altura mínima estabelecida (180).
A diferença está na área onde estão localizados x1 e x3. Nenhum deles
pertencia ao conjunto alto clássico, mesmo tendo um valor próximo do limite,
como no caso de x3. Entretanto, ambos pertencem ao conjunto alto difuso,
embora com graus de pertinência inferiores a 1 e diferentes entre eles mesmos.
Isto se justifica, já que x3 é igual a 179.9 e x1 a 170. Assim a pertinência de x3
deve ser bem maior, pois a pessoa com esta altura é, consideravelmente, mais
alta que uma pessoa com a altura de x1 (170). Na figura, isto pode ser visto pela
proximidade do elemento do centro do conjunto e da cor onde ele está
posicionado. Quanto mais perto do centro e mais escura a cor de onde se
46

encontra o elemento, maior é a sua pertinência àquele conjunto.


Vários tipos de funções podem ser utilizados para definir funções de
pertinência, sendo mais comuns as triangulares e trapezoidais. Apesar de ser
recomendado não utilizar funções que, como estas, possuem pontos de inflexão,
elas ainda são muito comuns devido à facilidade encontrada para executar
operações como E, OU, Negação e defuzzyficação sobre elas.
Para definir a função do conjunto alto considera-se que uma pessoa não
deve ter nenhuma pertinência a este conjunto caso ele tenha menos de 170cm.
Ela é completamente alta se tiver uma altura acima de 180 cm. As pessoas que
tiverem alturas entre estes valores terão uma pertinência ao conjunto alto entre 0
e 1 que deve ser proporcional a sua altura. A figura 13 apresenta o gráfico da
função de pertinência do conjunto nebuloso Alto.

FIGURA 14 - Função de pertinência do conjunto nebuloso Alto

A função pode ser facilmente criada com base nas equações das retas
presentes no gráfico.

1 se x > 180cm
µAlto(x) = (x – 170)/10 se 170cm ≤ x ≤ 180cm
0 se x < 170cm

Da mesma forma que foi criado o conjunto nebuloso Alto podem ser
criados os conjuntos Baixo e Médio, conforme a figura 14 e as fórmulas a seguir.
47

FIGURA 15 - Conjuntos difusos Baixo, Médio e Alto


1 se x < 160cm
µBaixo(x) = (170 - x)/10 se 160cm ≤ x ≤ 170cm
0 se x > 170 cm

0 se x > 180cm
µMédio(x) = (x - 160)/10 se 160cm ≤ x ≤ 170cm
(180 - x)/10 se 170cm < x ≤ 180cm
0 se x > 180cm

Assim como os conjuntos clássicos, os nebulosos possuem um conjunto


de operações que podem ser aplicados sobre os mesmos. Para alguns dos
operadores foram propostas diferentes formas de implementá-lo como mostrado
a seguir:
Complemento: µÂ(x) = 1 – µA(x);
Intersecção: µA∩B(x) = min(µA(x), µB(x))
= µA(x) * µB(x)
= max(µA(x) + µB(x) – 1,0)
União: µAUB(x) = max(µA(x), µB(x))
= µA(x) + µB(x) - µA(x) * µB(x)
= min(µA(x) + µB(x),1)

4.6.2.1 Processo de Criação de um Sistema Especialista Nebuloso

Para construir um Sistema Especialista Nebuloso deve-se seguir os


seguintes passos:
1) Assim como em um Sistema Especialista Baseado em Regras de
48

Produção devem ser definidas as variáveis do sistema com seus


respectivos valores possíveis;
2) Criar as regras de produção para relacionar as variáveis de entrada e
saída;
3) Criar os conjuntos nebulosos para todas as variáveis necessárias
(entrada e/ou saída);
4) Escolher a forma de implementação dos operadores (união,
intersecção, implicação, etc).

É importante destacar que este processo pode variar de acordo com a


forma pela qual o sistema será implementado. Caso ele seja todo programado em
uma linguagem qualquer, o desenvolvedor terá flexibilidade para tomar todas
estas decisões. Entretanto, caso seja optado por usar uma shell para facilitar o
processo nem todas as opções podem estar disponíveis limitando as
possibilidades de escolha.
49

5 INTELIGÊNCIA ARTIFICIAL CONEXIONISTA (IAC)

Este paradigma está fundamentado na idéia de que, para ter um


comportamento semelhante ao do cérebro humano, um sistema deve possuir uma
estrutura e um mecanismo de funcionamento semelhante ao dele.
O conexionismo tem nas redes neurais artificiais (RNA) o seu principal
representante. Estas apresentam como principais características:
• Capacidade de aprender por exemplos e generalizar este
conhecimento;
• Bom desempenho em tarefas mal definidas;
• Elevada imunidade a ruídos;
• Adaptabilidade.

Alguns domínios de aplicações das RNA são:


• Reconhecimento de padrões (Assinatura, Retina, Visão
Computacional);
• Processamento de Sinais (Voz, Sonares, Radares, Sinais
Biomédicos);
• Classificação e Previsão (Mercado, Meteorologia).

As principais diferenças entre programas de IAS, IAC e IAE são a


forma com que o conhecimento é adquirido, armazenado no computador e o que
este conhecimento representa.
Na IAS grande parte do conhecimento deve ser adquirido junto a
especialistas no assunto (bibliografia, pessoas etc), sendo este codificado através
de regras ou passos genéricos que sejam capazes de levar a uma solução,
independente do conjunto de entrada (apesar de que, dependendo deste conjunto,
50

erros podem ocorrer).


Na IAE não é necessário criar as regras que levem a solução.
Entretanto, uma representação para a solução do problema específico
(cromossomo) e uma forma de avaliá-la (função de avaliação) deve ser
desenvolvida.
Na IAC basta possuir um conjunto de exemplos contendo os dados de
entrada e a saída desejada, para que a rede seja capaz de criar uma representação
interna que leve a solução do problema. Neste caso nenhuma regra ou
representação explícita sobre o problema é criada, sendo que o conhecimento
armazenado não pode ser facilmente interpretado, como nos programas de IAS e
IAE.

5.1 Inspiração Biológica

De uma maneira simplificada, um neurônio biológico pode ser


representado, como sendo composto por um núcleo, um axônio e vários
dendritos, como mostra a figura 16.

Dendritos
Núcleo

Axônio
FIGURA 16 - Neurônio biológico

Os dendritos são responsáveis por receber os impulsos vindos de outros


neurônios, conduzindo-os até o núcleo. Este é responsável por processar as
informações e gerar novos impulsos que são repassados aos outros neurônios
através do axônio. A ligação entre os neurônios é feita através de conexões
sinápticas ou sinapses. Estas funcionam como válvulas e controlam a transmissão
dos impulsos passados entre os neurônios, excitando-os ou inibindo-os. São as
sinapses que dão ao neurônio a capacidade de adaptação.
51

5.2 O Modelo de McCulloch e Pitts (MCP)

Este modelo proposto em 1943 é considerado o marco inicial da IA. O


MCP é uma simplificação do que se sabia sobre o neurônio até aquela época,
como mostra a figura 16.

x1 w1

x2 w2 Σ φ Y

x3 w3

Θ
FIGURA 17 - Modelo de McCulloch e Pitts

• xi - valor de um impulso de entrada


• wi - peso sináptico pelo qual a entrada será ponderada
• Σ - Calcula a soma ponderada das entradas por seus respectivos
pesos.
• Θ - Limiar acima do qual a saída é disparada. No modelo original o
neurônio será disparado se Σ >= 0.
• φ - é a função que calcula a saída do neurônio, a partir da soma
entre as entradas, ponderadas por seus respectivos pesos.

É importante destacar que no MCP tanto as entradas, quanto as saídas


são binárias. A partir do MCP foram propostos vários outros modelos que
permitem que o neurônio tenha saídas contínuas e não apenas binárias como no
modelo original.
As funções mais comuns para a implementação de φ são: linear, rampa,
passo ou sigmoidais. Esta última tem grande aplicabilidade, sendo suas principais
representantes a logística, cuja saída varia de 0 a 1 e a tangente hiperbólica, cuja
saída varia de -1 a 1.
52

Logística
y = 1 / 1 + e - kx

Tangente Hiperbólica
kx
y- e -kx =) / ( e (kx + e e-kx )

Exercício: Utilizar um neurônio com duas entradas que implemente as


funções E, OU e OU exclusivo.

5.3 Arquiteturas e modelos de RNA

Uma RNA é um sistema composto por várias unidades elementares de


processamento ligadas por conexões sinápticas. Pesos estão associados a estas
conexões, representando o conhecimento da rede. As RNA podem ser
classificadas em diretas (feedforward) e recorrentes (feedback). Na primeira
classe, a saída de um neurônio não pode ser utilizada como entrada de nenhum
neurônio de sua própria camada ou de camadas anteriores, fato este permitido nas
redes da segunda categoria.
Diversos modelos de RNA foram construídos com base nestas duas
classes, sendo um dos mais comuns o perceptron multi-camadas. Este é uma rede
direta cujos neurônios são do tipo MCP e se conectam apenas com os neurônios
da camada seguinte, como mostra a figura 17. Três tipos de neurônios são
encontrados neste modelo:
• As unidades sensoriais ou neurônios de entrada – responsáveis por
receber os sinais de entrada e repassá-los para a rede;
• As unidades associativas ou neurônios internos – que ligam os
neurônios de entrada e de saída;
• As unidades de resposta ou neurônios de saída – que enviam para o
usuário as respostas geradas pela rede.
53

x1 w14
n1
w24 n4 w46 n6 y1
x2
n2 w15 w56
w25
n5 w57 n7 y2
x3 n3 w35

FIGURA 18 - Perceptron Multicamada

Outros modelos de RNA conhecidos são Adaline e Madaline, Mapa de


Kohonen, Redes de Função de Base Radial, Memória Associativa Bidirecional,
Rede de Hopfield.

5.4 Aprendizagem em redes neurais artificiais

A aprendizagem de uma RNA se dá através do seu treinamento, a partir


de um conjunto de exemplos passados à rede. Treinar uma RNA consiste em
ajustar seus pesos sinápticos (wij) para que se obtenha a saída (yi) desejada,
quando um conjunto de valores de entrada (xi) é apresentado à mesma.
Várias regras ou algoritmos têm sido propostos para o treinamento de
RNA, sendo cada um deles aplicado a um modelo específico. Entretanto, todos
estes podem ser categorizados em três grandes grupos.
• Aprendizagem supervisionada: As técnicas deste paradigma
possuem em comum o fato de que, durante o treinamento, são
passados pares para a rede contendo as entradas e as saídas
desejadas, para que a rede possa fazer o ajuste de seus pesos através
da correção de erros. Os exemplos mais comuns são a regra delta e
o algoritmo de retropropagação (backpropagation) utilizado pelo
perceptron multi-camadas;
• Aprendizagem não supervisionada: Neste caso, apenas os valores da
entrada são passadas para a rede, a qual ajusta seus pesos para que
entradas semelhantes gerem saídas semelhantes. Um de seus
54

principais representantes é a lei de Hebb e o aprendizado por


competição. É importante destacar que deve haver redundância nos
dados de teste para poder utilizar a aprendizagem não
supervisionada.
• Aprendizagem por reforço: Este pode ser visto como um caso
particular da aprendizagem supervisionada, pois ela utiliza tanto as
entradas quanto as saídas durante o treinamento. A principal
diferença é que a primeira mede o erro entre a saída desejada e a
gerada pela rede para efetuar as alterações. Já na aprendizagem por
reforço, não é calculado o valor do erro, apenas é informado para a
rede se a resposta está correta ou não.
55

REFERÊNCIAS BIBLIOGRÁFICAS

BARRETO, J. M. Inteligência Artificial no Limiar do Século XXI. 3 ed.


Florianópolis: Duplic, 2001. 392p.

BRAGA, A. P.; DE CARVALHO, A. P. L F.; LUDERMIR, T. B. Redes


Neurais Artificiais: Teorias e Aplicações. Rio de Janeiro: Livros Técnicos e
Científicos, 2000. 262 p.

BITTENCOURT, G. Inteligência Artificial : Ferramentas e Teorias. 2 ed.


Florianópolis: UFSC, 2001.362 p.

DURKIN, J. Expert Systems Design and Development. New Jersey: Prentice


Hall, 1994. 685p.

FERNANDES, A. M. Da R. Inteligência Artificial : Noções Gerais.


Florianópolis: Visual Books, 2003. 160p.

HAYKIN, S. Redes Neurais: Princípios e Prática. Tradução de Paulo Martins


Engel. Porto Alegre: Bookman, 2001. 900 p.

MARTINS, G. A. Estatística Geral e Aplicada. São Paulo: Atlas, 2001.417p.

NASSAR, S. M. Tratamento de Incerteza: Sistemas Especialistas


Probabilísticos. Curso de Pós Graduação em Ciência da Computação.
Departamento de Informática e de Estatística. Universidade Federal de Santa
Catarina. 2002.

NILSON, N. J. Artificial Intelligence : A New Synthesis. San Francisco:


Morgan Kaufmann, 1998. 513p.

RABUSKE, R. A. Inteligência Artificial. Florianópolis: UFSC, 1995.240 p.

RUSSEL, S., NORVIG P. Inteligência Artificial. Rio de Janeiro: Elsevier, 2004.


1021p.

Anda mungkin juga menyukai