uso de sistemas especialistas para decisÃo do...
TRANSCRIPT
UNIVERSIDADE PRESBITERIANA MACKENZIE
DANIELA PASOTTOMARCELA GONÇALVES PAZO
SILVANA VICENTE LOBÃO
USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DOPERFIL DE UM INVESTIDOR
São Paulo2003
DANIELA PASOTTOMARCELA GONÇALVES PAZO
SILVANA VICENTE LOBÃO
USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DOPERFIL DE UM INVESTIDOR
Trabalho apresentado como parte dasexigências para a aprovação do Curso
de Sistema de Informação da Faculdade deComputação e Informática da Universidade
Presbiteriana Mackenzie
ORIENTADOR: ROGÉRIO DE OLIVEIRA
São Paulo2003
DANIELA PASOTTOMARCELA GONÇALVES PAZO
SILVANA VICENTE LOBÃO
USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DOPERFIL DE UM INVESTIDOR
Trabalho de Conclusão de Curso apresentado aoCurso de Sistemas de Informação da Universidade
Presbiteriana Mackenzie, para obtenção parcialdo Grau de Bacharel em Sistemas de Informação.
Aprovada em Junho de 2003.
BANCA EXAMINADORA
Prof. Rogério de Oliveira – OrientadorUniversidade Presbiteriana Mackenzie
Prof. Abílio Ribeiro CoelhoUniversidade Presbiteriana Mackenzie
Prof. Nizan OmarUniversidade Presbiteriana Mackenzie
São Paulo1o Semestre / 2003
RESUMO
Sistemas especialistas são utilizados de forma ainda modesta no desenvolvimento deaplicações comerciais se comparada sua utilização em áreas como as de engenharia,predição ou controle. Em geral, isso se deve ao menor número de soluções disponíveis,como fornecedores e produtos, frente a diversas soluções de suporte ao desenvolvimentotradicional de aplicações. Este estudo explora o uso de tecnologias de sistemasespecialistas baseados em regras no desenvolvimento de aplicações comerciais. Para issoutilizamos o software Jess (Java Expert System Shell), um shell de sistemas especialistasbaseado em Java, para o desenvolvimento de um aplicativo de decisão do perfil deinvestimento do usuário (conservador, moderado ou agressivo). Nesse sistema a base deconhecimento construída permite inferir, através das informações fornecidas pelo usuáriocomo sua situação financeira atual, grau de tolerância a risco e propósito do investimento,o perfil mais adequado e rentável ao investidor. O estudo conclui que essa abordagem podesubstituir e complementar com vantagens a abordagem tradicional do desenvolvimento deaplicações, em particular para a tomada de decisão em investimentos. Ela agrega menortempo e maior flexibilidade ao desenvolvimento, permite superar algumas limitações daprogramação tradicional e pode ser estendida a quaisquer outras aplicações comerciaiscomo vendas, aplicações financeiras ou controle de processos no setor de serviços.
Palavras-chave: sistemas especialistas; Jess; inteligência artificial.
SUMÁRIO
1 INTRODUÇÃO......................................................................................... 10
2 SISTEMA ESPECIALISTA..................................................................... 14
2.1 INTELIGÊNCIA ARTIFICIAL................................................................. 14
2.2 REPRESENTAÇÃO DO CONHECIMENTO........................................... 19
2.3 SISTEMAS ESPECIALISTAS ................................................................. 21
2.3.1 Conceitos..................................................................................................... 21
2.3.2 Tipos de Sistemas Especialistas.................................................................. 26
2.3.3 Histórico...................................................................................................... 27
2.4 SISTEMA CONVENCIONAL X SISTEMA ESPECIALISTA................. 28
2.5 CONCLUSÃO............................................................................................. 29
3 SISTEMAS ESPECILISTAS BASEADOS EM REGRAS................... 30
3.1 ESTRUTURA.............................................................................................. 31
3.1.1 Base de Conhecimento................................................................................ 31
3.1.2 Motor de Inferência..................................................................................... 32
3.1.2.1 Estrutura de Controle.................................................................................. 34
3.1.2.2 Resolução de Conflito.................................................................................. 38
3.1.2.3 Representação de Incerteza......................................................................... 39
3.1.3 Memória de Trabalho.................................................................................. 40
3.2 AQUISIÇÃO DE CONHECIMENTO........................................................ 41
3.2.1 Tarefas na Aquisição de Conhecimento...................................................... 43
3.2.1.1 Imersão na Literatura................................................................................. 43
3.2.1.2 Entrevistas Abertas ou Não-estruturadas................................................... 44
3.2.1.3 Entrevistas Estruturadas............................................................................. 45
3.2.2 Analisando as Informações.......................................................................... 47
LISTA DE TABELAS
Tabela 1 - Funcionamento do Motor de Inferência Verificando os Fatos eDisparando a Regra para Resultar na Decisão...................................... 33
Tabela 2 - Base de Conhecimento (Encadeamento Progressivo)........................... 34
Tabela 3 - Teste do Encadeamento Progressivo..................................................... 35
Tabela 4 - Base de Conhecimento (Encadeamento Regressivo)............................. 36
Tabela 5 - Diferenças entre Encadeamento Progressivo x EncadeamentoRegressivo.............................................................................................. 36
Tabela 6 - Conceitos de Métodos para Resolução de Incerteza.............................. 39
Tabela 7 - Tabela de Possibilidades de Respostas para Definição do Tipode Renda................................................................................................. 75
Tabela 8 - Tabela de Possibilidades de Respostas para Definição do Tipo dePerfil Econômico................................................................................... 76
Tabela 9 - Tabela de Possibilidades de Respostas para Definição do Tipode Tolerância à Riscos........................................................................... 78
Tabela 10 - Tabela de Possibilidades de Respostas para Definição do Tipo dePerfil de Investidor................................................................................. 80
LISTA DE FIGURAS
Figura 1 - Funcionamento do Motor de Inferência.................................................... 33
Figura 2 - Demonstração do Método de Busca (em Profundidade ou em Nível)através de Encadeamento Progressivo e Regressivo................................ 38
Figura 3 - Arquitetura de Sistemas Especialistas Baseados em Regras.................... 41
Figura 4 - Separação de um Conjunto de Objetos em Dois Objetos Feita por umEspecialista Segundo o Critério “Veículos e Animais”............................ 46
Figura 5 - O Especialista Separa o Conjunto Um em Dois Conjuntos Segundo oCritério “Veículos Terrestres e Veículos Aquáticos”............................... 47
Figura 6 - Método de Avaliação por Fases............................................................... 52
Figura 7 - Tipos de Perfis do Investidor e Portifólio.(Fonte: Banco Itaú S/A, 2002).................................................................. 72
10
1 Introdução
Este trabalho tem como objetivo estudar as tecnologias para construção de sistemas
especialistas baseados em regras para o desenvolvimento de aplicações comerciais,
implementando um sistema para auxílio na tomada de decisão do perfil do investidor.
Os computadores em geral executam tarefas definidas pelo homem, que são um
conjunto de instruções que fazem com que o computador armazene, administre e controle
uma série de informações. Esses sistemas podem controlar o saldo da nossa conta bancária,
nossas despesas telefônicas, e até o consumo de combustível dos carros mais sofisticados,
estão preocupados em registrar, controlar eventos e armazenar informações. Esses sistemas
são denominados de sistemas convencionais.
As definições de como representar o conhecimento e seu papel em inteligência
artificial variam bastante, os seres humanos utilizam-se quotidianamente de uma ferramenta
eficiente de representação do conhecimento, que é representado pela língua em que falam e
escrevem. A representação dessa ferramenta para o computador é demasiadamente complexa
sendo necessário a realização de uma infinidade de cálculos para se obter um resultado
próximo ao verdadeiro, mas a questão central é: como transmitir o conhecimento do mundo
para um sistema computacional, dando-lhe uma capacidade adequada de raciocínio, de modo
que este conhecimento possa ser utilizado para permitir ao sistema uma adaptação e
exploração do seu próprio conhecimento? O conhecimento é, antes de mais nada, sempre
relativo a algo. O conhecimento desse “algo” é a capacidade de formar um modelo mental
tanto desse próprio conhecimento como das ações que este mesmo pode proporcionar.
Portanto, o modelo deve descrever tanto o objeto do conhecimento como a sua relação com o
universo. Esses sistemas trabalham com problemas para os quais não existe uma solução
convencional algoritmizada, denominamos esses sistemas de sistemas não-convencionais.
14
14
2 Sistema Especialista
2.1 Inteligência Artificial
No Renascimento, e com a expansão de um espírito prático e quantitativo, surge à
mecânica e, com ela, uma nova concepção do homem introduzida por Descartes. Ele
acreditava que certas atividades humanas poderiam ser realizadas por máquinas, mas com
algumas restrições.
Leibnitz, parte do princípio que uma máquina poderia ser capaz de deduzir, dando
início à pesquisa em inteligência artificial. Para ele, o pensamento é redutível ao cálculo (pela
lógica), logo, uma máquina capaz de executar logicamente operações algébricas, poderia,
através da lógica formalizada, raciocinar.
George Boole, segue as idéias de Leibnitz, chegando a matematização da lógica, que
veio receber o nome de lógica booleana. Consegue assim reduzi-la a um simples cálculo, que
não precisava ser memorizado, como as regras lógicas e as figuras silogísticas, mas que
poderia ser aprendido por qualquer um, devido à sua simplicidade.
Em 1879, na lógica dos predicados, proposta por Gottlob Frege, que tinha como
objetivo analisar a estrutura formal do pensamento humano, sendo, atualmente, a base para a
linguagem de programação Prolog (FISCHLER & FISCHLER, 1987).
No século XIX, surge a figura de Alan Turing, que propõe o chamado jogo da
imitação. Este jogo é feito da seguinte forma: existem 3 participantes, uma máquina e duas
pessoas, sendo que a máquina e uma das pessoas ficam escondidas enquanto a outra conversa
com ambas. O homem tem que descobrir quem é máquina e quem é homem. Se ele errar, isto
30
30
3 Sistemas Especialistas Baseados em Regras
Os sistemas especialistas baseados em regras capturam o conhecimento e raciocínio de
um especialista humano e armazena-os na forma de regras. Esses sistemas surgiram no início
dos anos 70 e difundiram-se comercialmente nos anos 80. É composto por uma base de
conhecimento, uma máquina de inferência e uma memória de trabalho, funcionam
essencialmente com regras de negócio que trazem diferentes fragmentos de conhecimento, e
essas regras nesta tecnologia, são controladas por um processo interno denominado motor de
inferência. O princípio do motor de inferência consiste em verificar premissas e conclusões
das regras, encadeando-as de forma lógica. Sempre que existe uma regra com informações
conhecidas em suas premissas ela é disparada e assim que gera alguma conclusão, o motor de
inferência verifica se esta conclusão pode ser premissa de uma outra regra.
Esses sistemas podem ser de dois tipos: encadeamento progressivo (forward chaining)
ou de encadeamento regressivo (backward chaining), na qual o conhecimento diagnóstico dos
especialistas do domínio é previamente codificado. O sistema progressivo começa com os
fatos iniciais e usa as regras para chegar a novas conclusões (ou tomar algumas ações) dados
aqueles fatos. O sistema regressivo começa com algumas hipóteses (ou objetivos) que
tentamos provar, e fica procurando por regras que lhe permitem concluir aquela hipótese,
talvez criando novos sub-objetivos a provar durante o caminho. Sistemas regressivos são ditos
“dados dirigidos” (data-driven) enquanto os regressivos são ditos “metas dirigidas” (goal-
driven).
57
57
4 Jess (Java Expert System Shell)
Jess (Java Expert System Shell) foi desenvolvido por Ernest Friedmal-Hill no Sandia
National Lab como parte de um projeto interno de pesquisa. A primeira versão do Jess foi
escrita em 1995, quando Java era ainda uma linguagem nova. É um “script shell” para
construção de sistemas especialistas baseado em regras inteiramente desenvolvido em Java da
Sun Microsystems e possui um ambiente similar a linguagem de programação CLIPS (C
Language Integrated Production System) desenvolvida pela NASA.
O Jess utiliza um algoritmo especial chamado Rete para emparelhar as regras e os
fatos, isto o torna mais rápido, podendo ser utilizado de duas maneiras, a primeira sendo uma
máquina de inferência, ou seja, um tipo especial de programa que aplica de maneira eficiente
às regras aos dados. Geralmente as regras representam o conhecimento heurístico de um
especialista humano em um certo domínio, e a base de conhecimento representa o estado de
uma situação envolvida, neste caso pode-se dizer que tem-se um sistema especialista. Mas a
linguagem Jess é uma linguagem de programação de propósito geral e pode acessar
diretamente todas as classes e bibliotecas Java. Por esta razão, Jess é muito usado como
ambiente de desenvolvimento rápido de aplicações e scripts. Enquanto o código Java tem que
ser compilado antes de rodar, uma linha de código do Jess é executada imediatamente após
ser digitado. Isto permite que os usuários experimentem as API´s Java interativamente e
desenvolvam programas incrementalmente.
4.1 Utilização do Jess
69
5 Aplicação para Definição de Perfil do Investidor
Fundo de investimentos é como se fosse um “condomínio”. Investidores depositam
dinheiro e o administrador deste “condomínio” define estratégias de investimento para
oferecer, aos investidores, rentabilidade aos recursos aplicados. Os fundos são compostos por
vários aplicadores que juntos, detém maior poder de compra e podem investir em vários
ativos financeiros possibilitando a diversificação de portifólio. No ato da aplicação em um
fundo, o cliente compra um certo número de cotas. Dia à dia, o valor das cotas pode variar
conforme as alterações nos valores dos ativos que compõem a carteira do fundo.
Antes de começar a fazer uma investimento, é fundamental escolher o perfil do
investidor, para que as aplicações possam atender os interesses do investidor em questão.
Através de pesquisas realizadas em duas empresas financeiras, Banco Itaú S/A e
Investshop, podemos definir o perfil do investidor e escolher o investimento mais adequado
(para obter melhor resultado), com características:
• rentabilidade: é o grau de êxito econômico de uma pessoa física/jurídica em
relação ao capital investido (lucro);
• risco: é grau de tolerância e risco que o investidor possui, indica o quanto ele deve
balancear a composição dos seus investimentos, de acordo com seus objetivos de
rentabilidade. Existem aqueles investidores que aceitam correr algum tipo de risco,
buscando rentabilidades mais atrativas. Outros não querem correr o risco de
perdas, priorizando a segurança em suas aplicações. É de extrema importância que
o investidor conheça sua reação ao risco antes de decidir como vai aplicar seu
dinheiro para que não tenha futuros aborrecimentos;
• liquidez: é prazo de retorno esperado de um investimento. Pode ser a pequeno,
médio e logo prazo, de acordo com as metas e estilo de vida do investidor.
85
CONCLUSÃO
Concluímos que a inteligência artificial concentra seus estudos em dar aos
computadores habilidades normalmente associadas aos seres humanos, como compreensão da
linguagem natural, resolução de problemas e a capacidade de aprender por si mesmos e busca
para construir entidades de inteligência e compreendê-las, isto é, uma ciência que busca
desenvolver a capacidade de uma máquina imitar o raciocínio humano.
Sistemas especialistas são aplicações da inteligência artificial, planejados para adquirir
e disponibilizar o conhecimento operacional de um especialista humano, além de inferir
conclusões, ter capacidade de aprender novos conhecimentos e, desse modo melhorar o seu
desempenho de raciocínio, e a qualidade de suas decisões.
Os sistemas especialistas baseados em regras, capturam o conhecimento e raciocínio
de um especialista humano e armazena-os na forma de regra na base de conhecimento. Este
sistema processa uma informação específica de problema contida na memória de trabalho,
combinando a num procedimento de casamento, com um conjunto de regras contido na base
de conhecimento, e usa uma máquina de inferência para concluir ou deduzir uma nova
informação.
Com o conceito de sistemas especialistas baseados em regras adquirido, optamos pelo
desenvolvimento de um aplicativo que permite definir o perfil de investidor do usuário. Essa
aplicação apresenta duas características que a tornam bastante adequada ao nosso propósito:
por um lado pode ser encontrada em inúmeros aplicativos e sites comerciais, como os de
bancos, corretoras de valores e sites consultoria de investimentos; por outro nos permite
explorar algumas limitações da programação e desenvolvimento tradicionais que podem ser
adequadamente endereçadas por sistemas especialistas baseados em regras, como diferentes
graus de confiança das informações.
87
Referências
IGNIZIO, James P. Introduction to Expert Systems. United State of America: McGraw-Hill,
1991.393p.
HOLTZ, Frederick. Sistemas Especialistas: Programando em turbo C. Rio de
Janeiro: Campus, 1991.241p.
RUSSELL, Stuart J.; NORVIG, Peter. Artificial Intelligence A Modern Approach. New
Jersey: Prentice-Hall, 1995.903p.
SCHALKOFF, Robert J. Artificial Intelligence. United State of America:
McGraw-Hill, 1990.643p.
KASABOV, Nikola K. Foundations of Neural Networks: Fuzzy Systems, and
knowledge. United State of America: A Bradford Book, 1996.547p.
HOLTZ, Frederick. Sistemas Especialistas: Programando em turbo C. Rio de
Janeiro: Campus, 1991.241p.
NILSSON, Nils J. Artificial Intelligence : A new synthesis. California : Morgan
Kaufmann Publishers Inc, 1998. 493p.
KOSKO, Bart. Fuzzy Engineering. New Jersey: Prentice Hall, 1997.549p.
HARYKIN, Simon. Neural Networks: A comprehensive foundation. 2nd ed. United State of
America: Prentice Hall, 1999.842p.
SOUCEK, Branco. Fuzzy, Holographic and Paralell Intelligence The sixth – generation
Breakthrought. United State of America: A Willey – Interscience Publication, 1992.350p.
RICH, E.; KNIGHT, K. Artificial Intelligence. 2nd ed. United State of America:
McGraw-Hill, 1991.621p.
RICH, Elaine. Inteligência Artificial. Brasil: McGraw-Hill, 1988.621p.
91
Apêndices
1. Programa
Abaixo o programa fonte, da aplicação apresentada neste trabalho:
(deftemplate usuariorenda
(slot estadocivil)
(slot dependentes)
(slot divida)
)
(deftemplate caracteristicasrenda
(slot renda)
)
(deftemplate usuarioeconomico
(slot economiza)
(slot reserva)
)
(deftemplate caracteristicaseconomico
(slot economico)
)
(deftemplate usuariotolerancia
(slot tipo)
)
(deftemplate usuarioinvestimento
(slot investiu)
)
(deftemplate usuariograusatisfacao
92
(slot grau (type integer))
)
(defglobal ?*nome* = voce)
(defrule pergunta-usuario
=>
(printout t "Digite seu nome: ")
(bind ?*nome* (read))
(printout t crlf crlf)
(printout t " 1. Estado civil"crlf)
(printout t " a) casado" crlf)
(printout t " b) solteiro/viuvo" crlf)
(printout t " Digite sua opcao: ")
(if (eq (read) a) then
(bind ?alternativa1 casado)
else
(bind ?alternativa1 solteiro)
)
(printout t crlf crlf)
(printout t " 2. Possui dependentes (pais, filhos ou parentes?)" crlf)
(printout t " a) sim" crlf)
(printout t " b) nao" crlf)
(printout t " Digite sua opcao: ")
(if (eq (read) a) then
(bind ?alternativa2 possui)
else
(bind ?alternativa2 naopossui)
)
(printout t crlf crlf)
(printout t "3. Voce tem algum tipo de divida, como emprestimos, financiamentos ou utiliza o
rotativo do cartao de credito pagando o minimo permitido e rola o restante?" crlf)
(printout t " a) Nao, nao tenho nenhuma divida pessoal. Sempre faco o planejamento
necessario para poder comprar as coisas a vista e com desconto" crlf)
93
(printout t " b) Sim, mas vou quita-la dentro de 6 meses. Alem disso, tomei a precaucao de
calcular na ponta do lapis como essa divida iria progredir" crlf)
(printout t " Digite sua opcao: ")
(if (eq (read) a) then
(bind ?alternativa3 semdivida)
else
(bind ?alternativa3 comdivida)
)
(printout t crlf crlf)
(assert (usuariorenda (estadocivil ?alternativa1) (dependentes ?alternativa2) (divida
?alternativa3)))
(printout t "4. Quanto voce acredita que realmente pode economizar todo mes sem afetar sua
qualidade de vida atual?" crlf)
(printout t " a) Acredito que conseguiria economizar algo entre 10% e 30% do total da minha
atual receita mensal" crlf)
(printout t " b) So conseguiria fazer sobrar algum dinheiro se reduzisse meu atual padrao de
consumo. Mas isso afetaria minha qualidade de vida" crlf)
(printout t " Digite sua opcao: ")
(if (eq (read) a) then
(bind ?alternativa4 sim)
else
(bind ?alternativa4 nao)
)
(printout t crlf crlf)
(printout t "5. Qual a reserva financeira estrategica (que pode ser sacada rapidamente) que
voce possui para situacoes como o desemprego ou o mau desempenho do negocio proprio? "
crlf)
(printout t " a) Tenho uma reserva financeira suficiente para cobrir um ano ou mais sem
ganhos" crlf)
94
(printout t " b) Nao tenho tal reserva" crlf)
(printout t " Digite sua opcao: ")
(if (eq (read) a) then
(bind ?alternativa5 tenho)
else
(bind ?alternativa5 naotenho)
)
(printout t crlf crlf)
(assert (usuarioeconomico (economiza ?alternativa4) (reserva ?alternativa5)))
(printout t "6. Voce ja realizou algum tipo de investimento anterior (Poupanca,Renda Fixa,
Acoes, etc)? " crlf)
(printout t " a) sim" crlf)
(printout t " b) nao" crlf)
(printout t " Digite sua opcao: ")
(if (eq (read) a) then
(bind ?alternativa6 sim)
else
(bind ?alternativa6 nao)
)
(assert (usuarioinvestimento (investiu ?alternativa6)))
(printout t crlf crlf)
)
(defrule R0
(usuarioinvestimento (investiu sim))
=>
(printout t "7. Qual grau de satisfacao sobre esse investimento numa escala de 1% ate 100%?
" crlf)
(printout t " Digite o valor: ")
(bind ?leitura (read))
(if (and(>= ?leitura 1)(<= ?leitura 33)) then
(bind ?alternativa7 1/33)
else
95
(if (and (>= ?leitura 34)(<= ?leitura 66)) then
(bind ?alternativa7 34/66)
else
(bind ?alternativa7 67/100)
)
)
(assert (usuariograusatisfacao (grau ?alternativa7)))
(printout t crlf crlf)
)
(defrule R1
(usuariorenda (estadocivil casado) (dependentes possui) (divida comdivida))
=> (assert (caracteristicasrenda (renda rendacomprometida)))
)
(defrule R2
(usuariorenda (estadocivil casado) (dependentes possui) (divida semdivida))
=>(assert (caracteristicasrenda (renda rendacomprometida)))
)
(defrule R3
(usuariorenda (estadocivil casado) (dependentes naopossui) (divida comdivida))
=>(assert (caracteristicasrenda (renda rendacomprometida)))
)
(defrule R4
(usuariorenda (estadocivil casado) (dependentes naopossui) (divida semdivida))
=>(assert (caracteristicasrenda (renda rendanaocomprometida)))
)
(defrule R5
(usuariorenda (estadocivil solteiro) (dependentes naopossui) (divida semdivida))
=>(assert (caracteristicasrenda (renda rendanaocomprometida)))
)
(defrule R6
(usuariorenda (estadocivil solteiro) (dependentes possui) (divida comdivida))
=>(assert (caracteristicasrenda (renda rendacomprometida)))
)
(defrule R7
96
(usuariorenda (estadocivil solteiro) (dependentes possui) (divida semdivida))
=>(assert (caracteristicasrenda (renda rendanaocomprometida)))
)
(defrule R8
(usuariorenda (estadocivil solteiro) (dependentes naopossui) (divida comdivida))
=>(assert (caracteristicasrenda (renda rendacomprometida)))
)
(defrule R9
(usuarioeconomico (economiza sim) (reserva tenho))
=>(assert (caracteristicaseconomico (economico sim)))
)
(defrule R10
(usuarioeconomico (economiza sim) (reserva naotenho))
=>(assert (caracteristicaseconomico (economico nao)))
)
(defrule R11
(usuarioeconomico (economiza nao) (reserva tenho))
=>(assert (caracteristicaseconomico (economico sim)))
)
(defrule R12
(usuarioeconomico (economiza nao) (reserva naotenho))
=>(assert (caracteristicaseconomico (economico nao)))
)
(defrule R13
(caracteristicasrenda (renda rendacomprometida))
(caracteristicaseconomico (economico sim))
=>(assert (usuariotolerancia (tipo poucotolerante)))
)
(defrule R14
(caracteristicasrenda (renda rendacomprometida))
(caracteristicaseconomico (economico nao))
=>(assert (usuariotolerancia (tipo naotolerante)))
)
(defrule R15
97
(caracteristicasrenda (renda rendanaocomprometida))
(caracteristicaseconomico (economico sim))
=>(assert (usuariotolerancia (tipo tolerante)))
)
(defrule R16
(caracteristicasrenda (renda rendanaocomprometida))
(caracteristicaseconomico (economico nao))
=>(assert (usuariotolerancia (tipo poucotolerante)))
)
(defrule R17
(usuariotolerancia (tipo tolerante))
(usuarioinvestimento (investiu sim))
(usuariograusatisfacao (grau 1/33))
=>(assert (perfil moderado))
)
(defrule R18
(usuariotolerancia (tipo tolerante))
(usuarioinvestimento (investiu sim))
(usuariograusatisfacao (grau 34/66))
=>(assert (perfil agressivo))
)
(defrule R19
(usuariotolerancia (tipo tolerante))
(usuarioinvestimento (investiu sim))
(usuariograusatisfacao (grau 67/100))
=>(assert (perfil agressivo))
)
(defrule R20
(usuariotolerancia (tipo poucotolerante))
(usuarioinvestimento (investiu sim))
(usuariograusatisfacao (grau 1/33))
=>(assert (perfil conservador))
)
(defrule R21
98
(usuariotolerancia (tipo poucotolerante))
(usuarioinvestimento (investiu sim))
(usuariograusatisfacao (grau 34/66))
=>(assert (perfil moderado))
)
(defrule R22
(usuariotolerancia (tipo poucotolerante))
(usuarioinvestimento (investiu sim))
(usuariograusatisfacao (grau 67/100))
=>(assert (perfil moderado))
)
(defrule R23
(usuariotolerancia (tipo naotolerante))
(usuarioinvestimento (investiu sim))
(usuariograusatisfacao (grau 1/33))
=>(assert (perfil conservador))
)
(defrule R24
(usuariotolerancia (tipo naotolerante))
(usuarioinvestimento (investiu sim))
(usuariograusatisfacao (grau 34/66))
=>(assert (perfil conservador))
)
(defrule R25
(usuariotolerancia (tipo naotolerante))
(usuarioinvestimento (investiu sim))
(usuariograusatisfacao (grau 67/100))
=>(assert (perfil moderado))
)
(defrule R26
(usuariotolerancia (tipo tolerante))
(usuarioinvestimento (investiu nao))
=>
(assert (usuariograusatisfacao (grau 0)))
99
(assert (perfil agressivo))
)
(defrule R27
(usuariotolerancia (tipo poucotolerante))
(usuarioinvestimento (investiu nao))
=>
(assert (usuariograusatisfacao (grau 0)))
(assert (perfil moderado))
)
(defrule R28
(usuariotolerancia (tipo naotolerante))
(usuarioinvestimento (investiu nao))
=>
(assert (usuariograusatisfacao (grau 0)))
(assert (perfil conservador))
)
(defrule R29
(perfil conservador)
=>
(printout t crlf crlf)
(printout t ?*nome* crlf crlf)
(printout t "Seu perfil e CONSERVADOR" crlf crlf)
(printout t "Este e o perfil de quem nao gosta de correr riscos. Nao esta disposto a aplicar
dinheiro em investimentos que oscilam muito ou sua atual situacao de vida nao permite
investimentos que envolvam risco. Recomendavel aplicar em poupanca.")
)
(defrule R30
(perfil agressivo)
=>
(printout t crlf crlf)
(printout t ?*nome* crlf crlf)
(printout t "Seu perfil e AGRESSIVO" crlf crlf)
(printout t "Este e o perfil de quem esta disposto a correr risco para conseguir a maxima
rentabilidade possivel para o dinheiro. Quem esta propenso a investir a maior parte de seu
100
dinheiro em aplicacoes que oscilam muito, destinando parcela minima para aplicacoes mais
seguras. Recomendavel aplicar em acoes." crlf)
)
(defrule R31
(perfil moderado)
=>
(printout t crlf crlf)
(printout t ?*nome* crlf crlf)
(printout t "Seu perfil e MODERADO" crlf crlf)
(printout t "Este e o perfil de quem esta disposto a correr pouco risco para obter uma
rentabilidade maior. Quem esta propenso a aplicar uma parcela significativa do dinheiro em
investimentos que oscilam muito destinando o restante para aplicacoes mais seguras.
Recomendavel aplicar em Renda Fixa / Poupanca.")
)
(run)
101
2. Artigo
Abaixo o artigo submetido ao III Congresso Brasileiro de Computação (CBComp 3)
em 07 de abril de 2003:
USO DE SISTEMA ESPECIALISTA PARA DECISÃO DO PERFIL DE UM
INVESTIDOR VIA WEB
Marcela Gonçalves Daniela Pasotto
[email protected] [email protected]
Silvana Vicente Rogério de Oliveira
[email protected] [email protected]
Faculdade de Computação e Informática
Universidade Presbiteriana Mackenzie
R. da Consolacão, 895 - Prédio 13
01302-907, São Paulo, SP - Brasil
RESUMO
Ainda existe uma forte resistência ao uso de sistemas especialistas em sistemas comerciais,
seja pela falta de conhecimento por parte dos fornecedores de aplicações, seja pela falta de
ferramentas e soluções, em contraposição a um amplo suporte às técnicas tradicionais de
desenvolvimento. Esse estudo explora o uso de uma ferramenta de construção de sistemas
especialistas (o Jess) no desenvolvimento de um aplicativo para decisão do perfil de
investidor do usuário (conservador, moderado ou agressivo) mostrando alternativas de como
essa ferramenta pode ser facilmente integrada a técnicas amplamente utilizadas no
desenvolvimento de aplicações comerciais (Java e tecnologias Web), agregando vantagens ao
desenvolvimento e permitindo superar algumas das limitações da programação tradicional.
Palavras-chave: sistemas especialistas, Java, aquisição do conhecimento, IA.
102
ABSTRACT
Commercial systems have still been avoid to use expert system, either for the lack of
knowledge by the applications suppliers, either for the lack of tools and solutions, in
contraposition to a large number of the traditional techniques and tools to develop standard
applications. This study investigates the use of a tool for build expert systems (the Jess, a
expert system shell) in the development of an application that decides the user’s investor
financial skill (conservative, moderate or aggressive). It shows alternatives of how this tool
can be integrated to the most common and up to date techniques have been used in
development of commercial systems (such as Java and Web technologies), adding advantages
and allowing to surpass some limitations of the traditional programming.
Keywords: expert systems, Java, knowledge acquisition, IA.
Categoria do Artigo: (X) Sessões Técnicas
Sendo Sessão Técnica, o artigo enquadra-se na seguinte área: (X) Inteligência Artificial
USO DE SISTEMA ESPECIALISTA PARA DECISÃO DO PERFIL DE UM
INVESTIDOR VIA WEB
RESUMO
Ainda existe uma forte resistência ao uso de sistemas especialistas em sistemas comerciais,
seja pela falta de conhecimento por parte dos fornecedores de aplicações, seja pela falta de
ferramentas e soluções, em contraposição a um amplo suporte às técnicas tradicionais de
desenvolvimento. Esse estudo explora o uso de uma ferramenta de construção de sistemas
especialistas (o Jess) no desenvolvimento de um aplicativo para decisão do perfil de
investidor do usuário (conservador, moderado ou agressivo) mostrando alternativas de como
essa ferramenta pode ser facilmente integrada a técnicas amplamente utilizadas no
desenvolvimento de aplicações comerciais (Java e tecnologias Web), agregando vantagens ao
desenvolvimento e permitindo superar algumas das limitações da programação tradicional.
Palavras-chave: sistemas especialistas, Java, aquisição do conhecimento, IA.
ABSTRACT
Commercial systems have still been avoid to use expert system, either for the lack of
knowledge by the applications suppliers, either for the lack of tools and solutions, in
contraposition to a large number of the traditional techniques and tools to develop standard
103
applications. This study investigates the use of a tool for build expert systems (the Jess, a
expert system shell) in the development of an application that decides the user’s investor
financial skill (conservative, moderate or aggressive). It shows alternatives of how this tool
can be integrated to the most common and up to date techniques have been used in
development of commercial systems (such as Java and Web technologies), adding advantages
and allowing to surpass some limitations of the traditional programming.
Keywords: expert systems, Java, knowledge acquisition, IA.
1 Introdução
Sistemas especialistas e técnicas de inteligência artificial em geral, não obstante os
resultados que possam proporcionar, ainda são utilizados de forma bastante modesta em
aplicativos comerciais quando comparamos sua utilização em outras áreas de uso de sistemas
computacionais (controle, bio-medicina, sistemas de suporte a decisão, diagnóstico de falhas,
planejamento etc.) e frente às inúmeras soluções de suporte ao desenvolvimento tradicional
(LIU, 2000). De fato as metodologias tradicionais de desenvolvimento e seus instrumentos,
como por exemplo, modelagem de dados, UML e patterns, raramente contemplam soluções
como aquisição e representação do conhecimento, ou mecanismos de inferência ou lógica
difusa.
Nesse estudo buscamos mostrar a viabilidade e as vantagens do uso de sistemas
especialistas no desenvolvimento de aplicações comerciais, como processamento de
operações de venda, aplicações financeiras e controle de processos no setor de serviços. Para
isso utilizamos um shell para construção de sistemas especialistas baseados em regras, o Jess
(FRIEDMAN-HILL, 2002), que permite uma fácil integração das tecnologias atuais de
desenvolvimento de aplicações (aplicações Web, e as diversas tecnologias Java como
Javabeans e Servlets – ver (DEITEL, 2000)).
Como aplicação dessa arquitetura optamos pelo desenvolvimento de um aplicativo que
permite definir o perfil de investidor do usuário. Essa aplicação apresenta duas características
que a tornam bastante adequada ao nosso propósito: por um lado pode ser encontrada em
inúmeros aplicativos e sites comerciais, como os de bancos, corretoras de valores e sites
consultoria de investimentos; por outro permite explorar algumas limitações da programação
104
e desenvolvimento tradicionais que podem ser adequadamente endereçadas por sistemas
especialistas baseados em regras, como diferentes graus de confiança das informações.
2 Descrição do modelo
Jess (Java Expert System Shell) é um “script shell” para construção de sistemas
especialistas baseados em regras inteiramente desenvolvido em Java (FRIEDMAN-HILL,
2002). Originalmente baseado na linguagem CLIPS (RILEY, 2002), o Jess ainda mantêm
compatibilidade em grande parte com a linguagem CLIPS, mas adiciona uma série de
facilidades. Entre elas o Jess integra sua linguagem de scripts, sua base de conhecimento e sua
máquina de inferência ao ambiente Java (ABULSOROUR, 2003) e suas tecnologias como
J2EE, Javabeans e padrões de projeto (“patterns”) (DEITEL, 2000). Essa possibilidade
permitiu o surgimento de algumas extensões do Jess incorporando, ora outras tecnologias de
inteligência artificial, como a integração com lógica difusa (“fuzzy”) indicando valores de
confiança às asserções de sua base de conhecimento; ora tecnologias relacionadas ao
ambiente Java como tecnologias JDBC e XML (ABULSOROUR, 2003).
Java é uma linguagem orientada a objetos que vem se constituindo em padrão aberto de
linguagem para o desenvolvimento de aplicações web. Grande parte dos sistemas especialistas
foram construídos usando técnicas convencionais de programação estruturada. Não obstante
esse sucesso, as técnicas de orientação a objeto mostram-se mais flexíveis e naturais para o
desenvolvimento sobretudo de aplicações complexas contexto onde, em geral, encontram-se
os sistemas especialistas. A modelagem orientada a objetos, mais próxima de como
modelamos o mundo real, também parece mais adequada para o desenvolvimento de sistemas
especialistas em que o sistema parece “agir” como um humano especialista (LIU, 2000).
2.1 Integrando o sistema especialista a uma aplicação
Aplicações em Jess podem ser desenvolvidas de diferentes maneiras (CARLSON, 1998)
(FRIEDMAN-HILL, 2002):
1. Podem ser desenvolvidas fazendo uso scripts na linguagem Jess, executando sem o
uso de código Java (scripts em grande parte compatíveis com a linguagem CLIPS) ou
105
contendo diferentes níveis de código Java (APIs, código Java customizado e scripts
sob a classe main fornecida pelo Jess).
2. Uso de código Java carregando em tempo de execução scripts na linguagem Jess.
3. Uso de código Java interagindo unicamente com a APIs Java do pacote Jess.
Avaliando essas três opções verificamos que a opção (2) é a mais adequada para o
desenvolvimento de um protótipo de aplicação comercial. A opção (1) apresenta a limitação
de restringir-se ao uso limitado de uma linguagem de scripts; a opção (3), parece a mais
adequada, mas não suporta, na presente versão do Jess, todas as suas funcionalidades
(FRIEDMAN-HILL, 2002); a opção (2), por outro lado permite o uso de todos os recursos
proporcionados pelo ambiente Java (“multithread”, “applets”, componentes e outros) e o
acesso completo às funcionalidades do Jess.
Essa opção permite explorarmos todas as funcionalidades do Java. Basicamente
consiste em carregarmos um script de linguagem Jess residente em um “flat file” que contém
a base de conhecimento e regras que compõem a parte “especialista” de nosso sistema. Toda
parte de interface com o usuário, como, interface Web e GUI, lógica adicional da aplicação
(consistências, controle de fluxo da aplicação, acesso a outros objetos e outros) e outras
interfaces, como, acesso à banco de dados, interface com outros sistemas sendo manipuladas
pelo código Java da aplicação. O código a seguir apresenta os principais itens dessa forma de
implementação em um aplicativo Java.
public static void main(String[] argv) throws JessException
{ Rete rete = new Rete();
// Carrega regras para o algoritmo Rete
rete.executeCommand("(Regras.clp)");
rete.executeCommand("(reset)");
// Cria e instancia Beans
...
// Carrega contexto (Beans)
Funcall f = new Funcall("definstance", rete);
f.add(new Value(<values>, RU.ATOM));
f.add(new Value(<bean>));
...
106
// Submete contexto a máquina de inferência
f.execute(rete.getGlobalContext());
while (<bean>.isIntact())
rete.executeCommand("(run)");
}
}
O Jess utiliza-se da tecnologia de “beans” (componentes Javabeans) para permitir que
as regras tenham acesso aos métodos Get()/Set() das instâncias beans como simples
propriedades dos objetos [6]. Assim as propriedades são lidas e alteradas pela máquina de
inferência do Jess. O padrão JavaBeans ainda possibilita que as modificações nas
propriedades sejam automaticamente notificadas para a máquina de inferência quando
ocorrem.
2.2 Regras para definição do perfil de um investidor
Desenvolvemos uma aplicação com o objetivo definir o perfil de investidor de um
usuário entre 3 categorias: conservador, moderado e agressivo.
Um investidor conservador não está disposto a correr riscos e a aplicar dinheiro em
investimentos com grande oscilação, ou ainda, sua atual situação não permite investimentos
que envolvam altos riscos e que possam comprometer o capital investido. Um investidor
moderado está disposto a correr um risco um risco um pouco mais elevado para obter uma
rentabilidade maior, está propenso a aplicar uma parcela significativa do dinheiro em
investimentos que oscilam muito destinando, o restante, para aplicações mais seguras. Por
último o investidor agressivo está disposto a correr riscos para conseguir a máxima
rentabilidade, está propenso a investir a maior parte de seu dinheiro em aplicações que
apresentam grande oscilação e a destinar uma parcela mínima para aplicações mais seguras
que preservem o capital investido.
Os especialistas buscam propor as opções de investimento mais adequadas ao perfil de
um dado cliente buscando garantir a satisfação do investidor no que se refere à rentabilidade e
à proteção do capital desejada. Para isso desenvolveram uma série de regras que permitem
definir o perfil do investidor através de seu histórico de investimentos, dados pessoais,
107
intenção do investimento e informações de receita e capital. Essas informações como
aplicações anteriores e satisfação com o retorno obtido (histórico de investimentos), idade,
tipo de profissão, tempo de retorno esperado de uma aplicação (intenção do investimento),
renda e bens do usuário influenciam diferentemente na definição do perfil do investidor, o
qual ainda pode variar ao longo tempo com o histórico do cliente.
Essas regras constituem o material para a construção da base de conhecimento da
nossa aplicação. Para a montagem das regras e fatos da base de conhecimento adotamos uma
abordagem bastante prática baseada em diferentes sites que buscam auxiliar o usuário na
definição de seu perfil de investidor, os quais possuem uma série de questões e
esclarecimentos para o investidor.
2.3 Estrutura de base de conhecimento
Para o desenvolvimento da base de conhecimento o shell de sistema especialista Java
Expert System Shell (JESS) o qual uma máquina de inferência com algoritmo Rete
(RUSSELL, 1995). O JESS oferece uma máquina de inferência tanto com encadeamento para
trás (backward chaining) como encadeamento para frente (foreward chaining) (CHUN,
2001). O encadeamento para trás é o mais empregado e destaca-se como mais intuitivo para o
desenvolvedor, sendo a sua base o mecanismo de recursão (CHUN, 2001), e optamos aqui por
essa forma de encadeamento.
A estrutura básica da aplicação é uma base de conhecimento que armazena um
conjunto de regras, fatos e heurísticas que juntos correspondem ao conhecimento do
especialista no domínio sobre o qual foi construído o sistema. O motor de inferência é
responsável pelo processamento do conhecimento. De forma geral, podemos afirmar que o
processo permite tirar conclusões a partir do conhecimento armazenado, explorando o
encadeamento lógico existente na base de conhecimento.
O encadeamento é realizado a partir de diversas questões feitas para o usuário. Nossa
construção permite que a interface com o usuário e a base de conhecimento sejam
independentes garantindo a flexibilidade da aplicação. As respostas fornecidas criam novos
fatos na base de conhecimento que permitirão deduzir o perfil de investidor do usuário. A
figura 1 mostra de forma esquemática essa estrutura.
108
Figura 1: Estrutura do sistema especialista.
Iniciamos a construção da base de conhecimento criando templates que são estruturas
para inserção de dados na base no Jess. O templates funcionam como a definição de classes
em um linguagem orientada a objetos onde as variáveis os slots representam as variáveis de
instância da classe. Abaixo a definição do template dadosusuario utilizado para recepcionar as
respostas do usuário:
;; define dados do usuário
(deftemplate dadosusuario
(slot numeropergunta (type integer))
(slot alternativadados)
)
As perguntas feitas ao usuário são implementadas com o conceito de regras, essasregras são definidas no Jess por uma estrutura chamada defrule. Uma regra “dispara” asinstruções à direita da regra (após =>) conforme são satisfeitas as condições do lado esquerdo(anterior a =>). Abaixo uma implementação simples de regra na forma de script shell para ocontrole de fluxo das questões ao usuário.
;; idade do usuário?
Jess
usuárioInterface
doUsuário
MáquinaDe
Inferência
Base deConhecimento
Interface deprogramação
JAVA
109
(defrule pergunta-usuario
=>
(printout t " 1. Idade" crlf)
(printout t " a) menos de 35 anos" crlf)
(printout t " b) entre 35 e 60 anos" crlf)
(printout t " c) mais de 60 anos" crlf)
(printout t " Opção: ")
(inseredados)
)
Um função chamada “opção” faz a inserção dos fatos na base, depois de realizar aleitura da opção digitada/escolhida pelo usuário. O comando Jess que cria uma função é odeffunction.
;; insere dados na base de conhecimento
(deffunction opção ()
(bind ?x (read))
(assert (respostas (numeropergunta ?*numeropergunta*) (alternativa
?x) (respondida TRUE)))
)
Completada a inserção dos fatos do usuário na base o sistema realiza a verificação das
alternativas. O conhecimento prévio da base atribui diferentes pesos de importância na
definição do perfil para cada uma das questões propostas. A função “resultado”, através do
cálculo obtido, define qual o perfil do investidor conforme uma faixa de valores finais
obtidos. Abaixo uma implementação simplificada da função resultado na forma de script
shell:
;; resultado final
(defrule resultado
=>
(if (< ?*alt* 33) then
(printout t "CONSERVADOR" crlf)
...
else
(if (and (> ?*alt* 34)(< ?*alt* 60)) then
110
(printout t "MODERADO" crlf)
...
else
(printout t "AGRESSIVO" crlf)
...
)
)
3 Resultados e discussão
O uso de um shell de sistemas especialistas integrada a linguagem de desenvolvimento
de aplicações permitiu separarmos adequadamente a construção e uso da base de
conhecimento da interface de programação, comunicação e demais porções do sistema. Isso
permite que a base de conhecimento possa ser estendida, modificada ou mesmo substituída
sem alterações das demais partes do sistema. A mesma flexibilidade é proporcionada à
interface com usuário o que permite ainda o uso da mesma base de conhecimento por
múltiplas aplicações.
Além disso o Jess, diferentemente de outros script shells, fornece suporte mais amplo
às funções de linguagem de programação. Essa característica parece bastante importante para
a maior popularização do uso de sistemas especialistas em aplicações comerciais pois facilita
o trabalho do programador em diversas tarefas, como a entrada e saída de dados e a
manipulação tradicional de dados, permitindo ainda a adoção de soluções de programação
tradicional quando requeridas. Desse modo acreditamos ter agregado vantagens ao
desenvolvimento e superado algumas das limitações da programação tradicional.
Trabalhos futuros contemplarão aprimoramento da independência da máquina de
inferência e das demais porções do aplicativo empregando, além da tecnologia de
componentes, representações do conhecimento baseadas padrões abertos como o XML.
Também poderão ser inseridos fatores de confiança aos fatos da base de conhecimento
tornando o sistema apto a operar com lógica difusa (fuzzy).
111
5 Referências Bibliográficas
LIU, Q., CHENG, S., Object-oriented methods drive protective relay system, em IEEE
Computer Applications on Power, janeiro, 2000;33—37.
FRIEDMAN-HILL, E.J., Jess, The expert system shell for the Java platform. Disponível
em: <http://herzberg.ca.sandia.gov/jess/>. Acesso em: outubro, 2002.
DEITEL, H.M., DEITEL, P.J., Java: How to program. Prentice-Hall: 2000.
RILEY, G., What is CLIPS? Disponível em: <http://www.ghg.net/clips/CLIPS.html >.
Acesso em: outubro, 2002.
ABULSOROUR, A., VISVESWARAN, S., Business process automation made easy with
Java em JavaWorld Part 1: Implement business rule engines in a J2EE enterprise (Setembro)
Part 2: Design options for rule engine integration (Outubro). Disponível em: <
http://www.javaworld.com/>. Acesso em: março, 2003.
CARLSON, D., Rules and web-object systems, em Object Magazine, junho, 1998.
RUSSELL, S., NORVING, P., Artificial intelligence: A modern approach. Prentice-Hall:
1995.
CHUN, I-G., HONG, I-S., The implementation of knowledge-based recommender system
for eletronic commerce using Java expert system library. Proceedings in IEEE
International Symposium on Industrial Electronics, 2001;1766—1770.
88
LEVINE, Robert I.; DRANG, Diane E.; EDELSON, Barry. Inteligência Artificial e Sistemas
Especialistas. São Paulo: McGraw-Hill,1998.264p.
KRISHNAMOOTHY,C. S.;RAJEEV,S. Artificial Intelligence and Expert Systems for
Engineers. United State of America: CRC Press,1996.297p.
WINSTON, Patrick Henry. Artificial Intelligence. 3nd ed. United State of America: Addison-
Wesley Publishing Company,1993.735p.
ARBIB, Michel A. The Handbook of Brain Theory and Neural Networks. Cambridge,
Massachusetts.1995.118p.
LUGER, G. F.; STUBBLEFIELD, W. A. Artificial Intelligence: Structures and
Strategies for complex problem solving. 2nd ed. United State of America:
McGraw-Hill, 1993.703p.
MINSKY, Marvin. PAPERT, Seymour. Perceptrons – An Introduction to Computational
Geometry. Massachusetts Institute of Techonology (MIT),1992.255p.
NEWQUIST, Harvey. Artificial Intelligence: In the Financial Services Industry. Ireland:
Lafferty Publication, 1990.140p.
BARTEE,Thomas C. Expert Systems and Artificial Intelligence: Applications and
Management. Alaska: Howard W. Saws & Company, 1988.289p.
CHARNIAK, Eugene.; MCDERMOTT, Dreew. Introduction to Artificial-Intelligence.
Canada: Addison-Wesley, 1985.662p.
NILSSON, Nils J. Principles Artificial-Intelligence. California: Springer-Verlag, 1980.425p.
ELITHORN,Alick.; BANERJI, Ranan. Artificial and Human Intelligence. Amsterdam: North
Holland, 1984.320p.
KELLER, Robert. Tecnologia de Sistemas Especialistas Desenvolvimento e Aplicação. São
Paulo: McGraw-Hill, 1991.276p.
89
KAPLAN, B.; LUNDSGAARDE, H.P. Toward na evaluation of a clinical imaging
information system: Identifying clinical benefits, Technical Report – Department of
Computer Science, Quinnipiac College, Hamden, 1994.
NYKANEN, Pirkko.; NUUTILA,Pirio. Validation and Evaluation of a System for Thyroid
Disorders. Expert Systems with Applications, 1991.
CLARKE, R.A. Knowledge-Based Expert Systems: Risk Factors and Potentially Profitable
Application Areas, Working Paper, 1989.
REZENDE, Solange Oliveira. Sistemas Inteligentes: fundamentos e aplicações. São Paulo:
Manole,2003.
SHORTLIFE,E. H. Computer Based Medical Consultion: Mycin. Americam Elsevier, 1976.
HECKERMAN, D.; GEIGER, D.; CHICKERING, D. Learning bayesian network: The
combination of knowledge and statistical data, 1995.
ZADEH, L. Fuzzy sets Information and Control, 1965.
Modelo para o Ensino de Controle Estatístico da Qualidade. Disponível em:
<http://www.inf.ufsc.br/~marcelo/doutor.html>. Acesso em 06/09/2002.
Carnigie Mellon Expert Efficiency. Disponível em: <http://www.cmu.edu/cmri/
car_expert.html>. Acesso em: 10/11/2002.
Expert System. Disponível em: <http://www.ai.mit.edu/ people/jimmylin/ papers/
PhillipsE99.pdf>. Acesso em: 10/11/2002.
Abel, Mara. Sistemas Especialistas. Disponível em: <www.ppgia.pucpr.br/
~scalabin/SE_Milton/SistEspec%20MaraAbel%20mar2000.pdf>. Acesso em: 04/11/2002.
Sachet, Alessandro. Sistemas Especialistas. Diponível em: <www.bibliovirtualfw.
uri.br/brinf/tc200/lone/tcione.pdf>. Acesso em: 04/11/2002.
90
Marvin Minsky - Logical Vs. Analogical or Symbolic Vs. Connectionist. Disponível em:
<http://web.media.mit.edu/~minsky>. Acesso em: 07/02/2003.
A era do Computador com emoções – Gazeta Mercantil. Disponível em:
<http://www.jsmnet.com/ clippings/C0526c2.htm >. Acesso em: 05/02/2003.
Hystory of Artificial Intelligence. Disponível em: <http:// www.cs.cmu.edu/~sandholm/ cs15-
381/history_of_ai.ppt>. Acesso em: 02/02/2003.
CHUN, I-G., HONG, I-S., The implementation of knowledge-based recommender system for
eletronic commerce using Java expert system library. Proceedings in IEEE International
Symposium on Industrial Electronics, 2001;1766—1770.
FRIEDMAN-HILL, E.J., Jess, The expert system shell for the Java platform. Disponível em:
<http://herzberg.ca.sandia.gov/jess/>. Acesso em: outubro, 2002.
A era do Computador com emoções – Gazeta Mercantil. Disponível em:
<http://www.jsmnet.com/ clippings/C0526c2.htm >. Acesso em: 05/02/2003.
Perfil de investimento – Banco Itaú S/A. Disponível em: <http://www.itau.com.br>. Acesso
em: 08/01/2003.
Perfil de investimento – InvestShop. Disponível em: <http://www.investshop.com.br>. Acesso
em: 08/01/2003.
86
Para esta aplicação utilizamos um shell, o Jess (Java Expert System Shell), pelo
diferencial de fornecer suporte mais amplo às funções de linguagem de programação. Essa
característica é importante para a maior popularização do uso de sistemas especialistas em
aplicações comerciais pois facilita o trabalho do programador em diversas tarefas, como a
entrada e saída de dados e a manipulação tradicional de dados, permitindo ainda a adoção de
soluções de programação tradicional quando requeridas. Desse modo acreditamos ter
agregado vantagens ao desenvolvimento e superado algumas das limitações da programação
tradicional.
Trabalhos futuros contemplarão a criação de uma interface gráfica para a aplicação,
sendo que o JESS permite uma fácil integração das tecnologias atuais de desenvolvimento de
aplicações (aplicações Web, e as diversas tecnologias Java como Javabeans e Servlets),
utilizando código Java carregando em tempo de execução scripts na linguagem Jess,
permitindo assim, separarmos adequadamente a construção e uso da base de conhecimento da
interface de programação, comunicação e demais porções do sistema. Isso permite que a base
de conhecimento possa ser estendida, modificada ou mesmo substituída sem alterações das
demais partes do sistema. A mesma flexibilidade é proporcionada à interface com usuário o
que permite ainda o uso da mesma base de conhecimento por múltiplas aplicações. Também
poderão ser inseridos fatores de confiança aos fatos da base de conhecimento tornando o
sistema apto a operar com lógica difusa (fuzzy).
70
Para o desenvolvimento da aplicação utilizou-se de um script shell inteiramente
desenvolvido em Java, o Jess, que se baseia nos conceitos de sistemas especialistas baseados
em regras. O sistema para decisão do perfil de investidor possui um conjunto de perguntas no
qual baseia-se em regras de investimentos generalizadas e em elementos essenciais: a situação
financeira atual e o grau de tolerância a riscos. Através das respostas do investidor podemos
definir que tipo de investimento é mais adequado e mais rentável.
Os especialistas buscam propor as opções de investimento mais adequadas ao perfil de
um dado cliente buscando garantir a satisfação do investidor no que se refere à rentabilidade à
proteção do capital desejado. Para isso foram desenvolvidas uma série de regras que permitem
definir o perfil do investidor através de seus dados pessoais, disposição de capital, tolerância a
riscos e satisfação em investimentos realizados anteriormente que influenciam na definição do
perfil do investidor.
O perfil do investidor de um usuário pode ser dividido em três categorias:
conservador, moderado e agressivo.
5.1 Tipos de Perfis
Podemos identificar três grandes perfis de clientes, de acordo com dados pessoais,
disposição de capital, tolerância a riscos e satisfação em investimentos realizados
anteriormente influenciam na definição do perfil do investidor:
• conservador é um perfil de quem não gosta de correr riscos. Não está disposto a
aplicar dinheiro em investimentos que oscilam muito ou sua atual situação de vida
não permite investimentos que envolvam risco;
71
• moderado é um perfil de quem está disposto a correr pouco risco para obter uma
rentabilidade maior. Quem está propenso a aplicar uma parcela significativa do
dinheiro em investimentos que oscilam muito, destinando o restante para
aplicações mais seguras;
• agressivo é um perfil de quem está disposto a correr risco para conseguir a
máxima rentabilidade possível para o dinheiro. Quem está propenso a investir a
maior parte de seu dinheiro em aplicações que oscilam muito, destinando parcela
mínima para aplicações mais seguras.
A figura 7 mostra cada um desses perfis, com os seus pontos principais e com os
seus respectivos portifólios, isto é, indicando qual é o melhor fundo de investimento para
aquele determinado perfil
72
Figura 7 – Tipos de Perfis do Investidor e Portifólio. (Fonte: Banco Itaú S/A).
Perfil de Investidor PortifólioConsevador* Investidor para priorizar a segurança em seus * Investimentos totalmente concentradosinvestimentos em Renda fixa de curto prazo e/ou Renda * É avesso ao risco, quer proteção do principal investido fixa em DI
Moderado* Investidor que busca segurança em suas aplicações, * Grande parte dos investimentosno entanto, aceita correr algum risco (desde que seja concentrados em Renda Fixa Curto Prazo baixo) em busca de uma maior rentabilidade. - Objetiva e/ou Renda Fixa DI, além de investi- proteger seu patrimônio. investimentos em Renda Fixa Ativa e/ou
Derivativos e Multimercado
Agressivo* Aceita o risco, tendo por objetivo ganhos adicionais. * Investimentos balanceados em Renda * Prioriza a rentabilidade aceitando oscilações do principal a Fixa Curto Prazo e/ou Renda Fixa DI,ser investido a curto prazo. além de investimentos em Renda Fixa* Em geral, conhece o mercado financeiro. Ativa e/ou Derivativos, Multimercado e
Ações.
73
5.2 Desenvolvimento da Aplicação
As perguntas feitas ao usuário são implementadas com o conceito de regras, essas
regras são definidas no Jess por uma estrutura chamada defrule. Uma regra “dispara” as
instruções à direita da regra (após =>) conforme são satisfeitas as condições do lado esquerdo
(anterior a =>). Abaixo uma implementação simples de regra na forma de script shell para o
controle de fluxo das questões ao usuário.
(defrule pergunta-usuario
=>
(printout t "Digite seu nome:”)
(bind ?*nome* (read))
(printout t crlf crlf)
(printout t " 1. Estado civil"crlf)
(printout t " a) casado" crlf)
(printout t " b) solteiro/viuvo" crlf)
(printout t " Digite sua opcao: ")
(if (eq (read) a) then
(bind ?alternativa1 casado)
else
(bind ?alternativa1 solteiro)
)
)
As questões dividem-se em quatro categorias: renda, econômico, tolerância a risco e
investimento.
74
5.2.1 Renda
A categoria renda recebe as informações referentes aos dados pessoais do investidor
em questão como: estado civil (casado, solteiro), dependentes (possui, nãopossui) e dívida
(comdivida, semdivida). Abaixo a definição dos templates: usuariorenda, para receber as
respostas do usuário sobre seus dados pessoais e característicarenda, para receber as
respostas do usuário sobre o tipo de renda:
(deftemplate usuariorenda
(slot estadocivil)
(slot dependentes)
(slot divida)
)
(deftemplate caracteristicasrenda
(slot renda)
)
O tipo de renda do investidor é definido pelos fatos contidos na base através das
regras. Como mostrado abaixo:
(defrule R2
(usuariorenda (estadocivil casado) (dependentes possui) (divida
semdivida))
=>(assert (caracteristicasrenda (renda rendacomprometida)))
)
75
É inserido na base, no template caracteristicarenda, se o investidor possui renda
comprometida ou não. As definições destas regras foram baseadas na tabela 7.
estado civil (solteiro, casado)
dependentes (possui,naopossui)
Renda
divida (comdivida, semdivida)
Estado civil dependentes dívida renda
casado possui comdivida comprometida
casado possui semdivida comprometida
casado naopossui comdivida comprometida
casado naopossui semdivida naocomprometida
solteiro possui comdivida comprometida
solteiro possui semdivida naocomprometida
solteiro naopossui comdivida comprometida
solteiro naopossui semdivida naocomprometida
Tabela 7 - Tabela de Possibilidades de Respostas para Definição do Tipo de Renda.
5.2.2 Econômico
A categoria econômico leva em consideração se o investidor em questão é econômico
ou não e se possui algum tipo de reserva de capital financeiro. Como mostra abaixo:
76
(deftemplate usuarioeconomico
(slot economiza)
(slot reserva)
)
(deftemplate caracteristicaseconomico
(slot economico)
Segue exemplo de regra que verifica se a condição existente é verdadeira, caso seja
dispara a inserção na base de conhecimento através do comando assert:
(defrule R9
(usuarioeconomico (economiza sim) (reserva tenho))
=>(assert (caracteristicaseconomico (economico sim)))
)
As regras para definição da categoria econômico foram baseadas na tabela abaixo:
economiza(sim, nao)
Econômico
reserva (tenho, naotenho)
economiza reserva economico
sim tenho economico
sim naotenho naoeconomico
não tenho economico
não naotenho naoeconomico
Tabela 8 - Tabela de Possibilidades de Respostas para Definição do Tipo de Perfil Econômico.
77
5.2.3 Tolerância à Riscos
A categoria tolerância a riscos através da análise da base de regras considerando os
fatos sobre o tipo de renda e a categoria econômico define o grau de tolerância a riscos do
investidor. Segue abaixo a definição do template usuariotolerancia que verifica se o
investidor é tolerante, pouco tolerante ou não tolerante:
(deftemplate usuariotolerancia
(slot tipo)
)
Abaixo exemplo de regra para essa categoria:
(defrule R13
(caracteristicasrenda (renda rendacomprometida))
(caracteristicaseconomico (economico sim))
=>(assert (usuariotolerancia (tipo poucotolerante)))
)
As regras para definição do tipo de tolerância a riscos foram baseadas na tabela 9:
78
Renda
Economico
tolerancia a riscos
Renda economico Tipo
comprometida sim poucotolerante
comprometida não naotolerante
naocomprometida sim tolerante
naocomprometida não poucotolerante
Tabela 9 - Tabela de Possibilidades de Respostas para Definição do Tipo deTolerância à Riscos.
5.2.4 Investimento
A categoria investimento recebe informações sobre a realização ou não de um
investimento e, caso tenha realizado verifica-se o grau de satisfação sobre esse investimento,
considerando uma escala de 1 à 33 para insatisfeito, 34 à 66 para satisfeito e 67 à 100 para
muito satisfeito. Abaixo a definição dos templates usuarioinvestimento para receber o grau de
satisfação:
(deftemplate usuarioinvestimento
(slot investiu)
)
79
(deftemplate usuariograusatisfacao
(slot grau (type integer))
)
Nessa fase da aplicação a pergunta relacionada ao grau de satisfação sobre o
investimento só é realizada se o investidor responder que já efetuou algum tipo de
investimento anteriormente. Esta regra é definida pela estrutura demonstrada abaixo:
(defrule R25
(usuariotolerancia (tipo naotolerante))
(usuarioinvestimento (investiu sim))
(usuariograusatisfacao (grau 67/100))
=>(assert (perfil moderado))
)
Após termos todos os fatos inseridos na base de conhecimento, é utilizado uma regra
para definir o perfil de investidor. Exemplo de regra:
(defrule R17
(usuariotolerancia (tipo tolerante))
(usuarioinvestimento (investiu sim))
(usuariograusatisfacao (grau 1/33))
=>(assert (perfil moderado))
)
Essas regras de investimentos foram baseadas na tabela 10:
80
tolerancia
investimento
Perfil
grau de satisfação
tipo Investiu grausatisfacao perfil
tolerante Sim 1/33 moderado
tolerante Sim 34/66 agressivo
tolerante Sim 67/100 agressivo
poucotolerante Sim 1/33 conservador
poucotolerante Sim 34/66 moderado
poucotolerante Sim 67/100 moderado
naotolerante Sim 1/33 conservador
naotolerante Sim 34/66 conservador
naotolerante Sim 67/100 moderado
tolerante Não 0 agressivo
poucotolerante Não 0 moderado
naotolerante Não 0 conservador
Tabela 10 - Tabela de Possibilidades de Respostas para Definição do Tipo de Perfil deInvestidor.
Após definido o perfil do investidor, é mostrado ao usuário o tipo de perfil que este
pertence e uma explicação do mesmo. Segue abaixo:
(defrule R27
(perfil conservador)
81
=>
(printout t crlf crlf)
(printout t ?*nome* crlf crlf)
(printout t "Seu perfil e CONSERVADOR" crlf crlf)
(printout t "Este e o perfil de quem nao gosta de correr
riscos. Nao esta disposto a aplicar dinheiro em investimentos
que oscilam muito ou sua atual situacao de vida nao permite
investimentos que envolvam risco. Recomendavel aplicar em
poupanca.")
)
5.3 Exemplo da Aplicação em Execução
Digite seu nome: Maria
1. Estado civil
a) casado
b) solteiro/viúvo
Digite sua opção: a
2. Possui dependentes (pais, filhos ou parentes?)
a) sim
b) não
Digite sua opção: b
82
3. Você tem algum tipo de divida, como empréstimos, financiamentos ou utiliza o
rotativo do cartão de credito pagando o mínimo permitido e rola o restante?
a) Não, não tenho nenhuma divida pessoal. Sempre faço o planejamento necessário
para poder comprar as coisas a vista e com desconto
b) Sim, mas vou quitá-la dentro de 6 meses. Alem disso, tomei a precaução de
calcular na ponta do lápis como essa divida iria progredir
Digite sua opção: a
Fato 1 armazenado na base de conhecimento
==>f-1 (MAIN::usuariorenda (estadocivil casado) (dependentes naopossui) (divida
comdivida))
4. Quanto você acredita que realmente pode economizar todo mês sem afetar sua
qualidade de vida atual?
a) Acredito que conseguiria economizar algo entre 10% e 30% do total da minha
atual receita mensal
b) Só conseguiria fazer sobrar algum dinheiro se reduzisse meu atual padrão de
consumo. Mas isso afetaria minha qualidade de vida
Digite sua opção: b
5. Qual a reserva financeira estratégica (que pode ser sacada rapidamente) que você
possui para situações como o desemprego ou o mau desempenho do negocio próprio?
a) Tenho uma reserva financeira suficiente para cobrir um ano ou mais sem ganhos
b) Não tenho tal reserva
Digite sua opção: b
83
Fato 2 armazenado na base de conhecimento
==> f-2 (MAIN::usuarioeconomico (economiza nao) (reserva naotenho))
6. Você já realizou algum tipo de investimento anterior (Poupança,Renda Fixa, Ações,
etc)?
a) sim
b) não
Digite sua opção: a
Fato 3 armazenado na base de conhecimento
==> f-3 (MAIN::usuarioinvestimento (investiu sim))
7. Qual grau de satisfacao sobre esse investimento numa escala de 1% ate 100%?
Digite o valor: 60
Fato 4 e 5 armazenados na base de conhecimento
==> f-4 (MAIN::usuariograusatisfacao (grau 34/66))
==> f-5 (MAIN::caracteristicaseconomico (economico nao))
Maria
Seu perfil e CONSERVADOR.
Este e o perfil de quem nao gosta de correr riscos. Nao esta disposto a aplicar
dinheiro em investimentos que oscilam muito ou sua atual situacao de vida nao permite
investimentos que envolvam risco. Recomendavel aplicar em poupanca.
O resultado é obtido através da análise na base de regras que contém os fatos
demonstrados abaixo pode-se definir o perfil:
Fato 6,7 e 8 armazenados na base de conhecimento
84
==>f-6 (MAIN::caracteristicasrenda (renda rendacomprometida))
==>f-7 (MAIN::usuariotolerancia (tipo naotolerante))
==>f-8 (MAIN::perfil conservador)
58
58
Jess 6.0 é compatível com todas as versões do Java começando com Java 1.2,
incluindo JDK1.3 (ou “Java 2” como é conhecido) versões de número 4.x são compatíveis
com o JDK 1.0, e versões 5.x funcionam com o JDK 1.1.
O Jess está disponível para download na internet na versão 6.0 para Unix e para
Windows. Após descompactarmos o Jess teremos diversos diretórios padrões, bem como,
docs, examples e também o diretório Jess60.
4.2 Comandos Principais do Jess
Abaixo alguns comandos principais do Jess que são para inicialização, execução e
programação:
• iniciar o Jess: no prompt do MS-DOS diretório Jess60 digitar o seguinte comando:
java -classpath jess.jar jess.Main;
• ler um script: (batch NomePrograma.clp);
• carregar na memória: (reset);
• executar as regras: (run);
• comentários: símbolo de ponto e vírgula “;;” ;
• encerrar o Jess: (exit).
4.2.1 Átomos
O átomo é a unidade básica de representação no Jess. Ele pode conter letras, números,
59
59
caracteres como, $, *, =, +, /, <, >, _,?, # e valores booleanos, como TRUE e FALSE, é
importante notar que tudo no Jess é case sensitive, ou seja, a digitação da mesma palavra em
minúsculo, em maiúsculo tem significado diferente para o Jess, por exemplo, se digitarmos:
BIND, bind e Bind o Jess os considera como átomos diferentes.
4.2.2 Números e Textos (Strings)
O Jess permite ponto flutuante e números inteiros, como qualquer outra linguagem de
programação. Os textos devem ser sempre representados por aspas duplas, como por exemplo
“Perfil Moderado“.
4.2.3 Listas
Lista é uma coleção de um ou mais átomos, textos, números ou listas entre parênteses,
segue abaixo a sintaxe utilizada no Jess:
Jess> (+ 1 2)
Jess> 3
60
60
4.2.4 Variáveis
As variáveis devem ser representadas com o ponto de interrogação (?), e não se deve
declarar uma variável antes de utilizá-la. Utiliza-se o comando bind para associar alguma
coisa a variável, como representado abaixo:
;; A palavra Econômico será armazenada na variável criada de nome x
Jess> (bind ?x “Econômico”)
4.2.4.1 Variáveis com Multi-Campos
Multi-campos são variáveis especiais que são representadas com o sinal do cifrão ($),
e se referem a um tipo especial de lista:
;; declara a variável perfil, contendo os textos, Tipo1, Tipo2 e Tipo3.
Jess> (bind $?perfil (create$ “Tipo 1” “Tipo2” “Tipo3”))
;; Verifica qual o valor da variável chamada perfil
Jess> $?perfil
(Tipo1 Tipo2 Tipo3)
4.2.4.2 Variáveis Globais
61
61
Toda variável local criada é destruída quando executamos o comando reset. As
variáveis globais são gravadas mesmo depois de utilizar o comando reset, segue abaixo a
sintaxe utilizada no Jess:
;; definição da variável a como sendo global
Jess> (defglobal ?*a* = 100)
4.2.5 Operadores
O Jess possui operadores aritméticos, operadores de comparações e operadores
lógicos. Os operadores aritméticos são os mesmos do que em outra linguagem de
programação, mas a representação deve ser da seguinte forma:
;; soma valores a variável x
(bind ?x (+ ?x 1))
Para testarmos a igualdade, utilizamos os operadores de comparação. Devemos
lembrar que o sinal de igual (=), é um operador de comparação e devemos utilizar o comando
bind para representá-lo no Jess:
;; declaração da variável x contendo o número 1
Jess> (bind ?x 1)
;; verificando se o x é igual ao número 1
62
62
Jess> (= ?x 1)
TRUE
E por fim, temos os operadores lógicos, que são definidos por and, or e not, segue
abaixo a sintaxe para o uso desses operadores:
;; declaração da variável x contendo o número 1
Jess> (bind ?x 1)
;; verificação se o valor da variável x é o número 1 e o número 0
Jess> (and (= ?x 1) (< ?x 0))
FALSE
;; verificação se o valor da variável x é o número 1 ou o número 0
Jess> (or (= ?x 1) (< ?x 0))
TRUE
;; verificação se o valor da variável x não é o número 5
Jess> (not (= ?x 5))
TRUE
4.2.6 Fatos
63
63
Podemos adicionar fatos na base de conhecimento, usando o comando assert e para
iniciarmos uma condição inicial do mundo usamos o comando deffacts, se houver necessidade
de excluirmos alguns fatos utilizamos o comando retract, segue abaixo a sintaxe dos
comandos:
;; inclui os fatos na base de conhecimento
(assert (Perfil (x 1) (economico TRUE)))
;; inicia uma condição inicial
(deffacts init-perfil
(Perfil (x 1))
(Perfil (x 2))
(Perfil (x 3) (economico TRUE))
)
;; remove um fato da base de conhecimento
(retract ?perfil)
4.2.7 Modelos
Para utilizarmos modelos (templates), podemos comparar a estrutura do C ou uma
classe C++/Java utilizando o comando deftemplate e os campos utilizados dentro do template
são chamados de slots:
64
64
(deftemplate usuariorenda
(slot estadocivil)
(slot dependentes)
(slot divida)
)
4.2.8 Regras
Regras são responsáveis por verificar ações, baseando-se nos fatos da base de
conhecimento. As regras em geral, podem ser comparadas com o “if-else” da linguagem
procedural. Utilizamos o comando defrule para definirmos uma regra, é “disparado” as
instruções à direita da regra (após =>) conforme são satisfeitas as condições do lado esquerdo
(anterior a =>):
;; definindo a regra de nome Regra1 através do comando defrule
(defrule Regra1
(estadousuario (estadocivil casado) )
=>
(assert (renda comprometida))
)
65
65
4.2.9 Funções
No Jess podemos declarar nossas próprias funções. Utilizamos o comando deffunction
para definir uma função e o nome da própria função entre parênteses para fazer a chamada
(nomefunção), segue abaixo sintaxe utilizada no Jess:
;; declarando uma função através do comando deffunction
(deffunction nomefunção ()
......
(assert (Perfil (x ?x) (economico TRUE)))
)
4.2.10 Operadores de I/O
Existem dois tipos de funções disponíveis para entrada de dados, utilizamos o
comando read para ler um simples átomo, string ou número e também o comando readline
para ler uma linha inteira como uma string:
(read <rota-identificadora>)
(readline <rota-identificadora>)
Para mostrar os dados na tela, utilizamos o comando printout t, segue abaixo sintaxe:
66
66
(printout <router-identifier> <expression>)
(printout t "Seu perfil é conservador" crlf)
;; O comando crlf é utilizado para pular linhas.
4.3 Algoritmo Rete
O algoritmo de Markov é responsável pela especificação de uma estrutura de controle
para sistemas especialistas baseado em regras, possui um grupo ordenado de produção os
quais são aplicados na ordem de prioridade dos textos de entrada. Tanto quanto se necessite,
as regras de maior prioridade são utilizadas, caso contrário, é selecionada a regra de
prioridade imediatamente inferior e assim sucessivamente. Esse procedimento traz uma
grande ineficiência para sistemas especialistas com muitas regras, uma vez que para cada
inferência, todas as regras serão verificadas, perdendo-se em tempo de processamento. Esse
problema ficará mais acentuado se quisermos implementar sistemas especialistas com
centenas ou milhares de regras. A solução desse impasse passaria pela criação de um sistema
que possua algum conhecimento das regras para que não precise passar por todas elas de
forma seqüencial para fazer a inferência.
Charles L. Forgy, na Carnegie-Mellon University, em 1979, em sua tese de Phd,
desenvolveu o algoritmo de RETE. O algoritmo de Rete é um modelo muito veloz, que obtêm
velocidade pelo armazenamento da informação sobre as regras, na rede. Ao invés de buscar as
semelhanças dos fatos em todas as regras em todos os ciclos de reconhecimento das ações, o
67
67
algoritmo Rete somente procura por trocas semelhantes em todos os ciclos. Isto aumenta em
muito a velocidade da busca das semelhanças dos fatos para os antecedentes desde que os
dados estáticos que não mudam de ciclo para ciclo possam ser ignorados.
Posteriormente os fundamentos do algoritmo Rete foram trabalhados e deram origem
as modernas tecnologias para sistemas especialistas baseados em regras de produção. As
linguagens baseadas em regras, tais como JESS, que será mostrado no próximo capítulo,
CLIPS, ART, OPS5 e OPS83 usam esse algoritmo que é bastante eficiente para unificação
dos padrões nas regras, a fim de determinar quais regras têm seus antecedentes satisfeito.
O processo de unificação ocorre repetidamente, a lista de fatos será modificada
durante cada ciclo de execução. Novos fatos podem ser acrescentados à lista de fatos ou fatos
antigos podem ser removidos desta lista. Essas mudanças podem fazer com que padrões que
não foram satisfeitos anteriormente sejam satisfeitos ou vice-versa. O problema de unificação
se torna um processo contínuo. Durante cada ciclo, os fatos são acrescentados e removidos, o
conjunto de regras que são satisfeitas deve ser mantido e atualizado.
Muitos sistemas especialistas baseados em regras possuem uma propriedade chamada
de redundância temporal, tipicamente, as ações de uma regra irão mudar apenas alguns fatos
na lista de fatos, isto é, os fatos no sistema especialista mudam lentamente. Cada ciclo de
execução pode tratar apenas uma pequena porcentagem de fatos (acrescentar ou remover) e
então, apenas uma pequena porcentagem de regras é afetada pelas mudanças na lista de fatos.
Uma vez que as regras guiam a busca pelos fatos necessários, um tempo desnecessário é
gasto, uma vez que as regras irão percorrer toda à lista de fato a cada ciclo. Concluí-se então,
que as regras permanecem estáticas e somente os fatos mudam, sendo assim, os fatos
poderiam procurar as regras e não as regras procurarem os fatos.
68
68
O algoritmo de unificação de padrões de Rete foi projetado para tirar vantagem da
redundância temporal que existe em um sistema especialista baseado em regras, salvando o
estado do processo de unificação de ciclo por ciclo e recalculando as mudanças de um
determinado estado apenas para aquelas que ocorreram na lista de fatos. Este tipo de
informação de estado, que indica os fatos que tiveram unificação prévia em uma regra é
chamado de unificação parcial. Uma unificação parcial para uma regra é qualquer conjunto de
fatos que satisfazem os padrões da regra. Então, uma regra com três padrões ira ter
unificações parciais para o primeiro padrão, o primeiro e o segundo padrões, o primeiro,
segundo e terceiro padrões, e assim sucessivamente.
O outro tipo de informação de estado é a unificação padrão, que ocorre quando um
fato satisfaz um padrão simples em qualquer regra, sem considerar as variáveis em outros
padrões que possam restringir o processo de unificação.
O algoritmo de Rete possui uma desvantagem, que é o uso intensivo de memória, não
é feito uma comparação simples de todos os fatos com todos os padrões e sim o
armazenamento do estado do sistema usando unificações de padrão e unificações parciais
podendo consumir uma quantidade considerável de memória. Entretanto, deve-se ressaltar
que o referido algoritmo usa a similaridade estrutural nas regras, referindo-se ao fato de que
muitas regras podem conter padrões ou grupos de padrões similares, sendo assim o algoritmo
aproveita-se dessa característica para aumentar a eficiência, colocando os componentes
comuns juntos, de maneira que eles não sejam considerados mais de uma vez.
31
31
3.1 Estrutura
A estrutura de um sistema especialista baseado em regra é composta por: base de
conhecimento, motor de inferência e memória de trabalho que serão explicados a seguir:
3.1.1 Base de Conhecimento
Como citado anteriormente, os sistemas especialistas utilizam o conhecimento
específico de seu domínio de aplicação através de um programa de raciocínio relativamente
simples. O termo base de conhecimento é utilizado para significar a coleção de conhecimento
do domínio, ou seja, as informações, necessárias para resolver problemas de um domínio
específico. A tradicional base de dados com dados, arquivos, registros e seus relacionamentos
estáticos é substituída por uma base de regras, fatos e heurísticas que correspondem ao
conhecimento do especialista do domínio o qual foi construído o sistema. Os fatos constituem
informações que estarão sempre disponíveis para serem compartilhadas e atualizadas pelo
especialista. As heurísticas são regras práticas que caracterizam o nível de tomada de decisão
do especialista em um domínio.
A base de regras e fatos interage com o usuário e com o motor de inferência,
permitindo identificar o problema a ser resolvido, as possibilidades de solução e o processo de
raciocínio e inferência que levam a conclusões sobre o problema submetido ao sistema.
Um dos problemas mais sérios, e ao mesmo tempo muito comum, encontrado na
implementação de sistemas especialistas, é que parece possível fornecer um conhecimento
completo sobre o qual o sistema vai operar. Portanto, o nível de desempenho de um sistema
32
32
especialista está relacionado ao tamanho e a qualidade de sua base de conhecimento. Na
interação com a base de fatos, regras e com usuário, obtêm-se as informações necessárias para
a resolução desse problema. Devido à utilização de heurísticas, o usuário é requerido pelo
sistema para prestar informações adicionais a cada pergunta respondida ou cada nova
informação, reduz-se o espaço de busca a ser percorrido pelo sistema, encurtando-se o
caminho entre o problema e sua solução. Podendo desencadear um processo de aprendizagem
automática internamente no seu sistema. Isto quer dizer que o sistema provido de mecanismos
de aprendizagem é capaz de analisar e gerar novas regras na base de conhecimento ou
armazenar informações sobre novos fatos, ampliando a capacidade do sistema em resolver
problemas cada vez em que este for utilizado. Isto é transparente para o usuário, ou seja, ele
não percebe que todos estes processos acontecem durante uma sessão de utilização do sistema
especialista.
Diante disto, é importante que o sistema seja cuidadosamente projetado, de forma que
tenha capacidade de analisar novas situações, extrair novas regras, detectar regras redundantes
e complementar regras conflitantes, permitindo uma depuração constante da base de
conhecimento.
3.1.2 Motor de Inferência
O motor de inferência é um elemento essencial para a existência de um sistema
especialista (núcleo do sistema), parte que manipula as regras e fatos, inferindo novos fatos de
fatos existentes pelo uso de regras, controlando o fluxo de dados e a ordem da inferência, por
exemplo:
33
33
Fato: Você está dirigindo a 50 km/h.
Fato: Existe um sinal vermelho à frente.
Disparo de regra: Se existe um sinal vermelho à frente, você deve parar.
Resultado da decisão: Você deve parar.
Tabela 1 – Funcionamento do Motor de Inferência Verificando os Fatos e Disparando a Regrapara Resultar na Decisão.
Através de instrumentos do sistema, o motor de inferência seleciona e aplica o
conhecimento contido no banco na resolução do problema em questão. Entre esses inclui-se:
• a forma de inferência ou de racionar sobre os dados que o sistema utiliza;
• a estrutura de controle que define a direção e a forma como as regras do banco de
conhecimento serão testadas (raciocínio progressivo e regressivo);
• os métodos de tratamento de incerteza das informações fornecidas pelo
especialista ou pelo usuário;
• os mecanismos utilizados para recuperar o raciocínio desenvolvido pelo
sistema, a fim de fornecer explicações ao usuário;
• uma memória de trabalho, que armazena resultados parciais obtidos pelo sistema
no processo de busca pela solução.
Figura 1 – Funcionamento do Motor de Inferência.
Memória detrabalho
Base deregras
Compara
Resolve
Age
AAttuuaalliizzaaççããoo
MMááqquuiinnaa ddeeIInnffeerrêênncciiaa
AApprreennddee
34
34
3.1.2.1 Estrutura de Controle
O motor de inferência está habilitado para deduzir a resposta e explicar o raciocínio
adotado através de encadeamento progressivo, forward chaining ou encadeamento regressivo,
backward chaining.
a) Encadeamento progressivo (forward chaining)
O método de encadeamento progressivo analisa os fatos, aplica as regras, produz mais
fatos e ativa mais regras, até que uma conclusão final seja alcançada. Este método é também
conhecido como orientado pelos dados (data-driven), porque o motor de inferência usa a
informação fornecida pelo usuário para se movimentar pela rede (semântica) e E e OU lógicos
até encontrar um ponto terminal ou conclusão.
Um sistema é dito progressivo quando executa as regras na direção “if-> then”. É
usado quando uma hipótese pode derivar muitas questões, quando o número de conclusões
que se pode atingir é pequeno, quando o número de maneiras de se chegar a uma conclusão é
grande e/ou quando têm-se todos os fatos “na mão” e quer concluir tudo o que é possível.
Exemplo:
Base de conhecimento disponível:
Objetivo PossuiMaça Cresce_em_árvores
ArredondadaCultiva_no_SulCor_vermelha_ou_verde
Laranja Cresce_em_árvoresArredondadaCultiva_no_NorteCor_Laranja
Tabela 2 – Base de Conhecimento (Encadeamento Progressivo).
35
35
O Sistema parte testando um objeto(maçã):
SEUsuário
Cresce_em_árvores?Sim
SEUsuário
Arredondada?Sim
SEUsuário
Cultiva_no_Sul?Não
SEUsuário
Cultiva_no_NorteSim
SEUsuário
Cor_Laranja?Sim
SE Então é um(a) Laranja Tabela 3 – Teste do Encadeamento Progressivo
Este método é mais adequado aos casos em que a quantidade possível de soluções é
enorme ou até desconhecidas, a resposta (objetivo), necessita ser montada ou desenvolvida.
b) Encadeamento regressivo (backward chaining)
Um sistema é dito encadeamento regressivo quando executa as regras na direção then -
> if, através do uso de hipóteses. Ou seja, é o processo de provar hipóteses. Começa com um
objetivo e trabalha “para trás”, casando conseqüente ao objetivo. É usado quando um conjunto
de fatos pode levar a um grande número de conclusões, quando o número de maneiras de se
chegar à conclusão é pequeno e/ou quando não se têm todos os fatos “na mão” e está
interessado em se uma das muitas possíveis conclusões é verdadeira.
O método de encadeamento regressivo é o inverso do encadeamento progressivo. O
motor de inferência parte testando uma hipótese (conclusão) possível e pede uma confirmação
ao usuário para validar ou refurtar esta hipótese. Neste método o motor de inferência inicia
testando os objetos possíveis e trabalha voltando através dos sub-objetos (regras) no esforço
de validar uma resposta.
36
36
Este tipo de técnica é dirigida pelo objetivo (goal driven), porque este sistema
especialista, começa por um objetivo e tenta confirmá-lo.
Exemplo:
Base de conhecimentos disponível:
Objetivo PossuiMaça Cresce_em_árvores
ArredondadaCultiva_no_SulCor_vermelha_ou_verde
Laranja Cresce_em_árvoresArredondadaCultiva_no_NorteCor_Laranja
Tabela 4 – Base de Conhecimento (Encadeamento Regressivo)
O sistema parte perguntando por todos os dados disponíveis sobre a fruta:
Dados Entrados: árvores, verde, arredondada, cultivada no sul.
Segue abaixo uma tabela de comparação entre o encadeamento progressivo e
regressivo:
Encadeamento progressivo(forward chaining)
Encadeamento regressivo(backward chaining)
Todos os dados já são fornecidosinicialmente
Solicita dados durante o processo de busca poruma solução
Não é interativo É interativoDirigido por dados (data driven) Dirigido por metas, objetivos (goal driven)Modo antecedente Modo conseqüenteInicia em algumas informações e entãotenta encontrar um objeto que contenhaas informações
Inicia com uma hipótese (um objetivo) erequer informações para confirmar ou refurtareste objetivo. O sistema especialista inicia comum objeto e tenta confirmá-lo
Tabela 5 –Diferenças entre Encadeamento Progressivo X Encadeamento Regressivo
Sistema: É uma maça
37
37
De acordo com Stuart Russel, a busca por uma solução pode ser baseada em duas
estratégias: busca por nível bread-first searching, ou busca em profundidade depth-first
searching. A técnica de representação do conhecimento através de redes semânticas facilita a
visualização dos métodos de busca (Figura 2). O método de busca em profundidade explora
cada caminho (ramo da rede semântica) possível até encontrar sua conclusão antes de tentar
um outro caminho. O método de busca em nível verifica cada nó de um mesmo nível antes de
proceder ao próximo nível mais baixo.
O tipo de encadeamento normalmente é definido de acordo com o tipo de problema a
ser resolvido. Problemas de planejamento , projeto e classificação tipicamente utilizam
encadeamento progressivo, enquanto problemas de diagnóstico , onde existem apenas algumas
saídas possíveis, mas um grande número de estados inicial, utiliza encadeamento regressivo
(Figura 2).
Em geral, os sistemas especialistas adotam apenas um modo de raciocínio; no entanto,
existem alguns que permitem ambos os modos, mas de maneira independente, e ainda outros
que permitem um encadeamento misto, onde os encadeamentos progressivo e regressivo se
alternam de acordo com o desenvolvimento da solução do problema e com a disponibilidade
de dados.
Uma característica importante do modo de raciocínio se refere à monotonicidade ou
não do método de inferência. Sistemas monotônicos não permitem a revisão de fatos, isto é,
uma vez um fato declarado verdadeiro, ele não pode mais tornar-se falso. Sistemas não
monotônicos, por outro lado, permitem a alteração dinâmica dos fatos. O preço desta
capacidade é a necessidade de um mecanismo de revisão de crenças, pois uma vez que um
fato, antes verdadeiro, torna-se falso, todas as conclusões baseadas nesse fato também devem
tornar-se falsas.
38
38
Figura 2 – Demonstração do Método de Busca (em Profundidade e em Nível) através de Encadeamento Progressivo e Regressivo
3.1.2.2 Resolução de Conflito
Ao terminar o processo de busca, o motor de inferência dispõe de um conjunto de
regras que satisfazem à situação atual do problema, o chamado conjunto de conflito . Se esse
conjunto for vazio, a execução é terminada; caso contrário, é necessário escolher que regras
serão realmente executadas e em que ordem. Os métodos de resolução de conflito mais
utilizados ordenam as regras de acordo com os seguintes critérios: prioridades atribuídas
estaticamente; características da estrutura das regras como complexidade, simplicidade e
39
39
especificidade; características dos dados associados às regras como o tempo decorrido desde
sua obtenção, sua confiabilidade ou seu grau de importância; e, finalmente, seleção ao acaso.
Em geral, a utilização de um desses critérios é insuficiente para resolver os conflitos.
Neste caso, o sistema especialista baseado em regras pode combinar mais de um método na
forma de método primário, secundário, etc. Os melhores sistemas baseados em regras dispõem
de diversos métodos de resolução de conflito e permitem ao usuário a especificação de quais
métodos utilizar e em que ordem.
3.1.2.3 Representação de Incerteza
O tratamento de incerteza é uma ativa área de pesquisa em sistemas baseados em
regras, pois os domínios adequados à implementação desses sistemas se caracterizam
exatamente por não serem modelados por nenhuma teoria geral, o que implica descrições
incompletas, inexatas ou incertas. Diversos métodos foram propostos para tratar esse
problema, por exemplo, método Bayesiano (HECKRMAN & CHICKERING,1995), fatores
de certeza (SHORTLITE,1976), teoria de Dempster-Shafer, teoria dos conjuntos nebulosos
(ZODEH,1965), teoria de probabilidades subjetivas e teoria de possibilidades.
Probabilísticas Lida com a probabilidade de ocorrências de várioseventos para finalmente se encontrar a resposta.
Lógica Fuzzy (nebulosa) Lida com possibilidade de ocorrência de várioseventos para alcançar a resposta.
Método de Bayes Introduzir fórmulasTabela 6 – Conceitos de Métodos para Resolução de Incerteza
De maneira geral, esses métodos atribuem aos fatos e regras uma medida numérica que
represente de alguma forma a “confiança’’ do especialista. Os métodos utilizados não são
40
40
necessariamente coerentes uns com os outros e cada método adapta-se melhor a determinados
tipos de problemas. Diversos sistemas baseados em regras dispõem de mais de um método de
tratamento de incerteza, deixando ao usuário a escolha do mais adequado ao seu problema.
Uma característica freqüente desses métodos é a existência de um limite mínimo para a
medida de incerteza, abaixo do qual o fato ou regra é desconsiderado. Este limite pode, em
geral, ser fixado pelo usuário.
3.1.3 Memória de Trabalho
É uma estrutura que armazena momentaneamente as informações referentes à
interação do usuário com o sistema, sendo iniciada toda vez que o processo de iteração
começa. Essas informações são mantidas por dois motivos: o primeiro para que o sistema
possa fazer inferências baseadas nelas, e o segundo para tornar o acesso às informações mais
rápido. Sempre que é solicitada alguma informação, esta é solicitada alguma informação, esta
é inicialmente procurada na memória de trabalho para, depois, ser procurada na base de
conhecimento.
As declarações na memória de trabalho são chamadas de elementos da memória de
trabalho. Cada regra consiste em uma conjunção de elementos de condição correspondendo à
parte if da regra (também chamado de lado esquerdo da regra - LHS), e de um conjunto de
ações correspondendo à parte then da regra (também chamado de lado direito da regra - RHS).
As ações associadas com a regra podem adicionar, remover ou modificar os elementos da
memória de trabalho, ou realizar entrada/saída.
41
41
Figura 3 - Arquitetura de Sistemas Especialistas Baseados em Regras
3.2 Aquisição de Conhecimento
A fase de aquisição de conhecimentos segundo Edward Feingenbaum, “O nível de
desempenho de um sistema especialista é função principalmente do tamanho e da qualidade
da base de conhecimentos que possui”.
Este elemento é responsável pela aquisição (ou extração) de conhecimento do
especialista da área e a sua posterior incorporação na base de conhecimentos do sistema. Esta
não pode limitar-se à adição de novos elementos do conhecimento a base de conhecimentos; é
necessário integrar o novo conhecimento ao conhecimento já disponível, através da definição
de relações entre os elementos que constituem o novo conhecimento e os elementos já
armazenados na base.
A aquisição de conhecimento ocorre ao longo de seis etapas:
• identificação e estudo do problema: o especialista, gerentes e usuários do sistema
definem qual o problema que deve ser resolvido pelo sistema. O problema é
restringido para algo tratável computacionalmente e as entradas e saídas do sistema
são definidas grosseiramente;
42
42
• entrevistas com o especialista: são realizadas entrevistas abertas e depois
estruturadas com o especialista de forma a detalhar qual conhecimento é aplicado
na solução do problema e de que forma;
• análise do conhecimento: a informação obtida é analisada de forma a evidenciar
sua consistência, completeza e suficiência para a solução do problema;
• proposta de representação de conhecimento: o conhecimento é estruturado
segundo uma das formas de representação por computador;
• implementação e teste do sistema: o sistema é implementado, normalmente com
a utilização de uma ferramenta de desenvolvimento de sistemas especialistas e é
testado quanto ao seu funcionamento;
• validação junto ao especialista e usuários: o sistema é validado pelo especialista,
quanto ao conhecimento que ele contém, e pelos usuários em relação à adequação à
solução esperada e facilidade de uso.
A equipe de desenvolvimento de sistemas especialistas contém pelo menos um
profissional para cada uma das funções:
• um engenheiro de conhecimento, que exerce o duplo papel de compreender o
domínio da informação para interagir com o especialista e possuir o conhecimento
necessário sobre computação, linguagens e ferramentas de inteligência artificial
para selecionar o melhor ambiente e forma de implementar o sistema. E quem
realmente realiza a interface com o especialista, dirigindo as entrevistas,
acompanhando em seu trabalho;
• um escrivão que irá anotar tudo o que é comentado durante as entrevistas com o
especialista, porém com o mínimo de intervenção nas mesmas. Pode se utilizar
ainda de mecanismos para registrar a entrevista, como gravadores ou filmadoras,
desde que com a anuência do especialista;
43
43
• mediador que acompanha a entrevista verificando se a linha mestra da discussão
está sendo mantida. O mediador garante que todos os pontos necessários foram
suficientemente explorados e que a entrevista não está sendo desviada para
assuntos paralelos ao de interesse. O mediador intervém quando necessita de mais
informações, quando o assunto é desviado, ou quando alguma informação foi
omitida;
• programador é o profissional responsável pela utilização das linguagens de
programação, ambientes de desenvolvimento e ferramentas para a construção do
sistema nos moldes solicitados pelo engenheiro de conhecimento. Normalmente
não participa das entrevistas, nem da fase de análise das informações. Domina o
ambiente onde será desenvolvido o sistema e irá implementar as feições
necessárias à representação do conhecimento e raciocínio segundo as solicitações
do engenheiro de conhecimento.
3.2.1 Tarefas na Aquisição de Conhecimento
3.2.1.1 Imersão na Literatura
O engenheiro de conhecimento e equipe devem ler alguma literatura introdutória da
área, além dos artigos principais do especialista. O objetivo é familiarizar-se com o jargão
técnico utilizado pelo especialista o que facilita o diálogo posterior (certos termos técnicos são
44
44
difíceis até de serem transcritos a partir de uma entrevista verbal). Deve ser evitada a
compreensão do assunto e, principalmente, o julgamento das idéias do especialista.
3.2.1.2 Entrevistas Abertas ou Não-estruturadas
a) Protocolos verbais retrospectivos
Corresponde aos primeiros contatos com o especialista. Tendo o assunto sido definido,
o engenheiro de conhecimento inicia a entrevista através de poucas questões gerais sobre o
assunto escolhido. Em um exemplo de construção de um sistema especialista baseado no setor
financeiro, as perguntas deveriam ser:
Qual é a sua tolerância à risco?
Você é econômico?
Sua renda está comprometida?
É natural que o especialista discorra longamente sobre cada uma das questões. É
importante interferir o mínimo possível e anotar tudo completamente, inclusive desenhos,
gráficos e esquemas porventura utilizados. Qualquer interferência tende a modificar a linha de
raciocínio do especialista e deve ser evitada.
b) Protocolos verbais concorrentes (thinking aloud)
Nem sempre é possível de ser feito. O especialista descreve sua solução ou método
enquanto está resolvendo problema.
45
45
Esse método tende a ser muito mais fiel para demonstrar as heurísticas do especialista
do que o protocolo retrospectivo. Ao explicar sua área de pesquisa, o especialista tende a
descrevê-la nos termos em que é cientificamente aceita e não como é realmente aplicada. Ao
descrever suas ações, vê-se obrigado a descrever seus métodos efetivos.
3.2.1.3 Entrevistas Estruturadas
Após as entrevistas não-estruturadas, o engenheiro analisa as informações construindo
listas de objetos ou conceitos descritos pelo especialista. Na análise inicial, é feita uma
tentativa de separar objetos em classes, verificar relações de dependência ou semelhança entre
eles. A partir dessa análise, a equipe determina quais os pontos a serem explorados e utiliza
técnicas para obter informações específicas. É necessário determinar se os conceitos foram
corretamente definidos, se as relações e propriedades estão corretas. Ainda, definir quais as
regras ou seqüências de ações que são utilizadas pelo especialista.
a) Focalizando Contextos
Utilizada para explicitar métodos ou procedimentos utilizados pelo especialista.
O engenheiro de conhecimento apresenta problemas definidos ao especialista, solicita
que ele os resolva. As condições podem ser alteradas dinamicamente de forma a evidenciar os
pontos essenciais do método aplicado. Por exemplo, seria apresentado ao especialista o caso
de um perfil de investidor de características similares, mas não perfeitamente identificados
com o perfil em questão. Como o especialista resolve a definição do perfil?
46
46
Esse método permite equacionar as necessidades de tratamento de incerteza nos
métodos do especialista, definir prioridade das regras e tratamento de informações
incompletas.
b) Embaralhando fichas
Evidencia a classificação dos objetos, as hierarquias e outras descrições estáticas dos
objetos do domínio.
O engenheiro de conhecimento escreve os nomes dos objetos listados na análise
preliminar em fichas separadas. Apresenta o conjunto das fichas ao especialista, solicitando
que ele os separe em dois grupos, explicando o critério de separação. No exemplo abaixo, o
especialista deveria separar os objetos carro, pardal, barco, gato, ônibus e trem. (Figura 4) Une
as fichas novamente e solicita que novamente que separe em dois grupos utilizando outro
critério, até que não existam mais critérios de separação. Nesse caso, um dos grupos é
selecionado e reinicia o processo.
Figura 4 – Separação de um Conjunto de Objetos em Dois Objetos Feita por um EspecialistaSegundo o Critério "Veículos e Animais".
Durante a classificação, o especialista irá retirar alguns objetos por serem sinônimos
ou irrelevantes, e irá incluir outros que, segundo seu critério, estão ausentes. Ainda, ficará
evidente a hierarquia dos objetos e a divisão dos objetos (conhecimento descritivo) e das
Carro Barco
Ônibus Trem
Pardal
Gato
Conjunto 2Conjunto 1
47
47
regras (conhecimento procedimental), fornecendo subsídio para a organização das
informações em uma das formas de representação de conhecimento disponíveis.
Figura 5 - O Especialista Separa o Conjunto Um em Dois Conjuntos Segundo o Critério"Veículos Terrestres e Veículos Aquáticos"
3.2.2 Analisando as Informações
Processo intuitivo. Tem como objetivo definir a forma de organização "maior" das
informações e definir os "atalhos" utilizados pelo especialista, que otimizam o processo de
solução do problema.
A análise examina os dados obtidos através das entrevistas buscando determinar a
estrutura maior da informação (como os objetos e conceitos se organizam e se agrupam, e os
relacionamentos entre os objetos). Essa estrutura deverá ser explicitamente representada no
banco de conhecimento. São propostos ainda os métodos para tratar o conhecimento incerto
(índices associados aos objetos e regras: confiança, significância, suficiência, etc).
A análise do conhecimento busca também identificar os “atalhos” utilizados pelo
especialista na solução dos problemas. Um analista financeiro, por exemplo, utiliza sua
experiência para reconhecer "quadros típicos" de perfil do investidor, ou seja, mostrando o
tipo adequado para cada investidor: conservador, moderado e agressivo.
Carro
Ônibus Trem
Barco
Conjunto 4Conjunto 3
48
48
Nesta fase da análise, são feitas as primeiras considerações sobre possíveis softwares
adequados a implementação do sistema. Essa decisão leva em conta as necessidades do
conhecimento e dos raciocínios a serem implementados.
3.3 Metodologias de Avaliação de Sistemas Especialistas
Avaliação não é só evitar o erro nem saber como um programa de computação vai
funcionar em situação imprevisíveis, (LUNDSGAARDE,1987) contribui para as pesquisas de
avaliação fazendo a seguinte definição: “avaliação é a coleta e a análise da informação de
várias estratégias metodológicas que determinam a importância, abrangência, eficiência e
impacto sobre o uso dos programas computacionais”.
Sendo assim, a avaliação não deve ser entendida como uma medida de comparação
entre o conhecimento financeiro e do sistema especialista, mas sim uma medida entre os
custos e benefícios de cada um. Porém se a conclusão do especialista não combinar com a do
sistema, isto já será suficiente para não ser aceita a sugestão do sistema especialista. O
responsável sobre a tomada de decisão sempre será o usuário que faz a avaliação da sugestão
do sistema especialista.
NYKANEN (1991) diz que o único modo de obter a aceitação completa do usuário é
através da avaliação formalizada do sistema especialista, e faz uma distinção entre os termos
de verificação, validação e avaliação:
• Verificação: demonstra a consistência, o quanto a base é completa.
49
49
• Validade: determina os acertos das soluções encontradas com respeito as
necessidades do usuário e seus requisitos. Se refere também à dimensão do
especialista.
• Avaliação: refere-se ao julgamento do sistema, se é benéfico, se faz o que foi
solicitado. É a determinação da importância, eficiência e o impacto do sistema
especialista no ambiente.
NYKANEN (1991) enfatiza a avaliação como o aspecto mais complexo, sendo uma
interação natural e deve acontecer nos diferentes estágios do desenvolvimento, incluindo a
aquisição do conhecimento. O sistema deve ser avaliado como uma parte do ambiente
(condições do organismo) e não como uma parte separada.
Deste modo, mostra uma metodologia que deve cobrir 3 aspectos:
a) Elucidação do conhecimento
É a fase de modelagem do conhecimento. Devem ser consideradas as seguintes
questões:
Qual conhecimento deve ser elucidado?
Como o conhecimento dever ser organizado?
Como o conhecimento pode ser validado?
Nesta fase o especialista externa seu conhecimento e o projetista tenta elucidar o que é
relevante, descobrindo os elementos chave do domínio e o método usado pelo especialista. O
resultado é um modelo conceitual do domínio formalizado. A validação desse modelo abrange
a qualidade do conhecimento e seu modo de integração com os itens de um problema
proposto.
50
50
b) Modelo de desenvolvimento de ciclo de vida
A abordagem do ciclo de vida para a avaliação é dividida em 4 fases:
• exploração preliminar da especificação do sistema: é uma conferência baseada
nos objetivo e requisitos funcionais documentados pelo usuário;
• validação do sistema na prática: significa julgar os resultados obtidos. Pode ser
feita pelo usuário final ou pela equipe de desenvolvimento, que é responsável pela
manutenção e atualização. Este desempenho está associado ao conhecimento dos
especialistas;
• funcionalidade e utilização: o foco principal está sobre a interface com o usuário,
na interação homem-máquina . Deve-se observar se:
• as opções desejadas foram implementadas;
• lay-out da tela de apresentação é explicativo;
• o diálogo com o sistema é aceitável;
• as respostas são consistentes, bem descritas;
• o tempo de resposta é satisfatório;
• os limites são definidos;
• como se comporta numa situação que está fora dos seus conhecimentos;
• o sistema pode ser usado em outros ambientes da mesma área sem sofrer
grandes modificações.
• impacto do sistema: avalia os efeitos que tem sobre os usuários. A questão é saber
se o uso do sistema melhorou a qualidade do trabalho, através da observação de
longa duração. Verifica relação custo/benefício, gerenciamento do serviço de
saúde, educação e treino dos operadores , avanços em pesquisa médica e os aspecto
51
51
legais e éticos, tempo de consulta e a comparação do número e tipo de exames
pedidos antes e depois da implementação do sistema especialista.
c) Sistema como uma parte integrada do ambiente
Deve-se ter um entendimento da estrutura onde o sistema deve ser integrado. Observa-
se se o sistema pode efetivamente ajudar o usuário.
Os responsáveis pela avaliação são divididos em grupos (NYKANEM, 1991):
• equipe de desenvolvimento: responsável pelos testes básicos de desempenho.
Deve apresentar uma documentação objetiva da construção do projeto. Os
problemas comuns neste grupo é a falta de tempo e uma certa “cegueira” para
detectar as falhas dos sistema em funcionamento. Dentro desta equipe, se inclui o
gerente de projeto que deve avaliar o processo de desenvolvimento através da
administração e pesquisas de consumo e perspectivas;
• usuário: deve avaliar o sistema antes de aceitá-lo em uso. Mostrar de que forma o
sistema em particular vai atender suas necessidades. Sugere-se as perguntas:
Que desejo alcançar com o sistema?
Qual a relação custo/benefício?
Como o sistema especialista engloba nossos requisitos?
Quais as conseqüências de pegar um sistema específico em uso?
• especialista: tem seu papel na decisão da qualidade do sistema e na liberação para
uso;
• terceiros: é um grupo formado por pessoas que não estão envolvidas nem no
desenvolvimento nem no local de implementação, mas devem chegar a um
consenso para definir um padrão.
52
52
CLARKE et al (1994) apresentam uma proposta para avaliação baseada no modelo de
ciclo de vida proposto por (NYKANEN,1991), porém enfatizam a necessidade de feed-back,
num processo contínuo de interações com os especialistas, engenheiros de conhecimento e
usuários. Através do ciclo de vida, a razão, o tipo e a conseqüência de uma falha apontada no
processo de avaliação/construção do sistema especialista são identificados e modificados.
Essa metodologia é dividida em 4 fases sendo guiada também para determinar quando há
mudança de tecnologia e mudanças na prática médica podem causar alterações nos resultados
como mostra Figura 6.
Figura 6 – Método de Avaliação por Fases
Fase I – Idealização do sistema
As linhas mestre nesta etapa são:
Existe uma necessidade para o sistema?
Qual o papel do sistema em todo o empreendimento?
Qual o tipo de usuário que o sistema exige?
53
53
Depois de ter havido a idealização do sistema, duas abordagens para definição do
sistema tem lugar: o protótipo inicial e a especificação detalhada dos requisitos. O protótipo é
o resultado dessas duas abordagens, representando um progresso na formalização da estrutura
de avaliação, permitindo que se veja a funcionalidade do sistema no seu ambiente e o impacto
que este causa.
Fase II – Validade do Sistema
Esta etapa pode ser dividida em mais 2 etapas:
• validade estrutural: faz a validade da base de conhecimento envolvendo testes
para decidir se à base satisfaz as condições de consistência. Isto pode ser feito
rodando simples casos ou usando ferramentas projetadas para validar base de
conhecimento de sistemas. As propriedades do mecanismo de inferência do
domínio particular de um problema deve também ser avaliada;
• validade semântica: está relacionada com a aplicação do conhecimento e tenta
medir a confiança da base. Um padrão deve ser definido para servir de
comparação com a atuação do sistema. Existem dificuldades quando não se
encontra o melhor o padrão, tendo que definir o que é aceitável.
Fase III – Funcionalidade do sistema:
Se refere a avaliação do sistema já no ambiente do usuário. As interações homem-
máquina são de crucial importância, determinando quando o usuário é capaz de operar o
sistema especialista corretamente e com confiança. Para facilitar a aceitação do sistema é
necessário que seja de fácil uso e que exija muito aprendizado especial. O tempo de demanda
da interação humana dever ser minimizado e o ambiente de trabalho não deve sofrer muita
alteração com a implementação do sistema. O usuário deve estar ciente dos limites do
conhecimento do sistema. O lay-out deve ser de fácil utilização, sendo bem próximo da versão
54
54
final. O sistema obtém um alto grau de confiança quando é aplicado em outro local de
domínio semelhante.
Fase IV – Impacto do sistema:
O sistema especialista permite mudança de atitude em toda a organização do
ambiente de trabalho. O raio de ação poder ser positivo, como uma aplicação de atualização
educacional permanente, ou negativo, gerando constantes críticas. A relação custo/benefício
deve analisar hardware, software, o tempo de aprendizagem do usuário e a manutenção para
confrontar com a possibilidade de recuperação rápida e precisa de dados e melhora na
eficiência ao atendimento aos pacientes. Os valores monetários, éticos e legais também são
enfocados.
CLARKE (1994) conclui seu trabalho dizendo que essas 4 fases da metodologia não
podem ser apresentadas isoladamente, pois a avaliação deve acompanhar todo o
desenvolvimento do sistema, evitando erros futuros e economizando tempo e esforço para a
equipe de desenvolvimento.
3.4 Vantagens e Desvantagens
Os benefícios advindos da utilização da técnica de sistema especialista são diferentes
daqueles obtidos pelos sistemas tradicionais, por tratar-se de sistemas dotados de inteligência
e conhecimento. Podemos destacar as principais vantagens:
• um sistema especialista pode melhorar a produtividade e desempenho de seus
usuários, considerando que o provê comum vasto conhecimento, que, certamente,
55
55
em condições normais, demandaria mais tempo para assimilá-lo e,
consequentemente, utilizá-lo em suas tomadas de decisão;
• sistemas especialistas reduzem o grau de dependência que as organizações mantêm
quando se vêem em situações críticas, inevitáveis, como, por exemplo, a falta de
um especialista. As pessoas morrem, ficam doentes, tiram férias e até optam por
melhores ofertas de trabalhos; assim, tornam as organizações em que trabalham
vulneráveis e extremamente dependentes de suas decisões. Ao registrar o
conhecimento de empregados nos sistemas especialistas, promove-se uma
significativa redução no grau de dependência entre empresa e a presença física do
empregado;
• resultados mais consistentes e reprodutíveis sem influência de fatores emocionais,
“stress” ou pressões.
Dentre outras, podemos citar:
• ajuda a reduzir falhas humanas e acelerar tarefas;
• apresenta estabilidade e flexibilidade;
• aumenta o desempenho e a qualidade na resolução de problemas;
• combina e preserva o conhecimento dos especialistas;
• contempla hipóteses múltiplas simultaneamente;
• integra várias ferramentas;
• apresenta maior eficiência e otimização de resultados;
• possui maior rapidez na resolução de problemas.
Como principais desvantagens temos:
• os sistemas especialistas tendem a trabalhar de uma forma rotineira, sem
inspiração ou criatividade onde não é sintetizado novo conhecimento;
56
56
• dificuldade de lidar com situações inesperadas - entrada de informação e
representação simbólica e não sensória; não possuir conhecimento do senso
comum.
3.5 Conclusão
Concluímos que os sistemas especialistas baseados em regras capturam o
conhecimento e raciocínio de um especialista humano e armazena-os na forma de regras
através de uma estrutura composta por: uma base de conhecimento, que é uma coleção de
conhecimento, ou seja, as informações necessárias para resolução de um problema específico;
o motor de inferência, que manipula regras e fatos e a memória de trabalho, que é uma
estrutura que armazena as informações temporariamente referentes à interação do usuário com
o sistema. Para o desenvolvimento de uma aplicação de um sistema especialista baseado em
regras deve-se definir uma metodologia a ser aplicada e realizar etapas importantes como a
aquisição de conhecimento que consiste em estudar o problema, conversar com o especialista,
analisar o conhecimento, fazer a proposta de como a representação desse conhecimento será
feita e finalmente validar com usuários e especialistas de sistema se todas as etapas estão
viáveis e consistentes. No próximo capítulo veremos o Shell que utilizamos para a construção
de nosso sistema especialista baseado em regras, o Jess, seus principais comandos e a
definição de um sistema especialista baseado em regra para analisar perfis de investidores.
15
15
é, achar que a máquina é um homem, então não restaria a menor dúvida de que existem
máquinas inteligentes (pela imitação dos comportamentos humanos).
O termo inteligência artificial nasceu em 1956, quando surgiu o primeiro programa de
inteligência artificial (Logic Theoristic) capaz de demonstrar teoremas não triviais de lógica
matemática, baseado na utilização de sistemas especialistas e na introdução de heurísticas1.
Segundo o dicionário Aurélio, inteligência significa a faculdade ou capacidade de
aprender, apreender ou compreender; intelecto. E, artificial significa algo que não é natural,
fingido.
A qualidade “inteligente” atribuída a um sistema é justificada pelo fato de ele
apresentar algumas características que denotam inteligência como: distinção, capacidade de
adaptação e tratamento diferenciado de acordo com a pessoa com a qual ele interage. Segundo
WARWICK (1991), a palavra inteligência não tem uma definição científica: “Embora
sejamos inteligentes, não sabemos realmente o que inteligência significa”. Entretanto,
conseguimos atribuir esta característica às pessoas. De RABUSKE (1995) pode-se coletar
algumas conceituações:
• "Inteligência é julgar bem, compreender bem, raciocinar bem”.(BINET);
• "Inteligência é a habilidade de resolver problemas difíceis”.(MINSKY).
A definição de inteligência artificial já foi abordada por diversos autores, tais como:
1 Heurísticas: técnica para resolução de problemas constituída de regras baseadas na experiência e noplanejamento englobando estratégias, procedimentos, métodos de aproximação e tentativa/erro, sempre naprocura da melhor forma de chegar a um determinado fim.
16
16
• "Inteligência artificial é a capacidade de uma máquina de realizar funções que se
fossem realizadas pelo ser humano seriam consideradas inteligentes”.
(MCCARTY);
• "A inteligência artificial é conhecimento - teoria, dados, avaliação - que descreve
os meios para alcançar uma classe de fins desejados”.(ALLEN NEWELL, 1977);
• “O estudo da computação que torna possível perceber, reagir e agir”.
(WINSTON, 1992).
Computadores e cérebros trabalham com diferentes componentes, com diferentes
propriedades, e então a principal discussão da inteligência artificial é: Como fazer as
máquinas pensarem iguais ao cérebro humano?
A inteligência artificial concentra seus estudos em dar aos computadores habilidades
normalmente associadas aos seres humanos, como compreensão da linguagem natural2
resolução de problemas e a capacidade de aprender por si mesmos e busca para construir
entidades de inteligência e compreendê-las. Embora ninguém possa predizer o futuro em
detalhes, está claro que computadores com inteligência do nível humano (ou maior) teriam
um impacto enorme em nossas vidas cotidianas e no futuro de civilização.
Em suma a inteligência artificial é uma ciência que desenvolve a capacidade de uma
máquina para imitar o raciocínio humano, isto é, torná-las com a capacidade de raciocinar,
perceber, planejar, refletir, aprender e agir. Para as pessoas as tarefas de olhar e falar são
2 Linguagem natural: interpreta muitas palavras comuns, mas palavras, raramente utilizadas e/ou jargões técnicosespecíficos da área, deverão ser integradas ao dicionário
17
17
tarefas simples e comuns que chegam a ser insignificantes. Tarefas como multiplicações de
números de 10 dígitos, por outro lado, para a maioria das pessoas são tarefas complexas,
enquanto para um computador é uma tarefa básica e simples. A mente humana pode
incorporar novos conhecimentos sem alterar seu funcionamento e sem atrapalhar todos os
outros fatos que já estão armazenados no cérebro. Na verdade, os problemas mais
interessantes da inteligência artificial são os de tentar reproduzir as faculdades mentais de
pessoas comuns, como no campo da visão e da linguagem natural.
No final dos anos 50 e início dos anos 60, os cientistas Newell, Simon, e J. C. Shaw
introduziram o processamento simbólico. Ao invés de construir sistemas baseados em
números, eles tentaram construir sistemas que manipulassem símbolos. A abordagem era
poderosa e foi fundamental para muitos trabalhos posteriores. Portanto, o grande desafio
das pesquisas em inteligência artificial,
desde a sua criação, pode ser sintetizado com a indagação feita por Minsky (1968) em seu
livro “Semantic Information Processing”, há quase quarenta anos : “Como fazer as máquinas
compreenderem as coisas ?”
No começo dos anos 80, os japoneses lançam o projeto de fabricação dos
computadores de quinta-geração e popularizaram o uso da linguagem de programação Prolog,
despertando a atenção de todos para uma ciência até então pouco considerada, a inteligência
artificial.
Nesse período surgiram diversas áreas de atuação da inteligência artificial, tais como:
• processamento de linguagem natural: são programas que respondem a perguntas
feitas em linguagem natural sobre uma base de dados (criada pela aquisição de
material textual) através da tradução de sentenças;
18
18
• robótica e visão: é o campo de estudo voltado para desenvolver meios de
construir máquinas que possam interagir com o meio (ver, ouvir e reagir aos
estímulos sensoriais);
• aprendizado: também chamado de Sistemas Tutoriais Inteligentes – STI, são
programas de computador com propósitos educacionais, geralmente utilizando-se
da tecnologia dos sistemas especialistas;
• redes neurais: são redes inspiradas na estrutura do cérebro, com o objetivo de
apresentar características similares ao comportamento humano;
• lógica difusa: é uma lógica multivalorada capaz de capturar informações vagas,
em geral descritas em linguagem natural e convertê-las para um formato numérico
de fácil manipulação pelos computadores;
• algoritmos genéticos: são algoritmos de otimização global, baseados nos
mecanismos de seleção natural e genética. Eles empregam uma estratégia de busca
paralela e estruturada, mas aleatória;
• autômatos finitos: são tipicamente a base formal para implementação de
analisadores léxicos, sendo, portanto, o principal mecanismo utilizado na
compilação de programas;
• sistemas especialistas: também chamados Sistemas Cognitivos, são programas
que tentam reproduzir o mecanismo de pensamento de um especialista humano
relativo às questões profissionais da sua área.
Hoje em dia, isso ainda é um assunto delicado, pois existem diversos autores como,
por exemplo, Penrose e Searle que dizem “Máquinas nunca poderão pensar”, pois tudo que a
máquina faz são os humanos que comandam e programam o sistema para determinada ação.
19
19
No entanto, a inteligência artificial continua se aperfeiçoando, para se aproximar do
modo como os seres humanos pensam, com o objetivo de modelar esses pensamentos em
processos computacionais.
2.2 Representação do Conhecimento
Para utilizar um corpo de conhecimento em uma máquina, é necessário escolher uma
maneira de representá-lo. Todo programa de computador contém o conhecimento sobre um
determinado problema a ser resolvido. O conhecimento está nos algoritmos que o programa
emprega e nos procedimentos de decisão que determina qual destes algoritmos são
empregados em determinada circunstância. Quando se carrega um programa em um
computador, pode-se dizer que o computador "adquiriu" o respectivo conhecimento,
entretanto, na maioria dos programas, estas informações não são representadas explicitamente
e não podem ser facilmente atualizadas ou manipuladas. A representação do conhecimento
está sempre relacionada com as formas de expressão da informação. Diferentes sistemas de
representação podem ser mais adequados para diferentes problemas, embora ainda existam
muitas pesquisas no sentido de desenvolver sistemas e linguagens de representação de
propósito geral.
Geralmente, a questão central é: como representar o conhecimento de modo formal
sem considerar como ele será utilizado? Entretanto, na maioria das pesquisas atuais sustentam
amplamente que é inútil considerar uma representação, sem considerar o raciocínio que será
realizado sobre a mesma. Assim, a área de representação de conhecimento tem sido
claramente padronizada para representação de conhecimento e raciocínio. Como resultado, as
20
20
pesquisas estão enraizadas no estudo das lógicas em geral, onde sintaxes formais de
linguagens são acompanhadas por regras, inferência e interpretações. É importante considerar
que uma linguagem de representação de conhecimento não deve ser caracterizada somente em
termos de sua adequação, mas também em termos de sua eficácia computacional. Assim, uma
representação não deve meramente prescrever como trechos individuais de informações são
representados, mas deve especificar como a totalidade da informação é estruturada e
organizada de modo que as informações relevantes possam ser recuperadas e que as
inferências adequadas apresentem um nível aceitável de eficiência.
Existem duas tradicionais abordagens ou metodologias que direcionam as pesquisas
em representação do conhecimento, praticamente desde os anos formativos de inteligência
artificial. Uma delas representada por John McCarthy, tenta adaptar os problemas de
inteligência artificial a um mundo sistematizado da lógica simbólica, onde seu principal
interesse é a maneira de representar relações e características de um problema através do uso
de expressões da lógica simbólica e também ampliar o limite das possibilidades para estes
tipos de expressões. A segunda abordagem, representada por Marvin Minsky, afirma que o
comportamento do cérebro humano é muito complexo para ser expresso dentro da lógica
simbólica. Ele criou os “frames” como uma combinação de ferramentas e métodos que podem
descrever as atividades do cérebro humano sem permanecer confinado à lógica simbólica. A
lógica simbólica é geralmente referida como abordagem declarativa, enquanto esta última
abordagem é chamada de procedimental.
David Israel faz uma boa análise sobre estas duas vertentes e, segundo ele, o que estas
duas correntes de pesquisas em inteligência artificial vêm debatendo ao longo dos anos é, na
verdade, o papel da lógica na resolução de problemas em inteligência artificial. McCarthy
acredita que a maneira de resolver problemas é projetar programas de computador para
raciocinar de acordo com linguagens bem definidas da lógica matemática, sendo ou não a
21
21
maneira como as pessoas pensam. Por outro lado, Minsky acredita que uma abordagem
proveitosa é tentar utilizar os computadores para imitar a maneira como o cérebro funciona e,
afirma ele, isto nada tem haver com a lógica matemática.
Certamente existem várias outras questões envolvidas neste velho debate, embora
todos os seus participantes concordem que o objetivo principal da pesquisa é que os
computadores devem, de uma maneira ou de outra, “conhecer” muito do que cada ser humano
conhece sobre o mundo e sobre os organismos, naturais ou artificiais, que nele habitam.
Os pesquisadores em inteligência artificial costumam fazer a distinção entre estes dois
tipos de conhecimento, quais sejam, o declarativo e o procedimental. Tem havido muitas
controvérsias sobre qual destas duas estruturas de representação é a melhor. Não há uma
resposta precisa, até porque a própria distinção entre as duas formas é, em geral, muito
nebulosa. Entretanto, existe uma concordância em que na maioria dos domínios requer a
utilização de ambos os tipos de informações. Assim, na prática, na maioria das representações
emprega uma combinação destas duas abordagens.
2.3 Sistemas Especialistas
2.3.1 Conceitos
Sistema - Conjunto de elementos, materiais ou idéias, entre os quais se possa
encontrar ou definir alguma relação.
Especialista - Pessoa que se consagra com particular interesse e cuidado a certo
estudo. Conhecedor, perito.
22
22
“Os sistemas especialistas são baseados em questões onde a atividade humana é o
raciocínio e não o cálculo exato, onde a habilidade em tomar atitudes corretas em decisões
difíceis está baseada na inferência, julgamento simbólico e experiências passada. Os
programas tradicionais baseados em lógica de procedimentos não são capazes de fazer estas
associações, pois seguem sempre a mesma seqüência” (HARMON & KING, 1988).
“Um programa tradicional pode somente fornecer respostas para questões
específicas para as quais foi preparado. Se uma nova informação se tornar disponível, o
programa precisa ser reescrito. Por outro lado, um sistema especialista pode facilmente ser
expandido para aceitar novos dados ou regras. Para usar um sistema especialista, o usuário
inicialmente estabelece um problema, ou uma meta que o sistema tenta resolver realizando
uma série de perguntas e utilizando seu conhecimento interno. Em alguns casos o sistema
pode fazer uso de questões de múltipla escolha” (TOWNSEND, 1987).
“Os sistemas especialistas são diferentes das aplicações típicas por causa de sua
arquitetura. Um dos princípios fundamentais no projeto de sistemas especialistas é a
separação do conhecimento de domínio (por exemplo, medicina ou geologia) dos programas
que “raciocinam” com este conhecimento” (BUCHANAN, 1989).
Os sistemas especialistas são projetados e desenvolvidos para atender uma aplicação
determinada e limitada do conhecimento humano, são capazes de emitir uma decisão, apoiado
em conhecimento justificado, a partir de uma base de conhecimento, tal qual um especialista
de determinada área do conhecimento humano.
Para tomar uma decisão sobre um determinado assunto, um especialista o faz a partir
de fatos que encontra e de hipóteses que formula, buscando em sua memória um
conhecimento prévio armazenado durante anos, no período de sua formação e no decorrer de
sua vida profissional, sobre esses fatos e hipóteses. E o faz de acordo com a sua experiência,
isto é, com o seu conhecimento acumulado sobre o assunto e, com esses fatos e hipóteses,
23
23
emite a decisão. Durante o processo de raciocínio, vai verificando qual a importância dos
fatos que encontra comparando-os com as informações já contidas no seu conhecimento
acumulado sobre esses fatos e hipóteses. Neste processo, vai formulando novas hipóteses e
verificando novos fatos e esses novos fatos vão influenciar no processo de raciocínio. Um
especialista com esse processo de raciocínio, pode não chegar a uma decisão se os fatos de
que dispõe para aplicar o seu conhecimento prévio não forem suficientes. Pode, por este
motivo, inclusive chegar a uma conclusão errada, mas este erro é justificado em função dos
fatos que encontrou e do seu conhecimento acumulado previamente. Já os sistemas
especialistas tentam imitar os humanos para tomar uma decisão sobre um assunto específico,
possuindo uma base de conhecimento para armazenar o máximo de conhecimento possível
para chegar a conclusões.
A maioria dos sistemas especialistas podem responder perguntas de usuários tais
como: por que, e o que aconteceria se para verificar como as alterações numa entrada pode
afetar os resultados.
Portanto, sistemas especialistas são aplicações da inteligência artificial, planejados
para adquirir e disponibilizar o conhecimento operacional de um especialista humano, além de
inferir conclusões, ter capacidade de aprender novos conhecimentos e, desse modo, melhorar
o seu desempenho de raciocínio, e a qualidade de suas decisões.
Podemos classificar os sistemas especialistas quanto às características do seu
funcionamento. De um modo geral, tais categorias são:
• interpretação: são sistemas que inferem descrições de situações a partir da
observação de fatos fazendo uma análise de dados e procurando determinar as
relações e seus significados. Devem considerar as possíveis interpretações,
descartando as que se mostrarem inconsistentes;
24
24
• diagnósticos: são sistemas que detectam falhas oriundas da interpretação de dados.
A análise dessas falhas pode conduzir a uma conclusão diferente da simples
interpretação de dados. Detectam os problemas mascarados por falhas dos
equipamentos e falhas do próprio diagnóstico, que este não detectou por ter
falhado. Esses sistemas já têm embutidos o sistema de interpretação de dados;
• monitoramento: interpreta as observações de sinais sobre o comportamento
monitorado. Tem de verificar continuamente um determinado comportamento em
limites pré-estabelecidos, sinalizando quando forem requeridas intervenções para o
sucesso da execução. Um sinal poderá ser interpretado de maneiras diferentes, de
acordo com a situação global percebida naquele momento, e a interpretação varia
de acordo com os fatos que o sistema percebe a cada momento;
• predição: a partir de uma modelagem de dados do passado e do presente, este
sistema permite uma determinada previsão do futuro. Como ele baseia sua solução
na análise do comportamento dos dados recebidos no passado, de ter mecanismos
para verificar os vários futuros possíveis, a partir da análise do comportamento
desses dados, fazendo uso de raciocínios hipotéticos e verificando a tendência de
acordo com a variação dos dados de entrada;
• planejamento: neste caso, o sistema prepara um programa de iniciativas a serem
tomadas para se atingir um determinado objetivo. São estabelecidas etapas e sub-
etapas e, em caso de etapas conflitantes, são definidas as prioridades. Possui
características parecidas com o sistema para a predição e normalmente opera em
grandes problemas de solução complexa. O princípio de funcionamento, em alguns
casos, é por tentativas de soluções, cabendo a análise mais profunda ao especialista
que trabalha com esse sistema. Enfoca os aspectos mais importantes e divide de
maneira coerente um problema em sub-problemas menos complexos,
25
25
estabelecendo sempre o relacionamento entre as metas destes subproblemas e a
meta principal;
• projeto: este sistema tem características parecidas com as do planejamento, e
devem-se confeccionar especificações tais que sejam atendidos os objetivos dos
requisitos particulares. É um sistema capaz de justificar a alternativa tomada para o
projeto final, e de fazer uso dessa justificativa para alternativas futuras;
• depuração: trata-se de sistemas que possuem mecanismos para fornecerem
soluções para o mau funcionamento provocado por distorções de dados. Provê, de
maneira automática, verificações nas diversas partes, incluindo mecanismos para ir
validando cada etapa necessária em um processo qualquer;
• reparo: este sistema desenvolve e executa planos para administrar os reparos
verificados na etapa de diagnóstico. Um sistema especialista para reparos segue
um plano para administrar alguma solução encontrada em uma etapa do
diagnóstico. São poucos os sistemas desenvolvidos, porque o ato de executar um
conserto em alguma coisa do mundo real é uma tarefa complexa;
• instrução: o sistema de instrução tem um mecanismo para verificar e corrigir o
comportamento do aprendizado dos estudantes. Normalmente, incorporam como
subsistemas um sistema de diagnóstico e de reparo, e tomam por base uma
descrição hipotética do conhecimento do aluno. Seu funcionamento consiste em ir
interagindo com o treinando, em alguns casos apresentando uma pequena
explicação e, a partir daí, ir sugerindo situações para serem analisadas pelo
treinando. Dependendo do comportamento deste, se vai aumentando a
complexidade das situações e encaminhando o assunto, de maneira didática, até o
nível intelectual do treinamento;
26
26
• controle: é um sistema que governa o comportamento geral de outros sistemas
(não apenas de computação). É o mais completo, de um modo geral, pois deve
interpretar os fatos de uma situação atual, verificando os dados passados e fazendo
uma predição do futuro. Apresenta os diagnósticos de possíveis problemas,
formulando um plano ótimo para sua correção. Este plano de correção é executado
e monitorado para que o objetivo seja alcançado.
2.3.2 Tipos de sistemas especialistas
Existem três tipos de sistemas especialistas, quanto à maneira como a base de
conhecimento é estruturada e, por conseguinte, como funciona o mecanismo de inferência:
• sistemas baseados em regras ou em quadros: estas são formas de representação
baseadas em associações entre conceitos. Normalmente as regras e quadros não
definem relações causa-efeito, mas apenas “receitas” de decisão. O mecanismo de
inferência testa se as regras são verdadeiras para cada caso, e pode combinar várias
regras até chegar a uma decisão com alto grau de probabilidade;
• sistemas baseados em modelos de causa-efeito: o mecanismo de inferência se
baseia em cadeias de relações causais, como por exemplo, se há febre, então há
infecção viral ou bacteriana, então pode tratar-se de uma hepatite;
• sistemas baseados em casos: o mecanismo de inferência utiliza o raciocínio
analógico, como por exemplo, se já tive uma experiência, então vou utilizar o
mesmo procedimento.
Todos os sistemas acima se baseiam em lógica, ou seja, o uso das proposições e
teoremas que consistem o fundamento do raciocínio do tipo verdadeiro / falso.
27
27
2.3.3 Histórico
A fase da revolução computacional que expandiu os sistemas especialistas iniciou no
começo dos anos 80, mais de 10 anos de pesquisa e desenvolvimento foram necessários para
viabilizar sistemas especialistas de modo comercial.
O objetivo dos cientistas de inteligência artificial sempre foi desenvolver programas
que pudessem, em algum sentido, pensar, isto é, resolver problemas de uma maneira que
pudesse ser considerada inteligente se feita por um humano. Os cientistas decidiram que
deveria existir uma outra maneira de tornar um programa “inteligente”, se era muito difícil
fazer um programa de propósitos gerais, eles poderiam se concentrar em desenvolver métodos
e técnicas gerais para usar em programas mais especializados. Desta forma, nos anos 80, os
estudos se concentraram em técnicas de representação - como formular o problema para
tornar a solução fácil - e pesquisa - como controlar a pesquisa para encontrar uma solução
sem gastar muito tempo ou usar muita memória. Novamente essa estratégia produziu alguns
sucessos, mas não a tão esperada inovação.
A partir do final da década de 80, os cientistas de inteligência artificial perceberam que
a capacidade de um programa para solucionar um problema depende do conhecimento que ele
possui, não somente dos formalismos e mecanismos de inferências que ele emprega.
"Para fazer um programa inteligente, abasteça-o com uma grande quantidade de
conhecimento específico e de alta qualidade sobre o problema" (WATERMAN, 1986).
Surgiram então programas com propósitos especiais em alguma área restrita, como por
exemplo, na área de finanças e médica. Estes programas foram chamados de sistemas
especialistas, sendo assim foram frutos de vinte anos de questionamento para definir a
natureza apropriada de tais programas.
28
28
O primeiro sistema especialista chamado DENDRAL, é um sistema interpretador de
análise de espectro de massa útil para análises químicas moleculares. Seguindo-se pelo
MYCIN desenvolvido por uma equipe de médicos e especialistas em inteligência artificial. O
MYCIN contém o conhecimento dos mais destacados especialistas no campo de doenças
infecciosas. Em 1978, foi desenvolvido o XCON pela DEC, que é um sistema especialista
para auxiliar na configuração de computadores de grande porte. E ainda o PROSPECTOR,
utilizado para avaliação de sítios geológicos (HELLER, 1991; LAWRENCE, 1992;
HARMON & KING, 1988). Todos esses sistemas especialistas citados acima foram
desenvolvidos no Instituto de Pesquisas de Stanford. Após este período surgiram diversos
sistemas especialistas nas mais variadas áreas de atuação.
Muitas organizações hoje em dia têm explorado essa tecnologia, ampliando suas
pesquisas e começando a adaptar suas atividades para tanto. Nos Estados Unidos existem
várias tendências no uso dos sistemas especialistas, como por exemplo: ênfase para o
problema de "solução de negócios", crescimento da tendência de sistemas de informação
"ativos", amplas bases de conhecimento e compartilhamento deste conhecimento, necessidade
de fornecer suporte de alto nível para pesquisa em inteligência artificial e uso de metodologias
estruturadas para desenvolvimento de sistemas especialistas. O uso de sistemas especialistas
no Brasil encontra-se em crescimento em diversas áreas. Dentre os sistemas desenvolvidos
pode-se citar: "Análise de crédito bancário", "Análise de hepatopatias crônicas" e "Análise
química qualitativa de minerais”.
2.4 Sistema Convencional X Sistema Especialista
Um sistema convencional está baseado em um algoritmo, que, passo a passo, após um
29
29
tempo aceitável, conduz a uma resposta. Ele é projetado para sempre terminar emitindo um
resultado final correto e processar volumes de dados de maneira repetitiva. Um sistema
especialista está baseado em uma busca heurística e trabalha com problemas para os quais não
existe uma solução convencional algoritmizada disponível ou, se existe, ela é demasiadamente
demorada para fornecer uma resposta.
Um processo heurístico normalmente conduz a soluções de maneira rápida, porém,
pode inclusive não conduzir a solução alguma. Assim, podemos afirmar sobre um sistema
especialista :
• pode chegar ou não a solução do problema;
• pode chegar a uma solução distorcida, isto é, pode errar. Porém, o seu erro ocorre
dentro de determinadas circunstâncias que são justificadas pelo próprio sistema;
• processa conhecimento e não dados. O conhecimento é armazenado em uma base
de conhecimento e os dados são ajustados contra ela. O processamento é feito em
cima desse conhecimento e não existe processamento de dados.
2.5 Conclusão
Mostramos que Inteligência Artificial é uma ciência que busca desenvolver a
capacidade de uma máquina imitar o raciocínio humano, isto é, fazer as máquinas com a
capacidade de raciocinar, perceber, planejar, refletir, aprender e agir.
A inteligência artificial pode ser aplicada em diversas áreas, como resolução de
problemas, linguagem natural e também sistemas especialistas, que são sistemas que tomam
determinadas decisões tendo uma grande base de conhecimento e que hoje em dia estão tendo
um grande destaque em áreas comerciais.
11
A inteligência artificial (IA) inicia sua história em meados dos anos 40, onde já havia
alguma pesquisa em torno de seqüências de estratégia e análise do funcionamento do cérebro
com objetivos de formalização de seu comportamento. Imprescindíveis para o avanço da
inteligência artificial foram os trabalhos dos matemáticos dos séculos XVII à XIX. No século
XIX surge à figura de Alan Turing - que desenvolveu o Teste de Turing, mas só em 1956 é
que a inteligência artificial começa a ser reconhecida como ciência.
O termo inteligência artificial foi introduzido pelo Dr. John McCarty (STANFORD AI
Lab.), em 1956, no Massachusetts Institute of Technology - MIT como título de uma
conferência sobre as possibilidades de fornecer inteligência à máquina. Segundo McCarty:
"Inteligência Artificial é a capacidade de uma máquina realizar funções que se fossem
realizadas pelo ser humano seriam consideradas inteligentes”.
A inteligência artificial é simplesmente uma maneira de fazer o computador pensar
inteligentemente, isto é conseguido estudando como as pessoas pensam quando estão tentando
tomar decisões e resolver problemas, dividindo estes processos de pensamento em etapas
básicas e desenhando um programa de computador que solucione problemas usando essas
mesmas etapas.
Esse assunto hoje em dia ainda é muito delicado, pois existem diversos autores como,
por exemplo, Penrose e Searle que dizem “Máquinas nunca poderão pensar”, eles acreditam
que a inteligência artificial é uma grande “bobeira” e que nunca as máquinas chegaram à
inteligência dos humanos, pois tudo que a máquina faz são os humanos que comandam e
programam o sistema para determinada ação.
É inviável criar um programa de inteligência artificial que cubra qualquer domínio
imaginável, ou seja, domínio significa cobrir áreas de interesse específico para as quais
podemos desenhar um sistema. Existem fatos e regras necessários para se alcançar todos os
objetivos em todos os domínios, que são infinitos, então o que podemos fazer é nos
12
especializarmos em uma área que contém informações suficientes que podem ser moldadas
em um programa de computador. Um sistema de inteligência artificial criado para resolver
problemas em um determinado domínio é chamado de sistemas especialistas, todo o
conhecimento de um sistema especialista é fornecido por pessoas que são especialistas
naquele domínio.
Os sistemas especialistas são projetados e desenvolvidos para atender a uma aplicação
determinada. Um sistema especialista é capaz de emitir uma decisão, apoiado em
conhecimento justificado, a partir de uma base de informações, como um especialista de
determinada área do conhecimento humano. Quando um especialista toma a decisão sobre
determinado assunto, o faz a partir de fatos que encontra e de hipóteses que formula,
buscando em sua memória um conhecimento prévio armazenado durante anos.
Existe um segmento da inteligência artificial chamado sistemas especialistas baseados
em regras, que funcionam essencialmente com regras de negócio que estudam diferentes
fragmentos de conhecimento. Esse sistema estuda cada regra definida e obtém o momento
exato em que serão executadas, ou seja, sempre que existe uma regra com informações
conhecidas em suas premissas ela é disparada e gera uma conclusão.
Como mostra o capítulo 5, a aplicação prática de um sistema especialista baseado em
regra na área financeira, mostra que é possível o sistema concluir para o investidor qual é o
perfil de investimento dividido em três categorias: conservador, moderado ou agressivo, onde
os especialistas buscam propor as opções de investimento mais adequadas ao perfil de um
dado cliente buscando garantir a satisfação do investidor no que se refere à rentabilidade e à
proteção do capital desejado. Esse sistema utiliza-se de perguntas que através da comparação
com as regras faz uma análise das respostas do investidor e toma ações dependendo da
resposta, concluindo qual o tipo de perfil desse investidor.
13
Para implementarmos o sistema especialista baseado em soluções de investimentos,
foram utilizadas informações de duas empresas financeiras, Banco Itaú S/A e InvestShop.
Utilizamos um software de apoio chamado Java Expert System Shell (Jess), que é um script
shell para construção de sistemas especialistas baseados em regras inteiramente desenvolvido
em Java, originalmente baseado na linguagem Clips e que possui vantagens no
desenvolvimento de aplicações permitindo superar algumas das limitações da programação
tradicional.
Os sistemas especialistas baseados em regras têm uma grande importância para todo o
mercado econômico, pois podem ser desenvolvidos em diversas áreas, como por exemplo, na
área médica, comercial, na área administrativa, sendo que essa possui um grande interesse
devido à tomada de decisões rápidas e estratégicas, onde os líderes e gerentes necessitam ter o
máximo de informação possível para que a decisão tomada seja eficiente.
3.3 METODOLOGIAS DE AVALIAÇÃO DE SISTEMAS
ESPECIALISTAS....................................................................................... 48
3.4 VANTAGENS E DESVANTAGENS........................................................ 54
3.5 CONCLUSÃO............................................................................................. 56
4 JESS (JAVA EXPERT SYSTEM SHELL)............................................. 57
4.1 UTILIZAÇÃO DO JESS............................................................................. 57
4.2 COMANDOS PRINCIPAIS DO JESS....................................................... 58
4.2.1 Átomos......................................................................................................... 58
4.2.2 Números e Textos (String)........................................................................... 59
4.2.3 Listas........................................................................................................... 59
4.2.4 Variáveis...................................................................................................... 60
4.2.4.1 Variáveis com Multi-Campos...................................................................... 60
4.2.4.2 Variáveis Globais........................................................................................ 60
4.2.5 Operadores.................................................................................................. 61
4.2.6 Fatos............................................................................................................ 62
4.2.7 Modelos........................................................................................................ 63
4.2.8 Regras.......................................................................................................... 64
4.2.9 Funções....................................................................................................... 65
4.2.10 Operadores de I/O....................................................................................... 65
4.2 ALGORITMO RETE.................................................................................. 66
5 APLICAÇÃO PARA DEFINIÇÃO DE PERFIL DO
INVESTIDOR........................................................................................... 69
5.1 TIPOS DE PERFIS...................................................................................... 70
5.2 DESENVOLVIMENTO DA APLICAÇÃO............................................... 73
5.2.1 Renda........................................................................................................... 74
5.2.2 Econômico................................................................................................... 75
5.2.3 Tolerância à Risco....................................................................................... 77
5.2.4 Investimento................................................................................................ 78
5.3 EXEMPLO DA APLICAÇÃO EM EXECUÇÃO...................................... 81
6 CONCLUSÃO............................................................................................ 85
REFERÊNCIAS......................................................................................... 87
APÊNDICES.............................................................................................. 91
ABSTRACT
Expert System has been used modestly for commercial applications developmentcompared with your useful in engineering, prediction or control. In general, there are fewnumbers of solutions available, like suppliers and products compared with a severalsolutions of application traditional development support. This study shows the use ofexpert systems based in rules in the development of commercial applications. The softwareJess (Java Expert System Shell), a shell of expert system based on Java language, was usedfor the application development to decide what kind of investor the user is, like smallinvestor, medium or high. In this system, the knowledge base allow to deduce throughreceived information by the user, like your actual financial situation, risk tolerance leveland investment propose, the kind of investor are more suitable and profitable. As a result,these expert systems can substitute and complement advantages in the traditionaldevelopment, specially to take decisions about investments, this systems enable moreflexibility in the development and improve some limitation of traditional programming,allowing to extend anything other commercial applications like, sales, financialapplications or process control in the services areas.
Keywords: expert systems; Jess; artificial intelligence.