29
Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Embed Size (px)

Citation preview

Page 1: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Regras de Produção:o Motor de Inferência JESS

Prof. Fred FreitasPós-Graduação em

Informática CIn - UFPE

Page 2: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Componentes de um Motor de Inferência

Um formalismo lógico de Representação de Conhecimento Ex: Lógica de Descrição, Frames, regras,

etc. Um método ou estratégia de

resolução ou mecanismo de inferência para o formalismo

Page 3: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Regras de Produção Representam conhecimento com pares

condição-ação Se condição (ou premissa ou antecedente)

ocorre então ação (resultado, conclusão ou

conseqüente) deverá ocorrer. Regras de produção produzem novos

fatos a partir dos fatos e regras da BC. Esses novos fatos passam a fazer parte da

BC

Page 4: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Regras de Produção Formalismo mais simples, procedimental e popularanimal(x)^estimação(x)^pequeno(x) => doméstico(x)

premissas conseqüente

Base de fatos e base de regrasanimal(Rex),estimação(Rex),pequeno(Rex)

Mecanismo de inferência: São produzidos novos fatos instanciando fatos existentes nas regras (encadeamento para a frente)

Estratégia de controle: resolução de conflito

Page 5: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Sistemas de Produção Fatos: x, y Regras: x & y => p Encadeamento para a frente (Forward

chaining) Dados x e y, derive então p OPS5, CLIPS, Jess Orientado a dados: Se no ex. houvessem regras

sobre hábitos dos americanos, o sistema geraria muitas conclusões inúteis em encadeamento para a frente

Encadeamento para trás (Backward chaining) p é verdad? Então verificarei x e y. Prolog

Page 6: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Módulos de Sistemas de Produção

Base de Regras ou memória permanente regras se-então e fatos conhecidos

Memória de Trabalho ou temporária percepções do agente, fatos iniciais e

gerados a partir da BR pelo mecanismo de inferência

Mecanismo (motor) de Inferência determina o método de raciocínio utilizado

(progressivo ou regressivo) Executa a busca com casamento (unificação) resolve conflitos e executa ações.

Page 7: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Arquitetura de Sistemas de Produção

Conhecimento Permanente• fatos• regras de produção

Meta-conhecimento• estratégias para resolução de

conflito

Base de RegrasConhecimento volátil• descrição da instância do problema atual• hipóteses atuais• objetivos atuais• resultados intermediários

Conjunto de conflitoconjunto de possíveis regras a serem disparadas

Memória de Trabalho

Mecanismo de

Inferência

Conhecimento Permanente• fatos• regras de produção

Meta-conhecimento• estratégias para resolução de

conflito

Base de RegrasConhecimento Permanente• fatos• regras de produção

Meta-conhecimento• estratégias para resolução de

conflito

Base de RegrasConhecimento volátil• descrição da instância do problema atual• hipóteses atuais• objetivos atuais• resultados intermediários

Conjunto de conflitoconjunto de possíveis regras a serem disparadas

Memória de TrabalhoConhecimento volátil• descrição da instância do problema atual• hipóteses atuais• objetivos atuais• resultados intermediários

Conjunto de conflitoconjunto de possíveis regras a serem disparadas

Memória de Trabalho

Mecanismo de

Inferência

Page 8: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Funcionamento de um sistema de regras de

produção As regras seriam a memória duradoura Os fatos seriam a memória de trabalho Ao usarmos as regras sobre os fatos,

são derivados novos fatos O ciclo se repete até que não haja mais

fatos a derivar Conflito: várias regras podem ser

disparadas ao mesmo tempo

Page 9: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Sistemas EspecialistasFacts"Item #123 is expensive speakers""Gold cables are expensive""Bob is a customer""Bob is buying item #123"

Rules"Recommend appropriate cableswhen customers buy speakers"

InferenceEngine

List ofActions to Take

"Recommendthat Bob buy gold

cables."

O problema é simples...

[Friedman-Hill]

Page 10: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Sistemas EspecialistasFacts

Rules

Inference EngineFor every customer, for every item in their cart, if it is speakers, for every catalog item, if the cart item is the catalog item, if the catalog item is in some price category, for every catalog item, if it is a cable and it is in the same category, recommend that cable to that customer.

List ofActions to Take

"Recommendthat Bob buy gold

cables."

... Mas a solução é cara: O (RFP)

Page 11: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Qualidades das Regras São fáceis de compreender (legíveis) e de

modificar Independência e Localidade Flexibilidade (Expressividade) Genericidade Portabilidade Facilidade, simplicidade e fidelidade semântica Alterabilidade - > código auto-alterável Liberdade e gradualidade

Page 12: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Desvantagens Há problemas eminentemente

procedimentais Eficiência Fácil funcionamento Efetividade Fluxo de Controle Controle de consistência

Page 13: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

O Algoritmo Rete

Representa regras como dados O compilador gera máquinas de estado a

partir de regras Novos fatos guiam a máquina de estado

(orientado a dados) O algoritmo lembra os estados antigos

Charles L. Forgy, Artificial Intelligence 19 (1982), 17-37.

Page 14: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

O Algoritmo ReteFacts

Rules

Inference EngineWhen a customer picks out an item, if it is speakers, recommend the appropriate cables.

List ofActions to Take

"Recommendthat Bob buy gold

cables."

... o algoritmo Rete pode ser O(RF)

Page 15: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

O Algoritmo Rete

x & y => p

x & y & z => q

x? y? x? y? z?

p

q

“rede de padrões"

“rede conjunta"

8 nós

[Friedman-Hill]

Page 16: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

O Algoritmo Rete

x & y => p

x & y & z => q

x? y? z?

p

q6 nós

Otimização 1:Compartilhamento da rede de padrões

Page 17: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

O Algoritmo Rete

x & y => p

x & y & z => q

x? y? z?

p

q5 nós

Otimização 2:Compartilhamento na rede conjunta

Page 18: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

A Linguagem das Regras

(defrule recommend-appropriate-cables (customer (id ?id) (cart ?cart)) (cart (id ?cart) (contents $?cnt)) (item (id ?s&:(member$ $?cnt ?s)) (is speaker)(price-category ?pc)) (not (item (id ?c&:(member$ $?cnt ?c)) (is cable) (price-category ?pc)) => (printout t "You need to buy " ?pc " cables." crlf))

[Friedman-Hill]

Page 19: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Pacotes (módulos) de Regras Apesar de não queremos controlar o

fluxo de processamento, às vezes precisamos de fases Em manutenção de dispositivos

eletrônicos, e.g., as fases de detecção, isolamento, conserto e funcionamento

Organizar regras em pacotes (módulos) que são ativados um por vez Engenharia de conhecimento

Page 20: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Sistemas de Produção Plugáveis

Dificuldade de integrar as linguagens lógicas – LISP e Prolog- com as outras

Permitir inferência a linguagens imperativas (C, Java, ...)

Interoperabilidade, portabilidade e reuso

Motores de inferência “plugáveis”

Page 21: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

CLIPS: Integração C-regras "C” Language Integrated Production

System) [Giarratano & Riley 98] Inclui uma linguagem interna, COOL

(“C” Object Oriented Language) que representa classes como frames Características de frames: herança

múltipla, atributos podem ser instâncias de outras classes, inferência direta, facetas, etc

Page 22: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

JESS - Java Expert System Shell

Integra objetos Java e Java beans a regras

Projetado para servir à comunidade de orientação a objetos

Milhares de usuários Incapazes de representar frames

diretamente Característica imperiosa em ontologias

Um atributo não pode ser instância de uma classe declarativa Pouca expressividade declarativa Solucionado com o plugin Protégé JessTab

Page 23: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

JESS - Java Expert System Shell Rete, com resolução de conflito por

saliência Componentes

Base de fatos (objetos ou não) Base de conhecimento (declarativa e

procedural) Motor de inferência (forward chaining e

backward chaining) Pode ter lógica difusa

Page 24: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Frames e Herança em JESS

Herança apenas herança simples

(deftemplate ANIMAL (slot color) (slot weight))(deftemplate CAT extends ANIMAL (slot whisker-count)) ;;CAT has three slots: color, weight, and whisker-count

(deftemplate box (slot location) (multislot contents))

(assert (box(location kitchen) (contents spatula sponge frying-pan)))

Instanciação

Page 25: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Manipulando JESS a partir de Java

Exemplo: alterando a base de fatos a partir de um código em um projeto Java

public void definaInstancia(String atomo, Object objeto) throws ReteException { Funcall f = new Funcall("definstance", rete); f.add(new Value(atomo, RU.ATOM)); f.add(new Value(objeto, RU.EXTERNAL_ADDRESS)); f.simpleExecute(f, rete.globalContext()); }

Page 26: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Danielle Rousy & Veronica Teichrieb

Integração com Java new

Conversões de tipo import

Chamadas a métodos (Call) get e set

Manipulação direta das propriedades de um Bean

try-catch, throw Persistência, GUI, Beans, ...

Page 27: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Danielle Rousy & Veronica Teichrieb

Integração com Java

(import java.util.*); create a Vector, add entries(bind ?v (new Vector))(?v addElement "foo")(?v addElement "bar")

; iterate over Vector and print entries(bind ?e (?v elements))(while (?e hasMoreElements) do (printout t (?e nextElement) crlf))

[Friedman-Hill]

Page 28: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Danielle Rousy & Veronica Teichrieb

Extensões GUI

<X>Listener classes Manipulação de eventos em Jess

jess.awt.Canvas Desenhos e pintura em Jess

Page 29: Regras de Produção: o Motor de Inferência JESS Prof. Fred Freitas Pós-Graduação em Informática CIn - UFPE

Boas práticas: eficiência Durante o projeto de regras, lembrar que

elas são implementadas através de uma rede

Evitar predicados com atributos muito gerais e que variam com freqüência (ex: status);

Construir o lado das premissas como uma consulta eficiente de banco de dados, ou seja, contendo apenas predicados necessários ao disparo de regras.