Página Wiki do projeto.
FACSI

Voltar

Ferramenta de Apoio a Concepção
de Servidores Inteligentes

  1. Introdução.

    FACSI torna possível a captura do conhecimento de um especialista em uma determinada atividade, formulando-o de maneira precisa. Como resultado tem-se a geração de um Sistema de Apoio à Decisão (SAD) que pode ser consultado por usuários não especialistas. FACSI é utilizado para produzir SADs em diversas áreas, Análise de Crédito, Controle de Processos Industriais, Help-Desk, Diagnósticos Médicos etc. possibilitando a realização de diagnósticos baseados no conhecimento de especialistas reconhecidos.

    FACSI permite a criação e manutenção de bases de conhecimento por especialistas. Cada base de conhecimento dá origem a um SAD, criado pela compilação da base. Após gerado, o SAD pode ser consultado. Ele interroga o usuário e, de acordo com as informações obtidas, propõe diagnósticos compatíveis com os sintomas.

    Em sua versão atual, o sistema pode rodar como aplicação stand-alone ou tipo cliente/servidor. Pode funcionar através de redes de computadores como a Internet, gerando diagnósticos on-line através de um navegador padrão.

  2. Arquitetura.

    O sistema FACSI é organizado em torno de um núcleo, constituído por:

    1. Uma base de conhecimento, subdividida em:
      • uma base de regras que descreve o conhecimento do especialista;
      • uma base de fatos constituída por dados quantitativos e qualitativos providos pelos usuários.
    2. Um mecanismo de inferência capaz de fazer deduções baseadas no conhecimento expresso na base de conhecimento.

    O ambiente de trabalho de FACSI, baseado no núcleo acima é composto de uma interface que permite a comunicação entre os usuários (especialistas ou não) e o núcleo do sistema. Existem dois modos de operação que agrupam funcionalidades específicas a cada modo. Pode-se trabalhar em modo de "criação" das bases de conhecimento (para o especialista), ou em modo de "consulta" das bases (para o usuário final). Uma parte importante da interface é o módulo de explicações que possibilita a compreensão do raciocínio efetuado pelo sistema. Este módulo é útil tanto para a fase de concepção das bases de conhecimento, funcionando como um depurador em modo de criação, quanto na fase de consulta, fornecendo explicações aos usuários sobre os raciocínios do sistema.

    O ambiente é totalmente aberto, desenvolvido em Java e C. Esta abertura possibilita sua integração a sistemas já existentes na organização, além da possibilidade de completa personalização da interface de consulta de cada base de conhecimento.

  3. Linguagem de expressão do conhecimento.

    FACSI associa o raciocínio lógico e aritmético possibilitando a avaliação de expressões matemáticas que, segundo seus valores aritméticos definem a verdade ou falsidade de um fato booleano. O especialista expressa seu conhecimento na linguagem de FACSI através de regras lógicas, definições aritméticas, perguntas e expressões.

    Regras lógicas (ou cláusulas). Possibilitam a expressão das relações lógicas que ligam diferentes fatos (proposições). As regras são usadas pelo motor de inferência para avaliar o valor das proposições, através de raciocínio lógico. São expressas na sintaxe seguinte:

    temos p1 ou p2 ou ... pn
    temos p1 ou p2 ou ... pn se q1 e q2 e ... qm
    não temos q1 e q2 e ... qm

    onde os pi's e os qi's são fatos (ou suas negações) representados por identificadores, e são expressos em uma das seis formas seguintes:
    <identificador> ou não <identificador>
    <identificador>? ou não <identificador>?
    <identificador>! ou não <identificador>!

    Os fatos representados por identificadores seguidos de um "?" são do tipo "dado"; eles são sujeitos a serem perguntados ao usuário no momento das consultas. Os fatos representados por identificadores seguidos de um "!" são do tipo "resultado"; eles constituem a informação relevante a ser comunicada ao usuário quando o sistema os deduz.

    Exemplos de regras lógicas:

    A afirmativa: "O empréstimo deve ser recusado se os recursos do cliente estão abaixo do normal" pode ser descrita da seguinte forma:

    temos emprestimo_recusado! se recursos_abaixo_do_normal?

    A afirmativa: "O empréstimo pode ser aceito se os recursos estão abaixo do normal, se o emprego é bom, se o perfil é muito bom, se a solvabilidade é média e se o objeto do empréstimo pode ser financiado"

    pode ser descrita da seguinte forma:

    temos emprestimo_aceito! se recursos_abaixo_normal? e bom_emprego e
    muito_bom_perfil e solvabilidade_media e objeto_emprestimo_pode_ser_financiado!

    Definições aritméticas. Possibilitam a expressão de um dado booleano ou de um dado numérico. Elas são usadas para avaliação aritmética e têm a seguinte sintaxe:

    definimos d como e

    onde "d" é um dado (booleano ou numérico) ou uma função, e "e" uma expressão booleana ou aritmética, ou a chamada de uma função externa em C.

    Exemplos de definições aritméticas:

    A afirmativa: "A taxação é considerada acima do normal se o total das taxas é maior do que o limite de seguridade social multiplicado por um fator determinado pelo número de dependentes" pode ser descrita da seguinte forma:

    definimos taxacao_acima_do_normal como total_taxas > (limite_seguridade_social * fator_dependentes)

    A afirmativa: "A temperatura do forno é definida por uma função em C" pode ser descrita da seguinte forma:

    definimos temperatura_forno como chamada_externa();

    Perguntas. As perguntas associam a um dado um texto que o substitui quando perguntas que o concernem são feitas ao usuário. As perguntas podem, opcionalmente, indicar o tipo de dado esperado na resposta do usuário. A sintaxe é a seguinte:

    perguntamos p com <texto>
    perguntamos p, do tipo <tipo>, com <texto>

    onde "p" é um dado (booleano ou numérico).

    As perguntas podem ser usadas para restringir as únicas respostas possíveis a uma pergunta do sistema. Por exemplo:

    perguntamos projeto_homenshora, do tipo [0, 100], com "Qual a carga de Homens/Hora do seu projeto?"
    perguntamos profissão com "Qual é a sua profissão?" ["advogado", "arquiteto", "analista de sistemas", "médico", "outro"]

    Expressões. São regras de composição de mensagens, que facilitam para o usuário a interpretação dos resultados inferidos pelo sistema, personalizando as mensagens de diagnósticos (texto, áreas de mostra de dados, gráficos). Alguns exemplos:

    exprimimos que aceitar eh verdade por "===> O sistema ACEITOU o emprestimo.";
    exprimimos que declinar eh x por "Declinar = ".declinar;

    Outros tipos de regras possibilitam ao especialista a organização da base de fatos, cujo objetivo é a estruturação da base de acordo com alguns critérios, visando a otimizar a consulta, sem interferir com o raciocínio ou com os cálculos.

  4. Aspectos teóricos.

    O poder de expressão e de dedução de um sistema inteligente dependem fundamentalmente do formalismo usado para a representação do conhecimento no sistema. O formalismo adotado em FACSI é a lógica proposicional, e consequentemente é o princípio de prova automática de teoremas que governa o seu mecanismo de raciocínio. O uso da lógica proposicional permite ao sistema:

    1. Representar informações mais complexas que aquelas expressas pelas regras de produção, graças ao uso de cláusulas genéricas que são menos restritivas; Por exemplo, a cláusula: x ou y que pode ser usada igualmente para provar x dado não(y) (i.e., si não(y) então x), como para provar y dado não(x) (i.e., si não(x) então y).
    2. Processar informação negativa, graças ao conceito de literal. Um literal permite que uma proposição (fato) apareça na forma positiva ou negativa em uma cláusula;

    Além disso, os princípios da prova de teoremas reproduzem o comportamento natural de um especialista em uma dada situação, ou seja: desenvolve sistematicamente todas as implicações produzidas pela introdução de um fato novo para completar a base (chamada fase de saturação); em seguida, organiza uma pesquisa direcionada visando o estabelecimento de um diagnóstico (dedução).

    O mecanismo de inferência implementado em FACSI realiza as seguintes tarefas:

    • Verifica e mantém a coerência do conhecimento. Essencial para a atualização da base de fatos, esta função impede que o usuário introduza informações contraditórias.
    • Minimiza o número de perguntas feitas ao usuário. Para estabelecer um diagnóstico o sistema procura usar o mínimo possível de informações que ainda não se encontram na base de fatos, perguntando o mínimo possível ao usuário.
    • Lembra os resultados intermediários; não sendo necessária a repetição de nenhuma prova.
    • Permite o tratamento da incerteza. Através da resposta "desconheço", o usuário pode dizer ao sistema que não sabe responder a uma determinida pergunta. O sistema tenta então obter um diagnóstico via outros caminhos possíveis.
  5. Resumo.

    FACSI vai além do formalismo geralmente utilizado na área de IA: as regras de produção. O sistema basea-se em uma abordagem lógica formal, o que oferece as vantagens seguintes:

    1. Representação de fatos negativos, do tipo "não temos tal fato se ..."
    2. Verificação formal da coerência do conhecimento, proporcionando a eliminação de regras e fatos contraditórios.
    3. Dedução do conhecimento de maneira formal e precisa.
    4. Existência de um modelo teórico que permite a justificativa dos resultados e das estratégias de raciocínio seguidas pelo sistema; estas justificativas são implementadas pelo módulo de explicações.
    5. Minimiza as perguntas feitas ao usuário, visando a produção de resultados e diagnósticos com menor custo e o mais rápido possível.
    6. Devido à simplicidade da lógica proposicional, as regras que definem o conhecimento podem ser escritas pelo especialista de forma fácil e natural.

 


Comentários sobre esta página bax(arroba)eci.ufmg.br. (No e-mail, troque (arroba) por "@")
Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Marcello P. Bax
Educating the Future-proof Librarian (or Information Professional)