Inicialmente este blog foi criado para armazenar algumas dicas e links de UNIX/Linux, OpenVMS, linguagem C, Assembly, TCP/IP e nerdezas afins. No entanto devido ao autor ter abandonado o seu plano de ser um super hacker e dominar o mundo (devido esposa, família, filhos, trabalho), a partir de 2012 este blog tem um tipo de nerdeza mais light (Android, Linux, RetroPie (retrogames), produtividade, e por aí vai). Estas dicas raramente serão criações minhas.

domingo, 29 de março de 2009

Sistemas Especialistas

O conteúdo abaixo é o que um recém aspirante a conhecedor dos princípios de Inteligência Artificial tem a dizer sobre Sistemas Baseados em Conhecimento. Estou cursando esta disciplina e o professor pediu para que comentássemos um pouco sobre este período da história da I.A.

O que balizou esta pesquisa foi um pequeno trecho Capítulo 1 do livro Inteligência Artificial do Russel e Norvig.

Fontes de consulta:
http://hci.stanford.edu/~winograd/shrdlu/
http://pt.wikipedia.org/wiki/Dendral
http://en.wikipedia.org/wiki/MYCIN

Sistemas baseados em conhecimento: a chave do poder? (1969 - 1979)
Inicialmente os estudiosos de I.A. tentavam encontrar maneiras de desenvolver mecanismos que mostrassem cada etapa do raciocínio até chegar na solução completa de qualquer problema. Ou seja um mecanismo de busca de soluções propósito geral. Como essa tentativa de resolver qualquer problema exigia uma complexidade muito grande, não era possível resolver problemas muito grandes ou muito difíceis.

Uma outra abordagem foi projetar o sistema já conhecendo a sua área de atuação. Por isso chamado de Sistemas baseados em conhecimento, ou também Sistemas Especialistas. No livro tem até uma citação interessante: "para resolver um problema difícil, é necessário praticamente já conhecer a resposta".

Um projeto pioneiro de Sistema Especialista foi o DENDRAL (Dendritic Algorithm), desenvolvido por Ed Feigenbaum, em Stanford. O DENDRAL foi desenvolvido nos anos 60 e tinha como principal objetivo auxiliar os pesquisadores de química orgânica a indetificar moléculas orgânicas desconhecidas. Não vamos aqui falar de detalhes de como o software identifica tais moléculas, só queremos dizer que ele é considerado um sistema especialista por que ele automatiza o processo de decisão e tem o mesmo comportamento de um especialista em química orgânica na resolução de problemas.

O DENDRAL é composto de dois subprogramas (escritos em LISP): Meta-Dendral e Heuristic Dendral. O Meta-Dendral é responsável por obter as regras que serão usadas pelo programa principal. O Heuristic Dendral recebe os dados obtidos nos experimentos e junto com a base de conhecimentos químicos que já tem consegue produzir um número de possíveis estruturas moleculares. [Quem conhece a estrutura básica de um programa escrito na linguagem Prolog logo lembra dela ao ver essa descrição do Dendral (fatos, regras, perguntas)].

Outro Sistema Especialista muito famoso que veio após o DENDRAL foi o MYCIN, desenvolvido por também por Feigenbaum, só que agora acompanhado de Buchanan e Dr. Edward Shortliffe. O MYCIN se diferenciava do DENDRAL em duas coisas:
- Primeiro que não havia um modelo teórico geral através do qual o MYCIN pudesse deduzir suas regras. Estas regras têm que ser adquiridas através de extensas entrevistas com especialistas, que por sua vez adquiriram o conhecimento de livros, outros especialistas ou experiência direta.
- Segundo, as regras precisavam refletir a incerteza que está associada ao conhecimento médico (espera-se que um tratamento receitado ao paciente faça-o melhorar, mas não há certeza absoluta de que isso será alcançado).

Outro Sistema Especialista muito famoso é o SHRDLU. Trata-se de um programa feito para entender a linguagem natural. Este software "dialogava" com o usuário (através de teclado/monitor) a respeito de um pequeno mundo de blocos. O usuário pode comandar o computador a, por exemplo, pegar a menor pirâmide e colocar em cima do bloco verde. O SHRDLU é considerado um sistema especialista pois consegue realizar o processamento da linguagem natural, porém só consegue "conversar" sobre o seu mundo dos blocos. [Talvez se alguém tivesse disposição para projetar o "mundo das rodovias", poderíamos fazer o nosso motorista de taxi autônomo entender a linguagem natural e conversar com os passageiros].

O crescimento destas e de outras aplicações a problemas do mundo real causou uma demanda por esquemas úteis de representação do conhecimento. E isso acabou levando ao desenvolvimento de diversas linguagens para representar a racionalidade. Sendo o Prolog uma das linguagens que foi desenvolvida nesta época.

Nenhum comentário:

tags