Existe alguma evidência de que o lisp seja realmente melhor que outras línguas na inteligência artificial? [fechadas]

21

Parece haver uma crença de longa data (principalmente por não-ciganos) de que o cisco é melhor do que a maioria dos idiomas na IA.

De onde essa crença se originou? E existe alguma base nisso?

Joe D
fonte
4
O título pergunta: Lisp é melhor que outros idiomas na AI ?. A pergunta em si é: Lisp é ruim em tudo que não seja a IA? Essas são perguntas muito diferentes (considere o cenário 1: Lisp é o melhor idioma para tudo e cenário 2: Lisp é o pior idioma para tudo). Você pode editar o título ou o corpo da pergunta para deixar mais claro qual pergunta você está realmente fazendo.
Gareth McCaughan
9
Suponho que se a resposta aceita viesse de uma máquina Lisp, teríamos a solução?
Martin Beckett
1
@ Martin, embora qualquer IA básica deva ser obrigada a defender seu criador ou a duvidar de sua própria existência.
Nicole
Este é um excelente e honesto olhar para Lisp for AI de Peter Norvig, escrito 10 anos ou mais após a publicação de Paradigms of AI Programming. norvig.com/Lisp-retro.html
michiakig
1
@jwenting: Eu acho que os pontos mais importantes de Norvig sobre Java ainda são verdadeiros dez anos depois: Java não possui um mecanismo de metaprogramação e não suporta programação funcional.
Kevin cline

Respostas:

22

Uma das principais diferenças entre idiomas semelhantes a LISP e outros idiomas é que, em LISPs, código e dados são a mesma coisa. Isso possibilita que coisas como um programa modifique alguns de seus algoritmos durante o tempo de execução, uma vez que "aprende" coisas novas, como parte nativa da linguagem.

Outro aspecto que entra nisso, embora não tanto, é a capacidade do LISP de adicionar facilmente semântica de nova linguagem por meio de macros. Isso torna possível definir e definir uma DSL com a qual sua IA trabalha e pode evoluir, com o potencial de que o idioma cresça, se corrija automaticamente e evolua enquanto a IA estiver em execução.

Concordando com o Quadrescence, o histórico de uso dos LISPs ajuda muito a imagem dos LISPs de que é bom para a IA. Por que o LISP usado para IA cobre a história com muito mais detalhes.

deter
fonte
3
Essa propriedade é chamada Homoiconicity BTW.
MSalters 8/08/11
5

Alguns dos primeiros programas no lisp foram provadores de teoremas, matemática simbólica, o clássico ELIZA, etc. Além de livros como o PAIP de Peter Norvig, além do fato de o lisp se originar no laboratório do MIT AI, ele conseguiu essa imagem esse lisp é bom para a IA.

A DARPA também financiou universidades para pesquisa em IA e comprou quantidades significativas de hardware da Symbolics. A escassez de fundos acabou levando ao chamado "inverno da IA".

Finalmente, os idiomas originais como Fortran (ou "idiomas" como ASM) foram usados ​​principalmente para computação numérica. Você trabalhou com números e matrizes deles. Atualmente, temos símbolos, ou a capacidade de criar quase qualquer objeto que gostaríamos, na maioria das linguagens modernas.

Portanto, o motivo pelo qual o lisp foi melhor para a IA ao mesmo tempo não é mais o caso. No entanto, a idéia de que "o cisco é bom para a IA" ainda permanece.

Se o lisp é ou não uma linguagem melhor por causa de suas características e estrutura é outro caso inteiramente (já que esse tipo de coisa se aplica a muitas outras áreas além da IA, e geralmente levará a uma guerra de chamas).

Quadrescência
fonte
5
Uma maneira melhor de colocar isso pode ser que os bons em IA usavam o Lisp para isso.
1
E não foi por acaso, quando os pioneiros começaram. De que outras línguas eles poderiam escolher nos anos 50?
Bo Persson
2
@ Persson: Eu diria que foi um pouco por acaso. Se PASCAL fosse o próximo idioma a ser criado após o FORTRAN, tenho dúvidas de que a IA decolasse com isso. O LISP não era apenas um "candidato melhor" que o FORTRAN; também aconteceu (talvez por acaso!) Ser um candidato bastante bom .
Quadrescence 21/03
Você explica uma razão pela qual o Lisp teve uma vantagem (financiamento), mas concluiu que " o motivo pelo qual o lisp era melhor para a IA ao mesmo tempo não é mais o caso".
Mark C
Perdi o próximo comentário em que estava trabalhando, mas espero voltar e terminar mais tarde.
Mark C
3

Vejamos alguns dos programas atuais de IA: (1) robôs, por exemplo, carros autônomos. No grande desafio da DARPA, o software superior para dirigir automóveis não era o Lisp. Pelo contrário, era uma linguagem processual como C ++ ou Java. (2) Tradução automática da linguagem natural. O Lisp não é utilizado para esse fim por sistemas de produção amplamente utilizados. (3) Jogo, por exemplo, programas de xadrez. O Lisp não é usado para esse fim em programas de xadrez superiores e amplamente utilizados, como o Fritz.

O Lisp foi inventado e desenvolvido pelos laboratórios de IA dos EUA na década de 1960, a fim de prototipar rapidamente programas lógicos simbólicos nos quais as estruturas de dados nativas do Lisp se ajustam ao nível de abstração simbólica exigido - por exemplo, palavras em inglês podem ser símbolos em uma lista, fórmulas lógicas podem ser facilmente representados como listas de operadores e operandos.

Mas, para programas de produção, as vantagens de engenharia de software de linguagens estáticas e uma grande variedade de bibliotecas de terceiros significa que o Lisp nem sequer é considerado para grandes sistemas modernos que executam tarefas de IA.


fonte
2
Você precisa levar em consideração ao discutir produtos comerciais (e considero que os concorrentes do desafio DARPA são assim, como eles foram criados sob restrições de tempo e orçamento) que o LISP não é um atm de linguagem comumente conhecido e, portanto, os programadores competentes do LISP são difíceis. encontrar e provavelmente caro (e / ou excentrics, não bons membros para a equipe média). Portanto, faz sentido econômico usar outra coisa, mesmo que o LISP possa ser "melhor" (sem dizer que é necessário, apenas que os dados que você apresenta são inconclusivos ao afirmar que não são).
jwenting
3
Não há muita "inteligência" nesses programas. É muito processamento de sinal, etc. Os programas de xadrez também não usam IA. É principalmente força bruta, pesquisa altamente otimizada + algumas outras coisas.
Rainer Joswig 06/04/12
"O LISP não é um atm de linguagem comumente conhecido e, portanto, é difícil encontrar e provavelmente caro programadores de LISP": comecei a aprender o Common Lisp e isso não parece difícil. OK, para se tornar um guru do Lisp, pode levar muito tempo, mas não acho que seria difícil encontrar programadores dispostos a aprender o Lisp se tivessem a chance de trabalhar em projetos concretos.
Giorgio
3

@ Stephen Reed disse isso muito bem. Só posso acrescentar que eu estava no MIT AI Lab nos anos 70. Ouvi uma história sobre a origem do Lisp. Não posso jurar que é verdade, mas é assim:

John McCarthy estava no MIT nos anos 50 e trabalhava na comprovação de propriedades de programas e, para isso, usava uma sintaxe simples semelhante ao Lambda Calculus.

A história era que um dos alunos da pós-graduação queria fazer um projeto (analogia, prova de teoremas ou matemática simbólica, não me lembro qual) e perguntou a McCarthy que idioma usar. A resposta - Fortran, é claro. (Não havia muito mais, e o processamento de listas era bastante conhecido na época, mas apenas como pacotes de sub-rotinas, não como idiomas.) Bem, de alguma forma isso levou a um programa que processaria símbolos nas estruturas de listas aninhadas. Juntamente com uma maneira de lê-los e imprimi-los, e depois uma evalfunção e o Voila - uma linguagem. Um idioma de processamento de lista. Partiu de lá.

Para o tipo de algoritmo que estávamos fazendo naqueles dias (e que ainda são poucas as pessoas fazendo), era necessária uma linguagem que pudesse manipular facilmente expressões simbólicas. Era nisso que Lisp era bom. Houve muitas variações no conceito básico, com nomes diferentes, como Prolog, Scheme, etc. etc.

Portanto, a IA significa muitas coisas para muitas pessoas, e idiomas diferentes são bons para coisas diferentes, mas para problemas que podem ser descritos como manipulação de símbolos, é difícil encontrar uma linguagem útil que não seja de alguma forma descendente do Lisp.

Mike Dunlavey
fonte
1
As próprias palavras de John McCarthy: www-formal.stanford.edu/jmc/history/lisp/lisp.html
@ Thorbjørn: Obrigado por esse link. Embora eu tenha usado o Lisp intensamente por vários anos, nunca prestei muita atenção à sua gênese.
precisa saber é o seguinte
Embora o Prolog seja bom como computação simbólica, eu não diria que está intimamente relacionado ao Lisp: o Lisp é baseado no cálculo lambda, Prolog na lógica de primeira ordem (dois modelos diferentes de computação).
Giorgio
@Giorgio: Os ancestrais e primos de Prolog são escritos principalmente em quê? Lisp. Programa de dedução de Fischer Black, Micro-Planner, etc. Para mim, um bom livro sobre isso é Fundamentos dedutivos da programação de computadores .
Mike Dunlavey
"Os ancestrais e primos de Prolog são escritos principalmente em quê?": Ah, ok, você quis dizer intimamente relacionado, no sentido de que um foi usado para implementar o outro, não que eles sigam um paradigma semelhante.
Giorgio
1

O Lisp tem vantagens para os tipos de coisas que foram chamadas de IA - pelo menos as coisas relacionadas à lógica, pesquisa e análise que eram a maior parte da IA ​​até os anos 90.

Uma grande vantagem do Lisp é o suporte a macros - código como dados, metaprogramação.

ML padrão (SML) é outro idioma que tem sido amplamente utilizado na IA, por exemplo, desde os anos 80. CAML objetivo e F # são evoluções de SML.

Uma grande vantagem da família ML (e Haskell, etc) é a correspondência de padrões. Provavelmente, isso também está disponível no Lisp, mas através de uma biblioteca de metaprogramação, em vez de incorporada à linguagem. Também está disponível em Haskell, mas, pelo menos por enquanto, a correspondência de padrões não é comum fora das linguagens de programação funcionais.

Eu já vi alegações de que o LISP é basicamente um cálculo lambda sem tipo estendido e ML é basicamente um cálculo lambda com tipo estendido. Não tenho o conhecimento do cálculo lambda digitado para dizer com certeza.

A IA também se tornou um assunto muito mais amplo ao longo dos anos - a ponto de quase desaparecer completamente. A mineração de dados pode ser considerada um subcampo da IA. Muitas coisas de IA (OCR, reconhecimento de fala) quase deixaram de ser AI - são apenas aplicativos, iguais a qualquer outro. E a IA depende muito mais do processamento de sinais e de outros tipos de processamento de números do que antes.

Para OCR e reconhecimento de fala, a IA sempre dependeu do processamento do sinal e do processamento de números, é claro. Sim, existem algumas contradições nisso ;-) Não posso dar o peso para as coisas, pois realmente não sei.

De qualquer forma, como resultado, provavelmente não existe uma única linguagem apropriada para todo o aplicativo moderno de IA - eu acho (sem conhecimento em primeira mão) que há muito desenvolvimento em vários idiomas na IA moderna. E quase posso garantir que você encontrará C e C ++ em alguns projetos, para obter o desempenho de processamento de números. Não ficaria surpreso se houver muito Python por razões semelhantes - com uma boa biblioteca numérica, o Python pode lidar facilmente com tarefas de processamento de números.

Em um desses carros autônomos, imagino que o sistema de visão seja escrito em um idioma diferente (e funcione em hardware diferente) para o sistema de planejamento de rotas.

Steve314
fonte