quinta-feira, 29 de maio de 2014

SISTEMAS ESPECIALISTAS

Definição de Sistema Especialista (SE)
            Um sistema especialista ou Expert System é um sistema computacional que simula a estratégia de resolução de problemas de um ser humano em alguma área do conhecimento bem específica. No entanto, um SE não possuiu a capacidade cognitiva de um especialista humano, porém, na ausência deste torna-se uma ferramenta importante para resolução de problemas.

Figura 1: Sistemas Especialistas dentro da IA (Inteligência Artificial).

Um SE, normalmente, desempenha as atividades de Interpretação, Predição, Diagnóstico, Síntese, Planejamento, Monitoramento, Correção de falhas, Instrução e Controle.

Utilização de Sistemas Especialistas
Na maioria das vezes, os SE são empregados em situações nas quais o ser humano não está disponível. Contudo, em alguns casos, a interação entre o especialista humano e os SE é benéfica. Exemplificando:
- Em situações de "stress", pois a capacidade de resolução de problemas dos seres humanos diminui consideravelmente. Exemplo: operadores de processo diante de alarmes.
- Em situações nas quais a velocidade de resolução de problemas é uma exigência. Exemplo: monitoramento em tempo real.
- Em situações em que a padronização das ações tomadas por diferentes profissionais é essencial. Exemplo: operadores de processo de diferentes turnos atuam de forma diferenciada diante de uma mesma situação, o que poderá acarretar variações no produto final.

Deficiências de um SE
- A capacidade de aprendizagem é natural para o ser humano, porém, limitada para a máquina.
- O ser humano é criativo diante das variadas situações, porém, a criatividade é outro ponto fraco da máquina.
- O ramo de atuação é abrangente para o ser humano, mas pequeno para a máquina.
- A capacidade de interação do ser humano com o mundo exterior é elevada por causa de sua percepção aguçada, contudo, para a máquina essa capacidade é limitada.

Principais Vantagens de um SE
- Atuação consistente, independente de fatores circunstanciais;
- Total disponibilidade;
- Ausência de fadiga;
- Ausência de incompatibilidades pessoais;
- Facilidade de transferência e replicação;
- Velocidade na determinação dos problemas;
- Exige pequeno número de pessoas para interagir com o sistema;
- Estabilidade;
- Integração de ferramentas.

Classificação dos Sistemas Especialistas
Os atributos mais importantes para a classificação dos Sistemas Especialistas são:
- Forma de representação do conhecimento: os SE são denominados baseados em regras, orientados a objetos, etc.
- Operação da máquina de inferência: os SE podem ser orientados por dados, objetivos ou ambos. Neste último caso, quando as duas estratégias de inferência forem empregadas.
- Interface com o usuário: destacam-se neste atributo os recursos que o SE dispõe para interagir com o usuário. Exemplo: recursos gráficos, sonoros, etc.
- Operação on-line ou off-line: ressalta se o SE atua ou não em tempo real e ligado a um sistema físico.
- Capacidade de extensão: enfatiza-se a capacidade de ampliação ou adaptação do conhecimento do sistema às necessidades das pessoas.

Componentes de um SE
Um SE é composto, essencialmente, por uma Base de Conhecimento, composta de fatos e regras, comportando o conhecimento adquirido do especialista humano; Mecanismo de Inferência, que controla o processo dedutivo da base de conhecimento; e Interface com o Usuário.
As bases de conhecimentos compreendem os objetos e os atributos. Os objetos são as conclusões a que o Sistema deve chegar, enquanto que, atributos são as propriedades que servem para caracterizar os objetos. Por exemplo, em um SE específico de diagnóstico de doenças, os objetos são as doenças e os atributos desses objetos são seus respectivos sintomas. Assim, a resposta do sistema será o diagnóstico da doença a partir dos sintomas.
Os mecanismos de inferência podem ser divididos em dois tipos: Encadeamento para diante e Encadeamento para traz. No primeiro caso, selecionam-se atributos até obter uma combinação que caracterize um objeto. Enquanto que, no segundo, é escolhido um objeto para ser a hipótese de estudo, em seguida, busca-se determinar a viabilidade da aceitação dessa hipótese pela ocorrência ou não dos atributos adequados. Logo, trata-se de um método de tentativas e erros, onde prosseguisse até que encontrar a hipótese correta.
Um SE poderá apresentar outros componentes, dependendo do software de suporte empregado em seu desenvolvimento. Veja abaixo:
- Editores dedicados: acompanham o processo de inferência minuciosamente, visando corrigir falhas no desempenho do sistema.
- Editores gráficos: suportam a implementação de recursos gráficos, que aumentam a capacidade interativa do SE.
- Interfaces para outros sistemas de informação: suportam o acesso do SE a informação armazenada na base de dados, planilhas eletrônicas, etc.
- Módulo de explicação: fornecem a sequência de heurística empregada para obter certa conclusão.

Implementação de um SE
A implementação restringisse, basicamente, à implementação das estratégias de resolução de problemas utilizada pelos especialistas humanos em um domínio do conhecimento. Assim, a fonte do conhecimento é o próprio especialista do domínio, além de textos, manuais etc. Na verdade, uma das tarefas mais difíceis, na implantação de um SE, é justamente sistematizar o procedimento de resolução de problemas do especialista humano. Logo, uma das principais dificuldades é a análise subjetiva baseada na percepção humana, extremamente complicada de ser reproduzida em computador.

Exemplos de SE
Exemplos clássicos de SE:
- MYCIN – usado para diagnosticar doenças infecciosas.
- PROSPECTOR – utilizado para coletar informações geológicas.
- LOGIC THEORIST – trata-se de SE empregado para provar teoremas.
Exemplos de SE em microcomputadores:
- Diversas ferramentas do tipo "shell" permitem o desenvolvimento de SE em microcomputadores. Exemplo: EXPERT-EASE, M-1, INSIGHT, ARBORIST, EXSYS, ES/P, PERSONAL CONSULTANT, GURU, NEXPERT e outras.
- É possível utilizar outras linguagens de programação, além das "shells", como BASIC, FORTRAN, ALGOL, PASCAL, FORTH e outras. Além disso, há linguagens de programação que foram criadas para facilitar o desenvolvimento de aplicações de IA, tais como LISP, PROLOG e LOGO.

NOTA: “Shell” é uma linguagem de script usada em vários operacionais, com diferentes dialetos, e que depende do interpretador de comandos utilizado. Um exemplo de interpretador é o bash, usado na maioria das distribuições GNU/Linux.


REFERÊNCIAS
  
Disponível em: <http://www.dee.ufma.br/~lpaucar/teaching/ia2000-1/cap4.html> Acesso em: 27/05/2014.

Disponível em: <http://www.din.uem.br/ia/especialistas/basese.html> Acesso em: 27/05/2014.
                                                                                                                    
Disponível em: <www.ic.uff.br/~ferraz/IA/Ppt/SistemasEspecialistas/Expert01.ppt> Acesso em: 29/05/2014.