Implementando Raciocínio na Ciência da Computacao

Slides:



Advertisements
Apresentações semelhantes
Sistemas Baseados em Conhecimento e Sistemas Especialistas
Advertisements

Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Lógica de Predicados e Representação de Conhecimento
Programação em Java Prof. Maurício Braga
Software Básico Silvio Fernandes
Inteligência Artificial
Introdução à Ciência da Computação Linguagens de Programação.
Amintas engenharia.
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
MÁQUINAS UNIVERSAIS Fabrício Dias
Lógica Matemática e Computacional 7 – Introdução à Programação Lógica
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.
Engenharia de Software
Engenharia de Software
Elsa Carvalho 163 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Teoria dos Modelos.
Banco de Dados Dedutivo
Resolução.
Os Sistemas Multi-agente Viviane Torres da Silva
Árvores.
Arquivos Seqüenciais Inhaúma Neves Ferraz
Sistemas Baseados em Conhecimento
Professora: Aline Vasconcelos
Agentes Baseados em Conhecimento
Aprendizagem Simbólica
FACENS – Engenharia da Computação Inteligência Artificial
SIMULAÇÃO EM COMPUTADOR: O PENSAMENTO COMO PROCESSAMENTO DE INFORMÇÕES
Agentes Cognitivos Adaptativos
AXIOMATIZAÇÃO Equipe: André Augusto Kaviatkovski, Daniel Elias Ferreira, Vinicius Zaramella.
Inteligência Artificial
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
Classes e objetos P. O. O. Prof. Grace.
Inteligência Artificial
Conceitos Básicos.
DIAGRAMA DE COMPONENTES
Sistemas Inteligentes
Taxonomia Profa. Lillian Alvares,
INTELIGÊNCIA ARTIFICIAL
Inteligência Artificial
Modelagem Estatística
Inteligência Artificial
Projeto de Banco de Dados
Desenvolvimento Formal de Software
Sistemas Inteligentes
Sistemas Inteligentes Sistemas Baseados em Conhecimento
Lógica de Predicados/Primeira Ordem
Lógica de Predicados/Primeira Ordem
Marcílio C. P. de Souto DIMAp/UFRN
Redes Neuronais/Neurais/ Conexionistas Introdução
Análise e Projeto de Sistemas de Informação 2o. Semestre de 2014
Software engineering, the software process and their support M.M. Lehman Apresentadora: Tarciana Dias da Silva.
Tópicos Avançados em Inteligência Artificial
CIn- UFPE 1 Implementando Raciocínio na Ciência da Computacao Lógica de Predicados/Primeira Ordem Métodos Formais para Desenvolvimento de Sistemas Banco.
Sistemas Baseados em Conhecimento
Máquina de Turing Universal
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Sistemas Inteligentes Aula: Sistemas Baseados em Conhecimento 1.
Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng. celsokaestner (at) utfpr (dot) edu (dot) br.
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Campus de Caraguatatuba Aula 2: Introdução a Tecnologia de BD
Introdução a Banco de Dados Aula 04
Métodos Formais.
Programação Lógica com Prolog
Geber Ramalho 1 Objetivo da aprendizagem Conhecimento em extensão (exemplos percepção-ação, características-conceitos, etc.) Conhecimento em intenção.
Integração de Ferramentas CASE
Decidibilidade, Corretude, Completude, Consistência
Agentes Baseados em Conhecimento
Sistemas Inteligentes Aula: Agentes Baseados em Conhecimento Obs.: esta aula não foi totalmente baseada no livro- texto AIMA... Flávia Barros 1.
Introdução à Inteligência Artificial Fundamentos Prof. Horácio.
Aprendizado por Indução
INTELIGÊNCIA ARTIFICIAL Grupo: Amora Figueiredo Érika Diniz
Transcrição da apresentação:

Implementando Raciocínio na Ciência da Computacao Lógica de Predicados/Primeira Ordem Métodos Formais para Desenvolvimento de Sistemas Banco de Dados Dedutivo Inteligência Artificial

Lógica Já viram com Ruy… Raciocínio dedutivo (regras de inferência) Os silogismos, que nós trabalhamos são um exemplo… Nenhum tirano é amado. Dionísio é tirano. Dionísio não é amado Também trabalharam com procedimentos de prova, como a Dedução natural, resolução, por exemplo. Um provador que utiliza dedução natural é o Alfie, disponível em: http://www.cs.chalmers.se/~sydow/alfie/

Métodos Formais para o Desenvolvimento de Sistemas Motivação Crise de Software Desenvolvimento é ad-hoc Não há um padrão para o processo É preciso utilizar técnicas, teorias, métodos, ferramentas Profissionais Incapazes de Controlar Custo Tempo de duração do processo de construção do software Qualidade do Produto desenvolvido Manutenção toma 70-80% do esforço

O Problema da Especificação de Software Especificação  Projeto  Implementação  Manutenção Especificação: informal Projeto: informal ou estruturado, semi-formal JSD, Yourdon, OMT, BON, UML, ... Implementação: sem garantia de realizar o projeto Verificação e validação são ignorados!

O que são Métodos Formais em Engenharia de Software Método de desenvolvimento de software através do qual se pode definir precisamente um sistema e desenvolver implementações garantidamente corretas em relação a esta definição.

Um Exemplo de Especificação Tipo: pilha-int Funções vazia: -> pilha-int push: int pilha-int -> pilha-int pop: pilha-int -> pilha-int top: pilha-int -> int e_vazia: pilha-int -> bool Axiomas pop (push (i, p)) = p top (push (i, p)) = i e_vazia (p) = (p = vazia)

Programas Abstratos... Podem derivar Programas “Reais” Descrições de estado Exemplo de estado Variáveis x, y, e z Uma fórmula descreve um estado se ela é tornada verdadeira pelos mapeamentos do estado x = 2 x + z < y x = 2 Ù y = 17 Ù z = 3 Um estado satisfaz uma fórmula se aquela fórmula descreve ele Cálculo de predicados x y z 2 17 3

Então... Primeiro, especificamos o sistema via pré e pós-condições; Depois, esta descrição matemática é transformada gradualmente em código  refinamento do programa! Se tivermos as propriedades da especificação codificadas em uma linguagem lógica, conseguimos prová-las. Resumindo... Usando técnicas de raciocínio lógico, podemos: (1) verificar se o programa produz o que se espera; (2) verificar se o progrmaa termina; (3) derivar código para construir programas que satisfazem a uma especificação; (4) transformar um sistema em outro equivalente;

Uma pausa... Banco de Dados Um Banco de Dados... É uma coleção de dados relacionados... Mais precisamente... Um BD é projetado, construído e preenchido com dados para um objetivo específico. Tem um público alvo e algumas aplicações nas quais os usuários estão interessados. Um banco de dados pode ser: Manual: catálogo de cartões da biblioteca; Computadorizado: sistema de alunos da universidade.

Porque usar Banco de Dados? Banco de Dados X Sistema de Arquivos Dados Manipulados por vários usuários com uma única visão Registros físicos compostos de campos Agrupamento de um conjunto de arquivos, compartilhados por usuários diferentes, concorrentes e... competidores Dados manipulados por vários usuários com visões diferentes

E mais... Os Sistemas Gerenciadores de Bancos de Dados Um SGBD é uma coleção de programas para criação e manutenção de um banco de dados. É um sistema de propósito geral. Facilita os processos de definição, construção e manipulação do Banco de Dados. Tem por objetivos... Eliminar ou Reduzir Redundância e Inconsistência de Dados Dificuldade no Acesso aos Dados Isolamento dos Dados Anomalias de Acesso Concorrente Problemas de Segurança

Um SGBD tem esta cara Usuários/Programadores Aplicações/Queries Processamento de Queries Acesso aos dados Meta-Dados BD

SGBD Dedutivo Definição: Um SGBD Dedutivo é um sistema que inclui capacidade para definir regras que podem deduzir ou inferir informações adicionais dos fatos que estão armazenados no banco de dados. Parte da fundamentação teórica destes sistemas é a lógica matemática e, por isso, eles também são referidos como banco de dados lógicos.

Bancos de Dados Dedutivos - Conceitos Básicos Dois tipos de especificação são usados: Fatos - são especificados como relações, exceto pelo fato que o nome dos atributos não interessa mas sim a posição deles na tupla. Regras - especificam relações virtuais (similares às visões relacionais) que não estão armazenadas no banco mas que podem ser criadas a partir dos fatos, aplicando o mecanismo de dedução baseado nas regras.

E mais...Conceitos Básicos Um mecanismo de dedução (ou inferência) em um sistema pode deduzir novos fatos no banco de dados através da interpretação das regras. O modelo usado pelos BD dedutivos é relacionado à Programação em Lógica (Prolog). Eles trabalham com a linguagem Datalog.

SGBD Dedutivo Existem outros sistemas que incorporam esta capacidade de inferência, chamados sistemas de banco de dados especialistas ou sistemas baseados em conhecimento, incluindo técnicas da inteligência artificial. Estes sistemas diferem do sistemas dedutivos por: tratar dados sempre em memória principal extrair o conhecimento dos especialistas das aplicações e não dos dados.

SGBD Dedutivo A principal contribuição dos banco de dados dedutivos é a possibilidade de especificar regras recursivas e prover uma maneira de inferir novas informações baseada nas regras especificadas. Forma geral de uma regra: cabeça (head) :- corpo (body) Conclusão Premissa

Um Exemplo de SGBD Dedutivo Regras: superior (X,Y) :- supervisiona (X,Y) superior (X,Y) :- supervisiona (X,Z), superior(Z,Y) Fatos conhecidos: supervisiona (francisco, joão) supervisiona (francisco, roberto) supervisiona (francisco, jane) supervisiona (maria, alice) supervisiona (maria, antônio) supervisiona (tiago, francisco) supervisiona (tiago, maria) supervisiona (X,Y) é falso para qualquer outra combinação

Um exemplo... cont pela regra 1 superior (francisco, joão) Fatos derivados pela regra 1 superior (francisco, joão) superior (francisco, roberto) superior (francisco, jane) superior (maria, alice) superior (maria, antônio) superior (tiago, francisco) superior (tiago, maria) pela regra 2 superior (tiago, joão) superior (tiago, roberto) superior (tiago, jane) superior (tiago, alice) superior (tiago, antônio)

Inteligência Artificial (IA): definição Surgiu na década de 50 Objetivo: desenvolver sistemas para realizar tarefas que, no momento são melhor realizadas por seres humanos que por máquinas, ou não possuem solução algorítmica viável pela computação convencional problemas que não possuem uma solução algorítmica IA problemas solúveis por seres humanos Se o ser humano pode, por que não a máquina? (tese de Church-Turing)

Aplicações Matemática: demonstração de teoremas, resolução simbólica de equações, geometria, etc. Pesquisa operacional: otimização e busca heurística em geral Jogos: xadrez, damas, go, etc. Processamento de linguagem natural: tradução automática, verificadores ortográficos e sintáticos, interfaces para BDs, etc. Sistemas tutores: modelagem do aluno, escolha de estratégias pedagógicas, etc. Percepção: visão, tato, audição, olfato, paladar... Robótica (software e hardware): manipulação, navegação, monitoramento, etc. Sistemas especialistas: diagnóstico, previsão, monitoramento, análise, planejamento, projeto, etc.

Categorias de Raciocínio na IA Dedução: fatos + regras => novos fatos causa => conseqüência Inferência preserva a verdade Ex. (Onde há fogo(V) => há fumaça(V)) + aqui tem fogo => aqui tem fumaça Indução: fatos => regras conseqüência => causa Inferência preserva a falsidade!!! Ex.. Aqui tem fumaça e tem fogo => onde há fumaça(F) => há fogo(F) Algumas reações químicas geram fumaça sem fogo Se Sr. Antônio, assim como D. Maria, tem dor de cabeça e dengue, então todo mundo que tem dengue tem dor de cabeça. Analógico: casos similares + regras de adaptação => novos casos EX. Para construir este hospital, vou me basear no projeto daquele outro…

Como escolher um tipo de raciocínio? Sistemas Inteligentes: São sistemas capazes de “raciocinar” para resolver um problema Conhecimento => modelo do problema (regras) SIM Dedução Sistemas baseados em conhecimento Modelo do problema NÃO & exemplos de solução SIM Indução Sistemas baseados em aprendizagem automática Modelo do problema FRACO & exemplos de solução SIM Analogia Sistemas de raciocínio baseado em casos

Esclarecendo... Dados: Informação: Conhecimento: cadeias numéricas ou alfanuméricas que não possuem significado associado podem ser fatos ou figuras a processar Informação: dados organizados significam alguma coisa para quem os recebe Conhecimento: representa objetos (entidades) de algum domínio, com suas propriedades e relações Conhecimento em extensão = exemplos Conhecimento em intenção = regras

Problema… West é criminoso ou não? “A lei americana diz que é proibido vender armas a uma nação hostil. Cuba possui alguns mísseis, e todos eles foram vendidos pelo Capitão West, que é americano” Como resolver automaticamente este problema?

Solucionando o problema em linguagem natural A) Todo americano que vende uma arma a uma nação hostil é criminoso B) Todo país em guerra com uma nação X é hostil a X C) Todo país inimigo político de uma nação X é hostil a X D) Todo míssil é um arma E) Toda bomba é um arma F) Cuba é uma nação G) USA é uma nação H) Cuba é inimigo político dos USA I) Irã é inimigo político dos USA conhecimento prévio J) West é americano K) Existe um mísseis em cuba L) Os mísseis de cuba foram vendidos por West conhecimento do problema conhecimento novo M) Cuba possui um míssel M1 - de K O) M1 é uma arma - de D e N P) Cuba é hostil aos USA - de F, G, H e C Q) M1 foi vendido a Cuba por West - de L, M e N R) West é crimonoso - de A, J, O, F, P e Q

Sistemas Baseados em Conhecimento: Dedução Utilizam conhecimento em intenção e um mecanismo de raciocínio dedutivo (inferência) para resolver problemas Principais componentes: Base de Conhecimento (arquivo) Mecanismo de Inferência (procedimento que implementa a capacidade de raciocinar) Base de Conhecimento: contém sentenças em uma Linguagem de Representação de Conhecimento representa conhecimento de forma “tratável” pelo computado Mecanismo (máquina) de Inferência: responsável por raciocinar (inferir), a partir do conhecimento da base, novos fatos ou hipóteses intermediárias

Linguagens de Representação do Conhecimento Uma Linguagem de Representação do Conhecimento é definida por: 1) uma sintaxe, que descreve as configurações que podem constituir sentenças daquela linguagem; 2) uma semântica, que liga cada sentença aos fatos no mundo que ela representa cada sentença faz uma afirmação a respeito do mundo; o agente acredita nas sentenças que correspondem a sua configuração interna. E geralmente ... tem um mecanismo de inferência associado = raciocínio

Representação & Raciocínio processo de construção de novas sentenças a partir de sentenças existentes. Raciocínio plausível: garante que as novas sentenças representam fatos que se seguem dos fatos representados pelas sentenças existentes na Base de Conhecimento. implementa a relação de “implicação” entre sentenças semântica segue-se fatos Mundo fatos Representação semântica sentenças implica sentenças

Solucionando o problema em LPO A) " x,y,z Americano(x) Ù Arma(y) Ù Nação(z) Ù Hostil(z) Ù Vende(x,z,y) Þ Criminoso(x) B) " x Guerra(x,USA) Þ Hostil(x) C) " x InimigoPolítico(x,USA) Þ Hostil(x) D) " x Míssil(x) Þ Arma(x) E) " x Bomba(x) Þ Arma(x) F) Nação(Cuba) G) Nação(USA) H) InimigoPolítico(Cuba,USA) I) InimigoPolítico(Irã,USA) conhecimento prévio J) Americano(West) K) $ x Possui(Cuba,x) Ù Míssil(x) L) " x Possui(Cuba,x) Ù Míssil(x) Þ Vende(West, Cuba,x) conhecimento do problema conhecimento novo M) Possui(Cuba,M1) - Eliminação: quantificador existencial e N) Míssil(M1) conjunção de K O) Arma(M1) - Modus Ponens a partir de D e N P) Hostil(Cuba) - Modus Ponens a partir de C e H Q) Vende(West,Cuba,M1) - Modus Ponens a partir de L, M e N R) Criminoso(West) - Modus Ponens a partir de A, J, O, F, P e Q

Implementando a solução do problema: algumas possibilidades Prolog Linguagem de alto nível baseada em LPO Tem mecanismo de inferência embutido Java Linguagem orientada a objetos Mecanismo de inferência separado da linguagem Exemplos: Jess, JEOPS (CIn-UFPE) Shells para criar sistemas baseados em regras de produção Regras de produção são fáceis de escrever (if-then) Sistemas gerados restringem a LPO Mecanismo de inferência embutido

Sistemas de Aprendizagem Automática: Indução Modelo do problema NÃO & exemplos de solução SIM Exemplos dia 29, a Caxangá estava engarrafada dia 30, a Caxangá estava engarrafada dia 01, a Caxangá estava engarrafada dia 03, a Caxangá estava engarrafada Hipótese indutiva Todo dia, a Caxangá está engarrafada Conhecimento em extensão (exemplos) Sistema de aprendizagem Conhecimento em intenção (regras, definições)

Sistemas de Aprendizagem Indutiva: Como o Sistema Aprende? Técnicas de treinamento do sistema: Aprendizagem supervisionada: certo ou errado Dado um conjunto de exemplos pré-classificados, o sistema deve aprender (induzir) uma descrição geral que encapsula a informação contida nesses exemplos, e que pode ser usada para prever casos futuros (generalização) ex. concessão de crédito Aprendizagem não-supervisionada: ? Dado um conjunto de dados não classificados, agrupá-los por regularidades ex. caixa de supermercado empacotando Aprendizagem por reforço: recompensa/punição ex. jogo de xadrez: é por aí!

Sistemas de Aprendizagem Indutiva: Árvore de Decisão A partir de um conjunto de propriedades, decide sim ou não Representação de árvores de decisão Cada nó interno testa um atributo Cada ramo corresponde a um valor do atributo Cada folha atribui uma classificação Exemplo Soparia (by Carlos Figueira) predicado-objetivo: vaiASoparia Atributos considerados: Sono: Estou com sono? Transporte: Tenho como ir de carro? Carona? etc. CONIC: Devo estar amanhã cedo no CONIC? Álcool: Estou precisando de álcool? Sair: Quero sair de casa? Fome: Estou com fome?

Árvore de Decisão “pensada” atributo valores Sono? CONIC? Carro Não. Outros Carona Sim Sim. Não Quer sair? Meio de transporte? Pouco Precisa de álcool?

ID3: exemplos da Soparia Atributos: (Sono, Transporte, CONIC, Álcool, Sair, Fome)-> propriedade-objetivo E01: (Pouco,Carro,Sim,Sim,Não,Sim) -> Sim! E02: (Pouco,Carona,Não,Não,Sim,Sim) -> Sim! E03: (Sim,Carro,Não,Sim,Sim,Sim) -> Não. E04: (Pouco,Carona,Não,Não,Sim,Não) -> Sim! E05: (Sim,Outros,Sim,Sim,Sim,Não) -> Não. E06: (Pouco,Outros,Não,Sim,Não,Sim) -> Não. E07: (Pouco,Carro,Sim,Não,Sim,Sim) -> Sim! E08: (Pouco,Carona,Não,Não,Não,Sim) -> Não. E09: (Sim,Carro,Não,Sim,Sim,Não) -> Não. E10: (Não,Outros,Sim,Sim,Sim,Sim) -> Sim! E11: (Não,Carro,Não,Sim,Sim,Não) -> Sim! E12: (Não,Carona,Não,Sim,Sim,Sim) -> Sim!

Indução top-down de árvores de decisão Loop principal: 1. A  o “melhor” atributo de decisão para o próximo nó 2. Atribua A como atributo de decisão para nó 3. Para cada valor de A, crie um novo descendente para nó 4. Classifique os exemplos de treinamento nos nós folha 5. Se os exemplos de treinamento estão classificados perfeitamente, então PARE, senão comece novamente a partir dos novos nós folha

Árvore de Decisão “Induzida” +: E1,E2,E4,E7,E10,E11,E12 -: E3, E5, E6, E8, E9 Sono? Não Sim Pouco +: E1,E2,E4, E7 -: E6,E8 +: - - - -: E3, E5, E9 +: E10,E11,E12 -: - - - Não. Sim. Outros Carro Carona Meio de transporte? +: - - - -: E6 +: E1,E7 -: - - - +: E2,E4 -: E8 Sim. Não. Quer sair? Sim Não +: E2,E4 -: - - - +: - - - -: E8 Sim. Não.

Sistemas de Aprendizagem Automática: Implementação Selecionar exemplos para treinamento e teste do Sistema Classificados ou não Apresentar os exemplos a um algoritmo de aprendizagem automática Shells WEKA (ID3, AG,…) Simuladores de Redes Neurais Ex…

Raciocínio Baseado em Casos: Analogia Modelo do problema FRACO & exemplos de solução SIM Conhecimento em intenção e em extensão É um método de resolução de problemas onde novos problemas são resolvidos adaptando-se soluções de antigos problemas similares Um caso é um episódio vivido contém a descrição de problema + solução exemplos: um paciente, um projeto arquitetônico, uma situação, uma causa jurídica, etc.

Casos: experiência vivida Classificação: “Os problemas de ouvido deste paciente são casos típicos de otite média” Soluções compiladas: “Os sintomas de coração do paciente X podem ser explicados da mesma maneira que aquele paciente Y” Avaliando medidas: Minha casa é como aquela que foi vendida mais em baixo nesta rua por R$25.000,00 mas ela tem uma vista melhor” Concepção (design): para projetar este hospital, vou me basear naquele que já fiz com um número de leitos parecido, embora tenha de adaptá-lo pois este é de esquina Avaliando opções: se nós atacássemos as instalações dos mísseis cubanos/russos, seria como no caso de Pearl Harbor

Funcionamento do RBC: ciclo dos 4 RE´s Recuperar novo caso (alvo) novo caso (alvo) Indexar caso recupe-rado (fonte) problema Casos Reutilizar caso aprendido caso solução solução sugerida Reter caso testado e corrigido solução final Revisar

Exemplo Usos - classificação (casa dos meus sonhos?) - estimativa de preços (adaptação)

Algumas aplicações na WEB FindMe agents sugere filmes e carros em locadoras raciocino através de exemplos Help Desk sistema responde às dúvidas mais simples, restringindo a necessidade em contatar seus engenheiros

Os Sistemas Multi-Agentes “Duas Cabeças Pensam Melhor que Uma” Por que SMA? Às vezes a computação centralizada não é possível. A informação é distribuída, residindo em sistemas complexos. Algumas Características Precisam se comunicar – protocolos de interação. Ambientes abertos com design descentralizado Agentes são autônomos e distribuídos, podendo ser “bonzinhos” ou mais egoístas.

Aplicações de SMA Marcação de Reuniões Automática; Gerenciamento de Redes; Gerenciamento de Informação em Ambientes como a Internet. Entretenimento Otimização de Processos de Produção Simulação de Fenômenos Sociais. Análise de Negócios

Questões do Design de SMA Cada Agente é Limitado – precisam interagir. Não há (muitas vezes) o controle central. Autonomia. Coordenação Agentes com atitudes de Cooperação/ Competição Teoria dos Jogos Dependência entre Eles. Problema da Comunicação

Uma Aplicação de SMA Robocup