No início de Abril deste ano, Tim Berners-Lee recebeu o Prêmio Turing 2016, também conhecido como “Prêmio Nobel da Computação”, e recebeu US$1 milhão da Google, que apoia esse evento. Ele recebeu esse prêmio devido às suas contribuições para o desenvolvimento da World Wide Web (WWW), entre elas: criação do protocolo HTTP, especificação da linguagem de marcação HTML, desenvolvimento do primeiro navegador de Internet e criação da primeira página Web em 1991. Depois dele, muito foi feito, e graças ao trabalho dele e muitos outros, o mundo tem se desenvolvido mais rapidamente nos últimos 26 anos.

Atualmente, ao acessarmos os portais de notícias de tecnologias, vemos muitas notícias sobre Inteligência Artificial (IA) como sendo “a área de tecnologia do futuro”. Mas eu prefiro pensar que IA é uma área do passado, do presente e por que não, do futuro também. Muito antes de Tim Berners-Lee, vários outros pesquisadores de IA ganharam o Prêmio Turing. E como já vimos em um dos primeiros posts deste blog, o próprio Alan Turing, que tem seu nome sendo homenageado no prêmio, também era um pesquisador de IA. Neste texto, conheceremos um pouco mais do trabalho de outros pesquisadores de IA, mesmo que de forma breve, e como esses trabalhos influenciaram a visão de IA e tecnologia hoje.

Pesquisadores de IA que ganharam o Prêmio Turing

Marvin Minsky

Marvin Minsky
Figura 1 – Marvin Minsky

Em 1969, o primeiro pesquisador de IA a vencer o Prêmio Turing foi Marvin Minsky (1927-2016). O mérito dele foi em acreditar na IA quando essa ainda tinha pouquíssimos conceitos envolvidos. Mas o que ele fez? Ele ajudou a criar a área de IA, definir conceitos, pensar filosoficamente sobre a área e divulgá-la. Entre outras coisas, ele criou o Laboratório de Inteligência Artificial e Ciência da Computação do MIT (também conhecido no exterior como CSAIL).

Ao mesmo tempo que contribuiu positivamente, nos anos 70 Minsky escreveu um trabalho chamado Perceptrons que gerou polêmica, no que muitos entenderam como um desencorajamento na pesquisa em Redes Neurais numa época que ficou conhecida como Inverno da IA (do inglês, AI Winter). Hoje, as Redes Neurais voltaram a ser aceitas e ainda mais aplicadas com o conceito de Aprendizado Profundo (Deep Learning), que se baseia em Redes Neurais com muitas camadas ocultas.

Em 1986, Minsky escreveu A Sociedade da Mente (do inglês, The Society of Mind), em que apresentava teorias de inteligência, entre elas uma em que a inteligência de um sistema surge de partes do sistema que individualmente não são inteligentes.

Minsky trabalhou durante sua vida inteira no MIT e faleceu no início de 2016 aos 88 anos devido a uma hemorragia cerebral. Muitos de seus artigos estão disponíveis em sua página pessoal.

John McCarthy

John McCarthy
Figura 2 – John McCarthy

John McCarthy (1927-2011) recebeu o Prêmio Turing em 1971 por suas contribuições.
Entre elas: ele batizou a área de Inteligência Artificial, criou o CSAIL do MIT ao lado de Minsky e é o criador da linguagem de programação LISt Processing, mais conhecida como LISP, em 1958. Naquela época, McCarthy já desenvolvia programas capazes de jogar xadrez.

A linguagem LISP se baseia no Cálculo Lambda, que é um formalismo matemático criado com a intenção de definir formalmente o que é a computação. A Máquina de Turing também foi criada com esse propósito e embora sejam diferentes, o poder computacional de ambos os formalismos já foi provado como sendo iguais.

Para enriquecer esse texto, vou apresentar uma declaração de função no LISP (Listagem 1), que é uma linguagem funcional e compará-la com uma outra linguagem funcional mais recente, que é o Haskell (Listagem 2). Os exemplos a seguir apresentam simples funções que informam se um número natural n é par ou não. Confesso que me incomoda um pouco esse excesso de parênteses da linguagem LISP. Quando comparamos com Haskell, vemos que a última é uma linguagem bem mais legível. Mas faz parte da evolução, LISP foi a linguagem que abriu caminhos na computação e na IA.

			Listagem 1 - Código em LISP para verificar se um número é par
			(defun par (n) (if (= (mod n 2) 0) (quote True) (quote False)))
			Listagem 2 - Código em Haskell para verificar se um número é par
			let par n | mod n 2 == 0 = True | otherwise = False

Atualmente, existem diversas versões de LISP, sendo que a mais comum é a Common LISP.

McCarthy, criador do LISP, faleceu em 2011 em sua casa. A página pessoal dele pode ser acessada por aqui.

Allen Newell e Herbert A. Simon

Allen Newell
Figura 3 – Allen Newell
Herbert A. Simon
Figura 4 – Herbert A.Simon.

Allen Newell (1927-1992) e Herbert A. Simon (1916-2001) foram premiados em 1975 pela formação de um grupo de estudos na Carnegie Mellon University (CMU), cujos trabalhos contribuíram para IA básica, psicologia da cognição humana e processamento de listas. Em conjunto, eles desenvolveram a linguagem de processamento de informação (do inglês, Information Processing Language – IPL) e com ela, implementaram 2 dos primeiros programas de IA: a Logic Theorist (1956) e o General Problem Solver (1957).

A Logic Theorist foi uma aplicação criada para imitar o cérebro humano no tratamento de problemas de lógica. Entre os feitos desse programa, está a demonstração de alguns teoremas matemáticos, sendo que alguns deles foram demonstrados de forma mais elegante do que a realizada pelos matemáticos da época.

O General Problem Solver (GPS), foi o primeiro programa de computador a separar a base de conhecimento do motor de inferência e tinha como intenção, ser uma máquina universal para resolver problemas. A entrada desse programa devia ser especificada como fórmulas bem-formadas ou cláusulas de Horn, com um ou mais axiomas básicos de entrada e alguns valores desejados como meta. Na época, resolvia problemas como Torres de Hanói (jogue aqui!), mas não era capaz de lidar com instâncias muito grandes e nem com problemas do mundo real devido à explosão combinatória de possibilidades.

Marvin Minsky, John McCarthy, Allen Newell e Herbert A. Simon foram 4 dos pesquisadores que definiram a IA como uma área de pesquisa na conferência de Dartmouth em 1956. Nessa conferência, discutiram a seguinte hipótese: “Todo aspecto do aprendizado, ou qualquer outra característica da inteligência, pode, a princípio, ser descrito com tanta precisão que uma máquina pode ser criada para estimulá-lo.” [4].

Edward Feigenbaum e Raj Reddy

Edward Feigenbaum
Figura 5 – Edward Feigenbaum

Edward Feigenbaum é conhecido como o pai dos sistemas especialistas (do inglês, expert systems). Ele foi um dos responsáveis por popularizar esse tipo de sistemas nos anos 70 e 80.

Sistemas especialistas são sistemas projetados com um propósito específico de substituir um especialista de uma determinada área. Eram sistemas baseados em regras (do inglês, rule-based systems). Tinham esse nome devido a regras do tipo se-então (if-then). Geralmente, sistemas especialistas tem dois componentes: uma base de conhecimento e um motor de inferência. A base de conhecimento possui fatos e regras lógicas. O motor de inferência usa a base de conhecimento para deduzir novos fatos com base nas regras e fatos existentes. As linguagens de programação mais usadas para desenvolver sistemas especialistas eram LISP (criação de John McCarthy) e Prolog.

Se você nunca viu como funciona a linguagem Prolog, preparei um exemplo simples de recomendador de livros. Neste recomendador, eu declaro alguns livros que eu li e gostei e alguns que pessoas próximas a mim leram e gostaram. Em seguida, criei uma regra simples (e ingênua) para eu indicar os livros para os meus próximos ou vice-versa. O
código-fonte e instruções de execução estão no meu GitHub.

Raj Reddy
Figura 6 – Raj Reddy

Raj Reddy é um indiano e foi o primeiro asiático a vencer o Prêmio Turing. Entre suas contribuições para a IA estão a criação do Instituto de Robótica da CMU e demonstrações de diversos sistemas que usam alguma forma de IA. Entre esses sistemas, estão sistemas de: fala, controlados por voz, reconhecimento de voz, reconhecimento de voz independente do interlocutor, etc. Se hoje temos sistemas como Android sendo capaz de reconhecer o que queremos usar no nosso celular após falar “Ok Google!”, em parte é por causa dos trabalhos publicados por Reddy.

Se você ainda não testou o “Ok Google!” no seu smartphone Android, sugiro que pegue-o e desbloqueie a tela agora. Em seguida, fale como se estivesse falando com o seu aparelho:

  1. Ok Google!
  2. Abra Facebook.

Aí você me diz: “Felipe, abrir o Facebook é muito fácil, eu não preciso fazer isso por voz”.
Agora imagine o seguinte cenário, você não gosta muito de digitar no teclado do seu dispositivo móvel e ouviu falar que as ações da Petrobras estão subindo. Uma forma rápida de conferir esse crescimento é desbloquear a tela do seu smartphone e dizer:

  1. Ok Google!
  2. Qual o preço das ações da Petrobras?

Com relação ao Exemplo 1, só funcionará se você tiver o Facebook instalado. Apesar disso, no lugar de Facebook você pode falar o nome de outros apps instalados. No Exemplo 2, no lugar de Petrobras, você pode informar o nome de outras empresas na bolsa de valores. Se você gostou desses exemplos, pode conhecer outros comandos de voz em português suportados pelo Android nesta publicação do Olhar Digital.

Feigenbaum e Reddy foram premiados em 1994. Ambos mostraram o potencial dos sistemas de IA voltados para áreas comerciais.

Leslie G. Valiant

Leslie Valiant
Figura 7 – Leslie G. Valiant

Leslie G. Valiant foi o premiado em 2010 e é conhecido por ser um cientista da computação teórico. Contribuiu para o estudo de complexidade de algoritmos mas também para a IA criando o modelo de aprendizado de máquina chamado Provavelmente Aproximadamente Correto (do inglês, Probably Approximately Correct – PAC). Esse modelo trouxe mais possibilidades para a área de Aprendizado de Máquina (se você quiser conhecer mais sobre esse assunto, leia esse post).

Nos modelos de aprendizado de máquina PAC, o sistema recebe amostras e deve selecionar uma função de generalização (chamada hipótese) a partir de algumas classes de funções possíveis. A meta do modelo é encontrar uma hipótese que, com alta probabilidade (i.e., provavelmente), terá um baixo erro de generalização (i.e., uma solução aproximadamente correta). O sistema deve ser capaz de aprender o conceito dados quaisquer probabilidade de sucesso, taxa de aproximação ou distribuição de amostras. Outra vantagem do modelo PAC é que como Valiant tem muita experiência em teoria da complexidade, trouxe esses conceitos para aprendizado de máquina.

Atualmente, Valiant trabalha com Neurociência Computacional, focando suas pesquisas no entendimento da memória e do aprendizado. Um de seus principais trabalhos em aprendizado de máquina está disponível neste link.

Judea Pearl

Judea Pearl
Figura 8 – Judea Pearl

Judea Pearl foi premiado em 2011 pelas contribuições em cálculo de raciocínio probabilístico e causal. Se você gosta de IA, tenho certeza que você já ouviu falar da invenção de Judea Pearl. Ele inventou o conceito de Redes Bayesianas (do inglês, Bayesian Networks). Embora as Redes Bayesianas tenham esse nome, elas não foram criadas por Thomas Bayes. Ainda assim, o Teorema de Bayes de Thomas Bayes é fundamental na técnica criada por Pearl em 1985, e isso justifica o nome da invenção de Pearl.

As Redes Bayesianas são grafos orientados que apresentam a relação de dependência entre duas variáveis aleatórias. E nesse sentido, se aplicam as regras do Teorema de Bayes. Com isso, as Redes Bayesianas são comumente usadas para representar a incerteza em sistemas de IA.

A contribuição de Pearl se tornou essencial em diversas frentes da IA como Planejamento Probabilístico (minha área de mestrado), Robótica, Aprendizado de Máquina, Visão Computacional, Processamento de Linguagem Natural e outras subáreas da IA.

Como vimos neste texto, dos anos 60 até a década atual, em quase todas as décadas algum pesquisador de IA foi reconhecido pelas suas contribuições. Em alguns casos, mais de um e mais de uma vez.
Na evolução da ciência da computação, os ganhadores do Prêmio Turing que eu mencionei tinham a IA como a principal ou uma de suas principais linhas de pesquisa. Eu deixei de mencionar muitos que foram importantes indiretamente, mas porque o foco deles me pareceu não ser a IA. Entre eles, temos alguns que contribuíram para a criação de compiladores mais eficientes, linguagens de programação mais formais, bancos de dados melhor organizados, algoritmos, técnicas de avaliação de algoritmos, etc. E isso tudo tem sido essencial para a IA também.
Esse texto foi mais histórico do que técnico porque fiquei curioso para saber quem foram os pesquisadores de IA que já haviam ganhado o Prêmio Turing. E assim que fui lendo, percebi que seria legal compartilhar a pesquisa. Outra motivação que tenho para escrever sobre cientistas e pesquisar suas invenções é a citação a seguir.

“Se cheguei até aqui foi porque me apoiei no ombro dos gigantes.”
Isaac Newton

Espero que tenham gostado desse post. Comentários são sempre muito bem-vindos!

Obrigado e até o próximo texto!

Referências

  1. Wikipedia – Turing Award. URL
  2. Wikipedia – Marvin Minsky. URL
  3. G1 – Notícia sobre morte de Marvin Minsky. URL
  4. Brighton, Henry e Selina, Howard. Livro: Entendendo Inteligencia Artificial. Pág. 21.
  5. Wikipedia – John McCarthy. URL
  6. Wikipedia – Allen Newell. URL
  7. Wikipedia – Logic Theorist. URL
  8. Wikipedia – General Problem Solver. URL
  9. Wikipedia – Herbert A. Simon. URL
  10. Wikipedia – Edward Feigenbaum. URL
  11. Wikipedia – Raj Reddy. URL
  12. Olhar Digital – Ok Google! Comandos de Voz. URL
  13. Wikipedia – Leslie Valiant. URL
  14. Wikipedia – Judea Pearl. URL
  15. Wikipedia – Probably Approximately Correct. URL
Anúncios