Arquivos da categoria: Inteligência Artificial

Iniciando em Sistemas Baseados em Casos (RBC)

Raciocínio baseado em casos (RBC)

Natan Suzana

Acadêmico do curso de bacharelado de Ciência da Computação da Universidade do Oeste de Santa Catarina – Unoesc – Campus de Xanxerê.

LuzitanOrsoZancan

Acadêmico do curso de bacharelado de Ciência da Computação da Universidade do Oeste de Santa Catarina – Unoesc – Campus de Xanxerê.

 

RESUMO

A técnica de Raciocínio Baseado em Casos resume-se em uma lógica inspirada no comportamento humano, mais especifico, na capacidade das pessoas aprenderem com seus atos, e reutilizar este conhecimento em novas ações. RBC faz isso, à grosso modo, registra soluções geradas pelo programa a qual é aplicado e reutiliza essa base de casos solucionados para resolver novos problemas. RBC tem quatro passos fundamentais para sua elaboração: representação do conhecimento: medida de similaridade; adaptação; aprendizado; todos especificados no presente artigo.

 

1 Introdução

A inteligência artificial (IA) desde sua criação desenvolveu diversas técnicas para aprimorar a resolução de problemas e a obtenção de conhecimentos. As técnicas desenvolvidas de IA têm como sua base, o estudo do comportamento humano, a derivação deste estudo resultou dentre outras o surgimento da técnica de raciocínio baseado em casos (RBC), estando hoje dentre as técnicas mais utilizadas em IA.

O RBC desenvolveu-se muito rapidamente, pois as técnicas que o mesmo utiliza são simples e seu poder é muito grande. Hoje o RBC está presente em vários processos, como softwares de ajuda a usuários, diagnósticos médicos, sistemas especialistas, enfim, se tornou uma ferramenta muito útil para resolver problemas, onde os mesmos poderão aproveitar soluções anteriormente encontradas.

O RBC assim como as demais técnicas de IA baseia-se no comportamento humano. O raciocínio baseado em casos inspira-se na capacidade humana em aprender com suas ações e experiências e resolver problemas novos com experiências vividas anteriormente.

Porém quais são os principais passos para se desenvolver um sistema que possua esta capacidade, semelhante à capacidade humana, de desenvolver novos conceitos com as experiências vividas?

 

2 Raciocínio baseado em casos (RBC)

Para iniciar este artigo, é de suma importância citar uma frase dita no ano de 1991 por Marvin Minsky (Apud. Wangenheim): “I predict that 20 years from now Case-Based Reasoning will be the most important application of Artificial Intelligence.” Em 1991 Minski previu que em 20 anos Raciocínio Baseado em Casos (RBC) seria a mais importante técnica de Inteligência Artificial (IA), uma previsão que se concretizou. Hoje, RBC, como será tratado daqui em diante neste artigo, é um dos ramos de IA mais utilizados. Um exemplo simples da utilização de RBC, são as funções de autoajuda disponibilizadas por fabricantes de hardware e software. Ao se acessar a autoajuda, são feitas perguntas a fim de descobrir o que está acontecendo com a impressora, ao se ter o caso (problema) definido, o sistema faz uma busca em sua base de dados por alguma incidência parecida, gerando uma nova solução baseado nos registros do que já aconteceu.

Raciocínio Baseado em Casos (RBC), é um termo originado do inglês Case Based Reasoning (CBR), tem em seus conceitos o que foi descrito acima, resolução de problemas com base em casos anteriormente solucionados, adaptando uma nova resposta ao problema. Wangenheim (2003) confirma isso na afirmação a seguir: “(…)podemos entender o Raciocínio Baseado em Casos como a solução de novos problemas por meio da utilização de casos anteriores já conhecidos”.

O conceito base de RBC, vem da observação da vida humana. Todos os seres humanos ao longo de suas vidas acabam adquirindo experiência e usando a mesma para descobrir novas soluções. Este conceito é utilizado amplamente. Um exemplo são os prontuários médicos, ao se imaginar uma situação em que você vá até o médico e ao relatar os sintomas, é gerado um novo caso. O médico, tendo o seu caso, ou seja seus sintomas, irá lembrar-se de alguns casos semelhantes, os quais ele já atendeu. Como em uma pesquisa em um banco de dados, o médico procura casos similares ao seu. Ao lembrar (no caso de um banco de dados, encontrar) um caso parecido, o médico, usando seu conhecimento, irá adaptar a solução que foi dada à última incidência, ao seu caso, gerando um novo prontuário. Com isso, ele gerou uma solução para o seu problema, na grande maioria das vezes de forma eficiente e, enquanto isso, adquiriu para a sua memória (nosso banco de dados) um novo caso, que será utilizado para a solução de novos problemas. Wangenhein (2003) afirma que o Raciocínio Baseado em Casos (RBC) é a tecnologia de Inteligência Artificial inspirada no modelo de cognição e comportamento humano, que encontra respostas para um novo problema, através de um problema já resolvido.

Wangenhein(2003)  também destaca que qualquer sistema que utilize RBC deve possuir quatro elementos básicos:

·    Representação do Conhecimento

·    Medida de Similaridade

·    Adaptação

·     Aprendizado

2.1 Representação do Conhecimento

Um dos pontos chave de sistemas com Raciocínio Baseado em Casos é a representação do conhecimento, a forma na qual irá se registrar problemas e soluções vividas pelo sistema ou seja, é o banco de dados que será utilizado para gerar novas soluções.

Segundo Wangenhein (2003) a principal forma de representação do conhecimento são os casos, sendo que, outras formas de representação podem ser utilizadas, como casos abstratos, generalizados, tipos diversos de dados, modelos de objetos usados como informação, entre outros. Os casos englobam as demais formas de representação do conhecimento, pois todas as demais deverão ter mesmas características básicas para o funcionamento do RBC. Um caso é a maneira de demonstrar o conhecimento de forma contextualizada, registrando o evento problemático ou uma situação com problema foi solucionada de forma parcial ou total.

Um caso é, basicamente, a descrição de um problema e a sua solução, a solução sendo caracterizada como a experiência adquirida neste caso. Esta representação do conhecimento é feita através dos casos, porém não se restringe a estes. Para um RBC funcionar, deve-se criar um Repositório de Conhecimento.

O Repositório de Conhecimento é uma ou um conjunto de base de dados que engloba todos os casos, o vocabulário usado para gerar estes casos (um exemplo de vocabulário são consultas médicas nas quais você preenche um formulário antes da consulta, com os seus sintomas. Este formulário é igual para todos os pacientes. O que gera um caso e facilita o diagnostico do médico. Este formulário seria nosso vocabulário), uma base com medidas de similaridade referentes a cada caso para poder identificar e reutilizar casos anteriores e uma última base apara armazenar os dados de como adaptar os casos similares para resolver o novo problema.

2.2 Medida de Similaridade

A medida de similaridade é o ponto chave dos RBC, através dela será organizada a base de dados utilizada pelo sistema, através desta medida serão encontrados os casos com maior chance de gerarem solução do caso problema. Similaridade em RBC nada mais é do que a comparação de dois casos para verificar o quanto um está ligado ao outro e como os mesmos podem compartilhar soluções e consequências.

Conforme descreve Wangenhein (2003), o conceito da utilidade de casos é, de um ponto de vista abstrato, central para o raciocínio baseado em casos. Durante a recuperação de casos procura-se por um problema na base de casos, que, no contexto da descrição do problema atual, é útil para determinar a sua solução.

Podemos definir similaridade como se fosse uma recuperação dos dados para utiliza-los na resolução de um novo caso, este processo é um dos mais importantes do paradigma Raciocínio Baseados em Casos. Tem por propósito encontrar, em uma memória de casos resolvidos anteriormente, um caso mais adequado, mais próximo ao problema que precisa resolver.

A comparação utilizada para encontrar um caso parecido na tentativa da obtenção da resolução do novo problema, pode ser feita de duas formas que são: similaridade sintática ou semântica. Quando um caso é resolvido ele leva com ele informações importantes para serem gravadas na base de dados, dentre estas informações destacamos suas características principais e a sua respectiva solução. São nessas informações que a similaridade irá agir, comparando-as com o novo problema para ver se encontra algum caso similar que já foi resolvido anteriormente, a forma como essas informações são guardadas se torna muito importante devido a sua importância, para que a similaridade seja considerada relevante é necessário que estas características sejam prenunciativas.

A similaridade é o ponto crucial de RBC, pois a partir desta etapa, todo processo de raciocínio que fundamenta esta técnica torna-se viável.

2.3 Adaptação

A partir do momento que um caso similar é recuperado da base de dados para resolver o novo problema, ocorre uma reutilização de conhecimento, este conhecimento foi obtido na resolução do caso anterior que é similar ao novo problema, por isso o caso anterior será reutilizado para resolver o novo problema.

Qualquer reutilização realizada necessita da adaptação da solução do caso anterior ao caso atual, algumas técnicas são tratadas na reutilização onde as quais tentam resolver os problemas gerados pela adaptação, que conforme Wangenhein(2003), são: quais aspectos da situação devem ser adaptados, quais modificações devem ser realizadas para esta adaptação, que método aplicar para realizar a adaptação e como controlar este processo.

Essa adaptação é realizada para adequar uma solução encontrada anteriormente a um novo problema similar, com o objetivo de facilitar a obtenção da solução deste novo problema. Esta adaptação irá influenciar diretamente na flexibilidade do sistema de raciocínio baseado em casos, pois esta adaptação irá determinar a capacidade do sistema em resoluções de novos casos, novas situações.

Ao se realizar a adaptação de uma caso para outro são necessárias a análise de alguns fatores, Wangenheim (2003) destaca 4 principais:

○     Quais são os aspectos de uma situação que devem ser adaptados

○     Quais modificações são razoáveis de serem realizadas para adaptar o caso.

○     Quais são os métodos de adaptação aplicáveis para modificar estes aspectos.

○     Como controlar o processo de adaptação para saber que as modificações estão sendo realizadas no rumo certo.

Existem varias técnicas para efetivar a adaptação de um caso a outro, todas as técnicas baseiam-se em dois conceitos básicos: 1º- Quais são as diferenças entre o caso passado, cujo qual já tem uma solução conhecida, e o caso atual, o qual será gerada uma solução. 2º- Quais partes do caso passado podem ser reaproveitadas para gerar na solução dos novo problema.

 

2.4 Aprendizado

O RBC tem um ciclo muito bem definido conforme podemos ver na figura a seguir:

Ciclo RBC

Neste ciclo podemos perceber que quanto mais casos tiverem que ser solucionados, respectivamente com maior facilidade serão resolvidos, pois a base de casos será maior e a obtenção de novas soluções será mais eficiente.

Wangenheim (2003) diz que a integração com o aprendizado é uma das características mais importantes do RBC. A noção de RBC portanto, não denota apenas um método particular de raciocínio, sem levar em consideração como os casos são adquiridos, mas implica também um paradigma de aprendizado de máquina que suporta o aprendizado sustentado pela atualização contínua da memória de casos.

No RBC, os casos são armazenados sem alteração, Wangenheim (2003) cita que existem muitas variações de métodos de aprendizado de casos, somente o que diz respeito à forma de manipular os casos existem várias possibilidades. O aprendizado é construído a partir de um conjunto de exemplos de casos dados. Com os mesmos, deve-se decidir quais casos serão aceitos para compor a base e quais serão rejeitados e com qual critérios serão feitas as escolhas.

3 Aplicação de RBC

O raciocínio baseado em casos (RBC) é utilizado em várias aplicações de diferentes áreas, dentre as mesmas podemos citar: análise financeira; assessoramento de riscos; manutenção técnica; controle de processos; controle de qualidade; diagnóstico médico; sistemas de suporte a software; previsão; planejamento; projeto; classificação; interpretação de imagens; avaliação imobiliária; etc.

Conforme Wangenheim (2003), a tarefa de um sistema de RBC, descreve o tipo de ação para a qual o sistema será utilizado, como por exemplo, diagnóstico, configuração, planejamento, etc. Isto determinará o tipo de problema e de soluções, bem como a natureza das atividades a serem desenvolvidas pelo solucionador de problemas baseados em casos.

4 Considerações finais

O uso da técnica de Raciocínio Baseado em Casos tornou-se indispensável em sistema que visam a resolução de inúmeros problemas os quais necessitam de uma certa autonomia para encontrar a solução desejada. Dentre estes sistemas podemos destacar softwares de ajuda, diagnósticos médicos, enfim, todo softwares que necessitem resolver algum problema de forma otimizada e tem a possibilidade de armazenar problemas já resolvidos, são softwares que tem uma grande probabilidade de utilizar RBC.

Podemos dizer que a técnica de RBC trouxe maior difusão da Inteligência Artificial, pois possibilita a reutilização de todo o histórico de soluções quais o software gerou, para reutilizá-las em novos problemas, isso propicia uma resolução de novos problemas mais rápida e eficaz, pois você já tem um ponto de partida e comparação para os novos problemas.

 

Referências

Wangenheim, C. G.; Wangenheim, A. Raciocínio baseado em casos. Barueri, SP: Manole, 2003. 293p.

 

 

 


Busca em largura

A busca em largura é um método de busca que expande e examina sistematicamente todos os nós da árvore, em busca de uma solução, é um método de busca que não utiliza informação(busca cega). Em outras palavras podemos dizer que o algoritmo realiza uma busca exaustiva em toda a árvore, sem considerar seu alvo de busca, até que ele o encontre(ele não utiliza uma heurística).

Este método de busca é muito simples, ele expande o nó raiz primeiramente e em seguida todos os sucessores do nó raiz são expandidos, depois os sucessores desses nós e assim por diante até encontrar a informação procurada na árvore.

Do ponto de vista do algoritmo, todos os nós filhos obtidos pela expansão de um nó são adicionados a uma fila (FIFO). Em implementações típicas, nós que ainda não foram examinados por seus vizinhos são colocados numa lista (como por exemplo uma fila ou lista ligada) que é chamado de “aberto”. Uma vez examinados, são colocados numa lista “fechado”.

Veja como funciona a lógica da busca em largura nas imagens abaixo primeiramente expande o primeiro nó e todos seus sucessores:


Em seguida os sucessores do nó raiz e assim por diante até finalizar a busca:

Veja o algoritmo utilizado para resolver o método de busca por largura:

Busca-em-Largura (nAdjr)
1  para u ← 1 até n faça
2  cor[u] ← branco
3  cor[r] ← cinza
4  F ← Cria-Fila(r)
5  enquanto  F não está vazia faça
6  u ← Sai-da-Fila(F)
7  para cada v em Adj[u] faça
8  se cor[v] = branco
9  então  cor[v] ← cinza
10  Entra-na-Fila(vF)
11  cor[u] ← preto
12  devolva  cor[1..n]