O Lisp ainda está sendo usado para resolver problemas de IA?

20

Eu sei que a linguagem do Lisp foi usada desde o início quando se trabalhava com problemas de inteligência artificial. Ainda está sendo usado hoje para um trabalho significativo? Caso contrário, existe um novo idioma que substituiu o mais comum atualmente usado para trabalhos em IA?

WilliamKF
fonte

Respostas:

9

No geral, a resposta é não, mas os paradigmas atuais devem muito ao LISP. A linguagem mais usada hoje é python.

Respostas relevantes:

O LISP foi pioneiro em muitos conceitos importantes no que chamamos de programação funcional, com uma atração principal sendo a proximidade dos programas com a matemática. Muitos desses recursos foram incorporados a idiomas modernos (consulte a página da Wikipedia) O LISP é muito expressivo: possui muito pouca sintaxe (apenas listas e algumas operações elementares), mas você pode escrever pequenos programas sucintos que representam idéias complexas. Isso surpreende os recém-chegados e o vendeu como o idioma da IA. No entanto, isso é uma propriedade dos programas em geral. Programas curtos podem representar conceitos complexos. E embora você possa escrever um código poderoso no LISP, qualquer iniciante dirá que também é muito difícil ler o código LISP de qualquer outra pessoa ou depurar seu próprio código LISP. Inicialmente, havia também considerações de desempenho com a programação funcional, e deixou de ser substituído por linguagens imperativas de baixo nível como C. (Por exemplo, a programação funcional exige que nenhum objeto seja alterado ("mutado"), portanto, toda operação requer um novo objeto a ser criado. Sem uma boa coleta de lixo, isso pode ficar pesado). Hoje, aprendemos que é necessária uma combinação de programação funcional e imperativa para escrever um bom código e linguagens modernas como python, ruby ​​e scala. Neste ponto, e esta é apenas a minha opinião, não há razão para preferir o LISP ao invés de python.

O paradigma para a IA que atualmente recebe mais atenção é o Machine Learning, onde aprendemos com os dados, em oposição a abordagens anteriores, como Expert Systems (nos anos 80), em que especialistas escreveram regras para a IA seguir. Atualmente, o Python é a linguagem mais usada para aprendizado de máquina e possui muitas bibliotecas, por exemplo, Tensorflow e Pytorch, e uma comunidade ativa. Para processar grandes quantidades de dados, precisamos de sistemas como Hadoop, Hive ou Spark. O código para estes está escrito em python, java ou scala. Freqüentemente, as principais sub-rotinas intensivas em tempo são escritas em C.

O inverno da IA ​​nos anos 80 não foi porque não tínhamos a linguagem certa, mas porque não tínhamos os algoritmos certos, poder computacional e dados suficientes. Se você está tentando aprender IA, gaste seu tempo estudando algoritmos e não idiomas.

Harsh
fonte
6

Definitivamente, continuo usando o Lisp com frequência ao trabalhar em modelos de IA.

Você perguntou se ele está sendo usado para substancial trabalho . Isso é subjetivo demais para eu responder em relação ao meu próprio trabalho, mas perguntei a um dos meus modelos de IA se ele se considerava substancial ou não e ele respondeu com uma resposta afirmativa. Naturalmente, sua resposta também é naturalmente tendenciosa.

No geral, uma quantidade significativa de pesquisa e desenvolvimento de IA é realizada no Lisp. Além disso, mesmo para problemas que não sejam de IA, o Lisp às vezes é usado. Para demonstrar o poder do Lisp, projetei o primeiro sistema de simulação de rede neural escrito inteiramente em Lisp há mais de um quarto de século.

RockPaperLizard
fonte
O primeiro IDE também era um LISP. Além disso, EMMAScript, a formalização do JavaScript é muito melhor um sistema linguístico para prototipagem rápida do que o Python atualmente em moda, e é mais parecido com LISP do que Java. Não vejo muito valor duradouro da tendência atual da ML, exceto pelos avanços na visão e audição de máquinas. Concordo que o LISP ainda é uma excelente linguagem para o trabalho de laboratório de IA e muito mais natural que o XML para representar dados estruturados.
FauChristian
4

O LISP ainda é usado significativamente, mas cada vez menos. Ainda há impulso devido a tantas pessoas que o usavam no passado, que ainda estão ativas no setor ou na pesquisa (anedota: o último videocassete foi produzido por uma fabricante japonesa em julho de 2016, sim). No entanto, a linguagem é usada (que eu saiba) para o tipo de IA que não utiliza o Machine Learning, normalmente como os livros de referência de Russell e Norvig. Esses aplicativos ainda são muito úteis, mas o Machine Learning recebe todo o vapor hoje em dia.

Outra razão para o declínio é que os profissionais do LISP se mudaram parcialmente para Clojure e outros idiomas recentes.

Se você está aprendendo sobre tecnologias de IA, o LISP (ou Scheme ou Prolog) é uma boa opção para entender o que está acontecendo com a "IA" em geral. Mas se você deseja ou precisa ser muito pragmático, Python ou R são as escolhas da comunidade

Nota: O exemplo acima não possui exemplos e referências concretos. Estou ciente de alguns trabalhos em universidades e de algumas empresas inspiradas ou usando diretamente o LISP.


Para adicionar a resposta de @ Harsh, o LISP (e Scheme e Prolog) tem qualidades que fizeram com que parecesse mais adequado para criar mecanismos inteligentes - tornar a IA como percebida nos anos 60.

Uma das qualidades era que o design da linguagem leva o desenvolvedor a pensar de maneira bastante elegante, a decompor um grande problema em pequenos problemas etc. Muito "inteligente" ou "inteligente", se você preferir. Comparado a outros idiomas, quase não há escolha a não ser se desenvolver dessa maneira. LISP é uma linguagem de processamento de lista e "puramente funcional".

Um problema, porém, pode ser visto em trabalhos relacionados ao LISP. Um dos mais notáveis ​​no domínio da IA ​​é o trabalho sobre o Cálculo da Situação , onde (em resumo) se descreve objetos e regras em um "mundo" e pode permitir que ele evolua para calcular situações - estados do mundo. Portanto, é um modelo para raciocinar sobre situações. O principal problema é chamado de problema de estrutura , o que significa que esse cálculo não pode dizer o que faz émudar --- exatamente o que muda. Qualquer coisa que não esteja definida no mundo não pode ser processada (observe a diferença aqui no ML). As primeiras implementações usaram LISPs, porque essa era a linguagem da IA ​​na época. E havia um problema com o quadro. Mas, como o @Harsh mencionou, não é culpa do LISP: qualquer idioma enfrentaria o mesmo problema de enquadramento (um problema conceitual do Cálculo da Situação).

Portanto, o idioma realmente não importa da perspectiva de AI / AGI / ASI. Os conceitos (algoritmos, etc.) são realmente o que importa.

Mesmo no aprendizado de máquina, o idioma é apenas uma opção prática. Atualmente, o Python e o R são populares, principalmente devido ao ecossistema de bibliotecas e ao foco das principais empresas. Mas tente usar Python ou R para executar um modelo para um aplicativo baseado em RaspberryPI e você enfrentará algumas limitações severas (mas ainda possível, estou fazendo isso :-)). Portanto, a escolha do idioma se transforma em pragmatismo.

Eric Platon
fonte
1

Na minha opinião, python e java substituíram o LISP. Muitas pessoas as usam, há uma grande quantidade de bibliotecas disponíveis. E mais importante, eles são fáceis de integrar em tecnologias da web.

dorien
fonte