“Can machines think?”

Alan Turing

22 - Inteligência Artificial

22.1 - Linguagens Simbólicas.

Linguagens simbólicas são usadas para representar conhecimento por meio de símbolos, relações e regras explícitas. Em vez de aprender diretamente a partir de grandes volumes de dados, como ocorre em boa parte dos métodos estatísticos e de aprendizado de máquina, a abordagem simbólica busca descrever o problema em uma forma manipulável por operações lógicas.

Nesse contexto, símbolos podem representar objetos, propriedades, fatos, ações e relações entre entidades. Uma regra como "se um paciente apresenta febre e infecção bacteriana, então um antibiótico pode ser indicado" é um exemplo simples de representação simbólica: o conhecimento está expresso de modo legível, estruturado e sujeito a inferência.

A principal vantagem dessa abordagem está na interpretabilidade. Como regras e fatos são explícitos, torna-se mais fácil justificar uma conclusão, inspecionar o raciocínio realizado pelo sistema e incorporar conhecimento especializado de um domínio. Por essa razão, linguagens simbólicas tiveram papel importante em sistemas especialistas, prova automática de teoremas, planejamento e representação formal do conhecimento.

Em contrapartida, sistemas puramente simbólicos tendem a ter mais dificuldade em ambientes incertos, incompletos ou muito ruidosos, nos quais é difícil enumerar previamente todas as regras relevantes. Por isso, aplicações modernas frequentemente combinam componentes simbólicos e estatísticos, explorando as vantagens de ambos.

22.2 - Programação em Lógica.

A programação em lógica é um paradigma no qual o problema é descrito em termos de fatos, regras e consultas. Em vez de detalhar passo a passo como a solução deve ser executada, o programador especifica o conhecimento do domínio e deixa a inferência a cargo do mecanismo da linguagem.

Uma forma clássica dessa abordagem aparece em Prolog. Regras costumam ser escritas no formato "cabeça se corpo", isto é, uma conclusão $H$ vale se determinadas premissas $B_1, B_2, \ldots, B_n$ forem verdadeiras. Fatos são regras sem corpo, e consultas perguntam ao sistema se certa conclusão pode ser derivada da base de conhecimento.

Esse modelo é particularmente útil em problemas de dedução, consulta a bases de conhecimento, planejamento e sistemas especialistas, porque separa a descrição declarativa do problema do mecanismo operacional de busca e unificação.

22.3 - Resolução de Problemas como Busca.

Muitos problemas clássicos de inteligência artificial podem ser modelados como problemas de busca em um espaço de estados. Nesse modelo, cada estado representa uma configuração possível do problema, e operadores transformam um estado em outro até que se alcance um estado objetivo.

Essa formulação é útil em jogos, planejamento, navegação, prova de teoremas e escalonamento. Em vez de construir diretamente a resposta final, o sistema explora alternativas até encontrar um caminho aceitável entre um estado inicial e um estado meta.

Ao modelar um problema como busca, normalmente definimos:

  1. estado inicial;
  2. conjunto de ações ou operadores;
  3. teste de objetivo;
  4. custo do caminho, quando relevante.

As principais propriedades de um algoritmo de busca incluem:

  • Completude: se o método encontra uma solução sempre que ela existe;
  • Optimalidade: se a solução encontrada é a melhor segundo algum critério de custo;
  • Complexidade de tempo: quantidade de processamento necessária;
  • Complexidade de espaço: quantidade de memória exigida.

De forma geral, os métodos de busca podem ser classificados em não informados, quando não usam conhecimento adicional sobre o problema além da definição formal dos estados e operadores, e informados, quando utilizam heurísticas para orientar a exploração.

22.4 - Estratégias de Busca, Busca Cega e Busca Heurística.

Na busca cega, também chamada busca não informada, o algoritmo não dispõe de uma estimativa sobre qual caminho parece mais promissor. A exploração depende apenas da ordem de expansão dos nós e das regras do método adotado. Exemplos clássicos são:

  • busca em largura;
  • busca de custo uniforme;
  • busca em profundidade;
  • busca em profundidade limitada;
  • busca em aprofundamento iterativo.

Na busca heurística, o algoritmo usa informação adicional sobre o domínio para estimar a qualidade de um estado ou a distância aproximada até a meta. Essa estimativa é dada por uma função heurística, que não precisa ser perfeita, mas deve ajudar a reduzir a exploração desnecessária do espaço de busca.

Heurísticas são importantes quando o espaço de estados é muito grande para uma exploração exaustiva. Em muitos casos, um método heurístico produz soluções de boa qualidade em tempo muito menor do que algoritmos puramente cegos, ainda que nem sempre garanta a solução ótima.

22.5 - Hill climbing, best first, simulated annealing e Algoritmo A*.

O método hill climbing é uma técnica de busca local que parte de uma solução inicial e tenta melhorá-la por pequenas modificações sucessivas. A ideia é mover-se sempre para um vizinho melhor, como se estivéssemos subindo uma montanha em direção a um ponto mais alto. O problema é que o processo pode ficar preso em ótimos locais, planaltos ou cristas.

A busca best-first expande primeiro o nó considerado mais promissor segundo uma função de avaliação. Essa estratégia organiza a fronteira de exploração por prioridade, buscando visitar antes os estados que parecem mais próximos da meta ou mais vantajosos segundo a heurística adotada.

O simulated annealing também é uma técnica de busca local, mas introduz aleatoriedade para evitar aprisionamento prematuro em ótimos locais. Em certos momentos o algoritmo aceita movimentos que pioram temporariamente a solução, com uma probabilidade que diminui ao longo do tempo. Essa ideia é inspirada no recozimento de materiais em física.

O algoritmo $A^*$ combina o custo já acumulado até um nó com uma estimativa heurística do custo restante até a meta, geralmente na forma $f(n) = g(n) + h(n)$. Quando a heurística é admissível, isto é, não superestima o custo real até o objetivo, $A^*$ pode encontrar soluções ótimas com grande eficiência prática em diversos problemas de caminho mínimo e planejamento.

22.6 - Busca como Maximização de Função.

Em muitos problemas de IA, buscar uma solução equivale a otimizar uma função objetivo. Em vez de perguntar apenas se um estado é solução ou não, atribuímos um valor a cada solução candidata e procuramos maximizar utilidade, minimizar custo, reduzir erro ou satisfazer algum critério semelhante.

Nesse cenário, o espaço de busca corresponde ao conjunto de todas as soluções possíveis, enquanto a função objetivo mede a qualidade de cada alternativa. Problemas de escalonamento, ajuste de parâmetros, roteamento e aprendizado podem ser formulados dessa forma.

Quando a função possui muitos mínimos ou máximos locais, o processo de otimização se torna mais difícil, pois o algoritmo pode convergir para soluções apenas razoáveis em vez do melhor resultado global. Por isso, a escolha da representação, da função objetivo e da estratégia de exploração influencia diretamente a qualidade da resposta obtida.

22.7 - Grafos And/Or.

Grafos AND/OR são usados para representar problemas que podem ser resolvidos por decomposição em subproblemas. Em um nó OR, basta escolher uma entre várias alternativas possíveis para prosseguir. Em um nó AND, por outro lado, todos os subproblemas associados precisam ser resolvidos para que o problema original seja considerado resolvido.

Essa representação é útil em planejamento, prova de teoremas, diagnóstico e resolução hierárquica de tarefas. Por exemplo, para "organizar uma viagem", um nó AND pode exigir simultaneamente reservar transporte e hospedagem, enquanto um nó OR pode representar a escolha entre viajar de ônibus, carro ou avião.

A vantagem dessa modelagem está em explicitar dependências entre etapas da solução. Em vez de tratar toda busca como uma sequência linear de escolhas, o grafo mostra quando há alternativas exclusivas e quando há subtarefas obrigatórias que precisam ser combinadas.

22.8 - Esquemas para Representação do Conhecimento: Lógicos, em Rede, Estruturados, Procedurais.

Representar conhecimento significa escolher uma estrutura formal para armazenar fatos, regras, conceitos e relações de modo que um sistema possa raciocinar sobre eles. Essa escolha afeta a expressividade do modelo, a eficiência da inferência e a facilidade de atualização da base de conhecimento.

Representações lógicas descrevem o conhecimento por meio de fórmulas e regras formais, sendo adequadas quando se deseja rigor dedutivo. Representações em rede, como redes semânticas, enfatizam relações entre conceitos e costumam ser úteis para visualizar hierarquias, associações e heranças.

Representações estruturadas, como frames e objetos, organizam conhecimento em entidades com atributos e valores, aproximando-se da forma como modelamos categorias e propriedades no mundo real. Já representações procedurais embutem parte do conhecimento no próprio comportamento do sistema, isto é, em rotinas e procedimentos que indicam como agir em certas situações.

Em sistemas inteligentes completos, é comum combinar várias dessas formas. A base de conhecimento precisa ser consultada, atualizada e usada por mecanismos de inferência capazes de produzir novas conclusões ou orientar ações do agente.

22.9 - Sistemas de Produção com Encadeamento para a Frente e Encadeamento para trás (forward and backward chaining).

Sistemas de produção representam conhecimento por meio de regras do tipo "se condição, então ação ou conclusão". O mecanismo de inferência aplica essas regras sobre uma base de fatos para produzir novos fatos, responder perguntas ou sugerir decisões.

No encadeamento para a frente, também chamado de raciocínio dirigido por dados, o sistema parte dos fatos disponíveis e aplica todas as regras compatíveis para gerar novas conclusões. Esse método é útil quando se deseja descobrir tudo o que pode ser inferido a partir de uma base inicial de informações.

No encadeamento para trás, ou raciocínio dirigido por objetivos, o sistema começa pela hipótese que deseja provar e procura regras que poderiam sustentá-la. Em seguida, tenta demonstrar cada premissa necessária. Esse método é comum em sistemas de consulta e diagnóstico, nos quais a pergunta inicial guia a inferência.

22.10 - Raciocínio Não-Monotônico.

Em lógica monotônica, acrescentar novas premissas não invalida conclusões já derivadas. Em muitos problemas reais, porém, raciocinamos com informação incompleta e revisável. O raciocínio não monotônico modela exatamente esse tipo de situação: uma conclusão aceita em certo momento pode deixar de valer quando surgem novas evidências.

Um exemplo simples é assumir que "aves normalmente voam". A partir disso, podemos concluir que um pardal voa. No entanto, ao descobrir que o animal analisado é um pinguim, a conclusão anterior deve ser revista. Esse comportamento é difícil de representar adequadamente em sistemas puramente monotônicos.

Essa classe de formalismos é importante para IA porque aproxima o raciocínio computacional do raciocínio cotidiano, no qual exceções, defaults e revisões de hipótese são comuns.

22.11 - Formalismos para a Representação de Conhecimento Incerto.

Nem todo conhecimento disponível para um sistema inteligente é exato, completo ou confiável. Por isso, a IA utiliza formalismos capazes de representar graus de crença, níveis de confiança e informação parcial. Entre as abordagens mais comuns estão probabilidades, fatores de certeza, lógica fuzzy e modelos baseados em evidência.

Representações probabilísticas são apropriadas quando se deseja modelar incerteza em termos quantitativos, relacionando eventos e evidências por probabilidades condicionais. Fatores de certeza foram usados em sistemas especialistas para expressar o quanto uma regra apoia uma conclusão, mesmo sem uma fundamentação probabilística completa.

Já a lógica fuzzy é útil quando o problema envolve conceitos graduais, como "temperatura alta" ou "risco moderado", nos quais fronteiras rígidas não são adequadas. A escolha do formalismo depende do tipo de incerteza presente e da natureza das decisões que o sistema precisa tomar.

22.12 - A Regra de Bayes.

A Regra de Bayes é um princípio fundamental para atualizar probabilidades à luz de novas evidências. Sua forma mais conhecida é:

$$ P(A \mid B) = \frac{P(B \mid A)\,P(A)}{P(B)} $$

Nessa expressão, $P(A)$ é a probabilidade a priori de $A$, $P(B \mid A)$ é a probabilidade de observar a evidência $B$ caso $A$ seja verdadeiro, e $P(A \mid B)$ é a probabilidade posterior, isto é, a crença atualizada em $A$ após observar $B$.

Esse princípio é amplamente usado em diagnóstico, classificação, filtragem de spam, detecção de falhas e redes bayesianas. Sua importância está em fornecer uma forma coerente de revisar crenças quando novas informações se tornam disponíveis.

22.13 - Conjuntos e Lógica Fuzzy.

Na lógica clássica, uma afirmação é verdadeira ou falsa, e um elemento pertence ou não pertence a um conjunto. Em muitos problemas práticos, entretanto, essa divisão rígida não descreve bem conceitos vagos ou graduais. A teoria de conjuntos fuzzy permite que o grau de pertencimento de um elemento a um conjunto seja um valor entre 0 e 1.

Assim, uma temperatura de 28 graus pode pertencer ao conjunto "quente" com grau 0,6, enquanto 35 graus pode pertencer com grau 0,9. A lógica fuzzy estende essa ideia para regras e inferências, permitindo modelar decisões aproximadas semelhantes às feitas por especialistas humanos.

Esse formalismo é bastante usado em controle, automação, sistemas de recomendação e apoio à decisão, especialmente quando as categorias do problema não são naturalmente discretas.

22.14 - Aprendizado de Máquina.

Aprendizado de máquina é a área da inteligência artificial que estuda métodos capazes de ajustar modelos automaticamente a partir de dados. Em vez de programar explicitamente todas as regras do comportamento desejado, fornecemos exemplos, medições ou sinais de recompensa para que o sistema aprenda padrões úteis.

Os principais cenários incluem aprendizado supervisionado, no qual há exemplos rotulados; aprendizado não supervisionado, no qual o objetivo é descobrir estrutura nos dados; e aprendizado por reforço, no qual um agente aprende por tentativa, erro e recompensa.

Entre os métodos comuns estão regressão, classificação, agrupamento, árvores de decisão, redes neurais e máquinas de vetores de suporte. Em aprendizado não supervisionado, um exemplo clássico é o mapa auto-organizável de Kohonen, usado para projetar dados de alta dimensão em representações mais compactas preservando, em certa medida, relações de vizinhança.

22.15 - Aprendizado Indutivo.

Aprendizado indutivo é o processo de generalizar regras ou modelos a partir de exemplos observados. O sistema recebe casos particulares e tenta construir uma hipótese que explique esses casos e que também funcione bem para novos exemplos ainda não vistos.

Esse é o mecanismo central de muitos algoritmos supervisionados. O desafio está em encontrar um equilíbrio entre ajuste e generalização: um modelo excessivamente simples pode não capturar regularidades importantes, enquanto um modelo excessivamente ajustado aos dados de treinamento pode sofrer overfitting e perder capacidade preditiva em situações novas.

22.16 - Árvores de Decisão, Redes Neurais e Algoritmos Genéticos.

Árvores de decisão são modelos que classificam exemplos por meio de testes sucessivos sobre atributos. Cada nó interno representa uma decisão, cada ramo representa um resultado possível e cada folha representa uma conclusão. Sua principal vantagem é a interpretabilidade.

Redes neurais artificiais são modelos compostos por unidades interconectadas que transformam entradas em saídas por meio de camadas e pesos ajustáveis. Elas são particularmente importantes em problemas de percepção, reconhecimento de padrões, visão computacional e processamento de linguagem natural.

Algoritmos genéticos são métodos de busca e otimização inspirados em mecanismos evolutivos. Em geral, mantêm uma população de soluções candidatas e aplicam seleção, cruzamento e mutação para produzir novas gerações, favorecendo soluções com melhor aptidão segundo uma função objetivo.

22.17 - Sistemas Especialistas.

Sistemas especialistas são programas projetados para reproduzir, em um domínio restrito, parte da capacidade de decisão de especialistas humanos. Em geral, são compostos por uma base de conhecimento, que armazena fatos e regras, e por um motor de inferência, responsável por aplicar esse conhecimento a casos concretos.

Esses sistemas foram amplamente estudados em áreas como diagnóstico médico, análise geológica, configuração de equipamentos e suporte técnico. Sua principal força está em capturar conhecimento explícito de especialistas; sua principal limitação está no custo de aquisição, manutenção e atualização dessas regras.

22.18 - Processamento de Linguagem Natural.

Processamento de linguagem natural é a área da IA dedicada à análise, compreensão e geração de linguagem humana. Entre suas tarefas estão segmentação, análise morfológica, análise sintática, interpretação semântica, tradução automática, classificação de texto, sumarização e resposta a perguntas.

Historicamente, o campo utilizou abordagens simbólicas baseadas em gramáticas e regras. Mais recentemente, métodos estatísticos e redes neurais passaram a dominar várias aplicações práticas. Ainda assim, a combinação entre estrutura linguística explícita e aprendizado a partir de dados continua sendo um tema importante.

22.19 - Agentes Inteligentes.

Um agente inteligente é uma entidade capaz de perceber o ambiente por meio de sensores e agir sobre ele por meio de atuadores. Seu comportamento é considerado racional quando escolhe ações que tendem a maximizar alguma medida de desempenho, levando em conta as informações disponíveis.

Agentes podem ser simples, baseados apenas em reflexos, ou mais sofisticados, com memória, planejamento, objetivos explícitos e aprendizado. Essa noção é central em IA porque permite integrar percepção, representação de conhecimento, tomada de decisão e ação em um mesmo modelo conceitual.

22.20 - Robótica.

Robótica é a área que estuda o projeto e a operação de sistemas capazes de perceber o ambiente físico e atuar sobre ele. Em IA, a robótica interessa especialmente quando o robô precisa lidar com incerteza, planejar ações, navegar, manipular objetos e adaptar-se a mudanças no ambiente.

Um sistema robótico combina componentes de percepção, controle, planejamento e atuação. Câmeras, sensores de distância, encoders e outros dispositivos alimentam modelos internos do ambiente; algoritmos de decisão escolhem ações; atuadores executam o movimento correspondente. Esse ciclo conecta o raciocínio abstrato da IA ao mundo físico.

Referências:

  1. Russell, Stuart; Norvig, Peter. Inteligência Artificial.
  2. Bratko, Ivan. Prolog Programming for Artificial Intelligence.
  3. Luger, George F. Artificial Intelligence: Structures and Strategies for Complex Problem Solving.
  4. Mitchell, Tom M. Machine Learning.
  5. Bishop, Christopher M. Pattern Recognition and Machine Learning.
  6. Nilsson, Nils J. Principles of Artificial Intelligence.
  7. Introduction to Artificial Intelligence - UC Davis
  8. An Introduction to Problem-Solving Using Search Algorithms
  9. And-Or Graph - Artificial Intelligence
  10. A Gentle Introduction to Function Optimization
  11. Stanford Encyclopedia of Philosophy - Logic and Artificial Intelligence
  12. Stanford Encyclopedia of Philosophy - Defeasible Reasoning