REPRESENTAÇÃO DO CONHECIMENTO Prof. Esp. Cristiano José Cecanho Inteligência Artificial.

Post on 18-Apr-2015

113 views 0 download

Transcript of REPRESENTAÇÃO DO CONHECIMENTO Prof. Esp. Cristiano José Cecanho Inteligência Artificial.

REPRESENTAÇÃO DO CONHECIMENTO

Prof. Esp. Cristiano José Cecanho

Inteligência Artificial

Roteiro• Questões de lógica• Introdução• Como o ser humano representa o conhecimento• PROLOG

Questão 1• O ano de 2007 tem 365 dias. O primeiro dia de 2007 caiu

em uma segunda-feira. Logo, neste ano, o dia de Natal cairá numa:

a)Segunda-feira

b)Terça-feira

c)Quarta-feira

d)Quinta-feira

e)Sexta-feira

Questão 1• O ano de 2007 tem 365 dias. O primeiro dia de 2007 caiu

em uma segunda-feira. Logo, neste ano, o dia de Natal cairá numa:

a)Segunda-feira

b)Terça-feira

c)Quarta-feira

d)Quinta-feira

e)Sexta-feira

Resolução• Dados:

• O ano começa numa segunda-feira.• 365 / 7 = 52 e sobra 1.• Ou seja, para cada dia da semana este repetirá 52 vezes no

ano.• Exceto o dia que inicia, este repete 53 vezes.• Se o ano começa numa segunda-feira ele deve terminar numa

segunda-feira.• Dezembro tem 31 dias.• 31 de dezembro é uma segunda-feira.• 31 – 6 = 25

• Dia de Natal acontece na terça-feira.

Questão 2• No período de 2010 a 2050, os anos bissextos (isto é,

aqueles com 366 dias) são todos aqueles divisíveis por 4. sabendo que 2010 terá 53 sextas-feiras, o primeiro ano desse período em que o dia 1º de janeiro cairá numa segunda-feira será:

a)2013

b)2014

c)2016

d)2018

e)2019

Questão 2• No período de 2010 a 2050, os anos bissextos (isto é,

aqueles com 366 dias) são todos aqueles divisíveis por 4. sabendo que 2010 terá 53 sextas-feiras, o primeiro ano desse período em que o dia 1º de janeiro cairá numa segunda-feira será:

a)2013

b)2014

c)2016

d)2018

e)2019

Resolução • Dados:

• 2010 terá 53 sextas-feiras.• 2010 dividido 4 tem resto diferente 0, então não é divisível por

4, então não é bissexto.• Se 2010 não é ano bissexto e possui 53 sextas-feiras, então

ele começa numa sexta-feira.• O ano de 2011 começa num sábado.• O ano de 2012 começa num domingo e é bissexto.• O ano de 2013 começa numa terça-feira.• O ano de 2014 começa numa quarta-feira.• O ano de 2015 começa numa quinta-feira.• O ano de 2016 começa numa sexta-feira e é bissexto.• O ano de 2017 começa num domingo.• O ano de 2018 começa numa segunda-feira.

Questão 3• Em certo planeta, todos os Aleves são Bleves, todos

Cleves são Bleves, todos os Dleves são Aleves, e todos os Cleves são Dleves. Sobre os habitantes desse planeta, é correto afirmar que:

a)Todos os Dleves são Bleves e e são Cleves.

b)Todos os Bleves são Cleves e são Dleves.

c)Todos os Aleves são Cleves e são Dleves.

d)Todos os Cleves são Aleves e são Bleves.

e)Todos os Aleves são Dleves e alguns Aleves podem não ser Cleves.

Questão 3• Em certo planeta, todos os Aleves são Bleves, todos

Cleves são Bleves, todos os Dleves são Aleves, e todos os Cleves são Dleves. Sobre os habitantes desse planeta, é correto afirmar que:

a)Todos os Dleves são Bleves e e são Cleves.

b)Todos os Bleves são Cleves e são Dleves.

c)Todos os Aleves são Cleves e são Dleves.

d)Todos os Cleves são Aleves e são Bleves.

e)Todos os Aleves são Dleves e alguns Aleves podem não ser Cleves.

Resolução• Seja:

• A = Aleves• B = Bleves• C = Cleves• D = Dleves

• Todos os Aleves são Bleves

BA

Resolução• Seja:

• A = Aleves• B = Bleves• C = Cleves• D = Dleves

• Todos os Cleves são Dleves

• ?

BA

Resolução• Seja:

• A = Aleves• B = Bleves• C = Cleves• D = Dleves

• Todos os Dleves são Aleves

BA

D

Resolução• Seja:

• A = Aleves• B = Bleves• C = Cleves• D = Dleves

• Todos os Cleves são Dleves

• Logo:

• Todos os Cleves são Bleves e todos Cleves são Dleves

BA

DC

Introdução • O conceito de representar o conhecimento humano

necessita de uma linguagem precisa para demonstrar expressões, conhecimentos e asserções.

• A lógica providencia o fundamento da dedução de consequentes premissas.

O ser humano interpretando

Computadores como base para o conhecimento

• Computadores fazem parte da história de nosso intelecto, mas estes requerem que o conhecimento seja representado de forma precisa e estruturada.

• Encontra-se dificuldade em construir um domínio para uma linguagem capaz de expressas problemas e instruir o computador para resolvê-los.

Computadores como base para o conhecimento

Imagem MentalLógicaRegrasLinguagem naturalDesenhoFramesDeduções

Arquitetura de Von Neumann• Os computadores são baseados na arquitetura de Von

Neumann, ou seja, dados de entrada, processamento aritmético e saída de dados.

• Isto provoca um impasse, pois este tipo de máquina é programada para receber instruções e não para o pensar.

Arquitetura de Von Neumann

Programas, ou aplicativos• Entenda-se que um programa de computador é escrito

em uma linguagem de programação que traduz o que nós entendemos (código fonte em inglês) para a linguagem que o computador entende (linguagem de máquina).

• Lógica e programação requer expressões de um conhecimento e métodos formais aceitos, tornando esta representação tediosa.

Linguagens de programação atuais

Algoritmos• Quando pensamos em programação, procuramos uma

solução para um determinado problema e em consequência temos uma complexa investigação do que deve ser feito (algoritmo).

• Sugestões, demonstrações e protótipos direcionam a programação com objetivo.

• Em IA, a programação não ocorre de forma algorítmica.

Aplicações

Controladores baseados no conhecimento

• As regras utilizadas por linguagens de programação em estruturas de decisão podem ser utilizadas para incorporar à máquina a experiência heurística do operador humano.

• Assim o operador humano é capaz de agir sobre uma dada planta, utilizando a experiência acumulada ao longo dos tempos.

Sistemas baseados em conhecimento são realizados por:• Interpretação de dados.• Predição.• Diagnose.• Síntese.• Planejamento.• Monitoração.• Correção de falhas.• Treinamento.• Controle.

Quanto a arquitetura• Banco de conhecimentos.

• Banco de regras.

• Um banco de dados, onde as informações sobre as condições de planta a ser controlada e as medidas estão armazenadas.

• Uma máquina de inferência, para dedução das ações.

Exemplo de arquitetura

Como a máquina de inferência funciona1. Busca de regras no banco de conhecimento que

tenham as condições satisfeitas, em termos do conteúdo do banco de dados (casamento do antecedente).

2. Se houver uma ou mais regras com as condições.• Então selecionar uma (resolução de conflito).• Senão, retornar ao Passo 1.

3. Executar a ação descrita na regra selecionada e retornar ao Passo 1.

Lógica de programação• A lógica de programação ajuda-nos a representação de

problemas do mundo real no computador, mas não nos dão o como fazer.

• Em nosso caso precisamos representar o conhecimento humano para resolver problemas e hipóteses suficientes de forma explicita com lógica de axiomas.

Axiomas• Axiomas constituem de alternativas para um programa

convencional.

• O programa pode ser executado para resolver determinado problema, formalizando as estruturas de forma lógica a cada chamada.

Programas Vs Axiomas

• Programas = configuração de axiomas.

• Computação = construção de evidências para alcançar um objetivo de um programa.

PROLOG• Por volta dos anos 70, Comerauer e um grupo de

especialista da Universidade de Marseilles-Aix desenvolveram um teorema escrito em Fortran, para implementar uma linguagem natural de processamento de sistemas.

• Este teorema foi chamado de PROLOG (Programmation em Logique) e foi incorporado pela interpretação procedural de Kowalski’s.

De LISP para PROLOG• Logo a ideia foi de substituir LISP por PROLOG como

linguagem para inteligência artificial.

• Em 1980, o número de centros programando em PROLOG chega a perto mil no mundo todo.

• Desde então revistas, jornais e conferências ganharam força e aplicações em todos os âmbitos surgem utilizando a lógica de programação e a inteligência artificial.

Ambiente PROLOG

PROLOG - Lógica aplicada a programas A lógica de programação é uma configuração de

axiomas, ou linhas, definindo a relação entre objetos.

Esta programação define as configurações das sequencias, assim como o pensamento.

PROLOG – Conceitos básicos• O desenvolvimento da lógica de programação

fundamenta-se em termos e estruturas, são herança da lógica.

• São três os conceitos: • Fatos• Regras• Consultas.

• Eles formam uma simples estrutura de dados: o termo lógico.

PROLOG - Fatos• Fatos são os relacionamentos formados entre os objetos:

pai(mario,laercio).

• Este fato diz que Mario é pai de Laércio para o computador, ou que tipo de relação existe entre os indivíduos de nomes Mario e Laercio.

• Note que o nome da relação é um predicado.

• Similarmente, mais(2,3,5) expressa uma relação que 2 mais 3 é 5.

PROLOG - Atoms

• Quando ocorrer um predicado sem relacionamento temos o atom.

• Nomes individuais são conhecidos por atoms.

• Exemplo:

homem(jose).

mulher(maria).

PROLOG – Fatos: exemplo• A familiaridade da relação “mais” realiza por meio de

configuração de fatos que definem a tabela de adição:

• mais(0,0,0). • mais(0,1,1). • mais(0,2,2). • mais(0,3,3). • mais(1,0,1). • mais(1,1,2). • mais(1,2,3). • mais(1,3,4).

PROLOG - Base de conhecimento• A quantidade de elementos de uma tabela será suficiente

se atender as respostas para sua lógica de programação.

• Esta é a base de conhecimento e a tendência dela é sempre crescer.

PROLOG - Falha• Imagine que você montou uma base de conhecimento e o

sistema está em pleno funcionamento dentro da empresa.

• Dado certo momento o sistema para, porque um determinado problema não foi identificado no momento da criação da base de conhecimento.

• O sistema automatizado não consegue interpretar e tomar uma decisão para sair daquela situação, pois não possui conhecimento necessário para isto.

PROLOG - Resolução• Como resolver?

• Adicionando este novo problema a base de conhecimento.

• Ou, selecionando uma nova regra.

PROLOG - Exemplo família• Observe agora a base de conhecimento para a análise de

gênero e parentesco de uma família:

pai(mario, laercio).pai(mario, lelio).pai(mario, solange).pai(laercio,cristiano).pai(laercio,hugo).

mae(luiza,laercio).mae(luiza,lelio).mae(luiza,solange).mae(celia,cristiano).mae(celia,hugo).

PROLOG – Regras para a construção

• Note que no exemplo anterior que os predicado e atoms, nos fatos, todos foram escritos em letra minúscula.

• Uma finita configuração de fatos constituem o programa, esta configuração descreve um situação.

• Letras maiúsculas são utilizadas para criar variáveis.

PROLOG - Consultas• A segunda forma de se estruturar programas lógicos é

através de queries, ou consultas.

• Esta é uma forma de conseguir informações de um programa, ou a forma com que o programa PROLOG consulta uma situação automatizada.

• Por exemplo: ao perguntar se mario é pai de laercio o programa deve retornar Yes.

• ?-pai(mario,laercio).• yes

PROLOG – entendendo a consulta• Sintaticamente, consultas e fatos são semelhantes, o que

distingue um do outro é o questionamento e o contexto.

• Caso esteja confuso imagine o seguinte:

• ?-pai(##,##) é uma função do sistema que necessita de dois parâmetros para fazer a comparação.

• A resposta desta função retorna pode retornar dois valores yes ou no.

PROLOG - Parâmetros• Parâmetro é um valor fornecido pelo sistema, ou por um

leitor de código de barra, ou pelo usuário ou por outra função ou artefato implementado no sistema.

• Um teste no programa: perguntar se luiza é filha de mario.

• ?-pai(mario,luiza).

Exercício• Crie uma base de conhecimento representando a sua

família a partir da linhagem de seus avós.