SISTEMAS ESPECIALISTAS Pasteur Ottoni de Miranda Junior

Transcrição

SISTEMAS ESPECIALISTAS Pasteur Ottoni de Miranda Junior
SISTEMAS ESPECIALISTAS
Pasteur Ottoni de Miranda Junior – DCC PUC Minas
Postado em www.pasteurjr.blogspot.com
Sistemas especialistas (SE) representam o comportamento de um especialista humano em
determinada área do conhecimento. São empregados nas mais diversas áreas, mas na
engenharia, na medicina e no mercado financeiro, encontram-se a maior parte das
aplicações.
Uma sessão de utilização de um SE consiste em uma interação do mesmo com o meio
externo (um ser humano ou sensores), que fornece respostas a questionamentos. Após
analisar um conjunto de regras, o SE fornece uma resposta acompanhada de uma
justificativa.
Um SE típico é constituído de uma interface com o usuário , por onde são feitos
questionamentos e são fornecidas respostas aos mesmos, uma base de conhecimento, que
contém regras que representam o conhecimento acerca de determinado domínio, e uma
máquina de inferências, capaz de analisar as regras frentes às respostas aos
questionamentos e fornecer uma resposta.
Mecanismos de Inferência
A base de conhecimento de sistemas especialistas é constituída de REGRAS.
REGRAS são estruturas do tipo CAUSA-EFEITO, ou seja
SE ALGO OCORRE
ENTÃO GERA ALGUMA CONSEQUÊNCIA
A parte SE da regra é constituída de CLÁUSULAS. Estas cláusulas são condições que,
compostas formarão uma decisão a ser tomada, sendo conectadas via conectores lógicos do
tipo E OU.Por exemplo: SE A= 1 E B = 2 possui duas cláusulas: A=1 e B=2.
A parte ENTÃO das regras constitui a conclusão a que se chega se a combinação das
cláusulas for verdadeira.
A árvore de decisão como ferramenta para projeto da Base de Conhecimento.
A melhor maneira de se projetar uma Base de Conhecimento é a partir da árvore de
decisões que compõe os caminhos possíveis desde as condições até as conclusões finais às
quais o Sistema Especialista chega. Por exemplo, seja a seguinte árvore de decisões para se
decidir o cargo a ser oferecido a um candidato a emprego:
Geração das regras a partir da árvore de decisões
1)Gerar uma lista com as variáveis a serem utilizadas nas regras:
DESCOBERTA: O candidato fez alguma descoberta importante?
DIPLOMA: O candidato tem diploma?
EXPERIÊNCIA: Quantos anos de experiência o candidato tem?
MÉDIA: Qual a média geral do candidato na escola?
POSIÇÃO: Que posição deve ser oferecida ao candidato?
QUALIFICA: O candidato é qualificado ao cargo.
2)Para cada conclusão da árvore de decisões fazer o seguinte:
Para cada caminho da conclusão até a raiz da árvore faça:
-Cada ponto de decisão da árvore será uma cláusula da regra. A parte
ENTÃO possuirá a conclusão.
As regras para este exemplo ficam assim:
REGRA 10: SE DIPLOMA = NÃO
ENTÃO POSIÇÃO=NÃO
REGRA 20: SE DIPLOMA = SIM
ENTÃO QUALIFICA=SIM
REGRA 30: SE DIPLOMA = SIM E DESCOBERTA = SIM
ENTÃO POSIÇÃO=PESQUISA
REGRA 40 SE QUALIFICA=SIM E MÉDIA<3.5 E EXPERIÊNCIA >=2
REGRA 50
REGRA 60
ENTÃO POSIÇÃO=ENG. DE SERVIÇO
SE QUALIFICA = SIM E MÉDIA < 3.5 E EXPERIÊNCIA < 2
ENTÃO POSIÇÃO = NÃO
SE QUALIFICA = SIM E MÉDIA >= 3.5
ENTÃO POSIÇÃO=ENG. DE PRODUTO.
Vamos analisar agora os mecanismos de inferência.
Encadeamento para frente
Para exemplificar uma técnica de encadeamento para frente consideremos o seguinte
conjunto de regras (banco de conhecimentos) para (o embrião de) um sistema de
especialista em mercado de ações.
REGRA10:
REGRA20:
REGRA30:
REGRA40:
REGRA50:
SE JUROS = BAIXA
ENTÃO BOLSA = ALTA
SE JUROS = ALTA
ENTÃO BOLSA = BAIXA
SE DOLAR = BAIXA
ENTÃO JUROS = ALTA
SE DOLAR = ALTA
ENTÃO JUROS = BAIXA
SE BCJUROS=BAIXA
E BCMOEDA=INJETA
ENTÃO JUROS=BAIXA
-Criar uma tabela com nomes de variáveis presentes nas regras e seu significado:
Nome da Variável
JUROS
DÓLAR
BCJUROS
BCMOEDA
BOLSA
Significado
Tendência da taxa de juros
Cotação do dólar
Objetivos do Banco Central em relação às taxas de juros
Objetivos do Banco Central em relação à circulação de
moeda (isto é, injetar ou retirar reservas do sistema
bancário)
Tendência da Bolsa de Valores
Estruturas de dados para execução deste mecanismo de inferência:
-Uma lista de variáveis das regras com os respectivos valores atuais
Nome da Variável
JUROS
DÓLAR
BCJUROS
BCMOEDA
Valor atual
-Uma fila com as variáveis de análise de certa regra. Qualquer variável que já houver sido
analisada sai da fila.
-Um ponteiro que vai nos dizer qual regra e qual cláusula desta regra estão sendo analisadas
no momento
Para descrever este mecanismo vamos ver um exemplo. O nosso sistema especialista deverá
nos dar resposta à seguinte questão:
O que acontecerá se o Banco Central injetar reservas no sistema bancário? Ou seja, vamos
analisar a condição BCMOEDA=INJETA.
-Inicialmente a fila de variáveis de análise conterá a variável BCMOEDA em sua cabeça,
pois é única que conhecemos o valor.
-Varre-se então o banco de conhecimento à procura da primeira ocorrência de BCMOEDA.
Encontrâ-mo-la na regra 50. A lista de variáveis das regras está assim:
Nome da Variável
JUROS
DÓLAR
BCJUROS
BCMOEDA
Valor atual
INJETA
-O ponteiro de regras/cláusulas vai estar apontando para a regra 50, cláusula 2.
-Inspecionando a regra 50, verificamos que ainda existe a variável BCJUROS para ser
analisada antes de se concluir algo acerca desta regra.
-Como a variável BCJUROS não possui nenhum valor instanciado(alocado), o sistema terá
que questionar ao usuário da seguinte forma:
O Banco Central quer as taxas de juros em alta ou baixa?
-Supondo que a resposta seja BAIXA, nossa lista de variáveis fica assim:
Nome da Variável
JUROS
DÓLAR
BCJUROS
BCMOEDA
Valor atual
BAIXA
INJETA
-O ponteiro de regras/cláusulas agora é atualizado para indicar que estamos analisando a
regra 50, cláusula 1.
-Como já analisamos ambas as cláusulas da regra 50, podemos concluir da regra 50 que
JUROS = BAIXA.
-Agora temos que analisar os efeitos da situação em que JUROS=BAIXA. Colocamos na
fila de variáveis de análise a variável JUROS. Nossa fila está no momento assim:
BCMOEDA
JUROS
-A lista de variáveis é atualizada para o seguinte:
Nome da Variável
JUROS
DÓLAR
BCJUROS
Valor atual
BAIXA
BAIXA
BCMOEDA
INJETA
-Tomamos a fila de variáveis de análise e verificamos se a variável que está em sua cabeça
é utilizada em outra regra. No caso de BCMOEDA ela não existe em outra regra. Então é
retirada da fila de variáveis de análise e JUROS passa a ocupar a cabeça da mesma.
-Pesquisamos as regras para encontrar cláusulas que contenham juros. A regra 10 contém.
Agora, o ponteiro regras/cláusula indica regra 10 cláusula 1.
-Como a regra 10 possui apenas uma cláusula, concluímos que BOLSA =
ALTA.Colocamos BOLSA na fila de variáveis de análise, que fica assim:
JUROS
BOLSA
-Continuamos varrendo as regras à procura de referências a JUROS e encontramos a regra
20. Esta regra não é concluída porque nela JUROS = ALTA.
-Continuamos à procura de regras com referência a JUROS nas claúsulas. Como não mais
existem, retiramos esta variável da fila de variáveis de análise, que passa a conter BOLSA
em sua cabeça.
-Repetimos o processo para BOLSA (que está na cabeça da fila de variáveis de análise),
procurando referências a ela nas claúsulas das regras. Como não existem cláusulas com
BOLSA, esta é retirada da fila de variáveis de análise e a sessão termina. A resposta à
pergunta será então:
As taxas de juros baixarão
O mercado de ações subirá.
Resumindo a lógica descrita no exemplo, temos:
1)A condição a avaliar seus efeitos é identificada.
2)A variável da condição é colocada na fila de variáveis da conclusão e seu valor atual é
colocado na lista de variáveis.
3)As cláusulas das regras são examinadas à procura da variável cujo nome é o memo
daquela que estiver na cabeça da fila. Se encontrada, o número da regra e o número 1 são
colocados no ponteiro de variáveis das claúsulas. Se ela não for encontrada vá ao passo 6.
4)Cada variável na parte SE da regra identificada cujo valor é desconhecido, deve ter seu
valor obtido a partir de questionamento ao usuário. Os valores obtidos são colocados na
lista de variáveis. Se todas as cláusulas forem verdadeira, a parte ENTÃO é invocada.
5)A variável da parte então com valor conhecido é colocada na cauda da fila de variáveis de
análise.
6)Quando não mais existirem sentenças SE contendo a variável que está na cabeça da fila
de variáveis de análise, aquela variável será removida.
7)Se não houver mais variáveis na fila de variáveis de análise, encerre a sessão. Se ainda
houver variáveis, volte ao passo 3.
Encadeamento para trás
O exemplo a ser utilizado é o da colocação de um candidato a emprego
Estruturas de dados para execução deste mecanismo de inferência:
REGRA 10: SE DIPLOMA = NÃO
ENTÃO POSIÇÃO=NÃO
REGRA 20: SE DIPLOMA = SIM
ENTÃO QUALIFICA=SIM
REGRA 30: SE DIPLOMA = SIM E DESCOBERTA = SIM
ENTÃO POSIÇÃO=PESQUISA
REGRA 40 SE QUALIFICA=SIM E MÉDIA<3.5 E EXPERIÊNCIA >=2
ENTÃO POSIÇÃO=ENG. DE SERVIÇO
REGRA 50 SE QUALIFICA = SIM E MÉDIA < 3.5 E EXPERIÊNCIA < 2
ENTÃO POSIÇÃO = NÃO
REGRA 60 SE QUALIFICA = SIM E MÉDIA >= 3.5
ENTÃO POSIÇÃO=ENG. DE PRODUTO
Lista de Conclusões
Contém a sequência de conclusões no conjunto de regras:
REGRA-CONCLUSÃO
10-POSIÇÃO
20-QUALIFICA
30-POSIÇÃO
40-POSIÇÃO
50-POSIÇÃO
60-POSIÇÃO
Lista de variáveis
Idêntica à descrita no encadeamento para frente.
Nome da Variável
DIPLOMA
DESCOBERTA
EXPERIÊNCIA
QUALIFICA
POSIÇÃO
MÉDIA
Valor atual
Pilha de Conclusões
Estrutura de dados do tipo pilha que armazena o número da regra e a cláusula dentro desta
regra que está sendo verificada (1 para a primeira, 2 para a segunda ...)
Para descrever este mecanismo vamos ver um exemplo. O nosso sistema especialista deverá
nos dar resposta à seguinte questão:
Devemos oferecer que posição ao candidato?
-Como estamos fazendo encadeamento para trás partimos da variável de conclusão
POSIÇÃO.
-O topo da pilha de conclusões conterá regra 10, cláusula 1, pois esta é a primeira regra que
contém POSIÇÃO como conclusão.
-Analisando as regras , vemos que a variável da regra 10 é DIPLOMA. Como não temos o
seu valor (não foi instanciada) temos que perguntar seu valor:
O candidato tem diploma?
-Se a resposta for sim a lista de variáveis fica assim:
Nome da Variável
DIPLOMA
DESCOBERTA
EXPERIÊNCIA
QUALIFICA
POSIÇÃO
MÉDIA
Valor atual
SIM
-Com esta resposta a regra 10 fica falsa.
-Tiramos esta falsa conclusão da pilha de conclusões (REGRA 10, cláusula 1).
-Verificamos o próximo uso de POSIÇÃO como variável de conclusão. Isto ocorre na regra
30.Colocamos a regra 30, cláusula 1 na pilha de conclusões.
-Temos agora que instanciar todas as variáveis de condição da regra 30. Temos ainda que
avaliar DESCOBERTA.Incrementamos a cláusula da REGRA 30 que está na pilha de
conclusões: REGRA 30, claúsula 2. A pilha está assim, portanto:
REGRA 30 CLÁUSULA 2
-Como DESCOBERTA não foi instanciada perguntamos:
Candidato fez descoberta importante?
-Se a resposta for não, a lista de variáveis fica assim:
Nome da Variável
DIPLOMA
DESCOBERTA
EXPERIÊNCIA
QUALIFICA
POSIÇÃO
MÉDIA
Valor atual
SIM
NÃO
-Como todas as variáveis da regra 30 foram instanciadas,executar agora o ENTÃO.
Como a segunda cláusula é falsa tiramos a referência à regra 30 da pilha de conclusões.
-Varrendo a lista de variáveis de conclusão verificamos que PESQUISA é conclusão da
regra 40. Assim esta regra é colocada na pilha de conclusões.
-A primeira cláusula da regra 40 é QUALIFICA, que não foi instanciada na lista de
variáveis.
-Varrendo a lista de variáveis de conclusão encontramos QUALIFICA como variável de
conclusão da regra 20.
A pilha de conclusões fica assim:
Pilha de colclusões:
REGRA 20, cláusula 1
REGRA 40, cláusula 1
Assim, QUALIFICA é instanciada em SIM (pois DIPLOMA = SIM) e nossas estruturas de
dados ficam assim:
Nome da Variável
DIPLOMA
DESCOBERTA
EXPERIÊNCIA
QUALIFICA
POSIÇÃO
MÉDIA
Valor atual
SIM
NÃO
SIM
-Tirar REGRA 20, cláusula 1 do topo da pilha de conclusões(já foi verificada).
-Continuamos a verificar as cláusulas da regra 40(pois é o topo da pilha). Passamos à
cláusula 2 desta regra que possui a variável MEDIA não instanciada.No topo da pilha de
conclusões colocamos REGRA 40, cláusula 2. Para instanciar a variável média o sistema
pergunta ao usuário:
Qual sua média geral?
O candidato responde 3.
Nome da Variável
DIPLOMA
DESCOBERTA
EXPERIÊNCIA
QUALIFICA
POSIÇÃO
MÉDIA
Valor atual
SIM
NÃO
SIM
3
-Como ainda temos uma cláusula para analisar, colocamos no topo da pilha REGRA 40,
cláusula 3. O sistema pergunta então:
Quantos anos de experiência você tem?
-Se a resposta for 2 temos:
Nome da Variável
DIPLOMA
DESCOBERTA
EXPERIÊNCIA
QUALIFICA
POSIÇÃO
MÉDIA
Valor atual
SIM
NÃO
2
SIM
3
-Como não há mais cláusulas na REGRA 40, ela pode ser concluída.Como as 3 clásulas são
verdadeiras, o sistema conclui POSIÇÃO = ENG. DE SERVIÇOS.
Resumindo a lógica descrita no exemplo, temos:
1)Identifique a conclusão
2)Procure na lista de conclusões a primeira ocorrência do nome da conclusão. Se
encontrado, coloque a regra na pilha de conclusões usando o número da regra e (1) para
representar o número da cláusula. Se não encontrado, avise que não há resposta.
3)Instancie cada variável de cláusula da regra.
4)Se uma das variáveis da da cláusula SE não tiver sido estanciada, conforme indicar a lista
de variáveis e se ela também não for uma variável de conclusão(não estiver na lista de
variáveis de conclusão), peça ao usuário para inserir um valor.
5)Se uma das cláusulas for uma variável de conclusão, coloque o número da regra no topo
da pilha e volte ao passo 3.
6)Se a unidade no topo da pilha não levar a conclusão alguma da regra, remova-a do topo
da pilha e procure na lista de conclusões uma outra ocorrência do nome daquela variável de
conclusão.
7)Se tal regra foi encontrada volte ao passo 3.
8)Se não houver mais nenhuma conclusão com aquele nome na pilha de conclusões, a regra
da conclusào anterior será falsa. Se não houver conclusào anterior entào avise ao usuário
que a resposta não pode ser encontrada. Se houver uma conclusào anterior volte ao passo 6.
9)Se a regra no topo da pilha puder ser instanciada, remova-a da pilha. Se uma outra
variável de conclusão estiver abaixo dela, incremente o número da cláusula e para as
claúsulas restantes volte ao passo 3. Se não houver nenhuma variável de conclusão abaixo
teremos respondido à pergunta.
Uso de probabilidade
Introduz um grau de certeza de que determinada conclusão vai ocorrer.
Teorema de Bayes:
P(E and S)=P(S/E)*P(E)
Traduzindo:
A probabilidade de E e S ocorrerem, onde E ocorre primeiro é igual à probabilidade de S
ocoorrer se já soubermos E (P(S/E) )vezes a probabilidade de E ocorrer.
Utilizaremos ainda outra relação
P(S) = P(S/E)*P(E) + P(S/NOT E)*P(NOT E) (1)
Traduzindo:
A probabilidade de S ocorrer é igual à probabilidade de S ocorrer se já soubermos E, vezes
a probabilidade de E ocorrer, mais a probabilidade de S ocorrer se assumirmos que E não
ocorre vezes a probabilidade de E não ocorrer.
No exemplo do mercado de ações, qual a probabilidade do mercado entrar em alta?
REGRA10:
REGRA20:
REGRA30:
REGRA40:
SE JUROS = BAIXA
ENTÃO BOLSA = ALTA
SE JUROS = ALTA
ENTÃO BOLSA = BAIXA
SE DOLAR = BAIXA
ENTÃO JUROS = ALTA
SE DOLAR = ALTA
ENTÃO JUROS = BAIXA
Quermos P(BOLSA = ALTA)
Da regra 10 temos que para BOLSA = ALTA devemos ter JUROS = BAIXA.
Aplicando (1) temos:
P(BOLSA = ALTA) = P(BOLSA = ALTA/JUROS = BAIXA)* P(JUROS=BAIXA)+
P(BOLSA=ALTA/JUROS = NAO BAIXA)*P(JUROS= NAO BAIXA) (2)
Percorremos a base de conhecimento para verificar JUROS=BAIXA e encontramos a regra
40. Temos então:
P(JUROS=BAIXA)=P(JUROS=BAIXA/DOLAR=ALTA)*P(DOLAR=ALTA)
P(JUROS=BAIXA/DOLAR=NAO ALTA)*P(DOLAR=NAO ALTA) (3)
+
Verificamos que DOLAR=ALTA não está na parte ENTÃOde nenhuma regra. Logo um
especialista da área deve fornecê-lo.
Suponhamos que P(DOLAR = ALTA)=0,6
Logo P(DOLAR = NAO ALTA)=0,4
Devemos ainda conseguir de um especialista o seguinte:
P(JUROS=BAIXA/DOLAR=ALTA)=0,8 e
P(JUROS=BAIXA/DOLAR=NAO ALTA)=0,1
De (3)
P(JUROS=BAIXA)=0,8*0,6 +0,1*0,4 =0,52
P(JUROS = NAO BAIXA) = 1-0,52=O,48
Devemos ainda conseguir de um especialista o seguinte:
P(ACOES =ALTA/JUROS=BAIXA)=0,85
P(ACOES =ALTA/JUROS=NAO BAIXA)=0,1
De (2):
P(ACOES = ALTA) = 0,85*0,52 +0,1*0,48 = 0,49 (49%)
REFERÊNCIA
LEVINE, R.I. et al. Inteligência Artificial e Sistemas Especialistas.1ª edição McGraw-Hill,
1988.

Documentos relacionados