relatório - engenharia de software · web vieweste trabalho apresenta os principais conceitos e...
TRANSCRIPT
UNIVERSIDADE FEDERAL DE SÃO CARLOSCENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA
DEPARTAMENTO DE COMPUTAÇÃO
INTELIGÊNCIA ARTIFICIAL E OS
SISTEMAS ESPECIALISTAS
AUTORES: Vandor Roberto Vilardi Rissoli
José Augusto Fabri
Heloisa de Arruda Camargo
RT-DC 0_ _ / 99
São Carlos
Julho
1999
INTELIGÊNCIA ARTIFICIAL E OS SISTEMAS ESPECIALISTAS
José Augusto Fabri
Vandor Roberto Vilardi Rissoli
Heloisa de Arruda Camargo
Universidade Federal de São Carlos
Departamento de Computação
C.P. 676 - 13565-905 - São Carlos (SP) - Brasil
e-mail: {fabri, vandor, heloisa } @ dc.ufscar.br
Resumo: Este trabalho apresenta os principais conceitos e características relacionadas
aos Sistemas Especialistas (SE) e aos processos de aquisição e representação do
conhecimento. Um breve acompanhamento histórico da evolução da Inteligência
Artificial (IA) também faz parte deste trabalho.
Palavras chaves: sistemas baseados em conhecimento, sistemas baseados em regras,
sistemas especialistas, aquisição de conhecimento, representação do conhecimento.
SUMÁRIO
INTELIGÊNCIA ARTIFICIAL E OS SISTEMAS ESPECIALISTAS 1
INTRODUÇÃO..................................................................................................................1
INTELIGÊNCIA ARTIFICIAL.............................................................................................1
História da Inteligência Artificial.............................................................................2
Técnicas Utilizadas em Inteligência Artificial..........................................................5
Principais Áreas de Pesquisa da Inteligência Artificial...........................................6
SISTEMAS ESPECIALISTAS..............................................................................................6
Estrutura dos Sistemas Especialistas........................................................................7
Base de Conhecimento..........................................................................................9
Máquina de Inferência...........................................................................................9
Interface de Aquisição.........................................................................................10
Interface de Usuário............................................................................................10
Características Básicas dos Sistemas Especialistas...............................................11
Ênfase no Conhecimento.....................................................................................11
Engenharia do Conhecimento..........................................................................12
Aquisição do Conhecimento............................................................................13
Análise do Conhecimento................................................................................14
Representação do Conhecimento....................................................................14
Heurística.............................................................................................................19
Manipulação de Símbolos...................................................................................21
Categorias Gerais dos Sistemas Especialistas........................................................21
Diferenças entre os Sistemas Especialistas e os Sistemas Convencionais..............23
Desenvolvimento de Sistemas Especialistas............................................................25
Análise do Problema............................................................................................26
Seleção de Estratégias para os Sistemas Especialistas........................................27
Validação e Teste do Sistema Especialista..........................................................28
Disponibilização do Sistema Especialista...........................................................29
REFERÊNCIAS BIBLIOGRÁFICAS 30
LISTA DE FIGURAS
Figura 1 - Representação dos SE em relação aos SBC.....................................................7
Figura 2 - Estrutura dos Sistemas Especialistas................................................................8
Figura 3 - Representação das subestruturas dos Sistemas Especialistas...........................8
Figura 4 - Exemplo de encadeamento direto ou para frente............................................17
Figura 5 - Exemplo de encadeamento reverso ou para trás.............................................19
Figura 6 - Representação resumida das tarefas necessárias para o desenvolvimento dos
SE............................................................................................................................26
LISTA DE TABELAS
Tabela 1 - Características básicas dos SE........................................................................11
Tabela 2 - Regras utilizadas no exemplo da Figura 4.....................................................17
Tabela 3 - Outras diferenças entre os SE e os sistemas convencionais...........................24
Tabela 4 - Comparação entre as linguagens de programação e as shells........................27
INTELIGÊNCIA ARTIFICIAL E OS SISTEMAS ESPECIALISTAS
Introdução
A Inteligência Artificial (IA) é uma área da Ciência da Computação que tem por
objetivo estudar e desenvolver métodos, técnicas e programas que permitam ao
computador efetuar tarefas consideradas inteligentes, quando executadas por seres
humanos [30].
O termo Inteligência Artificial aparece em quase todos os campos do
conhecimento, e os sistemas de IA surgem como uma alternativa para a solução de
problemas difíceis e mal estruturados, que não puderam ser satisfatoriamente resolvidos
por meio dos métodos empregados pela computação convencional.
Os Sistemas Especialistas (SE) podem ser vistos como uma área de
conhecimento da IA [09]. Eles são sistemas de computadores capazes de representar e
“raciocinar” sobre o conhecimento de um domínio específico, procurando resolver
problemas ou aconselhar profissionais que tenham o poder de decisão [15].
Além do sucesso acadêmico e científico, os SE tem sido a solução para muitos
problemas na área comercial e industrial, justificando com isso, o seu sucesso também
no mercado de softwares, onde o surgimento de empresas especializadas no
desenvolvimento deste tipo de sistema vêm crescendo [21].
Inteligência Artificial
A evolução da IA ao longo do tempo, apresenta pelo menos o envolvimento de
três linhas de pesquisas: a linha biológica, filosófica e psicológica. A linha biológica
procura estudar e representar o funcionamento “mecânico” do cérebro [25], enquanto
que a linha filosófica encontra uma nova maneira de conceber o problema das relações
da mente com o corpo, além das novas perspectivas de estudos que reflitam sobre a
1
natureza dos problemas da filosofia e da psicologia. A linha psicológica concentra-se
no estudo da cognição do raciocínio, permitindo a construção de programas
computacionais que simulem aspectos da percepção humana, melhorando a
compreensão do funcionamento e da natureza dos processos psicológicos envolvidos na
percepção visual, lingüística e em outras atividades mentais humanas [34]. Além
destas três áreas, inclui-se ainda, a IA que procura desenvolver projetos que capacitem
os computadores a realizar tarefas similares as executadas pelo cérebro, conferindo a
estas máquinas a capacidade de “raciocinar”, tornando-as “inteligentes”.
A IA tem o reconhecimento como uma parte da Ciência da Computação a partir
da Segunda Guerra Mundial, com a idéia de construir uma máquina pensante ou uma
criatura artificial que imitasse as habilidades humanas. Porém esta idéia é muito antiga,
onde os primeiros registros de criaturas artificiais com habilidades humanas têm uma
forma mítica ou por vezes lendária, tornando difícil uma separação nítida entre
imaginação e realidade. Apesar disto, as condições técnicas para estas realizações são
recentes, o que faz aumentar a confusão entre o mito e a realidade, e algumas vezes, a
impossibilidade de distingui-los, fazendo com que a IA possa ser considerada uma
ciência com um extenso passado, mas com uma história relativamente curta [34].
História da Inteligência Artificial
Na década de 40, a necessidade de avanços tecnológicos disponibilizava
recursos financeiros para o desenvolvimento de mecanismos bélicos, pois com a
Segunda Guerra Mundial, havia um grande investimento em dispositivos de morte em
massa. Por meio destes investimentos foram desenvolvidos os computadores. Na
linha biológica eram alcançados avanços por meio de pesquisas realizadas com
prisioneiros de guerra, onde partes do cérebro sofriam intervenções médicas no intuito
de se descobrir como ele funcionava. Surgiram então os pesquisadores interessados em
realizar a representação das células nervosas dos seres humanos em computadores,
motivando com isso, o desenvolvimento de uma formalização matemática para o
neurônio [25],[34].
2
Na década de 50 foram estabelecidos os fundamentos da IA, que incluíam a
lógica matemática e a teoria das funções recursivas. Na linha de pesquisas
psicológicas, os pesquisadores começaram a se preocupar com o estudo do processo de
raciocínio humano (processo cognitivo), além do processo de tomada de decisão em
termos de regras e fatos condicionais. Para isso, utilizavam-se de técnicas de
modelagem por meio de regras de produção, regras estas baseadas na lógica de
predicados. Os fatos marcantes desta época foram: (i) o desenvolvimento de um
programa que provava teoremas (“Logic Theorist”) por meio das suas demonstrações;
(ii) a introdução da programação por meio de comandos de lógica de predicados que
proporcionou um grande avanço para a programação de sistemas que utilizassem
esquemas de raciocínio; (iii) o desenvolvimento da linguagem LISP (“List Processing”)
[37] que fornece um interpretador para desenvolver expressões simbólicas recursivas.
Na linha biológica o grande sucesso foi a implementação do primeiro simulador de
redes neurais artificiais e do primeiro neurocomputador [03],[25],[34].
Na década de 60 os pesquisadores procuraram simular o complexo processo de
raciocínio, na tentativa de desenvolver métodos gerais (“senso comum”), que poderiam
ser igualmente bem aplicados a diferentes problemas, em diferentes áreas. Com as
dificuldades para se desenvolver programas de propósito geral, aumentou-se a pressão
para se produzir resultados práticos, fazendo com que os pesquisadores passassem a se
concentrarem no desenvolvimento de métodos e técnicas gerais para serem usados em
problemas específicos. Muita atenção foi despendida para com a utilização de regras
heurísticas. Na linha biológica, prosseguiram os desenvolvimentos de conceitos
relativos às redes neurais artificiais, com o aprimoramento do modelo existente. Para a
linha psicológica, esta década foi a descoberta da IA, onde utopicamente os
pesquisadores acreditavam ser possível realizar tarefas humanas, tais como o
pensamento e a compreensão da linguagem natural por meio dos computadores. Porém
os objetivos almejados não estavam sendo alcançados, e as críticas atacavam a falta de
sustentação matemática dos modelos, principalmente das redes neurais [03],[25].
A década de 70 começa com a linha biológica tendo o seu período mais “negro”,
após as duras críticas do final da década de 60, como por exemplo as apresentadas em
[39]. Apesar disto, nesta mesma década (70), pesquisadores conseguiram, por outros
caminhos, chegar a algumas novas concepções sobre as redes neurais artificiais. Estas
3
novas concepções permitiram o nascimento das redes neurais representadas na forma de
mapas cerebrais, onde o aprendizado era de toda a rede e não de um neurônio. Já na
linha psicológica, estudos mais aprofundados demonstravam que não seria possível a
representação dos estados mentais humanos de pensamento em uma máquina, ao menos
naquele estado da tecnologia. A descoberta mais importante aconteceu no final da
década, quando os pesquisadores perceberam que a capacidade de imitar
comportamento inteligente em um programa, depende muito mais do conhecimento que
ele possui, do que dos formalismos ou esquemas de inferência que ele utiliza. Com
isso, a nova estratégia enfatizava que qualquer que fosse o conhecimento a ser
analisado, era evidente que não poderia ser de “senso comum”, pois se reconhecia que
era mais fácil extrair e representar um conhecimento especializado. Mais crucial
porém, passou a ser a concepção de que o conhecimento e as regras heurísticas são
específicos para certos domínios, não sendo intercambiávies entre eles. Assim
surgiram os SE que deveriam buscar soluções para problemas restritos, ou seja,
problemas normalmente sujeitos à consideração de especialistas humanos [03],[25].
Na década de 80 ampliavam-se as técnicas e aplicações dos sistemas
especialistas que atingiram um sucesso comercial e industrial, além de surgir o interesse
de trabalho conjunto com outras áreas, tais como: interfaces inteligentes, sistemas de
apoio à decisão e o controle de robôs. O projeto envolvendo redes neurais consegue
seu reconhecimento como linha de pesquisa, recuperando o seu prestígio [25].
A década de 90 consolidou as redes neurais como parte integrante do estudo da
IA propriamente dita, tanto foram as aplicações desenvolvidas, as propostas de novos
modelos e o aperfeiçoamento dos modelos já existentes. Reconhece-se também, que os
paradigmas biológico e psicológico são complementares e necessários para os sistemas
mais evoluídos de IA, formando assim os chamados Sistemas Híbridos, que consistem
na união destas duas linhas de pesquisa para a construção de grandes sistemas que
pretendem abranger uma forma mais completa de representação do comportamento
humano [25].
No decorrer da sua história, a IA enfrentou também problemas no campo
filosófico, pois as suas realizações não deixaram de chamar a atenção dos filósofos, que
perceberam que muitos de seus conceitos e idéias teriam de ser revistos. Os progressos
4
da IA tiveram um impacto muito grande nas concepções habituais que se tem da mente
humana, sendo este fato, imediatamente, notado por aqueles que têm preocupações
filosóficas e religiosas [34].
Recentemente o termo Inteligência Computacional tem sido utilizado para
referenciar um enfoque diferente da IA tradicionalmente simbólica, concentrando as
suas pesquisas em métodos avançados de processamento de informações. Seus
principais componentes são: redes neurais, conjuntos fuzzy e a computação
evolucionária [40].
Técnicas Utilizadas em Inteligência Artificial
A inteligência requer conhecimento, que por sua vez apresenta algumas
características de difícil tratamento. Além de ser indispensável para solução de
problemas em IA, o conhecimento também é: (i) volumoso; (ii) difícil de ser
caracterizado com precisão; (iii) está em constante mutação.
As técnicas de IA devem ser projetadas de acordo com as restrições impostas
pelos problemas de IA, mantendo um certo grau de independência entre os problemas e
as suas técnicas de resolução. Com isso, pode-se concluir que as técnicas de IA
procuram explorar o conhecimento que deve ser representado de modo que se possa:
(i) capturar as generalizações, permitindo que situações que partilhem de propriedades
importantes sejam agrupadas, economizando memória e tempo de atualização; (ii) ser
compreendido por pessoas que precisam supri-lo, embora para muitos programas a
maior parte dos dados possa ser adquirida automaticamente; (iii) ser facilmente
modificado para corrigir erros e para refletir mudanças no mundo e na sua visualização;
(iv) ser utilizado em muitas situações, mesmo quando não totalmente preciso ou
completo; (v) ser utilizado para superar seu próprio volume, ao ajudar a diminuir a
faixa de possibilidades que devem ser consideradas [29].
Principais Áreas de Pesquisa da Inteligência Artificial
5
A IA há muito deixou de ser uma ciência de laboratório em pequena escala e
transformou-se em um sucesso tecnológico e industrial [07]. A meta principal dela é a
emulação de todo e qualquer comportamento humano que ainda não tenha sido
automatizado, tendo como sua pesquisa básica a preocupação com as áreas de
comportamento inteligente [17]. Atualmente, as principais pesquisas que estão sendo
conduzidas na área de IA são: processamento de linguagem natural, robótica, redes
neurais, algoritmos genéticos, reconhecimento de padrões, sistemas baseados em
conhecimento, onde inclui-se os SE, aperfeiçoamento de interfaces, programação
explanatória, além de uma diversidade de lógicas matemáticas, formas de representação
e aquisição do conhecimento e tratamento de incertezas [09], [17],[20],[29],[30].
Sistemas Especialistas
Os Sistemas Baseados em Conhecimento (SBC) e os SE tem sido tratados como
sinônimos, porém têm significados diferentes [35]. Os SBC compreendem um
conjunto de sistemas muito maior que os SE, apesar de serem equivocadamente
chamados de SE. Esta confusão advém do fato de que ambos são organizados da
mesma forma, ou seja, o conhecimento do problema esta armazenado separadamente
dos outros componentes dos sistemas [04]. Na verdade, os SE constituem um
subconjunto dos SBC, como pode ser visto na Figura 1, enquanto que o inverso não é
verdadeiro. As principais diferenças entre os SE e os SBC são: (i) a especialização do
conhecimento [35]; (ii) a aplicação deste conhecimento na resolução de problemas
reais de relativa complexidade [03].
Figura 1 - Representação dos SE em relação aos SBC.
A definição conceitual dos SE, assim como de seus componentes, ainda
apresentam algumas distinções entre os pesquisadores. A evolução acelerada deste tipo
6
de sistema, com certeza, contribuiu muito para o surgimento destas variações. Em [02],
[04],[06],[09],[10],[15],[21],[23] e [24] são apresentadas algumas definições conceituais
sobre os SE, onde podem ser observadas algumas destas variações, porém todas as
definições compartilham de que os SE são sistemas computacionais destinados a
representar e usar o conhecimento de um ou mais especialistas humanos sobre um
determinado domínio. A essência de um SE pode tornar-se mais aparente por meio de
alguns atributos como: (i) o sistema possui o conhecimento específico separado dos
métodos de solução do problema; (ii) a transferência interativa de conhecimentos pode
minimizar o tempo necessário para a transferência de conhecimento do especialista para
a base de conhecimento; (iii) a estratégia de controle deve ser simples e transparente ao
usuário, permitindo que este compreenda e perceba os efeitos da adição, alteração e
remoção de itens da base de conhecimento [18].
Estrutura dos Sistemas Especialistas
Vários são os modelos que procuram representar a estrutura de um SE ([04],
[11],[15],[16],[17],[19] e [21]), porém o modelo apresentado em [31] possui uma
caracterização completa e mais simples, permitindo que ele possa ser utilizado neste
trabalho. A Figura 2 mostra a interação dos componentes da estrutura dos SE.
Figura 2 - Estrutura dos Sistemas Especialistas.
7
A representação da Figura 2 mostra os componentes básicos para a criação de
um SE. Estes componentes são: (i) base de conhecimento; (ii) máquina de
inferência; (iii) interface de aquisição; (iv) interface de usuário. Afim de identificar
algumas características principais destes componentes, repartiu-se a estrutura dos SE em
duas subestruturas básicas, as quais estão identificadas na Figura 3.
Figura 3 - Representação das subestruturas dos Sistemas Especialistas.
A subestrutura de armazenamento possui componentes destinados ao
armazenamento do conhecimento, enquanto que a subestrutura de consulta preocupa-se
com os métodos de interação com o conhecimento, procurando resolver os problemas
apresentados.
Base de Conhecimento
A base de conhecimento (BC) é o componente responsável pelo armazenamento
do conhecimento na forma de um dos chamados esquemas de representação do
conhecimento, como por exemplo as regras, frames, redes semânticas ou a própria
lógica [31],[33]. O esquema de representação de regras, ou regras de produção, é o
8
mais comum, utilizado na grande maioria dos SE em uso atualmente. A principal
dificuldade para formação deste componente é a identificação de qual o conhecimento
que precisa ser adquirido e como representa-lo dentro do sistema [03]. Essas atividades
são desenvolvidas durante a chamada Aquisição de Conhecimento, uma etapa crucial no
desenvolvimento de SE. Para um SE o conhecimento a ser adquirido deve corresponder
a um certo domínio, utilizando uma representação adequada para este domínio [26].
Portanto, a BC contém conhecimentos específicos sobre um domínio, sendo este
componente mantido separado do resto do sistema [01].
Máquina de Inferência
A inferência em IA refere-se a vários processos em que programas, de uma
forma similar às pessoas, procuram chegar a conclusões, ou gerar novos conhecimentos
a partir de fatos, suposições e conhecimento já estabelecido [35].
A máquina de inferência (MI), também conhecida como motor ou mecanismo de
inferência, consiste nos procedimentos gerais que permitem a manipulação de um
domínio específico de conhecimento [13]. Com a separação deste módulo do restante
do sistema, a manutenção para os procedimentos da inferência podem acontecer de
maneira mais fácil, como apresentado em [01]. Portanto, a MI é o conjunto de
procedimentos que interagem com a base de conhecimento em busca de resultados
satisfatórios. Esta busca pode ser entendida como o processo de transformar uma
situação dada (estado inicial) em uma situação desejada (estado final), usando um
conjunto de operadores. Neste sentido, o processo para resolver problemas resume-se
em encontrar a seqüência de operadores que levem do estado inicial ao estado final [29].
A MI é a responsável pela representação da forma de raciocínio de um especialista
humano. Existem várias formas de representar este tipo de raciocínio, mas o método
mais comum é o da avaliação de regras [21], usando para derivar conclusões, os
processos de encadeamento progressivo (para frente) ou regressivo (para trás) [29].
Interface de Aquisição
9
A interface de aquisição é o componente do SE que permite que o especialista
defina e manipule as regras, de forma que sejam feitas atualizações, além da construção
inicial do sistema. Estas atualizações podem ser manutenções em regras já existentes
ou a adição de novas regras para o tratamento de novos conhecimentos do mesmo
domínio [12].
Interface de Usuário
A interface de usuário é o componente que permitirá a interação do usuário do
sistema com o próprio sistema. É por meio dela que o usuário poderá utilizar o
conhecimento armazenado na BC e obter explicações referentes as decisões e as linhas
de raciocínio que o sistema usa para alcançar uma conclusão [12],[21]. A forma de
interação, assim como a interface de comunicação com o usuário são, normalmente,
responsáveis por um alto grau de satisfação do usuário para com o sistema. Portanto, é
um componente que deve ser elaborado de forma eficiente, mas mantendo sempre a
preocupação com a compreensão do usuário [04].
Características Básicas dos Sistemas Especialistas
Os SE possuem características específicas quanto aos seus aspectos estruturais e
suas propriedades de identificação e aplicação no desenvolvimento prático e na
representação teórica. Algumas destas características estão enunciadas na Tabela 1,
porém as mais importantes serão analisadas com mais detalhes a seguir.
Ênfase no Conhecimento
O processo de construção de um SE exigia uma grande interação entre quem
está construindo o sistema e um, ou mais, especialistas humanos em alguma área
específica do conhecimento. O construtor, às vezes chamado de engenheiro do
conhecimento, procurava absorver dos especialistas os procedimentos, estratégias e
heurísticas que eles utilizavam na solução de problemas, para incorporar este
10
conhecimento nos SE. Com o avanço da tecnologia e o aumento na utilização deste
tipo de sistemas foram desenvolvidas técnicas e métodos que permitiam uma interação
menor com os especialistas, mas com maior organização e direcionamento na busca do
conhecimento desejado [21].
Como a formação da base de conhecimento é o aspecto mais importante dos
SBC [29], estas técnicas e métodos constituíram-se de um ferramental muito importante
para a Engenharia do Conhecimento.
Tabela 1 - Características básicas dos SE.
Item Característica01 Manter o alto nível de conhecimento para ajudar na solução de problemas [07],
[11]
02 Contemplar as atividades relacionadas ao conhecimento, desde a sua aquisição
até a sua representação [03],[07],[15],[26],[35]
03 Fornecer explicações referentes as conclusões alcançadas ou as linhas de
raciocínio utilizadas para alcançar uma possível conclusão [07],[11]
04 Formar uma memória institucional, por meio da definição da proficiência de
um SE pelo corpo de conhecimento deste sistema [07],[11]
05 Ser Flexível, pois a separação da BC dos métodos de inferência, facilitam a
atualização, visualização e compreensão do conhecimento, além da codificação
dos métodos que não possuem o conhecimento implícito nos códigos [01],[07]
06 Utilizar regras heurísticas [11]
07 Interagir com os usuários humanos utilizando linguagem natural [11]
08 Manipular e raciocinar sobre as descrições simbólicas [03],[11]
09 Funcionar com informações incompletas e dados incertos [11]
10 Possuir um desempenho comparável com um especialista humano em termos
de velocidade, confiabilidade e acuracidade de suas recomendações [03],[11]
Engenharia do Conhecimento
11
A Engenharia do Conhecimento compreende a aquisição e representação do
conhecimento. As maiores dificuldades encontradas no desenvolvimento dos SE
concentram-se nesta área. O engenheiro do conhecimento é o indivíduo que têm como
objetivo extrair o conhecimento do especialista, ou especialistas, da literatura
correspondente, de manuais técnicos, ou de outras fontes, para montar a base de
conhecimento do domínio especificado [26].
Na Engenharia do Conhecimento existem duas abordagens diferentes: (i) uma
mais psicológica, que procura elaborar sistemas que imitem as ações do especialista,
onde a maior parte do conhecimento modelado resulta do processo mental interno do
próprio especialista; (ii) baseada em modelos, que faz uso das características de tarefas
bem conhecidas, tais como: diagnosticar, interpretar, depurar, etc., para elaborar
sistemas, onde uma parte do conhecimento modelado vêm das características destas
tarefas [07].
As principais atividades relacionadas a formação do SE são os processos de
aquisição e representação do conhecimento [04].
Aquisição do Conhecimento
A aquisição do conhecimento é apontada na literatura especializada como uma
das atividades mais críticas para o desenvolvimento de SBC [04],[21],[24],[29]. É
nesta atividade que a propensão de erros e o consumo de tempo são maiores. Ela pode
ser entendida como o processo de compreensão do raciocínio baseado no conhecimento
do especialista humano [21].
O conhecimento consiste na soma das percepções de um indivíduo sobre os
aspectos do universo do discurso em um tempo particular, onde este universo do
discurso corresponde a um domínio específico [35]. Em essência, o conhecimento
compõe-se de fatos, idéias, conceitos ou soluções obtidas por meio do estudo,
investigação, observação ou experiência [03].
12
O conhecimento para os SBC podem ser obtidos de várias fontes, tais como:
livros, estudos de casos, relatórios, dados empíricos, processos de aprendizagem de
máquina e da própria experiência de especialistas. Uma das possíveis formas de se
agilizar a construção deste tipo de sistema é por meio da investigação e
desenvolvimento de métodos mais efetivos de aquisição de conhecimento. Atualmente,
existe a tendência da incorporação de módulos que realizam aquisição automática de
conhecimento, por meio da implementação de métodos de aprendizado de máquina
[27].
A principal dificuldade na aquisição de conhecimento está na identificação de
qual o conhecimento necessário, e em como sistematizá-lo em um processo lógico para
solução de um problema. As atividades de análise e representação do conhecimento
procuram, respectivamente, atenuar estas dificuldades. Observe, por exemplo, o caso
de um especialista humano, do qual é possível obter o conhecimento, por meio de uma
interação direta, ou mesmo utilizando outras técnicas e meios onde serão apresentados
tipos de problemas reais que o sistema especialista será projetado para resolver.
Contudo, isto não garante que os resultados desejados serão obtidos, porque os
especialistas, normalmente, têm grande dificuldade em explicar o processo de raciocínio
que empregam na solução de problemas [21]. Portanto, a construção da BC deve ser
feita de forma a mesclar os procedimentos de aprendizado de máquina com as outras
técnicas [07] e métodos de aquisição de conhecimento [26], pois a interação do
engenheiro do conhecimento em conjunto com o especialista, permitirá o refinamento
no funcionamento do SE [35].
Análise do Conhecimento
A análise do conhecimento consiste na habilidade de perceber o campo de ação
do SE a ser desenvolvido, procurando com isso, selecionar o conhecimento relevante,
extraído pelo processo de aquisição. A análise ocorre em conjunto com a aquisição,
procurando elucidar, do conhecimento adquirido, somente o conhecimento que será
utilizado pelo sistema. O conhecimento sobre o domínio do problema pode-se
constituir de fatos que expressam proposições válidas, crenças que expressam
13
proposições plausíveis e regras heurísticas que representam valores ou julgamentos para
certas situações onde algoritmos estabelecidos nem sempre se aplicam [15],[21].
Na atividade de aquisição de conhecimento deve-se utilizar processos formais
para acompanhar o trabalho de investigação e levantamento do conhecimento, pois
existe uma grande dificuldade em extrair conhecimento dos especialistas. Em alguns
casos o especialista não sabe, realmente, explicar, ou mesmo ensinar, como consegue
chegar a determinada conclusão.
Representação do Conhecimento
A representação do conhecimento é um significativo campo entre a IA e a
ciência cognitiva, que está preocupada com o modo que as informações podem ser
armazenadas no cérebro humano e em estruturas de dados, com o propósito da
utilização da computação simbólica (manipulação de símbolos) [15].
Existem várias técnicas de representação do conhecimento que podem ser usadas
isoladamente ou em conjunto com outras na construção dos SBC [35]. Cada uma
destas técnicas dá ao sistema diferentes medidas de desempenho, e podem torná-lo mais
eficiente, mais fácil de ser entendido ou de ser atualizado [04]. As técnicas mais
utilizadas nos SE atuais são: (i) lógica de predicados; (ii) frames; (iii) redes
semânticas; (iv) regras de produção. Descrições detalhadas de todas estas técnicas
podem ser encontradas em [04], [23], [30]. Entre todas estas técnicas a mais popular é
a avaliação por regras de produção que constituem-se em um modo formal de
representar recomendações, diretrizes, estratégias, situações ou ações [07],[15],[26],
[29]. Quando o conhecimento é representado em forma de regras, os SE passam a ser
usualmente chamados de Sistemas Baseados em Regras (SBR) [04]. Por estes motivos,
a avaliação por regra será apresentada com mais detalhes no decorrer deste trabalho.
As regras de produção são, de uma maneira geral, um mecanismo de
comparação de seqüências de caracteres com padrões, onde esta comparação pode ser
ajustada para outras atitudes serem tomadas (condição-ação), buscando novas regras ou
fazendo um outro encaminhamento, até se atingir um determinado objetivo [04].
14
As regras são expressas por meio de cláusulas SE-ENTÃO (IF-THEN),
representando que ação deve resultar, quando uma determinada situação ocorrer [14].
O acontecimento de uma situação é verificado pela parte condicional da regra (parte
SE), enquanto que a ação resultante está na parte consequente da regra (parte ENTÃO).
Por exemplo:
SE <situação ocorrer>
ENTÃO <executar a ação resultante>
Também podem ser empregados os conectivos, tais como o E ou o OU lógico.
Por exemplo:
SE <situação ocorrer>
E <outra situação ocorrer>
ENTÃO <executar a ação resultante>
A grande popularidade desta técnica de representação deve-se, basicamente, a
sua facilidade de compreensão e aplicação, além dos aspectos de modularidade e
uniformidade. A modularidade assegura que qualquer regra pode ser adicionada,
removida ou modificada independentemente das demais, enquanto que a uniformidade
assegura que todas as informações são codificadas dentro da rígida estrutura das regras,
o que permite que elas sejam facilmente compreendidas por outra pessoa ou outra parte
do sistema [04]. Em [22] é apresentada uma classificação dos tipos de regras, de
acordo com a sua origem e função.
O interpretador de regras pode ser visto como um processo recursivo que
seleciona e executa regras aplicáveis no estado corrente do sistema. Esta ação,
normalmente, resulta em uma modificação da BC, reiniciando a fase de seleção
novamente. Esta alternação entre a seleção e execução é um elemento essencial da
arquitetura dos SE, conhecida como estratégia de inferência. Este interpretador é a
origem das muitas variações encontradas em torno de diferentes sistemas. Ele é quem
vai controlar a ordem em que as regras são disparadas e resolver os conflitos se mais de
uma regra for aplicável [35].
15
Assim como as regras são as mais populares formas de armazenamento de
conhecimento especializado, o disparo e encadeamento de regras é a técnica de
inferência mais comum de ser utilizada para encontrar uma conclusão [17]. O
encadeamento de regras pode ocorrer pela aplicação de duas estratégias diferentes,
conhecidos como: (i) encadeamento direto, também chamado de encadeamento para
frente, raciocínio antecedente, forward, data-driven, bottom-up; (ii) encadeamento
reverso, também chamado de encadeamento para trás, raciocínio consequente,
backward, goal-driven, top-down.
O encadeamento direto parte dos estados iniciais, ou seja, dos fatos, e com base
nas regras de conhecimento, deduz outras asserções, procurando chegar à solução do
problema [35]. Neste encadeamento são fornecidos dados sobre um problema ou uma
situação, onde estes dados serão comparados com a parte condicional das regras
relevantes, para determinar a aplicabilidade da regra à situação atual. Uma regra é
selecionada pelo interpretador que a aplica, alterando a memória de trabalho. A parte
consequente da regra selecionada atualiza a memória de trabalho fazendo com que a
parte condicional de outras regras sejam candidatas à nova avaliação. Este processo
continua até que não haja nenhuma regra cuja parte condicional seja satisfeita, ou então,
até que uma conclusão tenha sido atingida [04].
Observe na Figura 4 o exemplo que tem como fatos conhecidos a ocorrência de
A, C e E, onde A é o estado inicial. Procura-se uma solução satisfatória para A que
pode ser F, G ou H. Com uma cadeia de inferência que parte do estado A e consegue
chegar ao estado F, pode-se concluir que este problema têm uma solução possível
utilizando o encadeamento direto.
16
Figura 4 - Exemplo de encadeamento direto ou para frente.
Acompanhe a execução deste processo de inferência utilizando as regras
contidas na Tabela 2. A verificação da veracidade da regra 01 altera a situação da
memória para a validade de B que em seguida valida a regra 02 e assim por diante, até
chegar a F com a regra 03. A execução da regra 04 não foi necessária, pois a solução F
é satisfatória ao problema apresentado.
Tabela 2 - Regras utilizadas no exemplo da Figura 4.
Número Regra01 SE A ENTÃO B
02 SE B e C ENTÃO D
03 SE D e E ENTÃO F
04 SE F e G ENTÃO H
O encadeamento direto tende a gerar vários estados intermediários, pois algumas
das regras que são executadas não têm relação com o problema em questão. Apesar
disto, esta estratégia é muito apropriada em situações em que o objetivo não pode ser
facilmente especificado.
Um método alternativo para o encadeamento direto é o encadeamento reverso.
A idéia desta estratégia é usar somente as regras que são relevantes ao problema em
questão [35]. A principal diferença entre as duas estratégias é que o encadeamento
17
reverso assume que uma conclusão (estado final) é verdadeira, passando a utilizar a
parte condicional das regras para provar esta conclusão, conforme apresentado na
Figura 5. Para provar a veracidade da parte condicional de uma regra (premissa),
procura-se uma regra que tenha esta premissa como uma de suas conclusões. Se tal
regra for encontrada, repeti-se o processo, encadeando também suas premissas para trás.
Este processo termina quando não houverem mais regras para serem avaliadas [17].
O encadeamento reverso é sempre um bom candidato para a estratégia de
inferência, quando se pode supor com razoável certeza qual será a conclusão, pois pelo
menos duas razões são evidentes para isso: (i) o fato do encadeamento lógico ser tão
certo e direto quanto possível na BC; (ii) a inquisição feita pelo usuário está
concentrada no objetivo que se quer provar [17].
Figura 5 - Exemplo de encadeamento reverso ou para trás.
Muitos sistemas têm utilizado a combinação das duas estratégias, o que têm sido
chamado de encadeamento sideways. Este encadeamento associa um valor para cada
item de evidência. O valor desta regra no processo de inferência indaga primeiro às
questões com os valores mais altos. Alguns sistemas também podem utilizar uma das
formas de encadeamento e depois a outra, como o MYCIN [29], que consiste de um
sistema que diagnostica doenças infecciosas usando o encadeamento reverso para
descobrir que organismos estão presentes, e depois se utiliza do encadeamento direto
para encontrar o regime de tratamento [04].
18
Os fatos e conclusões dos SE não são sempre do tipo verdadeiro ou falso.
Algumas vezes existe uma incerteza associada à validade do fato ou a acuracidade da
regra, o que faz com que a representação do conhecimento se preocupe com a
estruturação do conhecimento incompleto ou incerto [04]. Existem várias
possibilidades para se trabalhar com estes tipos de conhecimento, tais como: o Fator de
Certeza [35], Lógica Fuzzy [05],[19],[38], Teoria de Bayes [32], entre outros.
Heurística
O desempenho do ser humano na realização das suas atividades diárias está
relacionado com o uso hábil de uma enorme quantidade de experiências do dia a dia. O
aprendizado, a partir das experiências, acontece de forma bastante inconsciente. Por
exemplo: aprende-se a falar uma língua por intermédio da comunicação com os outros,
ou aprende-se a realizar tarefas por tentativas, às vezes com sucesso, às vezes falhando.
Em muitos casos, o conhecimento adquirido por meio dessas experiências não é sólido,
mas sem dúvida está num formato de regras práticas, que são armazenadas em algum
lugar, para serem usadas quando forem relevantes a uma nova situação [17].
Essas regras práticas são chamadas de heurísticas, no linguajar de IA, e
representam o suporte principal do conhecimento que se tenta armazenar para o uso em
alguns tipos de sistemas (interpretador de linguagem natural, sistemas especialistas,
robôs, etc...) [17]. O uso da heurística consiste então, em uma técnica que procura
melhorar a eficiência de um processo de busca ao sacrificar idéias de perfeição, não
podendo garantir que a melhor resposta será a encontrada, mas quase sempre retorna
uma resposta boa. Existem algumas evidências de que as pessoas, quando resolvem
problemas, não procuram necessariamente a solução ótima. Em outras palavras, elas
buscam alguma solução que satisfaça algum conjunto de exigências, e tão logo
encontrem uma, se aquietam. Com a aplicação desta técnica, também consegue-se
afastar das explosões combinatórias, pois são empregadas regras heurísticas para
diminuir o espaço de busca, aumentando a eficiência do processo [29].
19
A obtenção de tais heurísticas, a partir de uma pessoa, e seu armazenamento em
um computador esta vinculado ao processo de aquisição do conhecimento. As
dificuldades na realização deste processo começam a ficar evidentes, quando o
conhecimento de um ser humano inteligente é considerado, na verdade, a somatória de
toda a sua experiência de vida. Por conseguinte, para se ter uma máquina emulando de
maneira segura e completa as atividades de uma determinada pessoa, seria necessário
que ela obtivesse “toda” a experiência de vida desta pessoa [17].
Em todo caso, uma máquina emulando o raciocínio de uma pessoa é o tipo de
trabalho que se tenta realizar em alguns SBC, onde o processamento humano
inteligente, muito se baseia em informações casuais armazenadas como regras
heurísticas [17].
Manipulação de Símbolos
Os especialistas, na primeira abordagem de um problema, procuram resolve-lo
sem a utilização de um conjunto de equações, ou mesmo pela execução de cálculos
complexos. Ao invés disso, eles usam símbolos para representar os conceitos do
problema, e aplicam, normalmente, várias estratégias e heurísticas para manipular esses
conceitos [03].
Os SE também utilizam a representação e a manipulação de símbolos, onde
caracteres são relacionados a algum conceito prático, que quando combinados em uma
lógica, conseguem expressar relações entre eles ([11],[15]), tornando-se peças de
evidências na descrição ou na solução de um problema. Como consequência desta
abordagem a representação do conhecimento torna-se um dos aspectos mais importantes
dos sistemas especialistas [04].
Categorias Gerais dos Sistemas Especialistas
Os SE podem solucionar vários tipos de problemas que apresentam algumas
características diferentes quanto ao seu funcionamento. A lista apresentada a seguir,
20
extraída de [23] e adaptada em [11], sumariza algumas categorias de problemas
enfocados nos SE.
Interpretação abrange os sistemas que trabalham com dedução a partir
de descrições de situações relativas aos dados fornecidos pelo usuário. Estes
sistemas usam sensores de dados e enfrentam grandes dificuldades, já que
eles têm que manipular dados que estão com ruídos, escassos, incompletos ou
errados. Eles necessitam de técnicas especiais para a extração de
características de linhas de dados contínuos, linhas de onda, ou figuras, e
métodos para representá-lo simbolicamente;
Diagnóstico abrange os sistemas que lidam com a dedução das causas
do mau funcionamento de um determinado sistema. Eles usam descrições de
situações, características comportamentais, ou conhecimento sobre
componentes do projeto para inferir as prováveis causas do mau
funcionamento do sistema. Estes sistemas podem interagir com o usuário
para ajudá-lo a encontrar as falhas e então sugerir ações para corrigi-las.
Predição abrange os sistemas que a partir de uma modelagem de
dados do passado e do presente permitem uma determinada previsão do
futuro. Como ele baseia sua solução na análise do comportamento dos dados
recebidos no passado, pode 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;
Projeto abrange os sistemas que têm características parecidas com
as do planejamento, procurando fornecer mecanismos para o
desenvolvimento e refinamento de planos até chegar ao projeto desejado.
Eles poupam o tempo de busca do melhor plano de ação para a criação da
configuração desejada;
Planejamento abrange os sistemas que preparam um programa de
iniciativas a serem tomadas para se atingir um determinado objetivo. São
estabelecidas as etapas e sub-etapas. Em caso de etapas conflitantes, são
definidas as prioridades. Eles lidam com o planejamento de ações, onde
decidem todo o curso da ação antes de agir. Estes sistemas quase sempre
rejeitam uma linha de raciocínio particular ou uma porção do plano de ação,
21
porque violam os métodos de construção do planejamento e voltam ao ponto
de partida;
Monitoramento abrange os sistemas que interpretam 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;
Depuração abrange os 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 vir validando cada etapa necessária em um
processo qualquer;
Reparo abrange os sistemas que desenvolvem e executam planos
para administrar reparos de problemas encontrados. São poucos os sistemas
desenvolvidos nesta categoria, porque o ato de executar um conserto em
alguma coisa do mundo real é uma tarefa complexa;
Instruções abrange os sistemas que possuem um mecanismo para
verificar e corrigir o comportamento do aprendizado das pessoas.
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 por ele. Dependendo do
comportamento deste, vai aumentando a complexidade das situações e
encaminhando o assunto, de maneira didática, até o nível intelectual do
treinamento;
Controle abrange os sistemas que governam o comportamento geral
de outros sistemas (não apenas de computadores). São os sistemas mais
completos, pois devem interpretar os fatos de uma situação atual, verificando
os dados do passado e fazendo uma predição do futuro. Apresentam os
diagnósticos de possíveis problemas, formulando um plano ótimo para sua
22
correção. Este plano de correção é executado e monitorado para que o
objetivo planejado seja alcançado.
Diferenças entre os Sistemas Especialistas e os Sistemas Convencionais
Os sistemas de computador, de uma maneira geral, utilizam algum tipo de
conhecimento especializado para resolver os problemas de seu domínio de aplicação,
sendo de algum modo baseados em conhecimento. A principal diferença entre os SBC
e os sistemas convencionais, encontra-se não no uso do conhecimento, mas na forma
com que ele é organizado dentro do sistema, em sua arquitetura global. Nos SBC o
modelo de resolução de problemas, no domínio de aplicação, é visto como uma entidade
separada do sistema, chamada BC. Este conhecimento não está “escondido”, de forma
implícita, no código do sistema, mas se encontra como um componente independente do
componente de controle. Este componente de controle, chamado MI, é capaz de
promover o uso do conhecimento armazenado na BC, respondendo à questões sobre o
uso deste conhecimento e determinando as conseqüências implicadas por ele. Isto
significa que o conhecimento incorporado no sistema é independente dos programas que
o sistema manipula, e que este conhecimento é facilmente acessado pelos usuários,
facilitando também a atualização do mesmo [35].
Os SE diferem dos convencionais em vários outros tópicos que podem ser
observados na Tabela 3, ou mais detalhadamente em [07], [11] e [13].
Tabela 3 - Outras diferenças entre os SE e os sistemas convencionais.
Sistemas Especialistas Sistemas ConvencionaisManipulam conhecimento Manipulam dados
Utilizam heurísticas Utilizam algoritmos
Trabalham com processos de inferência Trabalham com processos procedurais
Programação simbólica Programação determinística
Nem sempre produz uma solução correta Sempre produz uma solução correta
Trabalham com informação incompleta ou
incerta
Não trata informação incompleta ou
incerta
Pode aprender com os próprios erros [36] Precisam ser alterados no algoritmo para
23
assimilar novas atividades
Fácil transferência do conhecimento Nem tão fácil de se transferir
conhecimento
Examinam uma extensa gama de
possibilidades ou constroem soluções
dinamicamente
Dispõem somente das soluções pré-
estabelecidas nos algoritmos
Desenvolvimento de Sistemas Especialistas
Os SE estão sendo cada vez mais pesquisados e desenvolvidos em vários países
do mundo, nas mais diversas áreas de pesquisa. Este mercado, cada vez mais, aumenta
o seu espaço com ênfase para a solução de “problemas de negócios”, criação de
sistemas de informações mais “ativos”, automação, auxílio em diagnósticos,
planejamento e escalonamento, reengenharia, além da preocupação com a transferência
da tecnologia existente nos laboratórios de universidades e centros de pesquisas para o
mercado de sistemas. Entre os fatores que podem demonstrar o crescimento deste tipo
de sistemas estão o aumento dos números de empresas de médio e pequeno porte
especializadas nesta área e a quantidade crescente de solicitações de patentes para este
tipo de sistema [07],[21].
Para se desenvolver um SE, deve-se encarar o projeto como sendo um projeto de
desenvolvimento de sistema, o que deverá ser tratado como tal, independente do seu
tipo [17]. Na Figura 6 são apresentadas as principais tarefas a serem realizadas no
desenvolvimento de um SE.
24
Figura 6 - Representação resumida das tarefas necessárias para o desenvolvimento dos SE.
As tarefas, representadas pelos retângulos horizontais, devem ser realizadas
seguindo a estrutura hierárquica demonstrada pelas setas. Os processos Atualizar e
Reformular consistem de caminhos possíveis para a correção ou evolução do sistema a
ser desenvolvido. Os retângulos verticais representam atividades referentes ao ciclo de
vida clássico [61] para a elaboração de sistemas.
Análise do Problema
A análise do problema procura identificar as características do problema e a
viabilidade de uma solução por meio dos SE. Esta fase também compreende a
identificação dos recursos necessários e do pessoal envolvido no desenvolvimento do
sistema, inclusive o(s) especialista(s). Constatada a viabilidade do sistema como um
SE, o próximo passo é a identificação dos conceitos, objetos, eventos e relações
necessárias para descrever o processo de solução do problema, além de especificar a que
nível de detalhe o conhecimento será representado e qual estrutura de representação será
utilizada [03].
25
Seleção de Estratégias para os Sistemas Especialistas
Os dados levantados e analisados pela fase de análise do problema precisam ser
articulados dentro de uma certa estrutura, sintetizada em um programa de computador,
onde duas estratégias principais são consideradas: (i) desenvolvimento do sistema por
meio de linguagens de programação; (ii) desenvolvimento do sistema por meio de
shell. As shells consistem de sistemas que têm a habilidade de “raciocinar”, isto é,
fazer inferências inteligentes, porém não têm nenhum conhecimento sobre o que
raciocinar, ou seja, não possuem BC, sendo considerados máquinas de inferências
generalizadas [17].
Observe na Tabela 4 as características relacionadas as duas formas de
desenvolvimento dos SE. Na primeira comparação (Nº 1) pode-se observar que as
linguagens de programação não foram desenvolvidas visando as características dos SE,
enquanto que as shells contemplaram todas as necessidades básicas destes sistemas, pois
foram desenvolvidas especificamente para eles.
Tabela 4 - Comparação entre as linguagens de programação e as shells.
Nº Linguagens de Programação Shell1 Podem ser usadas para desenvolver SE Projetados especificamente para os SE
2 Flexibilidade no desenvolvimento Somente características adotadas pela shell
3 Usa muito tempo de desenvolvimento Reduz o tempo de desenvolvimento
4 Utiliza mais recursos Utiliza menos recursos
5 Consome mais esforços dos recursos Elimina a necessidade de programação
6 Não permite concentração nas tarefas
relacionadas ao conhecimento
Permite a concentração nos processos
relacionados ao conhecimento
A segunda comparação deixa clara a principal virtude das linguagens de
programação, pois propiciam grande flexibilidade na definição dos mecanismos de
representação do conhecimento, do processo de inferência, dos mecanismos de controle,
da interface com o usuário, além de permitir a utilização diferenciada de mecanismos de
tratamento de incertezas e de explicações. Neste aspecto as shells só permitem a
26
utilização das características incorporadas na sua concepção, não possibilitando
flexibilidades adicionais. Nas demais comparações a shell apresenta-se com vantagens
sobre as linguagens de programação, pois consome menos esforços e recursos com um
desenvolvimento mais rápido, privilegiando ainda, as atividades relacionadas aos
processos de formação do componente principal de um SE, a BC. A evolução contínua
das shells vem propiciando um aumento considerável no uso desta ferramenta para o
desenvolvimento de SE [21].
Atualmente, existem várias linguagens e shells para desenvolver SE e algumas
informações básicas, sobre elas, podem ser encontradas em [08],[21] e [29].
Validação e Teste do Sistema Especialista
A validação refere-se a avaliação do conhecimento, a capacidade de tomada de
decisão e a aplicabilidade do sistema, onde ela busca estabelecer o que o sistema
conhece, o que ele conhece com incertezas e o que ele não conhece. Em termos gerais,
a validação assegura a veracidade e a qualidade do sistema.
Esta fase pode acontecer de forma incremental, onde a evolução do sistema vai
sendo acompanhada por avaliações parciais que permitem que o próprio sistema auxilie
o seu desenvolvimento. Uma outra maneira de validar o sistema seria por meio do
desenvolvimento de um protótipo que seria submetido a avaliação. Em ambos os casos
as atividades de atualizar e reformular a implementação do sistema, demonstrada na
Figura 5, acontecem antes da implantação do sistema. O acompanhamento do
especialista nesta fase de validação é muito importante, pois ele também deve avaliar o
desempenho do sistema quanto a sua lógica de raciocínio e a sua performance. É por
meio dele que se conseguirá o refinamento do processo de raciocínio e a validação da
BC. Somente por meio da aprovação do especialista e do engenheiro do conhecimento
é que o sistema deverá ser implantado, ficando disponível para ser utilizado pelos seus
usuários que validaram a sua funcionalidade.
27
Disponibilização do Sistema Especialista
A disponibilização consiste nos processos que permitem a implantação do
sistema no ambiente de produção, ou seja, junto ao usuário final. Neste momento o
sistema encontra-se testado, validado e pronto para utilização na atividade destinada
para ele. Os processos e cuidados necessários para realização desta tarefa são
detalhados em [13].
28
REFERÊNCIAS BIBLIOGRÁFICAS
[01] A summary of Expert Systems,
http://wwwacn.cornell-iowa.edu/~RJOHNSON/summary.html, 1998.
[02] BARTON, A., “Experiencies in Expert Systems”, Journal of Operational
Reserarch Society, 38(10):965-974, 1987.
[03] BELHOT, R. Vairo, “Conceitos e Desenvolvimento de Sistemas Especialistas”,
USP – EESC – Engenharia da Produção, São Carlos, Brasil, 86p., 1993.
[04] BITTENCOURT, G., “Inteligência Artificial: ferramentas e teorias”,
Universidade de Santa Catarina, Florianópolis, Editora da UFSC, 362p.,
1998.
[05] BONDE, A., “Fuzzy Logic Basic”, GTE Government Systems Corp.,
Needham, http://www.austinlinks.com/fuzzy/basics.html, 1996.
[06] BROOKS, H, M., “Expert Systems and Intelligent Information Retrieval”,
Information & Processing Management, 23(4): 367-382 1987.
[07] FERNANDES, A. M. da R., “Sistema Especialista Difuso Aplicado ao Processo
de Análise Química Qualitativa de Amostras de Minerais”, Universidade
Federal de Santa Catarina, Florianópolis, Brasil, 146p., 1996.
[08] G.H.G. Corporation, “A Tool for Building Expert Systems”,
http://www.ghg.net/clips/CLIPS.html, 1998.
[09] GINSBERG, M., “Essentials of Artificial Intelligence”, San Francisco,
California, Morgan Kaufmann Publishers, Inc., 430p., 1993.
[10] GRANT, T. J., “Lessons for O. R. from A.I.: A Scheduling Case Study”,
29
Journal of the Operational Reseach Society, 37(1):41-57, 1986.
[11] Grupo de Sistemas Inteligentes, Departamento de Informática, Universidade
Estadual de Maringá, http://www.din.uem.br/~ia/especialistas/Introdu.html,
1998.
[12] Grupo de Sistemas Inteligentes, Departamento de Informática, Universidade
Estadual de Maringá, http://www.din.uem.br/~ia/medicina/introducao.html,
1998.
[13] GUIDA, G.; TASSO, C., “Design and development of knowledge-based
systems: from life cycle to methodology”, USA, John Wiley & Sons Ltd.,
476p., 1994.
[14] HARMON, P.; SAWYER, B., “Creating expert systems for business and
industry”, USA, John Wiley & Sons, Inc., 319 p., 1990.
[15] JACKSON, P., “Introduction to expert systems”, University of Edinburgh,
Addison-Wesley Publishing Company, Inc., Great Britain, 246 p., 1986.
[16] KADEL, A., “Fuzzy expert systems”, Florida, CRC Press, Inc., 304 p., 1992.
[17] KELLER, R. “Tecnologia de Sistemas Especialistas : Desenvolvimento e
Aplicação”, Trad. Castelo, R., São Paulo, Makron Books, 292p., 1991.
[18] KIM, T. J.; WIGGINS, L. L.; WRIGHT, J. R., “Expert systems: applications to
urban planning”, USA, Springer-Verlag New York, Inc., 268p., 1990.
[19] KLIR, J.; YUAN, B., “Fuzzy Sets and Fuzzy Logic - Theory and Applications”,
Upper Saddle River, Prentice-Hall PTR, 574p., 1995.
[20] LEMOS, D., “A Utilização de Sistemas Especialistas para o Diagnóstico do Uso
do Solo e seus Limites de Ocupação”, Universidade Federal de Santa
30
Catarina, Florianópolis, Brasil, 1996.
[21] LIEBOWITZ, J., “The handbook of applied expert systems”, USA, CRC Press
LLC, 784p., 1998.
[22] LIGEZA, A., “Expert Systems Approach to Decision Support”, European
Journal of Operational Research, 37(1):100-110, 1988.
[23] LUGER, G. F.; STUBBLEFIELD, W. A., “Artificial Inteligence: Structures and
Strategies for Complex Problem Solving”, USA, Addison Wesley Longman,
Inc., 3 edição, 824p., 1998.
[24] MAUS, R.; KEYES, J., “Handbook of Expert Systems in Manufacturing”,
McGrawHill, Inc., USA, 1991.
[25] MÜLLER, D. N., “Definições Básicas”, Universidade Luterana do Brasil,
http://www.ulbra.tche.br/~danielnm/ia/defbas/de.html, 1998.
[26] NETO, J. C, A., “Utilização de sistemas Especialistas para Diagnose Técnica
em ambiente CIMS”, São Carlos, Brasil, 81 p., 1997.
[27] NICOLETTI, M. C., “Ampliando os limites do aprendizado indutivo de
máquina através das abordagens construtiva e relacional”, Tese de
doutorado submetida ao IFQSC/USP, 1994.
[28] PENROSE, R., “A mente nova do rei: computadores, mentes e as leis da física”,
tradução de Waltensir Dutra, Rio de Janeiro, Editora Campus Ltda., 520p.,
1997.
[29] RICH, E.; KNIGHT, K., “Inteligência Artificial”, Trad. Ratto, M. C. S. R., São
Paulo, Makron Books, 722p., 1993.
[30] RUSSELL, S. J.; NORVIG, P., “Artificial Intelligence: A Modern Approach”,
31
New Jersey, USA, Prentice-Hall, Inc., 932p., 1995.
[31] SABBATINI, R. M. E., “Uso do computador no apoio ao diagnóstico Médico”,
Revista Informédica 1(1), Núcleo de Informática Biomédica da Universidade
Estadual de Campinas, http://www.epub.org.br/informed/decisao.htm, Brasil
1993.
[32] SANTOS, F. O.; NICOLETTI, M. C., “O Uso do Modelo de Bayes em
Sistemas Baseados em Conhecimento”, Universidade Federal de São Carlos,
RT-DC 003/96, São Carlos, Brasil, 19 p., 1996.
[33] Technical University of Compiegne, “Expert Systems”, http://www.hds.univ-
compiegne.fr/~scanu/em2s/310/note85.html, 1998.
[34] TEIXEIRA, J. F., “O que é inteligência artificial”, Coleção Primeiros Passos,
Brasiliense, São Paulo, 76 p., 1990.
[35] VIDOTTI, C. C., “Tratamento de imprecisão e incerteza em Sistemas Baseados
em Regras Nebulosas”, Universidade Federal de São Carlos, Dissertação de
Mestrado, São Carlos, 106p.,1997.
[36] WATERMAN, D. A., “A Guide to Expert Systems”, Ed. Addison-Wesley
Publishing Company, Inc., USA, 419p., 1986.
[37] WINSTON, P. H., “LISP”, USA, Addison-Wesley Publishing Company, Inc.,
1984.
[38] ZADEH, L.A., “Fuzzy Set – Information and Control”, Vol. 8, pp 338-353,
University of California, USA, 1965.
[39] MINSKY, M.; PAPERT, S., “Perceptrons: an introduction to computacional
geometry”, Cambridge, MA: MIT Press, 1969.
32
[40] PEDRYCZ, W., “Computacional Intelligence: an introduction”, USA, CRC
Press LLC, 284p., 1998.
33