Lógica em Inteligência Artificial

Ricardo Araujo
4 min readJun 28, 2020

--

Este texto é parte da disciplina de Fundamentos de Inteligência Artificial do Programa de Pós-Graduação em Computação da Universidade Federal de Pelotas e não foi feito para fazer muito sentido fora deste contexto.

A capacidade de raciocinar corretamente é com frequência equiparado a dotação de inteligência. Quintessencialmente é a maneira com que concordamos que Sherlock Holmes é, de fato, inteligente: pela sua habilidade de obter fatos e realizar inferências sobre estes fatos. Ele, como nós, faz isso manipulando mentalmente representações de entidades (símbolos) e as relações entre estas representações segundo regras que são "naturais" — se todo gato é mamífero e Garfield é um gato, então Garfield tem que ser um mamífero. É lógico.

Os primeiros registros de formalização do raciocínio remetem a Aristóteles e sua proposta do Silogismo. Aristóteles estabeleceu que é possível inferir novos fatos a partir de fatos conhecidos e que isso é possível por meio da mera manipulação de símbolos. Séculos depois, George Boole construiu sobre estas propostas e definiu a Álgebra de Boole, ou Lógica Proposicional, uma álgebra onde todos valores são ou Verdadeiros ou Falsos.

Não é então surpresa que os primeiros movimentos da área da IA se preocuparam em capturar o raciocínio lógico. Afinal, computadores parecem ser perfeitos para isso já que a manipulação de símbolos são da sua natureza, essencialmente operando segundo a Álgebra de Boole. Iniciando na famosa reunião de Dartmouth, em 1956, onde o termo Inteligência Artificial foi cunhado, e durante boa parte das duas décadas seguinte muitas das propostas de IA envolviam a algoritmização de álgebras e suas aplicações, com diversos casos de sucesso. Hoje o formalismo lógico recebe frequentemente o nome de simbolismo e é uma parte essencial dos estudos da IA — a maior parte dos pesquisadores e praticantes concordará que simbolismo fará parte de sistemas de IA avançados (e uma minoria argumentará que simbolismo é tudo que é necessário).

Interessantemente, George Boole é tataravô de um renomado pesquisador de Redes Neurais Artificiais, Geoffrey Hinton, que ironicamente é hoje um dos grandes defensores de não representar símbolos explicitamente para construir IAs.

Ainda que o estudo da lógica no contexto da IA seja extremamente amplo, sua base é composta pela Lógica Proposicional, ou Álgebra de Boole, e a Lógica de Segunda Ordem, ou Lógica de Predicados. Ambas fornecem uma sintaxe que especifica como escrever e transformar expressões válidas na lógica e uma semântica, que especifica o que estas expressões significam na mesma lógica. De forma sucinta, a sintaxe diz respeito a manipular os símbolos e expressões de forma coerente com a lógica, enquanto a semântica é responsável por atribuir valores efetivos para as expressões resultantes (e.g. Verdadeiro ou Falso). A Lógica de Segunda Ordem expande significativamente a Lógica Proposicional, sendo mais expressiva: é capaz de representar coisas que não são possíveis de serem representadas na Lógica Proposicional. Outras lógicas são também definidas com propósitos específicos, como a Lógica Modal que permite a representação de coisas como a passagem do tempo.

Este é um bom momento para ler o Capítulo 2 de nossa referência, que trata sobre Lógica Proposicional. Ainda que o material seja consideravelmente mais extenso do que necessitamos aqui, uma lida diagonal na integra é ainda assim útil.

Na sequência deve-se ler partes do Capítulo 3, em particular a introdução e as seções 3.1, 3.2 e 3.8.

Naturalmente, o estudo destas lógicas transcende e antecede a Inteligência Artificial. É na intersecção com a Ciência da Computação que está o interesse da IA. Esta intersecção trouxe à computação o paradigma de programação lógica. A linguagem de programação Prolog é certamente a mais famosa neste paradigma e durante certo tempo (em particular na década de 70 e 80), era parte central em cursos de IA.

Neste ponto, deve-se ler o Capítulo 5 da referência, pelo menos até a seção 5.3 (inclusive), que traz uma breve introdução ao Prolog.

Se com Prolog ou linguagens similares é possível criar sistemas capazes de raciocínio lógico no melhor estilo de Sherlock Holmes, por que precisamos de alternativas? Parte desta resposta vem de outra pergunta: dada uma lógica, o que é viável expressar e provar em um computador? O termo viável é a chave aqui, o que é possível dados recursos e tempo limitados? Muitos dos problemas interessantes em lógica, mesmo em lógica proposicional, são NP-Completos ou NP-Difíceis, significando que é possível que não exista algoritmo eficiente para solucioná-los e os melhores algoritmos conhecidos exigem tempo ou espaço que crescem exponencialmente com o tamanho do problema — ou seja, apenas é possível solucionar problemas consideravelmente pequenos de forma geral.

Ademais, é claro que outros problemas são pelo menos muito difíceis de expressar com lógicas. Por exemplo, considere como você reconhece o rosto de uma pessoa. Você utiliza passos lógicos explícitos para isso? Em particular, você seria capaz de descrever como você reconhece esta pessoa, de forma que outra pessoa (ou um computador) conseguiria reconhecê-la também? É evidente que esta é uma tarefa muito difícil e abordagens alternativas são úteis.

O Capítulo 4 da referência trata dos limites da lógica e deve ser lido. Este tema retornará nos nossos estudos no contexto de aprendizado de máquina e redes neurais artificiais.

Por fim, vale exercitar brevemente a construção de um programa lógico. Vamos utilizar o Prolog para isso. Familiarize-se com a interface deste interpretador online de Prolog, codificando os exemplos vistos no Capítulo 5. Então, estenda o exemplo sobre família (que define as relações de Child e Descendant) para incluir as seguintes relações:

  1. irmãos(x,y): retorna Verdadeiro se x e y são irmãos ou irmãs
  2. pai(x,y): retorna Verdadeiro se x é pai de y
  3. mãe(x,y): retorna Verdadeiro se x é mãe de y
  4. neto(x,y): retorna Verdadeiro se x é neto (ou neta) de y

--

--

Ricardo Araujo

Computer Science professor at UFPel. Machine Learning and Artificial Intelligence practitioner and researcher.