Tutorial 3

Raciocínio Baseado em Casos: Tecnologia e Aplicações

Abstract:

Raciocínio Baseado em Casos (RBC ou Case-Based Reasoning) constitui uma tecnologia computacional que, ao lado de outros paradigmas tais como a computação evolutiva, redes neuronais, teoria de agentes e agentes móveis, algoritmos genéticos, computação quântica estão a moldarem o novo cenário da Inteligência Computacional (IA). Seus princípios embasadores são facilmente compreensíveis e – até mesmo enunciáveis – em comparação com a fundamentação teórica, por exemplo, dos algoritmos genéticos cuja essência computacional é difícil de ser traduzida, por exemplo, em menos de 25 palavras básicas. O RBC constitui uma daquelas raríssimas tecnologias da computação inteligente que se presta a uma tal compactação e cuja essência pode ser transmitida através de uma única e curta sentença em linguagem natural:

Para resolver um problema novo, primeiro tente relembrar-se de um problema similar anterior resolvido no passado; em seguida, tente adaptar essa solução anterior relembrada de tal modo a poder resolver o novo problema que lhe foi trazido.

Todos nós resolvemos problemas usando a nossa própria experiência passada. Por que então o computador não fazer o mesmo? O RBC constitui essa tecnologia ou know-how capaz de possibilitar que algum novo problema enfrentado por um certo usuário seja confrontado com um banco de conhecimentos formado por situações prévias – especialmente organizado – e denominado de base de casos ("case base"). Qualquer sistema cujo design esteja fundamentado nesta abordagem de RBC pode ser imaginado como sendo, efetivamente, um sofisticado pattern matcher. O usuário do sistema começa dando entrada a uma descrição daquele seu problema, geralmente na forma de descrição de uma consulta computacional (um query case) e, a partir daí, tem início uma seqüência de etapas previstas no algoritmo geral do RBC. Uma vez tendo sido descrita uma tal consulta para o sistema, o motor analógico do RBC passa então a realizar buscas por história de situações (ou answer cases) que - parcial ou totalmente - venham a se acoplar àquela descrição inicial feita pelo usuário. Através de uma seqüência de < indagação, resposta> ou através de algum mecanismo de descoberta de similaridades este motor começa a sistematicamente estreitar o espaço de busca até que sejam encontrados casos similares ao caso de entrada para que possam, por fim, ser recomendados ao usuário do sistema, como úteis à resolução do seu problema particular. A questão central inerente ao raciocínio baseado em casos vai consistir, portanto, em levar o sistema a "relembrar" casos relevantes, reutilizar diretamente estes casos em uma nova solução ou adaptá-los se, para isto, se fizer necessário.

O breve tutorial objetiva explorar: (i) o estado da arte desta tecnologia baseada em casos; (ii) seus algorítmos básicos; (iii) suas ferramentas; (iv) suas aplicações, e (v) perspectivas futuras. No final, os participantes estarão – não apenas iniciados – mas também, aptos a distingüir a computação baseada em casos, por exemplo, da abordagem computacional dos sistemas expertos (expert systems – erroneamente traduzidos como specialist systems). Ambas as abordagens repousam numa explícita representação simbólica de conhecimentos sobre como resolver um problema novo. Sistemas expertos usam a experiência passada ao fazerem a armazenagem, numa base de conhecimentos, de heurísticas generalizadas para assistirem na resolução de um problema. Essas heurísticas generalizadas podem ser armazenadas quer na forma de regras quer como inferências lógicas. O RBC, ao contrário, emprega a representação de episódios específicos de resolução de problemas para aprender a resolver um novo problema. Ambas as abordagens fazem uso de experiências passadas para enfrentamento de novas situações. Porém, enquanto o RBC armazena essa experiência passada na forma de independentes episódios de resolução (uma espécie de cache semântico, os sistemas expertos armazenam essa experiência na forma de regras heurísticas generalizadas. Por exemplo, o desenvolvimento de um programa computacional para assistir analistas de crédito financeiro na concessão ou rejeição de uma solicitação de empréstimos (loan-underwriting) já foi recentemente tentado baseando-se em uma abordagem de sistemas expertos. Sob o enfoque de sistemas expertos, procura-se codificar heurísticas sobre o caráter do proponente de crédito, sobre o histórico creditício do possível tomador e heurísticas capazes de enquadrar, financeira e patrimonialmente, um candidato a empréstimos. Já a abordagem de RBC se volta para a construção de uma base de casos de empréstimos previamente já decididos ou passados, de tal modo que, de entre aqueles casos passados um (ou mais) deles possa ser resgatado e selecionado para servir de ponto de partida para a análise de um novo empréstimo. Um sistema computacional de casos de crédito nos evita de ter de "partir do nada" frente a uma arriscada tarefa empírica tal como avaliar créditos financeiros. Ou seja: a abordagem de sistemas expertos, em geral, conduz à aplicação de regras relevantes em algum domínio de atuação. Particularmente, no domínio do crédito estas regras relevantes objetivam definir os parâmetros de um novo empréstimos. Na abordagem da tecnologia de RBC, no entanto, um caso relevante de concessão de empréstimo passado terá de ser resgatado e adaptado para aplicar-se a uma nova solicitação do usuário.