Matemática e Engenharia na Concepção de Sistemas Inteligentes – Uma abordagem por exemplos Prof. Gustavo Augusto Lima de Campos, Dr. Ciência da Computação Universidade Estadual do Ceará (UECE) gustavo@larces.uece.br 01/10/2009
Roteiro Área de Computação e Informática Inteligência Artificial: Definição e Problemas Agentes Inteligentes Exemplos de Utilização da Matemática Lógica e Representação do Conhecimento Conjuntos Fuzzy e Incetezas Otimização e o Treinamento de Redes Neurais
Área de Computação e Informática
Subáreas de Formação
Área de Formação Básica
Matéria Matemática
Área de Formação Tecnológica
Matéria Inteligência Artificial
Inteligência Artificial (IA): Definições e Problemas
IA É uma Tecnologia da Computação que se ocupa com o estudo, o projeto e a implementação de sistemas: que pensam como humanos 2. que pensam racionalmente 3. que agem como humanos 4. que agem racionalmente
Denominações das abordagens nas quatro categorias 1. Modelagem Cognitiva 2. Leis do pensamento 3. Teste de Turing 4. Agente racional
RACIONALIDADE é um conceito ideal de inteligência: “Um sistema é racional se ele faz a coisa certa” (Russel e Norvig, 1995) “Agir racionalmente significa agir de maneira a alcançar as metas de alguém, conhecendo-se as crenças deste alguém” (Russel e Norvig, 1995)
Abordagem centrada nas pessoas (1 e 3) deve ser uma ciência empírica, envolvendo hipóteses e confirmação experimental. Abordagem racionalista (2 e 4) envolve a combinação de matemática com engenharia.
Quanto à dependência do domínio de aplicação (Kasabov, 1998): Problemas de IA Quanto à dependência do domínio de aplicação (Kasabov, 1998): Problemas Genéricos Problemas Específicos
Problemas Genéricos: Reconhecimento de Padrões Classificação Memória Associativa Predição Planejamento Diagnóstico Controle Monitoramento Otimização Tomada de Decisão Jogos
Problemas Específicos: Reconhecimento de Caracteres escritos à Mão Reconhecimento de Imagens Reconhecimento de voz Planejamento de Trajetórias de Robôs Diagnóstico Médico Monitoramento de um Carro Caixeiro-Viajante Decisões sobre Empréstimos Bancários
Exemplos de problemas específicos Reconhecimento de Caracteres Escritos à Mão variabilidade de formas em que o número 3 pode ser escrito padrão pode ser representado por um conjunto de aspectos: curvas, linhas retas, pontos, cor, ...
Classificação da Iris SL - comprimento sepal PL - comprimento petal SW - largura sepal PW - largura petal
Previsão Consumo de Gás X – meses jan, abr, out dos anos 88-91 Y1 – consumo de gás (gallons per capita) Y2 – temperatura mínima média (0C)
Diagnóstico Médico Baseado em Regras 4 regras envolvendo 4 manifestações e 4 diagnósticos
Controle do Pêndulo Invertido Y – força aplicada no carro para frente e para trás – ângulo do pêndulo com a vertical – velocidade angular
Agentes Inteligentes
Definição Um agente é qualquer coisa que possa ser visualizada como percebendo (P) seu ambiente (E) através de sensores e atuando (A) neste ambiente através de atuadores, em busca de algum objetivo (G).
Exemplos: pessoas, robôs, programas, ...
P E A
Exemplo: O Mundo WUMPUS
O Mundo de WUMPUS representado
Ambiente
Ambiente
Ambiente
Ambiente
Ambiente
Ambiente
Sensores
Atuadores
Atuadores
Atuadores
Atuadores
Atuadores
Atuadores
Atuadores
Exemplo: Mundo do Agente Aspirador de Pó
Agente = Arquitetura + Programa Agente Função Agente – descreve o comportamento do agente em termos matemáticos. Exemplo: tabulação parcial da função que mapeia qualquer seqüência de percepções para uma ação, no mundo do aspirador de pó simplificado.
Tabulação Parcial da Função Agente Seqüência de percepções Ação [A, Limpo] Direita [A, Sujo] Aspirar [B, Limpo] Esquerda [B, Sujo] [A, Limpo], [A, Limpo] [A, Limpo], [A, Sujo] ... [A, Limpo], [A, Limpo], [A, Limpo] [A, Limpo], [A, Limpo], [A, Sujo]
Programa Agente – implementa a função de agente para um agente artificial. Exemplo: programa agente baseado em tabelas escrito em uma linguagem de pseudocódigo simples função agente-tabela(percepção) retorna uma ação vars: percepções, tabela, ação anexar percepção ao final de percepções ação ← ACESSAR(percepções,tabela) retornar ação
Formalização do agente padrão S amb A
Estado do ambiente do agente em um instante: S = {s1, s2, ...} Exemplo: Termostato S = { s1, s2} s1 = “temperatura Ok” s2 = “temperatura fria”
Capacidade efetuadora do agente: A = {a1, a2, ...} Exemplo: Termostato A = { a1, a2} a1 = “aquecer OFF” a2 = “aquecer ON”
Noção abstrata de um agente padrão ação : S* → A
Agente puramente reativo: ação : S → A Exemplo: Termostato Se s = temp. OK então ação(s) = aquecer Off Se s = outro estado então ação(s) = aquecer On
Exemplos de Utilização da Matemática na Concretização de Agentes Inteligentes
Lógica e Representação do Conhecimento Exemplo I: Lógica e Representação do Conhecimento
E Arquitetura Concreta I P A Se Platão está disposto a visitar Sócrates então Sócrates está disposto a visitar Platão. Se Sócrates está disposto … então Platão não está … . Se Sócrates não está … então Platão está … . Sócrates está disposto a visitar Platão?
Base de Conhecimento Agente Aspirador em Lógica de Predicados Representação dos estados do ambiente Salas do Aspirador de Pó em(x,y) sujo(x,y) frente(direção) Regras comportamentais do Agente Aspirador de Pó x, y: (em(x,y) л sujo(x,y)) faça(aspirar) x, y: (em(x,y) л ¬sujo(x,y) л frente(norte)) faça(frente) x, y: (em(x,y) л ¬sujo(x,y) л frente(oeste)) faça(direita) . . .
Princípio da Demonstração * *
Resolução para a Lógica Proposicional Método de prova que executa em uma única operação a série de processos envolvidos no raciocínio com fbfs Opera em fbfs em uma forma padrão conveniente: a Forma Clausal Uma Cláusula em LP é uma fbf na forma de uma disjunção de símbolos proposicionais, negados ou não. Produz prova por contradição
(p (q r)) ((p q) (p r)) Algoritmo1: Conversão para Forma Clausal Eliminar , usando: (p q) (p q) 2. Reduzir escopo de cada a um único termo, usando: (p) p (p q) (p q) (p q) (p q) 3. Converte em conjunção de disjunções, usando: (p (q r)) ((p q) (p r)) 4. Cláusula separada correspondente a cada conjunção: c1 - p q c2 - p r
Algoritmo2: Resolução para LProposicional Converter hipóteses para Forma Clausal. Negar conclusão. Converter conclusão negada para Forma Clausal e acrescentar resultado ao conjunto de Cláusulas obtido no Passo 1.
3. Repetir { a) Selecionar duas cláusulas-pais; b) Obter resolvente = disjunção de todos os símbolos proposicionais nas cláusulas-pais com a seguinte exceção: Se símbolo proposicional p cláusula-pai1 e p cláusula-pai2 então elimine p e p do resolvente; c) Se resolvente for cláusula-vazia ( ) então contradição foi encontrada e resposta é ‘sim’ senão acrescentar resolvente ao conjunto de cláusulas disponíveis ao procedimento. } até uma contradição ser encontrada ou até nenhum progresso a mais puder ser feito.
Argumento em Lógica Proposicional p1. (p q) r p2. q q*. p r Resolução Converter hipóteses para Forma Clausal: c1. p q r c2. q Negar conclusão, converter para Forma Clausal e acrescentar ao conjunto obtido em 1: c3. p c4. r
Logo, argumento é válido. 3. Resolver c3. p c1. p q r c5. q r c2. q c6. r c4. r Logo, argumento é válido.
Conjuntos Fuzzy e Incertezas Exemplo II: Conjuntos Fuzzy e Incertezas
E Arquitetura Concreta II P A Se pessoa é fumante inveterado então risco de câncer é alto. Pessoa é fumante moderado. Qual o risco de câncer?
Em resumo: Fonte: Notas de aula - EA072 – Prof. Fernando J. Von Zuben – DCA/FEEC/UNICAMP
Fonte: Notas de aula - EA072 – Prof. Fernando J Fonte: Notas de aula - EA072 – Prof. Fernando J. Von Zuben – DCA/FEEC/UNICAMP
Conjuntos Clássicos No contexto da teoria de conjuntos clássicos (Crisp Sets), a função de pertinência de conjuntos clássicos define se um elemento pertence ou não a um conjunto clássico. Por exemplo: X – universo de discurso de valores possíveis de altura das pessoas x X – altura em metros das pessoas P(X) – família de subconjuntos clássicos de X A P(X) – conjunto das pessoas altas μA(x) {0, 1} – função de pertinência
X = [0, 2.5m] A – conjunto das pessoas altas x – altura em metros das pessoas A função de pertinência de um conjunto clássico A, μA: X {0,1}, mapeia elementos x do universo de discurso X, em um grau de pertinência, 0 ou 1, ao conjunto A.
O problema da escolha do limiar entre dois conjuntos (alto / não alto) é denominado de paradoxo de Sorites: Quando um monte de areia deixa de ser um monte de areia, caso retiremos um grão de areia de cada vez? Ou seja, a partir de quantos centímetros uma pessoa pode ser considerada alta? 169 cm? 170 cm? 171 cm? ... 180 cm?
Lógica Fuzzy Lógica que trata matematicamente informações imprecisas usualmente empregadas na comunicação humana. Lógica multi-valorada que estende a lógica booleana usualmente empregada em computação.
Conjuntos Fuzzy No contexto da teoria de conjuntos difusos (Fuzzy Sets), a função de pertinência define o grau de participação de um elemento a um conjunto fuzzy. Por exemplo: X – universo de discurso de valores possíveis de altura das pessoas x X – altura em metros das pessoas P(X) – família de subconjuntos fuzzy definidos em X A P(X) – conjunto fuzzy das pessoas altas μA(x) [0, 1] – função de pertinência μA(x) = 0 se x ‹ 1.60; μA(x) = (x – 1.60)/0.20 se 1.60 ≤ x < 1.80; μA(x) = 1 se x ≥ 1.80.
μA(x) = 0 se x < 1.60; μA(x) = (x – 1.60)/0.20 se 1.60 ≤ x < 1.80; μA(x) = 1 se x ≥ 1.80. X = [0, 2.5m] A – conjunto nebuloso das pessoas altas x – altura em metros das pessoas A função de pertinência de conjuntos fuzzy, μA: X [0,1], mapeia elementos x do universo de discurso X, em um grau de participação, [0, 1], no conjunto nebuloso A das pessoas altas.
A = { (x, μA(x)) | x X ; μA(x) [0, 1] }. Um conjunto clássico pode ser definido como uma coleção de elementos: A = { x | x X }. Um conjunto fuzzy pode ser definido como uma coleção de pares ordenados: A = { (x, μA(x)) | x X ; μA(x) [0, 1] }.
Exemplos: Conjunto Clássico Conjunto Fuzzy Fonte: User´s Guide – Fuzzy Logic Toolbox for Use with MATLAB
Conjuntos Fuzzy: frio, fresco, morno e quente.
Conjuntos Nebulosos: jovem e muito jovem
Gorjeta = 0.05 + (0.20/10)*Serviço Problema da Gorjeta: dado um conjunto de números entre 0 e 10, representando a qualidade do serviço em um restaurante, onde 0 é péssima e 10 é excelente, qual deve ser a gorjeta? Abordagem Clássica Gorjeta vai de 5%, se o serviço for péssimo, crescendo linearmente até 25%, se o serviço for excelente: Gorjeta = 0.05 + (0.20/10)*Serviço Gorjeta é sempre igual a 15% da conta
Gorjeta = 0.8*(0.05 + (0.20/10)*Serviço) + Problema da Gorjeta Estendido: dado dois conjuntos de números entre 0 e 10, representando a qualidade do serviço e da comida em um restaurante, onde 0 é péssima e 10 é excelente, qual deve ser a gorjeta? Serviço vale 80% da gorjeta total e a comida vale os 20% restantes: Gorjeta = 0.8*(0.05 + (0.20/10)*Serviço) + 0.2*(0.05 + (0.20/10)*Comida) Gorjeta = 0.05 + (0.20/20)*(Serviço + Comida)
Em geral, gorjeta de 15%. Acima, ou abaixo, deste patamar somente se o serviço for excepcionalmente bom, ou mau. se Serviço < 3, então Gorjeta = 0.8*(0.05 + (0.10/3)*Serviço) + 0.2*(0.05 + (0.20/10)*Comida); senão se Serviço < 7, então Gorjeta = 0.15*0.8 + 0.2*(0.05 + (0.20/10)*Comida); senão, Gorjeta = 0.8+(0.15 + (0.10/3)*(Serviço–7)) + 0.2*(0.05 + (0.20/10)*Comida).
Abordagem Fuzzy Seria bom se pudéssemos capturar os aspectos fundamentais do problema, deixando de lado todos os fatores que poderiam ser arbitrários: se o serviço for pobre ou a comida não for boa, então gorjeta é pouquinha; se o serviço for bom, a gorjeta é razoável; se o serviço for excelente ou a comida for deliciosa, então a gorjeta é generosa.
Abordagem Clássica Abordagem Fuzzy
Observações: As três regras da abordagem fuzzy definem as regras para um sistema fuzzy. A abordagem clássica para o problema da gorjeta busca uma relação linear por parte (piecewise) para resolver o problema. Pode ser bastante incômodo derivar esta relação e, depois de escrita em algum código, difícil de interpretar. Sistemas fuzzy baseiam-se em declarações do senso comum. Novas declarações podem ser adicionadas a lista de regras, influenciando a forma da saída sem que seja necessário refazer o que já tinha sido feito; ou seja, modificações subseqüentes no conjunto de regras são realizadas de maneira muito simples.
Otimização e o Treinamento de Redes Neurais Exemplo III: Otimização e o Treinamento de Redes Neurais
Arquitetura Concreta III P E A É um 3 ? ou é um E ou é ...?
Adequação arquitetura concreta ao tipo de informação
Neurônio Biológico
Neurônio é o dispositivo computacional elementar do sistema nervoso, com muitas entradas e uma saída.
Esquema de um Neurônio Artificial
Funções de ativação nos neurônios artificiais Linear Sinal v > 0 g(v) = 1 g(v) = αv v 0 g(v) = -1 Sigmoid Tangente Hiperbólica g(v) = (1–e-αv)/(1+e-αv) g(v) = 1/(1 + e-αv)
Rede de múltiplos neurônios dispostos em camadas
O Problema que Widrow e Hoff tentaram resolver com as Redes Dada uma função arbitrária y = f(x1, x2, ..., xn) = f(x) tal que f(0) = 0 e L observações desta função: determinar uma aproximação linear do tipo: tal que o erro quadrático sobre todos os exemplos: seja o mínimo possível, ou seja:
A Regra Delta de Widrow e Hoff busca encontrar os valores de w A Regra Delta de Widrow e Hoff busca encontrar os valores de w* tal que: seja o mínimo possível.
A solução proposta emprega o Método do Gradiente para chegar em w A solução proposta emprega o Método do Gradiente para chegar em w* por meio de um processo de iteração local – partindo-se de um ponto arbitrário w(0) é possível caminhar por E(w) em direção ao ponto de mínimo, seguindo na direção oposta ao gradiente da função: onde: η – determina o tamanho do passo que será dado na direção contrária à direção do gradiente
Cálculo do gradiente da função erro quadrático sobre os exemplos
Substituindo-se na fórmula de atualização dos pesos obtém-se a Regra Delta
Exemplo da aplicação da Regra Delta para o caso em E(w) = w2
Comentários A natureza do conjunto de exemplos, Ψ, determina o panorama da superfície erro, influindo grandemente na velocidade do processo de convergência
Atualmente O algoritmo de treinamento mais utilizado é o Back-propagation, que emprega uma generalização da Regra Delta para redes com camadas escondidas.
Indicação Bibliográfica KASABOV, N. K. Foundations of Neural Networks, Fuzzy Systems, and Knowledge Engineering. The MIT Press, 2o Edição, 1998. RUSSEL, S. e NORVIG, P. Artificial Intelligence: A Modern Approach. New Jersey: Ed. Prentice-Hall. 1995.