Mobilidade de agentes

Inaugurando a minha participação no blog do Vetta Labs, vou falar um pouco sobre mobilidade de agentes inteligentes.

Meu interesse por essa área se confunde com o surgimento dos primeiros jogos isométricos com pathfinding. Inicialmente, eu podia perder horas tentando tapear um NPC para ver se ele era inteligente de verdade. Claro que, com o tempo, a inteligência artificial nos jogos ficou mais elaborada, e eu passei a correr para me manter vivo mesmo. :P

Algoritmos de pathfinding consistem, basicamente, em um ou múltiplos agentes com destino definido distribuídos em um ambiente (mapa) determinado. Sendo assim, o agente deve se deslocar pelo ambiente respeitando suas restrições de movimento e obstáculos dinâmicos ou estáticos até atingir seu objetivo. Geralmente o algoritmo faz um cálculo de custo de deslocamento para definir a melhor direção ou trajetória a seguir. Além disso, o ambiente pode ter inúmeras características, o que viabiliza ou não a utilização de algoritmos de pathfinding específicos.

Path Planning

Muitos dizem que nada melhor do que um A* para começar. De fato, trata-se de um dos algoritmos mais utilizados no planejamento de caminhos em jogos e robótica. Diversos frameworks, controladores e game engines possuem esse algoritmo embutido; porém, são bastante enriquecedoras a sua implementação e a de algumas variações (RTA*, IDA*, GAA*, etc).

Em 2008, participei da elaboração de um artigo para o SBGames, fazendo experimentos com algoritmos de busca online e offline para MMOs. O objeto do meu estudo foi o path planning do jogo Ultima Online, o qual considero o melhor MMORPG de todos os tempos.

Como fruto desse experimento, pude entender de forma mais clara o porquê dos problemas de gameplay no pathfinding dos NPCs do jogo: era uma questão de otimização de recursos computacionais. Sendo assim, foi muito interessante estudar como os algoritmos clássicos de inteligência artificial são adaptados para melhorar o desempenho dos servidores, algo bastante exigido nesse gênero de jogo.



Path Follow

Outra estratégia bastante utilizada na mobilidade de agentes é a definição de trajetórias baseadas em checkpoints seqüenciais, gerando um caminho virtual. O agente, por sua vez, possui um atuador que corrige a sua direção e minimiza o desvio em relação ao segmento de reta corrente para manter-se na trajetória. É uma solução comum para agentes de jogos de corrida e para controle de UAVs na robótica, pois permitem uma margem de erro em relação à trajetória ótima.



Vector Fields

Como o próprio nome diz, trata-se de um conjunto de vetores que sugerem uma direção e/ou velocidade a partir de determinada coordenada ou região. Tais vetores podem ser dispostos na forma de um grid uniforme ou dispostos nos centros de polígonos em uma malha geométrica.

Esses algoritmos são muito utilizados para mobilidade de agentes em robótica e simuladores de física de modo geral.


Nos jogos digitais, também podem ser utilizados para simular fenômenos naturais, como a atuação do vento na vegetação, por exemplo.



Voronoi Diagrams

Os diagramas de Voronoi foram desenvolvidos com o objetivo de decompor espaços a partir de um conjunto de pontos de referência. As bordas da decomposição são formadas por linhas eqüidistantes a pontos vizinhos.

Esse algoritmo possui inúmeras aplicações computacionais. Na mobilidade de agentes, é utilizado na simulação de espaços superlotados, pois as bordas dos espaços decompostos indicam os caminhos mais seguros a passar entre diversos obstáculos.


Observando as células dos diagramas de Voronoi, percebemos uma grande semelhança com estruturas orgânicas, o que, de fato, faz sentido. Diversas estruturas naturais podem ser reproduzidas computacionalmente a partir de modelos matemáticos. As asas de uma libélula também podem ser reconstruídas a partir de diagramas de Voronoi, assim como a fragmentação de corpos rígidos em simulações de física.


Boids

Com o objetivo inicial de simular o comportamento da revoada de pássaros, esse algoritmo é muito utilizado em sistemas multiagentes. O curioso nesse tipo de algoritmo é que as ações individuais desempenhadas pelos agentes resultam em um comportamento de grupo coeso. Sendo assim, podemos simular, também, cardumes, manadas, enxames, etc…

Cada agente nesse sistema pode efetuar três ações básicas: distanciamento, alinhamento e aproximação em relação ao centro de massa. Isso permite que o grupo se desloque em massa, na mesma direção, sem que haja colisões entre os agentes.



Considerações finais

Nesse post apresentei uma visão bastante resumida da mobilidade de agentes e como eles podem ser utilizados em áreas distintas. Opções não faltam para solucionar problemas diversos em planejamento de caminhos, porém, antes de escolher um algoritmo, é preciso colocar na balança alguns fatores como: consumo de recursos computacionais, tempo de resposta, margem de erro, gameplay, entre outros.

Espero que tenham gostado e até o próximo post. :)

Robótica 2 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 3.00 out of 5)
Loading ... Loading ...

Aplicações de impressão tridimensional

Ano passado eu escrevi sobre impressoras tridimensionais, ou fabbers. Estas máquinas, capazes de criar objetos tridimensionais de diversos materiais a partir de projetos computadorizados, estão se tornando cada vez mais populares e já foram assunto até de uma breve história do Cory Doctorow, Print Crime (em inglês). Naquele post falei principalmente de equipamentos para impressão, e agora vou falar de algumas das aplicações mais bacanas dessa tecnologia.

A Shapeways é um marketplace que oferece impressão 3D sob demanda. Eles possuem uma galeria de objetos que você pode imprimir, com a possibilidade de personalizar o projeto em alguns casos. Os modelos disponíveis incluem brinquedos, jóias, esculturas, maquetes e muitos outros, como o cubo de Rubik abaixo. Você pode também criar seu próprio projeto 3D, e eles oferecem ferramentas para facilitar a modelagem. E você pode criar sua própria loja dentro do ambiente deles, vendendo seus projetos.

Cubo de Rubik da Shapeways

Cubo de Rubik da Shapeways

Outra aplicação útil é a fabricação sob demanda de peças de reposição para equipamentos que já não são mais fabricados. O comediante e apresentador de TV Jay Leno, por exemplo, tem uma coleção enorme de carros antigos, alguns com mais de um século de idade. Ele tem a própria oficina para manutenção da coleção e, quando precisa trocar uma peça de um carro muito antigo, como esse carro a vapor de 1907, ele usa um scanner 3D e uma impressora de metal para gerar a nova peça, com dimensões perfeitas.

Mas a aplicação até agora mais revolucionária é para medicina. A Organovo, uma startup de San Diego, California, criou uma bioimpressora para medicina regenerativa. A bioimpressora, que está sendo implantada em laboratórios de pesquisa em medicina regenerativa ao redor do mundo, já é capaz de produzir tecidos simples, como pele, músculos e pequenos vasos sanguíneos. Os planos dos cientistas da empresa são de, em menos de dez anos, produzir vasos sanguíneos para tratamento de infarto, eliminando a necessidade de pontes de safena. Com mais pesquisa, será possível contruir estruturas mais complexas e, talvez algum dia, órgãos artificiais.

Um kit Makerbot

Um kit Makerbot

E para quem quer brincar com essas impressoras como hobby, a Makerbot vende kits de impressoras, assim como os suprimentos para impressão. Os kits custam a partir de US$750,00, e são bem feiosos, mas a qualidade da impressão é razoável. Embora os resultados não se aproximem do que é possível com impressoras industriais, essas custam cem vezes mais…

Eu quero um brinquedo desses no dia das crianças ;-). O que você faria com um?

Biotecnologia, Inovação 0 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 4.00 out of 5)
Loading ... Loading ...

Analisando o Twitter usando Árvore de Palavras

Nesse artigo vou comentar sobre mais um projeto de processamento de linguagem natural que desenvolvemos aqui na Vetta Labs: um analisador de textos baseado em árvore de palavras.

Comecemos do princípio: uma concordância é um tipo especial de índice, onde se mostram junto de cada palavra algumas palavras que aparecem antes e depois dela. A primeira concordância foi criada no século XII, para a Bíblia em latim, e é mais ou menos desse jeito:

Ocorrências de "alegria" na Bíblia

Ocorrências de "alegria" na Bíblia (clique para aumentar)

Uma concordância era algo incrivelmente útil - basicamente o equivalente ao Google daquela época! - e extremamente caro de se fazer: a primeira da Bíblia em latim exigiu o trabalho de 500 monges e a primeira concordância da Bíblia Hebraica levou 10 anos para ser concluída. Hoje em dia, é claro, ninguém mais dá tanta importância a esse tipo de índice porque é muito mais fácil realizar a busca eletronicamente.

Mas concordâncias ainda têm muita utilidade prática. A Fernanda Viégas, da IBM, fez uma palestra interessantíssima na TEDx São Paulo chamada Revolução Visual, onde ela demonstra uma forma de visualização de textos baseada em concordâncias e numa estrutura de dados bem conhecida na Ciência da Computação, a árvore de sufixos (introduzida nos anos 1970). Chamada WordTree, esta visualização tem como ênfase a exploração interativa de textos curtos (no máximo do tamanho da Bíblia), e está publicamente disponível no site ManyEyes.

Veja um exemplo, criado por mim:

WordTree da letra de "Construção", de Chico Buarque

WordTree da letra de "Construção", de Chico Buarque (clique para aumentar)

A implementação da WordTree no ManyEyes me chamou a atenção, mas não se mostrou útil para mim por uma série de razões:

  • a quantidade máxima de texto suportada é centenas de vezes menor do que a que gostaria de processar
  • a WordTree não permite que voltemos ao trecho original do texto
  • qualquer texto e visualização submetida é obrigatoriamente público, o que impede o processamento de dados confidenciais
  • o uso é sempre interativo, não sendo possível o processamento em lote ou automático
  • não é permitido o uso do ManyEyes em aplicações comerciais
Resolvi, então, criar minha própria implementação de concordância baseada em árvore de sufixos. A idéia não é simplesmente explorar visualmente um texto específico, mas gerar automaticamente árvores de palavras a partir de itens do Twitter.

A motivação é simples: um dos mecanismos mais interessantes do Twitter é o Re-Tweet, ou RT, que é o gesto de alguém repetir o que foi postado por outra pessoa, como forma de manifestação de apoio (ao fazer RT de um item no Twitter você está divulgando aquele item para as pessoas para seus seguidores). Quanto maior o número de RTs mais divulgação um determinado item teve.

O sistema monitora o Twitter em tempo real, buscando itens com as palavras chave determinadas pelo usuário. Todos os dias (ou, por exemplo, a cada 1000 twits encontrados) uma nova árvore é gerada, que ilustra de forma bem interessante o que tem sido discutido a respeito daquele assunto. Veja um exemplo, gerado enquanto escrevia esse artigo a partir de twits a respeito do Campeonato Mineiro (nada contra o time do Atlético!):

Árvore gerada por twits do Cruzeiro

Árvore gerada por twits do Cruzeiro

Como a quantidade de textos processada é enorme - dezenas de milhares de itens por dia! - árvores de palavras geradas de forma ingênua são gigantescas. Para exibir apenas as informações relevantes, utilizamos técnicas de processamento de linguagem natural para podar a árvore.

Por exemplo, podemos exigir que determinados nós sempre contenham verbos, ou apenas sentenças em que a palavra escolhida funcione como sujeito sejam consideradas. Tudo isso, é claro, configurável e acessível através de uma interface web, com tudo a que o usuário tem direito (feeds RSS, interface AJAX, exibição de estatísticas a respeito de como a árvore foi construída, links para os itens originais…).

E como o assunto da vez são as Eleições 2010, vejam alguns exemplos, também produzidos nesse exato momento:

Árvore produzida por menções a Aécio Neves no Twitter

Árvore produzida por menções a Aécio Neves no Twitter

Também podemos gerar árvores reversas, que mostram o que precede determinada palavra, e árvores com maior profundidade, como exemplificado abaixo:

Árvore reversa (Aécio Neves no Twitter)
Árvore reversa (Aécio Neves no Twitter)

O mais interessante (e divertido!) disso tudo é que essa técnica de visualização permite ter uma avaliação instantânea do que “está rolando no Twitter”, em poucos segundos. Uma árvore de palavras condensa informação de milhares de itens e a exibe de forma intuitiva e direta - algo realmente raro num mundo em que a sobrecarga de informação é cada vez maior.

Data Mining, Internet, Linguagem Natural, Redes Sociais, Usabilidade, Visualização Cientifica, Web 2.0 11 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (4 votes, average: 4.75 out of 5)
Loading ... Loading ...

Extração Inteligente de Palavras-Chave

Aqui na Vetta Labs desenvolvemos algumas tecnologias baseadas no processamento de linguagem natural, como já comentei em outro artigo. Hoje vou falar de uma nova aplicação que produzimos recentemente, que tem duas características bem interessantes: uma é suportar tanto textos em inglês quanto em português (o que é bastante incomum, já que as particularidades de nossa língua nem sempre são compatíveis com as técnicas mais conhecidas); a outra é que os resultados produzidos são muito fáceis de serem utilizados na prática, de forma simples, em por exemplo blogs e portais de conteúdo.

É comum sites associarem aos seus artigos frases ou palavras-chave relacionadas ao conteúdo. Essas palavras-chave podem funcionar como resumos do que é discutido, levar o usuário a outros artigos que tratam dos mesmos assuntos e também ajudar na categorização e indexação dos textos. Normalmente essas frases ou palavras-chave são escolhidas pelo próprio autor, ou então definidas pelos visitantes, de forma colaborativa (o que exige um grande número de visitas e “votos” para evitar resultados de baixa qualidade ou sem sentido).

O problema é que muitas vezes já temos uma grande coleção de textos sem palavras-chave definidas, e escolhê-las manualmente  é uma tarefa extremamente árdua.  Existem algumas ferramentas simples para detecção automática de palavras-chave, mas praticamente todas elas usam uma abordagem ingênua que dificilmente funciona bem: são usados dicionários, tabelas com palavras-chave pré-definidas, e  a aplicação simplesmente verifica se a palavra-chave na lista aparece no artigo. Essa alternativa é inútil se os artigos em questão são sobre assuntos pouco comuns, ou se as palavras-chave que desejamos são termos menos conhecidos.

Esse exatamente era o problema de dois dos nossos clientes: a h+ Magazine, uma revista eletrônica sobre trans-humanismo, singularidade e outras tendências tecnológicas e culturais, e o Ceticismo Aberto, um dos maiores sites do Brasil sobre ceticismo e divulgação científica.

Keywords through cyberspace (Digital Composite)

A solução que desenvolvemos utiliza técnicas de processamento estatístico de linguagem natural e aprendizado de máquina para extrair automaticamente frases e palavras-chave de milhares de artigos desses sites. As palavras-chave encontradas incluem neologismos, expressões, nomes próprios e termos obscuros que jamais apareceriam nos resultados de uma abordagem baseada em listas, e são automaticamente inseridas nos sistemas de gestão de conteúdo dos sites (baseados em WordPress e Drupal), permitindo seu uso imediato.

Nosso sistema inicialmente identifica frases ou palavras-chave candidatas criando sequências de até três ou quatro palavras. Cada candidata então é analisada, extraindo-se características como:

  • frequência no uso geral (palavras extremamente comuns não são importantes)
  • frequência no texto (palavras repetidas no artigo têm peso maior)
  • posição no texto (palavras no início ou no final do texto costumam ser mais representativas)
  • categoria gramatical (substantivos têm mais peso que preposições, por exemplo)
  • função sintática (frases sintaticamente incorretas ou incompletas são rejeitadas)
  • entidades ou lugares representados (o sistema identifica nomes próprios como Albert Einstein, Zumbi dos Palmares, Belo Horizonte ou São Luís do Paraitinga)

Note que combinar todas as essas informações extraídas e decidir se determinada candidata é ou não uma frase ou palavra-chave é uma tarefa complicadíssima. Para resolver esse problema, usamos um método de aprendizado supervisionado: utilizamos um pequeno número de artigos (em torno de 50 ou 100) que já tinham suas palavras-chave definidas manualmente pelos autores como exemplos positivos. Um algoritmo de aprendizado supervisionado analisa as informações acima dos exemplos positivos dados e aprende a identificar as palavras-chave, automaticamente. O interessante é que o modelo obtido é capaz de generalização, ou seja, apesar de ter aprendido “estudando” apenas 100 artigos ele é capaz de aplicar de forma correta as mesmas regras para artigos inéditos.

E os resultados são surpreendentes - às vezes é difícil convencer as pessoas de que as palavras-chave foram escolhidas automaticamente e não por uma pessoa capaz de ler e interpretar cada um dos artigos!

Notas

A nova versão do Ceticismo Aberto, já com as palavras-chave extraídas pelo sistema da Vetta Labs, entrou no ar no domingo 21 de Fevereiro, e a versão em inglês, para a h+ Magazine, deve ser disponibilizada publicamente em breve.

O projeto foi desenvolvido por Fabrício Aguiar (que já fez com a gente outras aplicações interessantes baseadas em linguagem natural), a partir de código escrito por Murilo Queiroz (que também coordenou o desenvolvimento) e diversos projetos de software livre, incluindo o WekaKEAOpenNLP, CoGrooRembrandt e OpenCalais.

Os arquivos de treinamento usados na versão para português foram criados  por Kentaro Mori, do Ceticismo Aberto, e muitas das idéias foram sugeridas inicialmente pelo Dr. Ben Goertzel.

Inteligência Artificial, Linguagem Natural 7 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading ... Loading ...

Mineração de Opinião

É notável o crescimento da quantidade de informação disponível na Web nos últimos anos. Além dos conteúdos disponibilizados por empresas de notícias, os usuários passaram a compartilhar na Web seus conhecimentos, críticas e opiniões em blogs pessoais, sites de relacionamentos, microblogs, dentre outros meios. Com esse aumento da participação dos usuários nos conteúdos da Web, surgiu também uma nova área de pesquisa relacionada ao Processamento de Linguagem Natural, chamada de Mineração de Opinião e também conhecida como Análise de Sentimento.

A Mineração de Opinião visa identificar o sentimento que os usuários apresentam a respeito de alguma entidade de interesse (um produto específico, uma empresa, um lugar, uma pessoa, dentre outros) baseado nos conteúdos divulgados na Web. O objetivo principal é permitir que um usuário obtenha um relatório contendo o que as pessoas andam dizendo sobre algum item sem precisar encontrar e ler todas as opiniões e notícias a respeito.

Existem diversas aplicações para o uso da Mineração de Opinião, sendo algumas listadas abaixo:

  • análise de empresas na bolsa de valores: quem acompanha nosso Blog deve se lembrar do projeto stockmood.com, cujo objetivo é identificar o humor do mercado em relação às empresas negociadas na bolsa de valores baseado nas opiniões dos analistas, com o intuito de identificar a tendência dos preços das mesmas;
  • análise de um produto: uma empresa pode ter interesse na opinião dos usuários sobre um determinado produto. Por exemplo, a Apple (ou uma concorrente) pode realizar uma mineração de opinião para saber o que as pessoas andam dizendo sobre o iPhone 3G. Esses resultados podem ser usados com o intuito de melhorar os produtos ou mesmo para identificar estratégias de marketing. Uma aplicação desse tipo chamada Sentweet foi desenvolvida aqui no Labs para classificar a opiniões postadas no microblog Twitter;
  • análise de lugares: uma pessoa que vai viajar pode utilizar as opiniões de outras sobre o lugar pretendido para planejar o roteiro da viagem, evitando passeios desinteressantes;
  • análise de políticos: os eleitores podem identificar qual a opinião de outros eleitores sobre um determinado candidato político;
  • análise de filmes e jogos: também é possível minerar a opinião sobre filmes e jogos eletrônicos;

Basicamente, os passos envolvidos no processo de mineração de opinião são:

  1. coleta de conteúdos: visa buscar na Web conteúdos sobre o item de interesse, e também identificar se esse conteúdo é relativo a um fato ou uma opinião. Fatos devem ser descartados, já que o interesse  é nas opiniões dos usuários;
  2. classificação: a polaridade do conteúdo recuperado deve ser identificada. Geralmente, as polaridades usadas são positiva, negativa ou neutra;
  3. sumarização dos resultados: as classificações das diversas opiniões devem ser sumarizadas para o usuário, com o intuito de facilitar o seu entendimento sobre as mesmas. Essa sumarização pode ser em forma de texto ou gráfico.

O passo de coleta dos conteúdos está relacionado com recuperação da informação. Porém, deve utilizar técnicas mais avançadas capazes de identificar se o conteúdo é uma opinião ou um fato, o que não é uma tarefa trivial. No entanto, nem todo fato deve ser descartado, já que mesmo fatos podem conter algum tipo de opinião, e vice-versa. Essa distinção é importante para se ter uma acurácia maior no passo seguinte, de classificação.

Basicamente, a etapa de classificação dos conteúdos pode ser realizada com três técnicas diferentes, que são brevemente descritas abaixo:

  • aprendizagem de máquina: essa técnica requer que um conjunto de conteúdos seja previamente classificado para servir de base para o treinamento do modelo. A partir desse modelo treinado, novos conteúdos são classificados. Uma vantagem dessa abordagem é a utilização de algoritmos já consolidados e eficientes. Como desvantagens, podemos citar a necessidade do conjunto ser classificado para treinamento e que, para diferentes tópicos, diferentes conjuntos de treinamento são necessários. Por exemplo, um modelo treinado com um conjunto de conteúdos relacionados ao mercado financeiro não é adequado para classificar conteúdos sobre política;
  • seleção de palavras: essa abordagem envolve avaliar as palavras dos conteúdos e identificar aquelas positivas e negativas com base em uma lista de palavras previamente selecionadas. Com isso, é possível executar algoritmos para classificar o conteúdo como positivo, negativo ou neutro. Vantagens dessa técnica são a sua simplicidade e o fato de ser desnecessário classificar documentos previamente para treinamento, como na abordagem anterior. No entanto, o conjunto de palavras positivas e negativas deve ser selecionado e deve ser específico para cada tópico;
  • análise sintática: essa abordagem envolve analisar o conteúdo sintaticamente, identificando adjetivos e/ou advérbios (principalmente) que podem indicar polaridades dos textos. Como vantagem dessa abordagem, pode-se citar não ser necessário classificar previamente um conjunto de textos.   Porém, ela requer um analisador sintático eficiente e que os conteúdos sejam compostos por sentenças sintaticamente corretas.

Essas três abordagens podem ser adotadas em conjunto, formando um modelo híbrido, para tentar aumentar a acurácia da classificação.

O último passo, de sumarização dos resultados, pode ser apresentado de forma textual ou gráfica. A sumarização em forma de texto não é uma tarefa trivial, e é um tópico de pesquisa por si só. Ela envolve geração de linguagem natural com base em diversos conteúdos e existem várias propostas de pesquisadores para tal. Porém, ainda é um tópico em aberto, com várias dificuldades para serem enfrentadas. A sumarização em forma de gráfico é mais simples, e exige somente que uma forma fácil de ser lida e interpretada seja adotada.

Existem diversos desafios na área que devem ser tratados para que a mineração de opinião seja obtida com uma acurácia representativa. Várias dessas dificuldades estão relacionadas ao processamento de linguagem natural, que está diretamente  relacionado à mineração de opinião. Abaixo são descritas alguns desses desafios:

  • não é trivial distinguir se um texto é opinião ou fato, e principlamente identificar em um fato se existem opiniões embutidas;
  • textos podem conter sarcasmos e ironias, o que também não são fáceis de serem identificados e podem impactar os resultados;
  • um texto pode referenciar mais de um item de interesse (pode citar iPhone e iPod) com opiniões diferentes sobre os itens, o que pode confundir a classificação;
  • uso de pronomes para referenciar itens pode dificultar a identificação de sentenças que mencionam o item de interesse;
  • textos com palavras escritas erradas e com sentenças sintaticamente mal formadas (o que é bastante comum nos Blogs e redes sociais atualmente) dificultam a busca e classificação dos mesmos;
  • uso de termos do “Internetês”, como por exemplo “vc”, “fds” e “:)”, devem ser considerados no vocabulário;
  • propaganda disfarçada, em que blogueiros recebem dinheiro para falar bem de alguma empresa ou produto pode impactar os resultados.

Podemos perceber que a mineração de opinião é uma tendência da web com diversas aplicações interessantes, dado o grande número de dados disponibilizados pelos usuários. Porém, não é uma tarefa trivial de ser realizada, já que envolve vários desafios como os descritos nesse post. Esperamos que um dia seja possível termos um sumário automático das opiniões divulgadas pelos diversos internautas, com uma qualidade alta para nos ajudar nas diversas tomadas de decisões sobre os mais diferentes temas.

Data Mining, Linguagem Natural 2 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading ... Loading ...

Ben Goertzel fala de AGI (Artificial General Intelligence) na Fastforward Radio

A notícia e o mp3 com a discussão no Talk Show estão disponíveis para download em

http://ieet.org/index.php/IEET/more/ffr0809/

O programa tem cerca de 1 hora e meia e conta com a participação de Eliezer Yudkowsky, James Hughes e, claro, Ben Goertzel.

Inteligência Artificial 4 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Microfluídica na prática

O excelente post do Murilo sobre fluídica comentou, brevemente, sobre o uso de computação líquida para diagnósticos. Empresas inovadoras na área de saúde estão trabalhando nos chamados “labs on a chip”, que são pequenos dispositivos baseados para diagnóstico de uma ou mais doenças, em geral com base em uma pequena amostra de sangue ou saliva.

Em áreas remotas de países em desenvolvimento, dificilmente há equipamentos e profissionais de saúde com condições adequadas para o tratamento da população. Exames periódicos então, nem pensar. Por isso, muitas fatalidades são causadas por doenças facilmente tratáveis, mas que não são diagnosticadas até que seja tarde demais. Daí o investimento de pesquisadores e empresas em tecnologia que facilite e barateie o diagnóstico de doenças comuns o mais cedo possível.

A Diagnostics for All, uma startup americana criada por pesquisadores do MIT e de Harvard, criou um chip desses com diversos aspectos interessantes:

  • O chip usa microfluídica para direcionar o movimento de uma amostra de sangue para diversos pontos onde reagentes químicos específicos estão depositados para o diagnóstico de cada doença. Assim, não há a necessidade de energia para execução dos testes.
  • Os diagnósticos são visuais: se uma doença é detectada, um pedaço do chip muda de cor. Assim, não é preciso equipamento nem pessoal especializado para análise da amostra de sangue. O próprio paciente pode interpretar seu exame, como naqueles kits de gravidez de farmácia.
  • O chip é feito de *papel comum*, o que torna sua produção muito mais barata que a de chips feitos de materiais tradicionais, e facilita seu armazenamento e distribuição em lugares remotos.

Chip de Diagnóstico

A Diagnostics for All ganhou um prêmio de inovação de US$100 mil em 2008, numa prestigiosa competição de planos de negócios organizada pelo MIT. Ah, eles são uma organização sem fins lucrativos, e foi a primeira vez que essa c0mpetição teve um vencedor desse tipo. O chip ainda não está no mercado, mas o potencial é enorme.

Uncategorized 0 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5.00 out of 5)
Loading ... Loading ...

Fluídica: Computação a Água

No meu artigo anterior falei sobre a idéia de computadores completamente mecânicos, falando um pouco da Máquina de Turing (um modelo matemático de um computador abstrato) e das Máquinas Diferencial e Analítica de Charles Babbage (inclusive sobre implementações em LEGO). Depois que publiquei me lembrei que poderia ter citado também o Mecanismo de Anticítera - então agora remeto vocês para o artigo sobre ele escrito pelo amigão Kentaro Mori.

Depois dos computadores mecânicos, no final eu prometia falar de computadores fluídicos - computadores sem partes móveis em que o fluxo de elétrons é substituído por fluidos como ar, água ou óleo, com tubos, canos e mangueiras ao invés de fios. Ao assunto, então!

Fluídica na Ficção Científica

Provavelmente o primeiro contato com de muita gente com a idéia foi assistindo ao clássico Rollerball - Os Gladiadores do Futuro (1975). No filme existe Zero, um supercomputador fluídico baseado em lógica fuzzy que armazena toda a informação de todos os livros do mundo:

rollerball

Livros, livros ? Mudaram completamente. Todos foram transcritos. Toda a informação está aqui. Temos o Zero, é claro. Ele é o cérebro central, o cérebro do mundo. Mecânica de fluidos, fluídica. Ele é líquido, vê ? Suas águas tocam todo o conhecimento do mundo. [...] Ele flui por todos os nossos sistemas de armazenamento. Ele considera tudo. Tornou-se tão ambíguo hoje em dia que parece não ter certeza de nada.

Hoje em dia, mesmo sem o Zero é fácil encontrar o trecho de Rollerball em que Zero aparece (vídeo em inglês, sem legendas em português) e também o script original do filme.

Rollerball é 1975, e na época a Fluídica estava bombando - uma quantidade enorme de verbas foi investida em sua pesquisa, nos Estados Unidos (falaremos disso mais tarde) - e provavelmente por isso ela foi a tecnologia escolhida para aumentar a suspensão de descrença do filme.

Água x Elétrons

Quando estudava eletrônica (e até hoje, quando preciso explicar pra alguém) eu costumava imaginar que os elétrons se comportavam como água. Carga elétrica (em Coulombs) virava quantidade de água (em litros). A corrente (em Ampère, Coulomb por segundo) virava o fluxo de água (litros por segundo). A tensão da corrente (em Volts) é equivalente à pressão da água, e a resistência de um fio, à espessura do cano que transporta o líquido.

Uma bateria armazena energia potencial química, que causa uma diferença de potencial elétrico nos terminais (que faz com que a corrente elétrica circule). No nosso exemplo didático, temos uma caixa d’água, e a diferença de pressão entre a caixa d’água e um cano no térreo é o potencial que coloca a água nos canos em movimento (usando a energia potencial gravitacional). Quando você abre a torneira (o interruptor) a diferença de pressão (potencial) faz com que a água (elétrons) fluam da caixa d’água (pólo positivo) pelo cano (fio) até o ralo (pólo negativo / “terra”).

Pensar desse jeito torna o básico que se aprende de eletrônica e eletricidade no ensino médio algo bem concreto - a maioria das pessoas já brincou mais com mangueiras de jardim e torneiras do que com fios e baterias. Fica fácil entender porque uma tensão (pressão d’água) muito alta danifica um aparelho (ao ligar um aparelho 110V numa tomada 220V) mas uma bateria com capacidade de fornecer muita corrente não danifica aparelhos de baixo consumo (você simplesmente tem mais água na caixa d’água).

De qualquer forma, eu imaginava que esse raciocínio era só um recurso didático, e não poderia ser aplicado em nada mais sofisticado. Por exemplo, eu sempre imaginava torneiras - dispositivos mecânicos, móveis, que controlam o fluxo, da mesma forma que interruptores fazem com a corrente elétrica. Mas o mais interessante da eletrônica (pelo menos pra mim, na época) era usar a eletricidade para controlar eletricidade: usando um transistor (o amplificador mais simples que existe) uma corrente elétrica de baixa intensidade controla uma corrente elétrica muito mais forte (e.g. a corrente baixíssima induzida por um microfone controla a corrente muito mais alta consumida pelas caixas de som enormes no seu show de rock preferido).

Descobri que meu problema era fazer um transistor de água. Anos mais tarde eu iria aprender como fazer um, lendo sobre uma feira de ciências de 1962!

Os Circuitos de Água de Murray O. Meetze, Jr.

Em 1962, o estudante de segundo grau Murray O. Meetze, Jr, ganhou a Feira Nacional de Ciências de 1962, nos Estados Unidos. O projeto dele era o equivalente a uma válvula triodo a água, sem partes móveis. A válvula triodo foi aposentada há décadas; hoje em dia ninguém a usa (exceto uns poucos audiófilos, entusiastas de rádios e TVs antigos, ou interessados em aplicações muito específicas). Ela foi substituída pelo seu equivalente de estado sólido (feito apenas com metais semicondutores, sem necessidade de tubo de vidro a vácuo), o transistor.

Certa vez, completamente por acaso, eu me deparei com uma longa reportagem numa Scientific American da época, descrevendo o tabalho de Meetze. Eu fiquei maravilhado; as soluções dele eram incrivelmente simples, e com elas daria pra aumentar meu “laboratório fluídico imaginário” de uma forma que não achava que seria possível. Além do transistor, Meetze mostrava como fazer um flip-flop (ou multivibrador bi-estável) fluídico, o equivalente a um bit de memória RAM, e também um amplificador (com funcionamento igual ao de um amplificador eletrônico de som).

meetze-flipflop

Depois de vários anos procurando, enquanto me preparava para escrever esse artigo eu encontrei novamente a deliciosa matéria da Scientific American. A qualidade do scan está bem baixa, mas a leitura é recomendadíssima. Uma curiosidade: a página sobre Fluídica da Wikipedia em inglês cita Murray O. Meetze como criador da válvula triodo fluídica, mas não dá referências! Vou tentar editar o post para incluir isso, mas é preciso uma correção: o próprio Meetze diz à Scientific American que a tecnologia havia sido desenvolvida pelo Diamond Ordnance Fuze Laboratories, do exército americano, mas quase tudo era confidencial na época.

Com transistores fluídicos eram possível criar portas lógicas fluídicas. Com portas lógicas e flip-flops, a única coisa que impedia a construção de um computador completamente fluídico era o tamanho ! Aliás, recentemente um estudante do MIT pôs a mão na massa e resolveu fazer algo parecido, usando - é claro - peças de LEGO! O projeto, bem simples, foi feito com fins exclusivamente didáticos - bem alinhado com o que me despertou o interesse por fluídica (e também com o trabalho de Meetze).

mlfabpauloandadder1

Ao revisar esse artigo, o Kentaro me falou de um outro tipo de computador baseado em água, o MONIAC. Ele também foi construído originalmente com fins didáticos, mas era capaz de fazer simulações bem complexas da economia do Reino Unido. O MONIAC é um computador analógico que usa quantidade de água para representar os dados, como os integradores a água da União Soviética dos anos 1930, que eram capazes de resolver equações diferenciais parciais não-homogêneas - se você sabe o que é isso vai entender a importância da coisa! Mas o MONIAC era baseado em hidráulica, não em fluídica. A diferença é que sistemas hidráulicos têm várias partes móveis, mecânicas - êmbolos, pistões, “torneiras”, etc.  - uma abordagem bem diferente da fluídica, onde só o que se move é o próprio fluido.

A Fluídica nos Anos 1960-1980

Assim como eu, muita gente ficou animadíssima com as possibilidades que a Fluídica trazia. Nos anos 1960 e 1970 computadores eletrônicos eram frágeis, caros e lentos, e a robustez e simplicidade dos circuitos fluídicos era muito atrativa. Esse entusiasmo é fica claro ao ler artigos da época, publicados em revistas como Popular Mechanics e Popular Science. O divertido é que o conteúdo integral dessas revistas está disponível on-line, gratuitamente; o Google, mesmo sem tecnologia fluídica, faz o papel do Zero de Rollerball, hoje em dia! :-) Além disso, os artigos são extremamente acessíveis, explicando de forma bem clara o funcionamento dessa Fluídica de primeira geração.

Na época falavam-se, por exemplo, de circuitos fluídicos para controlarem o câmbio automático e a injeção de combustível em automóveis (ao invés da moderna injeção eletrônica que temos hoje), e substitutos fluídicos dos giroscópios dos sistemas de navegação pré-GPS.

Fluídica: Como Ensinaram uma Corrente de Ar a Pensar. Popular Science, junho de 1967

Controle Potência com Fluido. Popular Mechanics, julho de 1967

coanda

Mais tarde, outras aplicações envolviam aviônicos e circuitos de controle de mísseis e aviões militares; a idéia é que no caso de um ataque nuclear, o pulso eletromagnético gerado pelas bombas danificaria qualquer aparelho eletrônico, tornando impossível o vôo de caças aerodinamicamente instáveis. Caças aerodinamicamente instáveis precisam de auxílio de computador o tempo todo durante o vôo; um dos primeiros exemplos famosos foi o Grumman F-14 Tomcat, cujo ângulo das asas e outras superfícies de vôo é controlado por um dos primeiros microprocessadores eletrônicos integrados (desenvolvido secretamente antes do histórico Intel 4004).

Em 1985 a mesma Grumman investia pesadamente em sistemas fluídicos de controle de vôo, e nem tudo ficou só na especulação ou em projetos militares de pesquisa; chegaram a ser produzidos modelos do Honda Accord com esses sistemas de navegação, por exemplo.

Fluídica: Computação sem Eletrônica. Popular Science, fevereiro de 1985

Mas apesar do oba-oba a Fluídica nunca obteve o sucesso previsto, muito provavelmente por causa do avanço rápido da eletrônica. Válvulas eram caras e frágeis, mas com o advento do transistor e, mais tarde, do circuito integrado tornou-se possível o uso de eletrônica em cenários muito mais críticos e extremos, e o chão de fábrica foi um dos primeiros alvos. A velocidade dos circuitos eletrônicos - milhares ou milhões de vezes superior a dos fluídicos - foi outro fator decisivo para a tecnologia ser esquecida ou relegada a nichos muito específicos.

1990s: Microfluídica

A Fluídica clássica não cumpriu todas as promessas, mas nos anos 1990 surgiram vários produtos baseados na sua prima de menor escala, a Microfluídica. A diferença está na escala: circuitos cujos dutos são da ordem de micrômetros (e não milímetros ou centímetros) apresentam comportamentos muito diferentes, porque nessa escala efeitos antes desprezíveis como tensão superficial e fluxo laminar tornam-se importantíssimos. Essa escala menor permite, por exemplo, que construam circuitos fluídicos “digitais”, em que se manipulam não um fluxo contínuo de fluido mas minúsculas gotas individuais.

Uma das tecnologias mais populares que foram muito influenciadas pela microfluídica foram as células de combustível. Células de combustível produzem eletricidade diretamente a partir de oxidante e combustível (oxigênio e hidrogênio, na maioria das vezes), sem a necessidade da tradicional combinação de motor a explosão e gerador elétrico (como nos carros). A microfluídica é usada para controlar o fluxo de oxidante e combustível, tornando essas células muito mais eficientes.

Mas, de longe, a aplicação de microfluidica que mais me interessa são os microarrays de DNA. Microarrays são chips, produzidos por processos microfluídicos, que contém milhares de fragmentos de material genético, organizados em forma de matriz. Quando se deposita material genético nesse chip, ele identifica exatamente quais trechos de material genético - quais genes - estão ativos naquela amostra. Isso permite a criação em larga escala de perfis de expressão genética, ou seja, perfis que mostrem quais genes do DNA estão “funcionando” num determinado momento. Simplesmente saber a seqüência de genes de um organismo (o objetivo do projeto Genoma) não é tudo; é muito mais importante descobrir como esses genes interagem entre si e a dinâmica deles ao longo da vida. Doenças, atividade física e intelectual, e vários outros fatores ativam e desativam a expressão genética em questão de horas, e os microarrays permitem que se tire uma “foto” dos genes em atividade.

Aqui no Vetta Labs trabalhamos há vários anos desenvolvendo software para análise de perfis de expressão genética produzidos por experimentos com microarrays. A maior parte desse esforço é feito em conjunto com a empresa americana Biomind, e desse esforço surgiu também um projeto opensource de ferramentas de bioinformática, o OpenBiomind, cujo principal mantenedor é o amigão Lúcio “Dr. Omni” Coelho.

O Futuro: Nanofluídica

Quando reduzimos ainda mais a escala saímos da microfluídica e entramos em algo ainda mais complexo, a nanofluídica. Agora os “canos” dos circuitos fluídicos são tão pequenos que sua espessura pode ser medida em moléculas dos fluidos que passam por eles (são usados, por exemplo, nanotubos de carbono). Nessa escala a noções como viscosidade e as propriedades elétricas das moléculas envolvidas são completamente diferentes do que se observa em circuitos fluídicos e microfluídicos, produzindo efeitos extremamente interessantes, como a dupla camada elétrica produzida usando nanocapilares.

As pesquisas em nanofluídica despertam muito interesse hoje; os planos são o desenvolvimento, por exemplo, de “laboratórios em um chip”, um circuito nanofluídico e microfluídico capaz de realizar uma série de experimentos bioquímicos de forma autônoma, usando amostras reduzidíssimas de material. Esses laboratórios poderiam ser utilizados em diagnóstico de doenças, monitoramento e análise de ambientes, aplicações de segurança como detecção de armas químicas e explosivos.

A Fluídica não é mera curiosidade histórica ou recurso didático. Como a maioria das tecnologias, as previsões feitas a respeito de como ela seria utilizada se mostraram bem distantes da realidade; ao mesmo tempo, as aplicações reais desenvolvidas acabam se mostrando ainda mais fantásticas e interessantes que os sonhos dos primeiros pesquisadores.

Biotecnologia, Robótica, Teoria da Computação 2 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5.00 out of 5)
Loading ... Loading ...

Google Summer of Code 2009

Aqui no Vetta Labs são desenvolvidos vários projetos da Novamente, e com isso temos bastante contato com o Singularity Institute for Artificial Intelligence (SIAI). Desde o ano passado o SIAI é um participante do Google Summer of Code, um programa que paga bolsas (US$ 4000) para estudantes do mundo todo trabalharem em projetos de código aberto e software livre durante o as férias do verão americano (daí o nome).

Os estudantes são orientados por mentores ligados às  organizações participantes. No GSoC 2008 fui mentor do projeto OpenBiomind-GUI, que desenvolveu uma interface gráfica para um conjunto de ferramentas open source para bioinformática. Outro colega, Lúcio de Souza Coelho, também participou como mentor. Foi uma experiência muito interessante e gratificante.

E agora foram abertas as inscrições para o Google Summer of Code 2009! Estudantes no final da graduação e em pós-graduação podem participar, submetendo propostas baseadas nas idéias sugeridas pela organização, que incluem projetos em inteligência artificial e robótica  (OpenCog), processamento de linguagem natural (Link Grammar e RelEx), bioinformática e outros temas.

As propostas são avaliadas pelos mentores e outros membros do grupo, e as melhores são aceitas no programa. Ano passado houve 70 propostas para 11 vagas. A data limite para submissão de propostas é 3 de Abril.

A página principal do GSoC tem todas as informações necessárias:

http://socghop.appspot.com

A página do SIAI no Google Summer of Code, especificamente, é a seguinte:

http://socghop.appspot.com/org/show/google/gsoc2009/opencog

Biotecnologia, Desenvolvimento, Inteligência Artificial, Linguagem Natural 1 Comentário

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading ... Loading ...

Crise, tecnologia e inovação

Com a urgente necessidade de corte de custos e redução de despesas, a empresa menos atenta e sem visão a médio/longo prazo tende a reduzir seus invstimentos em inovação. É necessário, porém, estar atento às práticas das maiores e melhores empresas do mercado, como mostra recente estudo da Ernst&Young. Segundo pesquisa da consultoria, dentre as mais assertivas empresas (e o que muitas vezes as diferencia), uma das áreas que menos sofre com redução nos investimentos em épocas de crise é justamente o setor de P&D (15%), só ficando atrás das atividades de Gestão de riscos (19%) e Vendas (16%).

Os executivos e empresários brasileiros precisam ficar atentos à esta questão e valorizar o investimento em inovação mais do que nunca, pois a tendência à commoditização de nossos produtos é uma ameaça real. De acordo com pesquisa da Bain & Company, 70% dos executivos tupiniquins têm em mente esta preocupação, bem acima da média mundial, de 58%; apenas 41% do empresariado brasileiro utiliza ferramentas de Inovação Colaborativa, contra 58% dos norte-americanos, o que é um dado preocupante. Tome-se principalmente como exemplo os asiáticos. Em vários países orientais, o investimento em educação e ciência levou-os de uma situação quase feudal na década de 50 a líderes atualmente em vários projetos de tecnologia e pesquisa de ponta. De acordo com o estudo, “Na região da Ásia-Pacífico, concentra-se o maior número de usuários de ´novidades´…Redução de custos é uma preocupação menos importante na Ásia, onde os produtos são baratos em comparação ao resto do mundo e os executivos são bastante focados em inovação”.

Diante destes dados, é preciso que a gestão das empresas no Brasil esteja baseada em novos modelos de cooperação e inovação, nunca perdendo de vista que as empresas com maior sucesso a longo prazo são aquelas que não abrem mão de constante investimento e pesquisa em novos produtos e serviços.

Inovação 0 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (6 votes, average: 5.00 out of 5)
Loading ... Loading ...

« Previous Entries