• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

mellony

AI - com linguagem de programação normal

42 mensagens neste tópico

Boas

Gostaria de saber quais as razões para linguagens como o C não serem proprias para AI.

Ando com ideias de fazer uma aplicação numa dessas linguagens, que conseguisse perceber qualquer tipo de lógica no geral, bem tenho algumas ideias que não vou dizer pois isto pode vir a ser um programa muito valioso se o conseguir fazer como o estou a imaginar, e gostava de saber a vossa opinião a usar uma linguagem normal em vez do lisp por exemplo..

Cumps ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Prende-se com o facto de alguns dos modelos mais avançados de AI (Genetic Algorithms, Neural Networks, etc) serem mais facilmente desenvolvidos com recurso a programação por objectos, um paradigma de programação não suportado pelo C.

No entanto, como qualquer outro algoritmo, estes também podem ser descrito em C, pelo que isto não significa que C não o posso fazer. Somente que não é a linguagem de programação mais indicada. Entretanto, outros modelos AI são facilmente aplicáveis em C como por exemplo Decision Networks. Como tal dependendo do modelo o C pode ou não ser um linguagem perfeitamente adequada para a sua descrição.

Entre os vários modelos e suas variações existem literalmente centenas de formas diferentes de desenvolver inteligência artificial. Os métodos são inventados constantemente por variadíssimas razões e para variadíssimos fins - por exemplo foi desenvolvido um sistema AI para controle de grandes grupos de agentes (individuos) baseado em aspectos emocionais e desempenho físico para os filmes 2 e 3 da trilogia o Senhor Dos Anéis. O sistema foi implementado nas grandes batalhas destes dois filmes.

Ora o C é uma ferramenta adequada para o desenvolvimento de alguns destes modelos. Não é realmente o caso para o que foi desenvolvido para o Senhor dos Anéis. Mas é o caso para outros.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então tenho uma duvida:

Nas linguagens proprias, a que nivel em termos de especificidade, um programa numa linguagem propria para AI trata das situações?

Exemplo: uma bola desviar-se de obstaculos...ela aprender a desviar-se ou haver uma linguagem ke simplesmente diga qualquer coisa do tipo..se obstaculo em frente desviar-se?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depende muito do "tipo" de AI que estamos a falar.

Há linguagens que se adequam melhor a certos problemas que outras, não é bem a questão de C não ser próprio, até porque existem vários algoritmos de AI que são na sua essência, algoritmos recursivos, não estando dependentes de objectos, mas existem muitos outros onde diferentes linguagens se adequam melhor.

Algoritmos de pesquisa são tão fáceis de implementar com C como com Java ou outra linguagem, e mesmo redes neuronais não precisam de objectos para funcionarem bem, mas muitas vezes a escolha da linguagem prende-se também com a facilidade que a mesma oferece à prototipagem e ao desenvolvimento do algoritmo. É mais rápido fazer um protótipo e testar alternativas em algoritmos usando linguagens como Python que usando C.

No entanto, C funciona bastante bem para AI e pode ser usado para tal, mas, dado a natureza da linguagem, se não a conheceres bem, é capaz de ser mais um obstáculo. Assim, em vez de te estares a preocupar apenas com o algoritmo e com os problemas de AI, tens de te preocupar também com a linguagem usada, o que pode ser visto como uma desvantagem. Mas C é uma linguagem que pode ser usada para AI.

No fundo, a escolha da linguagem, vai depender bastante dos requisitos que o projecto tem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nas linguagens proprias, a que nivel em termos de especificidade, um programa numa linguagem propria para AI trata das situações?

Exemplo: uma bola desviar-se de obstaculos...ela aprender a desviar-se ou haver uma linguagem ke simplesmente diga qualquer coisa do tipo..se obstaculo em frente desviar-se?

Não sei se percebi bem a dúvida, primeiro porque não existem linguagens próprias ;), depois porque não estou a ver onde queres chegar com ser a linguagem a tratar as situações, podes explicar melhor?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem no fundo o meu objectivo é criar um programa com "inteligencia", quero que ele tenha a capacidade de aprender.

Ok...é algo ambicioso e até gostava de saber se já não existe algum programa que tenha essa capacidade?

O meu objectivo é criar um programa que mais tarde seria uma especie de plataforma universal de inteligencia artificial...Um programa com a capacidade de aprender qualquer coisa, em qualquer situação.

Primeiramente gostaria de fazer um programa tipo o da menina do IKEA, em que uma pessoa virtual responde às nossas perguntas, mas claro usando a minha lógica, eu tenho a capacidade de ter uma lógica relativamente avançada, e quero implementala neste programa, quero criar o derradeiro software de AI.

Outra questão, quero aproveitar o poder de processamento do pc, será melhor usar antes o C# visto ser uma linguagem muito mais recente?

Espero que as ideias que tenho para o programa que quero fazer não sejam parvas, mas nesse caso avisem-me, é por isso que partilho isto aqui e é por isso que ainda nem comecei a fazer, apenas tenho as ideias na minha cabeça.

Cumps ;)

P.S. O software tipo menina do IKEA, seria apenas como teste do sistema de inteligencia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exemplo: uma bola desviar-se de obstaculos...ela aprender a desviar-se ou haver uma linguagem ke simplesmente diga qualquer coisa do tipo..se obstaculo em frente desviar-se?

Tu podes ensinar realmente a bola a desviar-se de obstáculos se quiseres que seja esse o comportamento. Ou seja, a bola aprende a desviar-se do obstáculo cada vez mais cedo até um limite estabelecido por ti. Podes desenvolver isto implementando uma série de metodologias. Se calhar eu escolheria Genetic Algorithms principalmente porque sei que mais tarde ou mais cedo iria querer expandir este comportamento. Ou podes simplesmente implementar um algoritm para collision detection. O primeiro caso é AI, o segundo nem por isso - pese embora a verdadeira definição de AI seja um vasto nevoeiro cinzento na madrugada do conhecimento humano.

Nas linguagens proprias, a que nivel em termos de especificidade, um programa numa linguagem propria para AI trata das situações?

É. Também tive dúvidas sobre onde querias chegar com esta pergunta. Mas penso que entendi... Se não: olha, lê na mesma.

És tu que defines os limites do que queres ensinar ao "agente" (entende "agente" como qualquer coisa à qual queres dar "inteligência". Um soldado, uma bola, um animal...). É o intervalo entre o que queres que seja o comportamento mínimo e o que queres que seja o comportamento máximo do teu agente que muitas vezes define qual o modelo que vais querer adoptar, ou mesmo se vais precisar de inventar um novo.

Em termos teóricos não há limites para o que quiseres atingir para além da tua própria capacidade em decompor o problema  e solucioná-lo. Se um dia encontrases e definisses um problema computacional para o qual a tecnologia actual não teria uma solução, darias o teu nome à ciência tal como este senhor o fez por muitas razões, mas também porque teorizou sobre as turing machines. Enfim, estou a florear um pouco à volta da ideia de que é a tua imaginação e as tuas capacidades de programação que vão colocar limites nesta área e não a programação.

Ou seja - e para responder à tua pergunta directamente, se é que a entendi - se consegues descrever a solução, conseguirás também programá-la. Consequentemente, os AI tendem a evoluir.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Espero que as ideias que tenho para o programa que quero fazer não sejam parvas, mas nesse caso avisem-me

De modo algum!

Não são nada parvas. Muito boa gente, com cérebros maiores que piscinas olimpicas, tentam atingir esse mesmo objectivo à muitos anos.

Portanto, não é parva a ideia. Talvez impraticável ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pelo post ;)

Não quero dar a entender que sou um excelente programador, estou aqui porque tambem quero aprender com vosses, e mais uma vez digo, tenho muito para aprender, e confesso ainda ter que aprender algumas coisas em programação para passar as minhas ideias para o programa que pretendo fazer.

Uma pergunta: Eu seria pioneiro se conseguisse fazer um programa com a capacidade de aprender qualquer coisa?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Espero que as minhas reflexões sobre a lógica sirvam para alem de melhorar a minha consciencia, que tambem ajudem a tornar este programa real :D

Mesmo que nunca funcione, ao menos aprenderei algo sobre programaçao ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hehe, pioneiro e rico. Muito rico.

EDIT: Neural Networks é talvez o mais próximo que temos agora para o que tu queres. Existem para aí alguns outros modelos que parecem estar a dar que falar mas não posso falar muito sobre eles porque não os estudei ainda; Vapnik-Chervonenkis bounds e Multivariate Adaptative Regression Splines (MARS) são dois deles.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vamos por partes, AI é algo mais complexo do que o que parece que compreendes, pelo que devo dizer desde já que não vais conseguir fazer a derradeira plataforma de AI, os computadores, actualmente, são feitos para pensar como nós pensamos, é extremamente complicado fazer um computador que tenha capacidade de "pensar", por mais limitada que seja essa capacidade. Esta é um área que tem avançado muito pouco, só recentemente se conseguiram alguns progressos e mesmo assim ainda é uma área com bastante investigação.

Um programa não vai ser capaz de aprender qualquer coisa em qualquer situação. Isto porque vais ter sempre de lhe indicar regras e essas regras irão definir a forma como o programa vai funcionar.

O facto de C# ser mais recente, em nada impede as outras de aproveitarem o poder de processamento, qualquer linguagem pode consumir todo o processador ;).

Não posso dizer que sejam ideias parvas, talvez que sejam ingénuas ou pouco informadas, no sentido em que te estás a propor fazer já. Seria bom começares por ler e aprender mais sobre Inteligência Artificial. Neste caso talvez sobre redes neuronais, lógica de predicados e matéria relacionada.

A menina do IKEA não é grande AI, é um sistema muito virado para um tema específico e é fácil fazer com que o sistema não tenha resposta para te dar, ou verificar que responde da mesma maneira a perguntas que são diferentes. É um sistema giro mas não é um grande exemplo.

A primeira coisa a perceber é que "inteligência" é um termo demasiado vago, como podemos dizer que um sistema é inteligente? Até que ponto um sistema baseado em regras, tentativa erro e análise de todas as possibilidades pode ser inteligente? Depois de definires que "tipo" de inteligência queres atingir, é necessário perceber que ainda não foi criado um sistema que conseguisse passar a 100% o teste de Turing e mesmo os que passaram fizeram-no de forma discutível. Portanto, o que te propões fazer é algo como o graal da inteligência artificial, um sistema computacional que tenha capacidade de aprender tudo.

Não sei bem o que te responder, se é possível o que queres, pessoalmente, penso que para já não. Nem as linguagens de programação nem a forma como os computadores estão feitos, estão preparados para isso. Existem problemas, como este de aprendizagem, para os quais não existe poder computacional capaz de resolver. Agora, nada impede de investigares na área, de trabalhares para atingir esse objectivo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Gostei dos vossos posts, Marfig e Knitter. ;)

Também espero um dia aprender mais sobre AI. :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pelo post ;)

Quero apenas comentar a menina do Ikea, apenas me referi como a ideia, ou seja a ideia do chat com AI, não quero nem de perto igualaraquela inteligencia, que não é nada boa.

E esse será uma aplicaçao como teste, para ir evoluindo.

O objectivo final sria por exemplo....imaginem programas que vão evoluindo conforme a sua utilizaçao..imaginem um adobe photoshop em que conforme as necessidades do utilizador, o proprio programa criaria novas ferramentas que nem os inventores dese software saberiam que poderiam ser possiveis, etc..bem ito seria se tudo corre-se muito bem LOL muito futurista :smoke:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso já se aproxima um pouco da programação genética, que é, basicamente, um programa a programar-se a si próprio ;)

Inteligência Artificial é uma área muito vasta com muitos pontos, alguns bastante diferentes entre si. É uma das áreas da informática que menos tem avançado quando comparada com a velocidade com que outras têm avançado ou com a diferença com que noutras se conseguem algumas coisas e na IA se mantém os mesmos problemas por resolver.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse é O livro de IA, o Peter Norvig é O autor de IA ;)

Foi o livro usado na cadeira de IA que tive, e foi um livro que gostei bastante, mas não te posso dizer se o deves ou não comprar, não quero que depois não gostes do livro e me venhas pedir satisfações :D

Sem brincadeiras, gostei do livro, explica muito sobre inteligência artificial, embora sirva como introdução e não como compêndio exaustivo, e está mais virado para inteligência de agentes. Aborda todos os básicos da IA.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse é O livro de IA, o Peter Norvig é O autor de IA :D

Foi o livro usado na cadeira de IA que tive, e foi um livro que gostei bastante, mas não te posso dizer se o deves ou não comprar, não quero que depois não gostes do livro e me venhas pedir satisfações :D

Sem brincadeiras, gostei do livro, explica muito sobre inteligência artificial, embora sirva como introdução e não como compêndio exaustivo, e está mais virado para inteligência de agentes. Aborda todos os básicos da IA.

OK, obrigado! :)

Quando puder vou então comprar este livro. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E depois de leres O pai de todos os livros em AI, aconselho-te a começares a pensar em implementar esses conhecimentos em código.

Mas, para isso deixa o C ou o C++ de lado por um bocado.

Tudo começa aqui: http://norvig.com/paip.html ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E depois de leres O pai de todos os livros em AI, aconselho-te a começares a pensar em implementar esses conhecimentos em código.

Mas, para isso deixa o C ou o C++ de lado por um bocado.

Tudo começa aqui: http://norvig.com/paip.html ;)

Common Lisp... :biggrin:

Estou mais interessado nas áreas de Path Finding (Navigation Meshes), e Decision Making (Finite State Machines).

http://aigamedev.com, este site também me parece bastante interessante.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, Common Lisp ;) mas referia-me particularmente ao livro PAIP. Vai-te dar bases sólidas na minha opinião para mais confortavelmente aplicares os teus conhecimentos em C ou C++.

O Pathfinding e as Decision Trees são interessantes, mas excepto o primeiro garanto-te que rapidamente vais querer mais, muito mais.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Existe algum programa que já se consiga programar a si proprio?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não será tanto programar-se a si próprio, mas mais criar programas a partir de outros programas, através de recombinação, mutações e mecanismos de selecção.

No campo da programação genética, que segue o modelo de evolução existente na natureza, começas com vários programas que se vão combinando e "reproduzindo", de forma a originar novos programas. Claro que tudo isto é segundo as regras definidas pelo programador e essas regras não são quebradas, mas existe algum grau de acaso em todo o processo, tal como na natureza existe muito de aleatório na reprodução.

Tens aqui um exemplo giro, http://genetic.moonlander.googlepages.com/home, na página de wikipedia sobre programação genética tens mais.

Programação genética é uma extensão de algoritmos genéticos, que pretende aplicar a programas completos o mesmo princípio dos algoritmos genéticos usados na resolução de problemas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se aquilo que pretendo fazer, correr bem, acho que se aplicaria muito bem na programação genetica.

Bem eu sei que realidade é realidade e ficção é ficção, mas alguem aqui viu aquele filme que ate deus nos canais portugueses recentemente, com aviões muito avançados, e que um deles tinha uma AI super avançada em que o avião depois acabou por tomar as suas decisões porque aprendeu etc.

Ou mesmo para quem viu o Eu robot, haviam um dos robots que eram diferentes, que tinha a capacidade de aprender.

Bem acho que este seria um grande passo na informatica, alcançar isso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora