Linguagem de programação recente para IA? [fechadas]


15

Por algumas décadas, a linguagem de programação escolhida para IA foi Prolog ou LISP , e mais algumas que não são tão conhecidas . A maioria deles foi projetada antes dos anos 70.

As mudanças acontecem muito em muitos idiomas específicos de outros domínios, mas no domínio da IA ​​não havia aparecido tanto quanto nos idiomas específicos da web ou nos scripts etc.

Existem linguagens de programação recentes que pretendiam mudar o jogo na IA e aprender com as insuficiências das linguagens anteriores?


1
Oitava é uma boa linguagem para o Machine Learning se esse ramo da IA ​​lhe interessar.
Setzamora 6/10/12

Considere também uma abordagem de metaprogramação (ou seja, geração de programas). Veja o blog de J.Pitrat . Em seguida, o idioma que geram pode não ter um monte de inportance, que poderia até mesmo ser C.
Basile Starynkevitch

Respostas:


23

O curso de IA em que participei on-line, ministrado em Stanford, recomendou que o Python fosse usado para a lição de casa. Acredito que a Georgia Tech ainda usa o LISP.

A falácia aqui é "nova" é "boa". A pesquisa em IA é uma das mais antigas disciplinas de pesquisa em computação. Ele continua parecendo subcampos à medida que as pessoas percebem que as técnicas dele podem ser usadas em outros lugares. Processamento de idiomas, aprendizado de máquina e mineração de dados são exemplos de aplicativos "práticos" que usam uma grande variedade de idiomas.

Portanto, é menos que o campo principal tenha mudado do que foi refinado em uma enorme variedade de disciplinas relacionadas. É como dizer "Computação científica" e esperar que isso signifique apenas resolver equações lineares.

Os idiomas que você mencionou evoluíram bastante nos últimos 20 ou 30 anos. Lisp gerou Common Lisp e Clojure. Prolog gerou Visual Prolog (possui objetos ...) e Mercury (pegue Haskell e Prolog, trancá-los juntos em uma sala ... fique bem longe e prepare-se para correr).

Dado que a pesquisa em IA é mais teórica, faz sentido que ela se concentre na teoria (matemática) e não nas práticas (linguagens).

Tudo o que foi dito, o maior inovador de tecnologias de IA que eu apostaria é o Google. Eles tendem a favorecer o Python (e Go e Dart, mas isso não vem ao caso). Assim, eu diria que Python é a "linguagem de escolha recente", mas você também pode usar Haskell ou OCaml ou F # ou C # ou até Java.


+1 por mencionar Mercúrio.
perfil

8

Você pode encontrar respostas para suas perguntas em uma edição especial recente “Sprachen der KI” (“Languages ​​of AI”) do periódico alemão AI KI - Künstliche Intelligenz , volume 26, número 1 / fevereiro de 2012, publicado pela Springer. Eu sou o co-autor de uma parte de um documento de discussão incluído nele: “Qual idioma você usa para criar seus programas de IA e por quê?” Aqui está uma pré-impressão: http://ai.cs.unibas.ch /papers/schmid-et-al-kijournal2012.pdf

Em resumo, alguns pesquisadores de IA ainda juram pelas linguagens clássicas de AI, Lisp e Prolog. Outros usam linguagens comuns como C ++, Java ou Python. Outros ainda gostam de explorar novas linguagens de programação esotéricas.

Acredito que não há nada de especial na IA que exija linguagens de programação especiais. O que os pesquisadores em geral querem são linguagens de programação que permitam prototipagem rápida. Isso é algo que as linguagens AI antigas (Lisp, Prolog) e as mais recentes linguagens de "script" (Perl, Python, Ruby ou linguagens recentes da JVM, como Clojure) são ótimas.

Alguns pesquisadores querem ir além da prototipagem ou têm requisitos especiais (por exemplo, big data) e precisam reimplementar seus algoritmos em linguagens compiladas ou com tipos fortemente tipados como C, C ++ ou Java assim que a fase de programação exploratória terminar e eles tiverem um melhor aderência do problema. Alguns diriam que, nesse ponto (quando o problema é bem compreendido), você não está mais lidando com IA.

Voltando à sua última pergunta, todos os desenvolvimentos significativos nas novas linguagens de IA que eu conheço são inspirados na programação baseada em restrições. Alguns entraram em implementações do Prolog, como SICStus e SWI, outros geraram linguagens semelhantes ao Prolog, como Mercury e Mozart / Oz. É claro que provavelmente haverá novos desenvolvimentos significativos dos quais não estou ciente.


2

Embora a maioria dessas respostas se concentre na palavra "linguagem" porque você a usou em sua pergunta, não acredito que você deva pensar em uma linguagem específica ao pensar em IA.

Trabalho com essa tecnologia há anos e atualmente trabalho com assistentes de prova e convertendo alguns códigos de OCaml para F #. Não é a linguagem que atinge a IA, mas algoritmos específicos implementados na linguagem. Para o PROLOG, este é um mecanismo de inferência baseado na unificação . Agora, se você começar com a unificação e observar como ela foi personalizada e avançada ao longo dos anos, acho que encontrará a progressão do avanço que procura. Não se concentre na linguagem, se concentre nos algoritmos.

Como exemplo, a inferência de tipo em linguagens funcionais usa Hindley-Milner, que se baseia na unificação.

Outro exemplo específico para o assistente de prova está aqui , observe prolog.ml. O mecanismo de inferência para prólogo é implementado no OCaml e traduzido para o F #. Portanto, embora OCaml e F # não sejam anotados normalmente como linguagens de IA, eles são totalmente capazes de implementar os algoritmos de IA.


Devo dizer que é exatamente isso que penso sobre essa questão: os algoritmos são mais importantes que a linguagem que você usa para escrevê-los, é por isso que todos os livros de IA que eu li insistiram em fornecer pseudocódigo para os algoritmos.
JJP 04/07

1

Eu diria que depende do que você quer dizer com IA. O aprendizado de máquina em geral teve uma rápida evolução das ferramentas; portanto, vários algoritmos para classificação, agrupamento e outras formas de aprendizado supervisionado e não supervisionado, especialmente com modelos gráficos probabilísticos, foram implementados em Python, C #, Ruby, OCaml e Java, apenas para citar alguns.

Se você estiver manipulando dados em larga escala para criar coisas como mecanismos de recomendação, filtragem colaborativa ou outros tipos de problemas de aprendizado não supervisionados ou supervisionados, dê uma olhada no Mahout . Não é realmente uma "linguagem de programação" em si, mas é um conjunto de ferramentas para esse tipo de problema. É possível escrever o código do modelo em Java ou em outras linguagens da JVM, como groovy (uma linguagem dinâmica e razoavelmente expressiva) ou clojure (do tipo lisp).

Não sei por que você consideraria o Lisp datado; é de onde se originou a maioria dos recursos de "novo" idioma em outros idiomas (fechamentos etc.).

É claro que as técnicas de aprendizado de máquina geralmente estão se movendo em direção a modelos probabilísticos do que na lógica binária, abordagem de estilo de árvore de decisão com a qual a maioria dos esforços iniciais de IA começou, por isso é possível argumentar que o aprendizado de máquina é um ramo ou um desvio da grande tenda da IA.


0

A linguagem de escolha da IA ​​que eu usei anos atrás era o Prolog, que possui a versão Visual Prolog que veio com o IDE, como no Delphi.

O Prolog (e sua versão GUI Visual Prolog) é uma linguagem de programação lógica de uso geral associada à inteligência artificial e à linguística computacional.

No entanto, a tendência recente mostra que qualquer linguagem OOP como C #, Java, Python, Haskell, etc. está se tornando programável para aplicativos de IA.


3
Desde quando Haskell é OOP?
187 Andrea Andrea

você pode emular OOP em Haskell, certo?
Yusubov 06/10

1
você pode emular isso em qualquer idioma, não significa que você normalmente consideraria qualquer idioma como OO
jk.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.