Sei sulla pagina 1di 33

INTELIGÊNCIA ARTIFICIAL

1. Introdução a Inteligência Artificial: histórico e visão geral

Nesta primeira aula você irá aprender um pouco sobre o que é a área de estudo
de Inteligência Artificial (IA), como ela começou, quais são as principais
aplicações e quais as subáreas que cobriremos neste curso.

Você vai começar estudando as principais definições de IA e quais os tipos de


problema que os seguidores de cada uma das definições procura resolver. Em
seguida, você lerá sobre o surgimento da área de pesquisa e sobre como as
áreas simbólicas e conexionistas (neuroinspiradas) se desenvolveram em
paralelo desde o início até os dias atuais.

Neste curso, o foco será na ​área simbólica​, que aparece como base em
praticamente todos os livros-texto da área.

Introdução

Inteligência Artificial (IA) é um ramo da ciência da computação que se propõe a


elaborar dispositivos que simulem a capacidade humana de raciocinar, perceber,
tomar decisões e resolver problemas, enfim, a capacidade de ser inteligente.

Existente há décadas, esta área da ciência é grandemente impulsionada com o


rápido desenvolvimento da informática e da computação, permitindo que novos
elementos sejam rapidamente agregados à IA.

O objetivo central das pesquisas relacionadas a inteligência artificial baseia-se na


ideia de fazer com que os computadores possam "pensar" exatamente como os
humanos, criando análises, raciocinando, compreendendo e obtendo respostas
para diferentes situações.

Um ser humano consegue resolver problemas (ex.: quebra-cabeça) não


tentando todas combinações possíveis mas sim utilizando conhecimento acerca
do problema de forma inteligente.
Podemos programar um computador para utilizar conhecimento de um
problema de forma inteligente?

Abordagens e definições de Inteligência Artificial (I. A):


1) Pensar como humanos (envolve estudos das ciências cognitivas,
psicologia);
2) Pensar de forma racional - lógica (um ser humano nem sempre pensa de
forma racional);
3) Agir como humanos (Teste de Turing);
4) Agir de forma racional (foco desta disciplina)

Pensar humanamente:​ A proposta de modelagem cognitiva.


Se formos dizer que um programa pensa como um humano, precisamos de
alguma forma de determinar como humanos pensam. Precisamos estar por
dentro do funcionamento da mente humana. Existem duas formas de fazer isto:
através de introspecção – tentando pegar nossos próprios pensamentos a
medida que eles surgem – e através de experimentos psicológicos. Uma vez que
temos uma teoria precisa o suficiente sobre a mente, se torna possível expressar
essa teoria como um programa de computador. Se as entradas e saídas do
programa e o tempo dos comportamentos correspondem com comportamentos
humanos, é evidente que alguns mecanismos de programas podem também
estar operando em humanos. Por exemplo, Allen Newell e Herbert Simon, que
desenvolveram o GPS, o General Problem Solver (1961) não estavam contentes
que seu programa resolvesse problemas corretamente, eles queriam comparar
os passos do seu raciocínio com os de como um humano resolve o mesmo
problema.

Pensar racionalmente:​ A proposta das “leis do pensamento”.


O filósofo grego Aristóteles foi um dos primeiros a tentar codificar o
“pensamento correto”, que é, irrefutavelmente, o processo de raciocínio. Seu
silogismo provê padrões para estruturas de argumentos que sempre produzem
conclusões corretas quando dadas corretas premissas – por exemplo, “Sócrates
é um homem”; todos os homens são mortais; logo, Sócrates é mortal”. Estas leis
de pensamento eram supostas por governar a operação da mente; seu estudo
iniciou o campo chamado lógica.
Agir racionalmente: ​A proposta de agente racional.
Um agente é apenas algo que age (agente vem do latim agere, fazer). Mas
agentes de computador são esperados por terem outros atributos que
distinguem eles de meros programas, tal como operando sobre controle
autônomo, percebendo seu ambiente, persistindo sobre um prolongado
período de tempo, se adaptando à mudanças e sendo capaz de pensar em
outros objetivos. Um agente racional é um que age de forma a alcançar o
melhor resultado ou, quando em incerteza, o melhor resultado esperado.

“IA Forte” versus “IA Fraca”

IA FRACA: Se preocupa mais com o resultado final. Como o ser artificial age de
forma inteligente? Independente de como funciona internamente ou como é
programado.

IA FORTE: Imitar como o pensamento humano funciona, máquinas similares ao


cérebro.

Alan Turing (1950)​: ao invés de perguntar se podem “pensar”, perguntar se


podem “passar pelo teste de comportamento”. O importante não é pensar, mas
sim conseguir se comportar de maneira racional.

TESTE DE TURING

O Teste de Turing testa a capacidade de uma máquina exibir comportamento


inteligente equivalente a um ser humano, ou indistinguível deste.

O teste funciona da seguinte forma:


● Um jogador humano entra em uma conversa, em linguagem natural, com
outro humano e uma máquina projetada para produzir respostas
indistinguíveis de outro ser humano,através de um teclado.
● Todos os participantes estão separados um dos outros.
● Se o juiz não for capaz de distinguir com segurança a máquina do humano,
diz-se que a máquina passou no teste.
O teste não verifica a capacidade de dar respostas corretas para as perguntas;
mas sim o quão próximas as respostas são das respostas dados por um ser
humano típico. A conversa é restrita a um canal de texto, como um teclado e
uma tela para que o resultado não dependa da capacidade da máquina de
renderizar áudio.

HABILIDADES NECESSÁRIAS PARA APROVAÇÃO NO TESTE DE TURING

● Processamento de Linguagem Natural;


● Representação do Conhecimento;
● Raciocı́nio Automático;
● Aprendizado de Máquina;

PRÉ-HISTÓRIA DA I. A.

As ideias de I. A. já estavam presente na filosofia desde os gregos e a lógica


também surgiu dois mil anos antes de Cristo. Matemática, economia, psicologia,
neurociência, linguística, todas estas disciplinas já tinham um volume de estudos
muito grande até o começo do século 20 e contribuíram para o nascimento da
Inteligência Artificial.

O termo Inteligência Artificial só apareceu na década de 50, mas um dos


primeiros trabalhos que envolvia a ideia de Inteligência Artificial propriamente
dita, foi a criação dos ​neurônios artificiais.

Esse trabalho foi feito já na década de 40 e a ideia era simplesmente programar


um computador de uma maneira que a gente tivesse a ideia de neurônios e os
neurônios poderiam estar ligados ou desligados. Isso simulava a ideia e o
conhecimento que você tem sobre o funcionamento dos neurônios: um
neurônio ligado e se as conexões dele tivessem ligadas ele poderia passar essa
ligação ou ativação para os neurônios vizinhos e propagar ativação.

Este trabalho foi desenvolvido por dois alunos de graduação no departamento


de matemática de Princeton, ​Marvin Minsky ​e ​Dean Edmonds ​(construíram a
primeira rede neural de computador em 1951 - o SNARC, como foi chamada,
usou 3000 tubos de vácuo para simular uma rede de 40 neurônios).
As primeiras informações sobre ​neurocomputação surgiram em 1943, em
artigos do neuroanatomista e psiquiatra ​Warren McCulloch​, do Instituto
Tecnológico de Massachusetts, e do matemático ​Walter Pitts​, da Universidade
de Illinois. Os autores fizeram uma analogia entre células nervosas vivas e o
processo eletrônico, em um trabalho publicado sobre "neurônios formais";
simulando o comportamento do neurônio natural, no qual o neurônio possuía
apenas uma saída, que era uma função da soma de valor de suas diversas
entradas. O trabalho consistia num modelo de resistores variáveis e
amplificadores, representando conexões sinápticas de um neurônio biológico.

Então esse é considerado um dos primeiros trabalhos da história da Inteligência


Artificial, ou seja, da Inteligência ​Artificial Forte que é aquela abordagem mais
cognitiva simulando o funcionamento do cérebro.

Existiram também outros trabalhos anteriores que podem ser caracterizados


como IA, mas foi Alan Turing quem primeiro articulou uma visão completa de IA
em seu artigo “Computação de Máquina e Inteligência” em 1950. Lá ele
introduziu o teste de Turing, aprendizado de máquina, algoritmos genéticos e
reforço da aprendizagem.

Já o termo ​Inteligência Artificial foi aparecer em 1956 em workshop que


aconteceu em Dartmouth, nos Estados Unidos, onde John McCarthy propôs
reunir vários pesquisadores das áreas de economia, matemática, computação,
filosofia, linguística e que estavam trabalhando com questões que ele englobou
nesse termo ​“Inteligência Artificial”​.

O ​Projeto de Pesquisa de Verão de Dartmouth ​sobre Inteligência Artificial foi o


nome de uma oficina de verão de 1956, considerada por muitos o evento
seminal para a inteligência artificial como um campo.

O projeto durou aproximadamente seis a oito semanas e foi essencialmente uma


sessão de brainstorming prolongada. Onze matemáticos e cientistas foram
originalmente planejados para serem participantes e, embora nem todos
comparecessem, mais de dez pessoas compareceram por curtos períodos.

A lista de participantes é impressionante. Como exemplo podemos citar:


● Claude E. ​Shannon​ que é considerado o pai da teoria da informação;
● Marvin Lee ​Minsky que construiu a primeira rede neural, contribuiu com
a computação e com a filosofia por trás da computação durante muitos
anos;
● Herbert Alexander ​Simon que ganhou Prêmio Nobel de Economia
posteriormente e trouxe todo o viés de como resolver problemas, de
como pensar o que é racional para o ser humano;
● Allen Newell ​considerado um dos pais da inteligência artificial e da ciência
cognitiva.

Destes encontros começaram a surgir as colaborações e sistemas que deram


origem a toda essa área da Inteligência Artificial.

O INÍCIO DERRADEIRO
● “Programs with Common Sense” - 1959;
● Uso de lógica para resolver problemas.

John McCarthy fez muitas coisas e foi muito importante na área da Inteligência
Artificial. Além de ter organizado esse encontro ele foi o criador da linguagem de
alto nível ​Lisp​ que foi um padrão usado por muito tempo.

Lisp é uma família de linguagens que possui uma longa história. As primeiras
idéias-chave para a linguagem foram desenvolvidas por John McCarthy em 1956,
durante um projeto de pesquisa em inteligência artificial. A primeira
implementação da linguagem se dá no inverno de 1958.

A motivação de McCarthy surgiu da idéia de desenvolver uma linguagem


algébrica para processamento de listas para trabalho em IA (inteligência
artificial).

Esforços para a implementação de seus primeiros dialetos foram empreendidos


no IBM 704, IBM 7090, DEC PDP-1, DEC PDP-6 e DEC PDP-10. O dialeto principal
entre 1960 e 1965 foi o Lisp 1.5.No início dos anos 1970, houve outros dois
dialetos predominantes, desenvolvidos através de esforços anteriores: MacLisp e
Interlisp.
McCarthy também escreveu um artigo publicado em 1959 chamado ​“Programs
with Common Sense” que são programas com o senso comum, ou seja, é como
se eles tivessem habilidade de resolver problemas da mesma forma que a gente
resolve. Pela primeira vez tínhamos o uso de lógica para resolver problemas

Programs with Common Sense foi provavelmente o primeiro artigo sobre a


lógica de IA , ou seja, IA em que a lógica é o método de representação da
informação na memória do computador e não apenas o assunto do programa.
Ele descreveu o Advice Taker (Tomador de Conselhos), um programa hipotético
que pode ser visto como o primeiro sistema de IA completo.

O documento foi entregue na Conferência de Teddington sobre a Mecanização


dos Processos do Pensamento, em dezembro de 1958, e impresso nos anais da
conferência.

Primeiros sistemas especialistas: uso de conhecimento para resolver


problemas.

● Dendral (~1965)
● MYCYN (~1975)

Conforme dito, foi a primeira vez que que alguém falou em usar a lógica como
uma maneira de raciocínio para simular o raciocínio necessário para um sistema
inteligente e também o uso da lógica não só para o raciocínio, para resolução,
mas a lógica para armazenar o conhecimento necessário sobre o problema como
a gente representa o que precisamos para resolver o problema.

Dessa vertente saíram os primeiros ​sistemas especialistas ​que representavam o


conhecimento numa linguagem formal e aí para diversas funções diferentes. A
ideia aqui dos sistemas especialistas é que eles podiam codificar o conhecimento
de um especialista numa certa área para poder agir em função disso.

O primeiro sistema especialista que consta em todos os livros de história da


Inteligência Artificial, o ​DENDRAL​, servia para analisar moléculas de química
orgânica e pensar como que os átomos se posicionavam e a partir daí tentar
encontrar a estrutura de uma molécula e fazendo isso então a partir da Fórmula.
Dendral é um sistema especialista e um projeto pioneiro em inteligência
artificial, que começou a ser desenvolvido em 1965, na ​Universidade de
Stanford​. O objetivo do projeto é desenvolver soluções capazes de encontrar as
estruturas moleculares orgânicas a partir da espectrometria de massa das
ligações químicas presentes em uma molécula desconhecida.

E se a gente quer o quebra-cabeça se a gente tiver que pensar cada combinação


possível são muitas combinações para explicar então que esse sistema Fazia era
ter conhecimentos de química orgânica que vinham de especialistas e também
medidas que vinham de aparelhos espectrômetros que verificaram a estrutura
possível isso reduzir muito o espaço de busca por uma solução

Um outro programa que ficou famoso, o ​MYCIN​, era um sistema de


recomendação de antibióticos para infecções bacterianas. Ele tinha uma série de
regras e conhecimentos relações marcadas sobre sintoma, então o médico ele
fazia uma série de perguntas sobre sintomas e com as respostas ele ia gerando
recomendações de antibióticos.

O que é muito interessante é que ele foi desenvolvido em 1975 e na época


fizeram uma pesquisa com os médicos a distância então especialistas em
infecção e os iniciantes, os médicos já formados em residência, eles tinham uma
performance pior do que o MYCIN então sistema muito simples ele indicavam
antibiótico certo mais vezes do que os próprios médicos mas tem toda uma
questão de ética se se se dá alguma coisa errada no tratamento recomendado
pelo programa Quem é o responsável E além disso nessa época com o poder
computacional que existia era tudo muito demorado Então as possessões de
Diagnóstico demoravam muito para ser calculadas Mas é interessante que ele
conseguia acertar muito

O ​MYCIN foi um dos primeiros sistema especialistas. Ele foi escrito em Lisp como
a dissertação de doutoramento de Edward Shortliffe. Surgiu no laboratório que
havia criado anteriormente o sistema especialista Dendral, mas enfatizava a
utilização de regras de julgamento onde havia elementos de incerteza
(conhecidas como fatores de segurança) que lhes eram associados. Este sistema
especialista foi desenvolvido para identificar as bactérias causadoras de
infecções graves, tais como bacteremia e meningite, e para recomendar
antibióticos, com a dose ajustada para o peso corporal do paciente; O nome
derivou dos mesmos antibióticos, uma vez que muitos antibióticos contém o
sufixo "-mycin".

é possível isso reduzirá muito o espaço de busca por uma solução e depois no
outro que ficou famoso com mais sim a era um sistema de recomendação de
antibióticos para infecções bacterianas então ele tinha uma série de regras e
conhecimentos relações marcadas sobre sintomas então o médico ele fazia uma
série de perguntas sobre sintomas e com as respostas ele ia gerando
recomendações de antibióticos O que é muito interessante é que ele foi
desenvolvido em 75 e na época fizeram uma pesquisa com os médicos de
estampas então especialistas em infecção e os iniciantes né os médicos já
formados já na residência eles tinham uma performance pior do que mais se
então sistema muito simples ele indica o antibiótico certo mais vezes do que os
próprios médicos mas tem toda uma questão de ética se hospedar alguma coisa
errada no tratamento recomendado pelo programa Quem é o responsável E
além disso nessa época com poder computacional que existia era tudo muito
demorado Então as possessões de Diagnóstico demoravam muito para ser
calculadas Mas é interessante que ele conseguia acertar muito

Pouco depois na década de 70 teve o primeiro algoritmo de aprendizado de


máquinas que foi sugerido por ​Tom Michael ​Mitchell e que foi usado por muitos
anos hoje tem algoritmos mais rápidos mas esse algoritmo foi usado por muitos
anos e modificado então foi quando começou também né

O Tom Mitchell é considerado o pai do aprendizado de máquina então aqui foi


quando começou início dessa área.

​Aplicações da I. A.
● Veículos Autônomos​: se movimentam sozinhos e não precisa de alguém
dirigindo, inclusive já teve os primeiros acidentes com esses veículos;
● Sistemas de Recomendação (Netflix, YouTube, Spotify, …): basicamente
tudo que a gente usa para assistir filmes, ouvir música, comprar livros, a IA
vai coletando dados sobre os nossos gostos e nossos passados para fazer
recomendações de futuro;
● Jogos (DeepBlue, AlphaGo)​: tem aplicações também muito importantes
na área de jogos. O DeepBlue foi o primeiro programa ganhar de um
campeão de xadrez. Tivemos o Alphago que foi o primeiro a ganhar de um
campeão de Go, foi feito um documentário muito interessante sobre este
programa mostrando todo o processo de programação.

Em outubro de 2015 aconteceu um dos eventos mais importantes para a equipe


do laboratório de inteligência artificial do Google, o DeepMind. Depois de ganhar
do campeão europeu do jogo chinês Go por 5 a 0, o computador AlphaGo
derrotou o campeão mundial do jogo, Lee Sedol.

2. Resolução de problemas através de busca

Nesta aula, estudaremos como resolver problemas através de algoritmos de


busca, que exploram o espaço de estados possíveis procurando por um que
satisfaça o teste de objetivo.

Veremos, então, como formular um problema e descrever os estados possíveis


correspondentes. A seguir, veremos como aplicar técnicas conhecidas na ciência
da computação para explorar o espaço de estados. Veremos os algoritmos de
busca em largura e busca em profundidade e algumas variações. Você vai ver
uma comparação entre os diferentes algoritmos e entender quando cada um
pode ser usado.

Na aula de hoje a gente vai falar de uso de técnicas de busca para resolução de
problemas.

Para definir o que é um problema precisamos dizer:


● Qual estado Inicial?
● Quais são as ações?
● Qual teste de objetivo? (como sabemos que problema foi resolvido);
● Qual o custo minimizar na hora de resolver esse problema.

O que é uma solução?

Solução é a sequência de ações que temos que fazer para chegar do Estado
inicial até o estado final ou um estado O que é um estado final é um estado
objetiva o estado que satisfaz o teste de objetivo que a gente decidiu então no
exemplo que eu dei na aula passada de ir do trabalho para casa o que eu vou
fazer é pensar o que que é um teste objetivo era do trabalho para casa o teste
objetivo é eu chegar em casa você é daqui de casa para o trabalho objetivo é
chegar no trabalho e uma solução ótima é uma solução de menor custo estou
falando de estado Inicial estado final estado objetiva o que que é esse o que são
esses estados a gente tem um espaço de estados que são todos os estados que
eu consigo acessar a partir do Inicial cada estado é uma representação do que eu
tenho como se fosse uma representação do mundo que eu tô tratando naquele
instante e esses estados Eles vão mudando conforme eu aplico ações neles
então a gente pode pensar nisso como sendo um grafo nesse gráfico a gente
tem cada estado representado por nós e os arcos são ações então eu aplico uma
ação lá por exemplo de pegar um ônibus da minha casa até o trabalho e eu me
movo de um estado Inicial que eu estou em casa até um estado do trabalho
claro que eu posso ter várias ações passando por vários estados Então essa ideia
de ter um espaço de estados representados E aí a gente tem que pensar que
esses estados são alterações do mundo real então eu não vou colocar cada
detalhe do mundo nesse exemplo do caminho de casa até o trabalho o que que
eu vou representar no Estado a posição em que eu estou posso representar a
posição de forma discreta a posição exata dada por um GPS tudo isso eu vou ter
que definir Depende do trabalho que eu vou fazer se eu vou querer minimizar a
distância pode ser que eu queira saber a distância exata se eu quero só pensar
em tempo talvez eu não preciso de tantos detalhes sobre a minha posição Então
vamos ver aqui um exemplo um exemplo que que tem no livro e que eu vou
deixar em mais detalhes para vocês a gente tem aqui Um exemplo muito simples
que é um problema de um aspirador de pó e ele pode estar em duas posições
diferentes Então se a gente olhar um estado aqui é dado por

Para definir o que é um problema é necessário definir:


● Estado Inicial:
● Ações:
● Teste de Objetivo: como saberemos que o problema foi resolvido.
● Custo:

Solução:​ sequência de ações que levam de um estado inicial a um objetivo.

Solução ótima:​ solução de custo mínimo

ESPAÇO DE ESTADOS
O conjunto de todos os estados acessíveis a partir de um estado inicial é
chamado de espaço de estados.

O espaço de estados pode ser interpretado como um grafo em que os nós são
estados e os arcos são ações.

Abstração do mundo real.


Exemplo: Caminho de casa até o trabalho. Estados dados pela posição exata ou
discretizados?

EXEMPLO (Aspirador de Pó).


● Estados: Posição do robô e sujeira (8)
● Estado inicial: Qualquer um
● Ações: esquerda (L), direita (R), aspirar(S)
● Teste de objetivo: todas as posições estão limpas?
● Custo do caminho: 1 cada passo

EXEMPLO (8 rainhas)

● Estados: Qualquer disposição de 0 a 8 rainhas


● Estado inicial: Nenhuma rainha
● Ações: colocar mais uma rainha
● Teste de objetivo: 8 rainhas, 0 ataques
● 64x63x...57 = 3x10​14​ possibilidades!

● Estados: n rainhas nas n primeiras colunas, sem ataque


● Ações: colocar uma rainha na próxima coluna, sem ataque.
● 2.057 estados possíveis

BUSCA EM ÁRVORE
Fronteira​: nós a serem expandidos (começa com o estado inicial)
A função Expande cria novos nós, usando as ações aplicáveis para gerar os
estados correspondentes.

● Retira​ o primeiro nó da fronteira (falha se vazia)


● Testa​ se é um estado final (solução): se for, devolve nó, sucesso
● Expande​ nó;
● Insere​ os nós gerados na fronteira e volta para o passo 1

ESTRATÉGIAS DE BUSCA
A estratégia usada define a ordem em que os nós são expandidos, ou seja,
retirados da fronteira.

BUSCA CEGA (não informada)

● Em Largura
● Em Profundidade
● Profundidade Limitada
● Aprofundamento Iterativo

BUSCA EM LARGURA

Nós são expandidos na ordem em que foram criados.


Completa ​Se número de ações é finito
Ótima​ Se ações tem custo 1
Espaço​ mantém todos os nós na memória...

BUSCA EM PROFUNDIDADE.
O último nó criado é o primeiro a ser expandido.
3. Busca informada e funções heurísticas

Nesta semana, você irá continuar a estudar a resolução de problemas através da


busca, mas agora acrescentando um ingrediente essencial para a inteligência
artificial: a informação!

As estratégias de busca que você viu na semana passada dependiam apenas da


formulação do problema. Agora, você verá como o conhecimento prévio que
temos sobre o domínio do problema pode ser utilizado para melhorar a busca.
Você pode pensar no conhecimento sobre o domínio como aquele
conhecimento que se adquire após ser confrontado com o domínio diversas
vezes. Por exemplo: na montagem de um quebra-cabeças, não testamos todas
as combinações possíveis, pois sabemos que as peças devem se encaixar de um
determinado modo, com cores ou padrões semelhantes; na busca por um
caminho até o trabalho, sabemos que a distância real deveria diminuir a cada
passo e não aumentar.

Você vai conhecer a ideia de busca pela melhor escolha e duas variações: busca
gulosa e busca A*. As duas estratégias dependem do uso de uma heurística, uma
função que avalia o valor de um certo nó no caminho da busca.

Com o material proposto, queremos que você entenda o que são heurísticas,
compreenda como elas podem ser utilizadas para guiar o processo de busca por
soluções e conheça algumas maneiras de formular uma heurística admissível.

4. Jogos adversariais: as escolhas do adversário levadas em consideração


Nas semanas anteriores, você viu como representar problemas e algumas
estratégias para procurar soluções. Nesta semana, você verá como estender
essas técnicas para lidar com a competição com outro agente. Vamos tratar de
jogos adversariais, em que dois agentes competem pela vitória.

Você começará vendo como jogos podem ser representados através de uma
árvore de busca, na qual, em cada nó, a escolha é feita por um dos jogadores. O
algoritmo básico para auxiliar na decisão é chamado Minimax e se baseia no fato
de que aquilo que é a melhor jogada para um jogador, idealmente é a pior
jogada para o outro: afinal, para um ganhar, o outro deve perder.

Na sequência, você verá como é possível podar a árvore de busca para não
precisar explorar jogadas que já sabemos que não levarão ao melhor resultado.
Você verá como aplicar heurísticas em jogos como xadrez, em que o espaço de
busca é grande demais para ser explorado até o final.

Por fim, verá como levar em consideração também um elemento de azar (ou
acaso), como resultado de dados ou algum tipo de sorteio.

Ao final desta semana, você deverá entender como um jogo pode ser visto como
um problema de busca, ser capaz de aplicar o método minimax para decidir uma
jogada, saber aplicar a poda alfa-beta quando possível, lidar com decisões
imperfeitas e com o elemento de acaso.

5 - Lógica em IA e resolução de problemas

Você já teve contato com a linguagem da lógica proposicional na disciplina


Fundamentos Matemáticos da Computação. O foco desta semana é a
representação do conhecimento por meio de fórmulas da lógica. Esse tópico
está dentro da área de estudos conhecida como Sistemas Baseados em
Conhecimentos, que deriva dos primeiros sistemas de Inteligência Artificial
propostos na década de 1960. A ideia é que um sistema que resolve problemas
deve conter duas partes separadas: uma base de conhecimento, que é um
conjunto de fórmulas descrevendo o conhecimento necessário, e um mecanismo
de controle ou inferência, que deriva novo conhecimento a partir da base,
buscando por soluções.

Para ilustrar o uso da lógica em bases de conhecimento, usaremos como


exemplo o mundo do Wumpus, um jogo didático criado para explorar técnicas
de IA. Você encontra diversas versões implementadas na rede. Iremos
representar fatos e regras do mundo Wumpus e ver como podemos inferir novas
sentenças através do exame dos modelos que satisfazem a nossa base de
conhecimento.

Com os materiais propostos para esta semana, queremos que você perceba o
poder da lógica como linguagem de representação de conhecimento e
raciocínio. Você deve ser capaz de modelar pequenos problemas, como o campo
minado, sugerido no exercício de apoio.

6. Representação de conhecimento
Nesta aula, seguiremos com o estudo dos sistemas baseados em conhecimento.
Contudo, estamos mudando a linguagem lógica usada, passando para a lógica de
primeira ordem.

Primeiro iremos ver algumas desvantagens do uso da lógica proposicional para


representar problemas como o do Wumpus, em que o mesmo conhecimento
deve ser representado para diversos quadrados diferentes no tabuleiro. A lógica
proposicional não permite a generalização, que só é possível com a introdução
das variáveis e quantificadores.

Em seguida, veremos que não há uma única forma de representar o


conhecimento, mas que podemos usar algumas diretrizes para nos auxiliar nas
escolhas. A tarefa de escolher a melhor maneira de representar conhecimento é
conhecida como engenharia de conhecimento. Veremos um passo a passo de
aplicação da engenharia de conhecimento ao problema de verificar circuitos,
que vocês estão aprendendo na disciplina Circuitos Lógicos.
Com os materiais propostos para esta semana, queremos que você veja como a
lógica de primeira ordem pode ser utilizada para representar conhecimento
sobre problemas. No final da semana, você deverá ser capaz de analisar
pequenos problemas, decidir qual o melhor vocabulário para representar o
conhecimento necessário e escrever, em lógica de primeira ordem, fórmulas que
traduzam o conhecimento necessário.

o conhecimento sobre o problema está representado de uma maneira formal

Vimos como exemplo o mundo do Wumpus onde a gente tem um monstro no


labirinto e e e a gente tem algumas informações sobre o que acontece nos
quadrados adjacentes então em volta do monstro tem cheiro em volta dos
pontos tem uma brisa e aí a gente viu uma representação na lógica
proposicional por exemplo para dizer que o imposto causa a brisa num quadrado
adjacente a gente definir variáveis proposicionais
Então a gente tem aqui variáveis proposicionais b11 B12 p-21 e é importante
lembrar que apesar de aparecer em esses números na verdade eles são parte do
nome da variável variável que podia chamar bebê que o que fosse a gente pois
os números pra gente lembrar a qual quadrada que não se refere mas o nome
inteiro é um átomo então isso daqui tudo é uma variável proposicional

porque eu tô dizendo isso porque quando a gente vai falar de outros espaços
então aqui a gente está falando que se tem brisa no quadrado 1 então tem é
porque tem poço em alguma das posições adjacentes mas eu tenho que fazer
isso para cada um dos dados do meu tabuleiro então eu vou ter que fazer a
mesma coisa para o 21 listar quais são as posições adjacentes de 31 e assim por
diante

Então essa não parece ser a melhor maneira de representar o conhecimento


aqui sobre esse tabuleiro. Aproveitando a ideia que a gente tem aqui que a
gente está falando de números de posições se a gente for para lógica de
primeira ordem a gente pode pensar em parametrizar essas posições. Então em
vez de dizer B12 e isso daqui ser um átomo a gente está dizendo B vale na
posição y. O que é a posição y isso não pode ser o quadrado 1/2 pode ser o
quadrado um agente vai substituindo e Dependendo de qual valor a gente
coloca aqui no y a gente vai olhar os quadrados adjacentes aqui no x Então vai
ver aonde que vai ter um poço

então lógica de primeira ordem ela permite que a gente expressa Todas aquelas
acepções com um esquema só então uma fórmula onde as variáveis vão sendo
instanciados de acordo com as posições do Tabuleiro

a gente aqui usou uma relação a que um predicado Para Dizer que duas posições
do Tabuleiro são adjacentes a gente pode definir esse predicado dizendo que
bom eu tenho duas posições adjacentes então eu vejo a coordenada x e y de
cada uma delas se o x e o y novos Né o x linha e o y linha são variações pequenas
do XY originais então outro um espaço para direita outro espaço para esquerda
um espaço para cima e para baixo

Então eu tenho quatro possibilidades de quadrados adjacentes a esse Inicial

Então isso é uma das coisas que a gente consegue representar com a lógica de
primeira ordem

podemos representar várias coisas sobre o jogo usando essa mesma forma
então eu posso dizer que a gente sabe que quando tem um pôster cheiro nas
casas adjacentes então a gente usa uma forma que é bem parecida com aquela
anterior da Brisa a gente pode também colocar conhecimentos que a gente tem
sobre o jogo só tem um b****** se um postar em x e um Fusca em Y bom então
X e Y tem que ser o mesmo lugar porque ele não pode estar em dois lugares ao
mesmo tempo a gente pode representar também conhecimento Digamos que o
mundo não pode estar no quadrado que tem um poço então se eu sei que o
imposto na posição X então eu já sei que não tem um posto na posição x isso vai
me permitir fazer inferências então se eu descubro cheiro e eu acho que tenho
um pus numa posição só sei que lá não tem poço e aí se eu sinto uma brisa eu
posso pensar então que postar numa outra posição adjacente não na mesma
que é do Wumpus
É importante agente representado todo esse conhecimento que a gente tem
sobre o funcionamento do jogo para poder fazer as inferências e prosseguir
exploração do Tabuleiro

o que que acontece quando a gente estava na lógica proposicional lógica


proposicional açais pressa para agente fato que podem ser verdadeiros ou falsos
Eu por exemplo de um significa que tem brisa na posção

7 - Planejamento: técnicas clássicas de construção de sequências de ações

Problemas de planejamento estão por toda a parte, desde planejar seu caminho
de casa para o trabalho até cozinhar. Você verá as linguagens que foram
desenvolvidas para representar os estados e ações e que são baseadas em
restrições da lógica de primeira ordem.

Em seguida, você vai ver como algumas ideias simples tornaram possível a
elaboração de algoritmos eficientes de planejamento. Entre essas ideias, estão a
quebra do problema em subproblemas que podem ser resolvidos e depois
combinados e a ideia de que podemos planejar em ordem diferente da que as
ações serão executadas. Isso permite pensar no problema de planejamento
como uma busca em que os estados são planos parciais e o objetivo é um plano
completo que descreve as ações necessárias para atingir o estado objetivo.

Ao final desta semana, você deverá ser capaz de entender o que são problemas
de planejamento, descrever um problema em uma linguagem formal e seguir
um algoritmo para gerar um plano.

Atividade para avaliação - Semana 3

Considere o seguinte grafo de estados, em que as arestas são rotuladas com o


custo da ação correspondente:
Para cada estratégia de busca a seguir, descreva um caminho que será
encontrado do estado ​inicial S ao estado objetivo G​. Considere a seguinte
heurística: h(S)=5, h(A)=3, h(B)=2, h(C)=4, h(D)=4, h(E)=1, h(F)=2 e h(G)=0. Caso
haja empate entre nós, eles devem ser expandidos em ordem alfabética.

HEURÍSTICAS
são processos cognitivos empregados em decisões não racionais, sendo definidas
como estratégias que ignoram parte da informação com o objetivo de tornar a
escolha mais fácil e rápida.

[2,0 pontos] Busca em largura.


[2,0 pontos] Busca em profundidade.
[2,0 pontos] Busca gulosa.
[2,0 pontos] Busca A*.
[2,0 pontos] Se o nó objetivo fosse D, a heurística h(S)=3, h(A)=2, h(B)=2, h(C)=1,
h(D)=0, h(E)=1, h(F)=5 e h(G)=5 seria admissível? Por quê?

RESOLUÇÃO

1. Busca em largura: {S, A, E, G}


2. Busca em profundidade: {S, A, E, D, F, G}
3. Busca gulosa: {S, B, E, G}
4. Busca A*: {S, A, E, G}
5. Sim, pois nenhum custo estimado supera o custo real.
LARGURA

PROFUNDIDADE

GULOSA
S(5) = 0+5 --- A(5) = 2+3 --- E(5) = 4+1 --- G(6) = 6+0 *critério de ordem alfabética
S(5) = 0+5 --- B(5) = 3+2 --- E(5) = 4+1 --- G(6) = 6+0
S(5) = 0+5 --- B(5) = 3+2 --- E(5) = 4+1 --- D(9) = 5+4 --- F(9)7+2 --- G(6) = 6+0--- G(6) = 6+0
S(5) = 0+5 --- B(5) = 3+2 --- C(9) = 4+5 --- D(9) = 5+4 --- F(9)7+2 --- G(6) = 6+0

AULA 4: JOGOS ADVERSARIAIS

Até agora vimos buscas por ​soluções de problemas e agora iremos abordar
buscas competitivas na qual há mais de um agente buscado a solução, ou seja,
há uma competição entre agentes.

Até agora tivemos as seguintes situações:


● Problemas sem interação com outro agente.
● O agente possui total controle sobre suas ações e sobre o efeito de suas
ações.
● Muitas vezes encontrar a solução ótima é factível.

FACTÍVEL
Que pode acontecer ou ser feito; exequível, realizável.

Em situações envolvendo jogos, sempre há um oponente e o oponente é


“imprevisível”.

O agente precisa considerar todos os movimentos possíveis do oponente para


poder levar em consideração na hora de escolher a melhor estratégia.
Nesta aula consideraremos jogos com dois jogadores:

● MAX e MIN

MAX faz o primeiro movimento e depois eles se revezam até o jogo terminar.
MAX tenta maximizar e escolher o melhor valor para ele mesmo.

Olhando o problema de jogos como sendo um problema de busca, teremos:

● estado inicial;
● função sucessor (-> movimento, ações e para que estado esta leva);
● ideia teste de objetivo;
● função utilidade: valor numérico (dá um valor numérico para cada estado
terminal);
● para os estados terminais.

No exemplo do jogo da velha os nós terminais equivalem aos estados onde o


jogo acabou.

● -1 = MAX perde
● 0 = há empate
● 1 = MAX ganha

A solução ótima para MAX depende dos movimentos de MIN.

MAX busca estratégia de contingência especificando seu movimento no estado


inicial e depois nos estados resultantes de cada movimento de MIN.

Jogos determinísticos são aqueles em que não há dependência de sorte ou


acaso. Neste caso MINIMAX é a melhor estratégia.
AULA 5: LÓGICA EM INTELIGÊNCIA ARTIFICIAL

Agora iremos representar o conhecimento que possuímos sobre o domínio de


uma maneira mais formal usando-se de alguma linguagem formal.

Queremos representar o assunto e poder fazer deduções acerca deste domínio


inferindo novas informações além das que já possuímos. Essa é a ideia dos
Sistemas Baseados em Conhecimentos.

Informalmente, uma base de conhecimento é um conjunto de sentenças (aqui,


“sentença” é utilizada como um termo técnico; está relacionada mas não é
idêntica às sentenças em português e em outros idiomas ou linguagens
naturais). Cada sentença é expressa em uma linguagem chamada linguagem de
representação de conhecimento e representa alguma asserção sobre o mundo.
Às vezes, ilustramos uma sentença com o nome ​axioma​, quando a sentença for
tomada como dada sem ser derivada de outras sentenças.

Deve haver um modo para adicionar novas sentenças à base de conhecimento e


um meio de consultar o que se conhece. Os nomes-padrão para essas operações
são ​TELL (informe) e ​ASK (pergunte)​, respectivamente. Ambas as operações
podem envolver inferência, ou seja, a derivação de novas sentenças a partir de
sentenças antigas.

Parte-se do pressuposto que temos uma base de conhecimento que nada mais é
do que a representação do conhecimento que já possuímos. Esse conhecimento
é representado em alguma linguagem formal (exemplo: lógica proposicional).
LÓGICA PROPOSICIONAL
É um formalismo composto por:
● Linguagem formal: usada para representar conhecimento.
● Métodos de inferência: usados para representar raciocínio.
Tem como principal finalidade:
● Representar argumentos, isto é, seqüências de sentenças em que uma
● delas é uma conclusão e as demais são premissas.
● Validar argumentos, isto é, verificar se sua conclusão é uma conseqüência
lógica de suas premissas.

PROPOSIÇÃO
É uma sentença declarativa que pode ser verdadeira ou falsa, mas não as
duas coisas ao mesmo tempo.
Para ilustrar o exemplo da lógica iremos usar um exemplo bastante didático que
trata-se de um jogo proposto na década de 70: ​O mundo de Wumpus.

Com este jogo vamos descrever um ambiente em que os agentes baseados em


conhecimento podem mostrar o seu valor.

● O mundo de wumpus é uma caverna escura que consiste em salas


conectadas por passagens.

● À espreita em algum lugar na caverna está o terrível Wumpus​, um


monstro que devora qualquer guerreiro que entrar em sua sala.

● O wumpus pode ser atingido por um ​Agente​, mas o agente só tem uma
flecha.

● Algumas salas contêm poços sem fundo nos quais cairá qualquer um que
vagar por elas (com exceção do wumpus, que é muito grande para cair em
um poço).
● A única característica que abranda esse ambiente desolador é a
possibilidade de encontrar um monte de ouro.
● Quando o agente entra na caverna ele não tem noção de onde estão
localizadas as coisas.
● O agente só tem os seus sentidos a disposição:
○ Em volta do local onde há um poço, sempre haverá uma​ brisa​;
○ Em volta do Wumpus sempre há um ​cheiro​ característico;
○ Próximo ao quadrado do ouro há ​brilho.

Como funciona a representação dos movimentos do agente em lógica?


Teremos variáveis proposicionais que vão representar fatos do nosso mundo.
Como exemplo podemos usar:
Pij: existe um poço em [i, j]
Bij: há brisa em [i, j]
Ou seja, a variável ​Pij​, indicará que há um poço nesta variável.
A variável ​Bij​, indicará que há brisa.
Vamos iniciar analisando o quadrante abaixo:

O símbolo indica ​¬​ ​negação.

Desta forma podemos dizer que na posição 1,1 não há poço nem brisa. Na
notação lógica ficará assim:
¬P11; ¬B11
Ainda de acordo com as regras do jogo, ​poços causam ​brisa em quadrados
adjacentes. Se houver brisa em B11, logo também podemos afirmar:

B11 ⇔ (P12 ∨ P21)


Ou seja, se há brisa em B11, necessariamente implica na existência de poço ou
em P12 ou em P21.

Ainda exemplificando, se houver brisa em B21, logo também podemos afirmar:


B21⇔ (P11∨ P22∨ P31)
Ou seja, se há brisa em B21, necessariamente implica na existência de poço ou
em P12 ou em P21 ou em P31.

“Brisa se e somente se tem poço adjacente”

Temos a parte ​sintática na qual são representadas as fórmulas, que no caso


denotam o conhecimento que se tem sobre o mundo do Wumpus.

Também temos a parte da ​semântica​, que corresponde ao que as fórmulas nos


indicam.

Sintaxe: Conectivos Lógicos


O cálculo de predicados constrói sentenças complexas a partir de proposições
simples e de conectivos lógicos:

● ¬​ : negação (não)
● ∧ : conjunção (e)
● ∨ : disjunção (ou)
● → : implicação (condicional)
● ↔ : bicondicional
Exemplos:
p∨q expressa “p ou q” (disjunção)
(proposição “p” ou “q)
p∧q expressa “p e q” (conjunção)
(proposição “p” e “q)
¬​p expressa “não p” negação (não)
(não p)
p→q expressa “se p então q” (implicação)
(se acontece p, então acontece q)
p↔q expressa “p, se e só se, q” (equivalência)
(ocorre uma se e só se ocorre a outra)

Potrebbero piacerti anche