Aprendizagem de Máquina ao Alcance de Todos – (2)

Voltando sem muitas delongas ao exemplo da primeira parte desse artigo, vamos considerar novamente o nosso banco de dados de pessoas caracterizadas cada uma por um “registro” seguindo o mesmo formato, com campos de peso, altura, idade, sexo, etc. Agora, vamos supor que além dessa caracterização por dados biométricos sabemos que essas pessoas estão classificadas em dois grupos, digamos que com e sem histórico de problemas cardíacos. Em jargão de biologia, as pessoas com histórico cardíaco são “Casos”, as sem são “Controles”.

Em Aprendizagem de Máquina, a chamada Aprendizagem Supervisionada consiste em treinar um “modelo” (uma função ou algoritmo de classificação) a reconhecer casos e controles automaticamente. É o tipo de problema aplicável exatamente a massas de dados com informação de categoria, como a do exemplo acima. Essa massa de dados é chamada de “conjunto de treinamento”, justamente porque sua função é servir como uma coleção de exemplos que são usados para “dizer” ao classificador onde ele está errando e onde ele deve melhorar – daí o “supervisionado” no nome desse tipo de aprendizagem.

Exatamente como um método de classificação pode conseguir resultados melhores ou piores dado um conjunto de exemplos? Bom, existem inumeráveis algoritmos de aprendizagem supervisionada – redes neurais, métodos evolutivos, árvores de decisão, todos eles podem ser usados para classificação. Para fins didáticos, porém, vou focar aqui em um método bem geométrico, as SVMs (do Inglês Support Vector Machines).

Como já disse na Parte 1, cada “campo” do banco de dados descrevendo as coisas sendo classificadas (no exemplo pessoas) é visto como uma dimensão (no sentido espacial da coisa mesmo) em aprendizagem de máquina. Se os registros tiverem só três campos – digamos, peso, altura e idade – temos três dimensões, e as pessoas são “vistas” por um algoritmo de ML como pontos num espaço tridimensional com eixos de idade, peso e altura. Assim Fulano pode ocupar o ponto em 1,80 metros, 75 quilos e 36 anos, enquanto Beltrano está no ponto 1,72m, 60Kg, 28a. Esse é um exemplo não tão difícil de visualizar porque usa um espaço tridimensional como aquele de largura, comprimento e altura onde vivemos, mas na prática os problemas de ML lidam quase sempre com “hiperespaços” multidimensionais. Em problemas de Bioinformática são comuns espaços com milhares de dimensões, por exemplo.

De qualquer forma, voltando às SVMs, o que elas fazem é (supersimplificando a coisa) encontrar uma “hipersuperfície” que divide esse “espaço” do problema em dois lados. Uma divisão boa é aquela que deixa os pontos representando Casos de um lado da superfície e os pontos representando Controles do outro lado. No nosso exemplo das pessoas com e sem problemas cardíacos ocupando um espaço tridimensional, vamos enxergar o espaço 3D como um cubo e supor que a maioria dos casos ocupa a metade do cubo correspondendo a pessoas com mais peso e mais idade, enquanto os controles se concentram nas pessoas mais novas e magras. Um plano cortando o cubo em dois na diagonal, paralelo ao eixo de altura, já dá uma divisão razoável então. Talvez essa divisão razoável deixe muitos pontos ainda nos lados errados, então podemos experimentar outras coisas como inclinar o plano (talvez em relação ao eixo de altura, para fatorar pessoas que são pesadas porque são grandes), ou mesmo experimentar uma superfície que não seja plana, mas sim curva, correndo em uma forma meio ondulada que divida os dois conjuntos de pontos quase perfeitamente. (No caso de SVMs, o tipo de superfície é determinado pela chamada “função de kernel” – que no caso do plano é uma função linear.)

Finalmente, é interessante também computar a superfície de forma a que, além de separar o mais corretamente possível os pontos, ela também mantenha uma certa distância desses pontos, sem “passar raspando” em nenhum deles. Isso tem a ver com o que talvez seja a mais desejada e mais difícil de obter das características de um bom classificador: a capacidade de generalização. Isto é, a capacidade de corretamente classificar elementos novos, desconhecidos, que não estavam no conjunto de treinamento. No caso das SVMs, podemos visualizar que uma superfície correndo muito “rente” pelos pontos limítrofes da, digamos, Categoria Caso, pode erroneamente classificar um monte de pontos como Controle, mesmo eles caindo perto dos pontos de Caso, simplesmente porque a superfície está rente demais e não inclui pontos próximos que provavelmente também são Casos. Em casos assim, podemos “antropomorfizar” o que aconteceu dizendo que o classificador na verdade não aprendeu nada, apenas “decorou” os pontos que foram mostrados a ele…

No fim das contas, todo classificador gerado por aprendizagem supervisionada faz essencialmente a mesma coisa que a SVM – seccionar o espaço do problema em regiões correspondentes a categorias. Só que eles trabalham sob princípios que não são tão obviamente geométricos (e didáticos) como no caso da SVM, daí não vou falar sobre eles aqui. Finalmente, aprendizagem supervisionada não é categorização – coisas como regressão simbólica também caem nessa subdivisão de ML. Mas acho que isso já fugiria um pouquinho do nível “feijão com arroz” implicado pelo título. :)

Inteligência Artificial 1 Comentário

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Aprendizagem de Máquina ao Alcance de Todos – (1)

Volta e meia surge algum artigo aqui no blog falando de aplicações de inteligência artificial e frequentemente usando termos que podem soar meio misteriosos para muitos, como o críptico “aprendizagem de máquina”, às vezes também usado em sua forma original em Inglês, “machine learning”. Penso que talvez esse termo pode ainda evocar na cabeça de muitos uma imagem de coisa scifi incompreensível, então decidi escrever este artigo (em dois “capítulos”) sobre o beabá da aprendizagem de máquina para mostrar que, uma vez explicado, o tal Machine Learning (ou ML) pode até parecer meio prosaico…

A definição vaga e por alto (e não sei se existe uma definição exata e profunda, a propósito :) de ML como um todo é: um método ou algoritmo para descobrir de forma automatizada padrões em uma massa de dados. Acho que essa definição não diz muito coisa sem exemplos, então vamos dar alguns nomes a alguns bois.

Vamos supor que você tenha um banco de dados com características de várias pessoas. As características podem ser qualquer coisa (digamos, peso, altura, idade, etc), desde que possam ser comparadas de forma quantitativa ou lógica. Esse conjunto de valores de características descrevendo cada pessoa é chamado vetor de características, em jargão de ML.

Já que o valor da altura de uma pessoa é comparável com o valor da altura de outra, o mesmo acontecendo com peso, idade e demais dimensões (=outro jargão de ML – bem, na verdade de ciências exatas em geral, nesse caso :) do vetor de características, então acaba que dois vetores inteiros podem ser comparados um com o outro, levando em conta todas as suas dimensões ao mesmo tempo. É possível criar o que chamamos de medida de similaridade, que é simplesmente uma conta envolvendo todas as dimensões de dois vetores que no final solta um número – quanto mais alto esse valor, mais similares são esses vetores.

De posse dessa medida, já é possivel fazer coisas divertidas em ML – por exemplo juntar as pessoas parecidas umas com as outras, dividindo o conjunto original em vários subconjuntos de pessoas parecidas. Esse tipo de processo é o chamado clustering – ou aglomeração, traduzindo – e é a base da vertente de ML chamada de aprendizado não-supervisionado.

A parte do “aprendizado” nesse nome vem do fato de que antes os elementos do conjunto de dados sendo analisado eram completamente amorfos, não-estruturados, “farinha do mesmo saco” por assim dizer; após o clustering, porém, temos grupos separados nos quais veremos padrões. No exemplo do clustering de pessoas, talvez se forme um aglomerado de pessoas baixas e gordas, outro de pessoas altas, um de pessoas velhas de peso médio, e por aí vai.

Já a parte do “não supervisionado” vem do fato de que não é preciso dizer ao algoritmo de clustering sendo usado (existe uma infinidade deles) se os resultados que ele está produzindo são bons ou ruins, ele mesmo toma suas próprias “decisões” de como fazer melhor a aglomeração. Aliás, é difícil dizer quantitativamente e de forma geral, irrestrita, se um clustering é bom ou ruim, no sentido de que é algo um tanto subjetivo – existe uma multiplicidade de métricas de qualidade de clustering, com aplicações apropriadas caindo em vários casos diferentes.

Existe também, é claro, a aprendizagem supervisionada, o outro grande campo da Aprendizagem de Máquina. Mas isso é assunto para a Parte 2 deste artigo…

Data Mining, Inteligência Artificial 0 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Sobre futebol e robôs

Imagination will often carry us to worlds that never were. But without it we go nowhere.” Carl Sagan

Este é o primeiro de uma série de posts descrevendo uma paixão antiga minha, fruto de um trabalho de pesquisa iniciado há mais de 12 anos: o futebol de robôs. Apesar (ou justamente por isso) de ser um perna-de-pau de primeira na vida real, me envolvi nesta que é, para a maior parte dos mortais, uma modalidade esportiva (?) no mínimo curiosa.

O futebol de robôs surgiu na primeira metade dos anos 90 como uma forma divertida de desenvolver as habilidades de robôs autônomos atuando em equipe para atingir uma determinada meta. Para os que acham que é uma mera brincadeira, há diversos exemplos sérios e concretos de como a tecnologia desenvolvida pode ser útil para a humanidade:

  • tarefas repetitivas mas não facilmente automatizáveis, como limpar a sua casa:

Rosie the robot

  • lavar as louças:

Ops, como eu ia dizendo, diversos exemplos sérios e concretos:

  • tarefas em ambientes inóspitos ou perigosos, como dar manutenção em gasodutos, implantar bases submarinas para extração de petróleo ou reparar linhas de transmissão de alta-tensão;

  • situações extremas onde é necessário tomadas muito rápidas de decisão, como a automação do controle de veículos na iminência de um acidente;

  • e qualquer outra situação onde o ser humano não possa ou não deva agir, por risco ou por incapacidade, e que haja necessidade de tomada de decisão rápida com base em variáveis do ambiente e em eventual comunicação com outros agentes (planejamento em equipe).

A menção ao futebol de robôs geralmente traz ao imaginário leigo imagens de robôs humanóides driblando, fazendo embaixadinhas e comemorando os gols. Apesar disto ser o objetivo final destes projetos, algo assim só deverá ser alcançado, na mais otimista das hipóteses, daqui a 20 anos. Hoje até já temos robôs humanóides, mas uma partida típica nesta categoria ainda se parece mais com um jogo de idosos portadores de esclerose múltipla, ou outra disfunção motora:

Portanto, para evitar frustrações, vamos assumir que me refiro especificamente à categoria das “caixinhas com rodas”: pequenos robôs capazes de “empurrar” a bola até o gol, desviando dos adversários quando possível:

Sim, eu sei que tem muito menos glamour do que os tais humanóides esclerosados acima, mas como sempre dizia meu grande orientador na graduação, Prof. Mário Campos, KISS (Keep It Simple, Stupid).

Nesta categoria, de pequenas caixinhas com rodas, os dois campeonatos mais conhecidos são a copa RoboCup e a copa Mirosot. Foi nessa última que nós participamos nos idos de 1998 e 1999, inclusive conquistando um honroso título de campeão sul-americano em 1999 (ok, os outros times não eram lá muito fortes também, mas ninguém precisa ficar sabendo disso).

Então vamos começar a falar do que interessa: a tecnologia. O projeto de um time de futebol de robôs envolve diversos estágios multi-disciplinares:

  • projeto mecânico;

  • projeto elétrico e eletrônico;

  • componentes de software para suporte (sensoriamento e transmissão de comandos);

  • componentes de software para estratégia e controle.

Tentarei dar uma breve visão dos últimos dois itens, especialmente nos componentes de visão (sensoriamento), controle e estratégia. São estes três os itens que mais me interessam, e que, suponho, sejam de maior interesse dos leitores deste blog. Portanto, este artigo será seguido de três outros, cada um descrevendo uma dessas três áreas.

Espero também que os leitores mais técnicos me perdoem pelo estilo literário menos científico. Mantendo a linha editorial do blog, pretendo escrever da forma mais simples possível para o leigo. Sempre que possível, deixarei referências para quem quiser se aprofundar no assunto.

Renato Mangini é arquiteto de software sênior. Foi sócio fundador da Vetta Technologies e da Vetta Labs e hoje ele trabalha em sua startup de tecnologia (nome e produto ainda não divulgados). Sua formação acadêmica inclui um bacharelado em Ciência da Computação e um mestrado inacabado, ambos pela UFMG, e cursa agora um MBA no Ibmec.

Inteligência Artificial, Robótica 3 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Analisando Dados “Misteriosos”

Naquele estranho (e meio nojento – tudo bem, muito nojento) filme de 1986 do Cronenberg, “A Mosca”, em algum momento a repórter interpretada pela Geena Davis pergunta ao cientista vivido pelo Jeff Goldblum como ele conseguiu construir um teleportador do nada no galpão dele. O cientista responde que na verdade ele não fez aquilo sozinho e nem do nada, ele contratava equipes de cientistas ao longo do globo pedindo coisas esquisitas do tipo “quero um analisador molecular obedecendo tais e tais especificações”, e aí uns meses depois lá chegava o analisador molecular. As equipes independentes de cientistas que resolviam esses sub-problemas e criavam esses componentes só enxergavam o que precisavam enxergar, não tinham noção de onde a solução que eles desenvolveram seria aplicada, e principalmente não tinham a menor idéia do projeto do teleportador que o personagem principal estava desenvolvendo.

No mundo real, longe das referências nerd envolvendo obras de ficção científica, devo dizer que nós aqui do Vetta Labs às vezes nos sentimos um pouco como os cientistas do filme que construíram o analisador molecular sabe-se lá para ser usado em que. Como diz o ditado, “o segredo é a alma do negócio”, e isso é particularmente aplicável quando o negócio envolve a análise de informações de outras empresas que querem ao mesmo tempo terceirizar serviços de mineração de dados e preservar o sigilo de seus contratos e seus clientes.

Pois bem, uns meses atrás, em mais um daqueles exemplos das maravilhas do outsourcing de pesquisa, fomos contratatos pela Novamente para analisar os dados de um terceiro cliente-cujo-nome-não-será-revelado, que como dá para suspeitar pela omissão do nome era justamente desses que preferem manter seus dados e planos envoltos em mistério. Recebemos uma base de dados composta por dezenas de milhares de tuplas, cada uma formada por um punhado de valores correspondendo a um pequeno conjunto de variáveis. O problema que nos foi colocado foi tentar prever uma das variáveis em especial com base nos valores de todas as outras, com uma taxa de acerto superior a um certo limite mínimo aceitável. A variável a ser predita era, para todos os fins práticos, lógica, do tipo “sim” ou “não”. As demais variáveis eram bem variadas, algumas claramente numéricas, outras também lógicas, e finalmente umas que talvez fossem numéricas ou talvez fossem simbólicas. O caso é que não tínhamos nem muita certeza do tipo de algumas das variáveis porque não nos foi dada qualquer informação sobre as mesmas. Os nomes de algumas variáveis até davam pistas do que elas deviam ser (mas não exatamente em que unidades elas estavam sendo medidas), porém outras variáveis tinham nomes herméticos que não ajudavam muito do ponto de vista da, digamos, semântica dos dados.

Assim, inventando uma base de dados parecida para fins de exemplificação, vamos supor que temos um conjunto aparentemente desprovido de sentido de quatro variáveis chamadas TUTU, PEDRA, CAVALO e CHUVA, e com base nelas temos de prever se o valor de uma quinta variável RESPOSTA é “sim” ou “não”. Existem dezenas de milhares de combinações-exemplo de valores de TUTU, PEDRA, CAVALO e CHUVA com valores conhecidos de RESPOSTA, e com base nelas devemos achar regras engraçadas como, digamos, “Se TUTU vale mais que 0.65, PEDRA tem valor ‘mole’ ou ‘redonda’, CAVALO pode ter qualquer valor e CHUVA vale ‘forte’, então RESPOSTA é ‘sim’, caso contrário ‘não’”, regras essas capazes de prever RESPOSTA corretamente com uma acurácia maior que um mínimo estipulado pelo cliente.

Numa situação dessas, o bom minerador de dados deve se ater àquela máxima que acredita-se o filósofo-patrono das ciências exatas, o Pitágoras, soltou uns 25 séculos atrás: “Tudo são números”. É verdade que, como já exemplificamos várias vezes aqui no blog, quando mais informação você tem sobre uma base de dados, melhor, e às vezes é inclusive interessante usar outras bases de dados direta ou indiretamente relacionadas para “amplificar” a base objeto do seu estudo. Porém, nas situações em que não podemos (ou não devemos :) saber mais a respeito dos dados, o puro uso da lógica e da matemática podem ainda assim ser surpreendentemente efetivos.

Foi assim no caso dessa base de dados “misteriosa”. Devo dizer que criar uma abordagem capaz de passar do limite de acurácia mínimo pedido pelo cliente foi bem… desafiador, talvez inclusive devido ao desconhecimento da semântica dos dados. Mas, no final, chegamos a uma método bem robusto capaz de resolver até nossas dúvidas sobre o tipo exato de algumas variáveis. Nessa metodologia (da qual falarei apenas por alto para não “falar demais” :), desenvolvemos uma maneira de medir a “capacidade de predição” de uma variável quando assumia um dado valor (não importando se esse valor é um número, uma string, lógico, etc), e também para qual resposta (“sim” ou “não”) tendia esse dado valor de dada variável. No final, ao contrário do exemplo acima, nossas regras verificavam não os valores diretos das variáveis, mas sim a capacidade de predição dos valores que elas estavam assumindo na tupla em questão, e com base nisso decidiam se a tupla apontava para “sim” ou um “não”.

Conseguimos com essa abordagem ultrapassar (por pouco) a acurácia mínima pedida pelo cliente, inclusive em um segundo conjunto de tuplas completamente desconhecidas, seguindo o mesmo formato de dados, que o cliente nos forneceu para uma validação adicional. É possível que agora formalizemos um serviço de análise e desenvolvimento de mais longo prazo – e quem sabe até com um véu de mistério menos espesso. De qualquer forma, a lição que ficou foi: os números são seus amigos, não se desespere se eles são a única coisa ajudando você em seu trabalho de análise de dados. ;-)

Data Mining, Inovação, Inteligência Artificial 0 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)

Sobre Navalha de Occam e Mininum Description Length (MDL)

Quem assistiu o filme Contato, certamente deve se lembrar da cena na qual a protagonista Eleanor Arroway interpretada por Jodi Foster é inquirida sobre a viagem que ela afirma ter feito utilizando o tal equipamento alienígena construído com recursos terrestres. Durante o interrogatório, Michael Kitz personagem vivido por James Woods pergunta a Eleanor se ela conhecia a Navalha de Occam. Já sem muitos argumentos a heroína se cala e a hipótese que ela não tenha feito a tal viagem é escolhida pelos inquiridores. Mas afinal, o que é essa tal navalha?

William Ockham foi um cara que viveu no século XIV e a ele é atribuído o tal princípio com a peculiar denominação “Navalha de Occam”. Também chamada de “Lei da parcimônia” a Navalha de Occam diz que se você tiver duas ou mais explicações para um determinado fenômeno é melhor você escolher a mais simples, contanto que ela explique o fenômeno tão bem quanto as outras. Era isso que Michael Kitz queria dizer ao perguntar a Eleanor se ela conhecia esse princípio. A pergunta podia ser feito da seguinte forma: tenho duas histórias aqui, uma simples e outra toda complicada e até um pouco absurda. Ambas explicam o que ocorreu satisfatóriamente. O que você, como cientista, escolheria Sra. Arroway?

Vamos a um segundo exemplo. Imagine a seguinte situação: você tem n pontos e quer descobrir qual polinômio se ajusta melhor a esses dados. Bom, sabemos que sempre existe um polinômio de grau igual a (n-1) que se ajustará perfeitamente aos n pontos. Mas, essa é a melhor escolha? A resposta é: depende. Veja a figura abaixo. Vemos claramente que um polinômio com grau 3 já oferece um bom ajuste aos dados. Usar um polinômio de grau maior do que 3 é trabalho demais pra pouca melhora no ajuste. Isso é chamado de Overfitting.

Mininum Description Length (MDL) é um método de inferência indutiva que implementa a mesma filosofia presente na Navalha de Occam. Esse método fornece soluções genéricas para o chamado Problema de Seleção de Modelo. Que é o caso dos pontos mencionado anteriormente. Uso uma reta ou uma parábola para descrever meus dados? E o legal mesmo é o insight por trás desse método. Para ele, aprender é encontrar regularidade nos dados. Bom até aí tudo bem. Mas ora, dados regulares têm um coeficiente de compressão alto, certo? Então quanto mais conseguirmos comprimir os dados mais aprenderemos sobre eles! Falando mais formalmente, se tivermos um conjunto de hipóteses H sobre um conjunto de dados D, então o que estamos procurando são hipóteses (uma ou mais) em H que forneçam a maior compressão de D.

Essa é a idéia geral do assunto e apesar de ser uma teoria bem legal é também um bocado cabeluda. Para aqueles que quiserem saber mais, há um material muito bom sobre MDL em Peter Grünwald.

Inteligência Artificial, Teoria da Informação 1 Comentário

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Otimização inspirada em formigas

O campo de inteligência artificial é cheio de técnicas inspiradas na natureza. Os dois exemplos mais famosos são redes neuronais, que emulam grupos de neurônios e suas conexões, e algoritmos genéticos, que tentam resolver um problema codificando a solução nos genomas de uma população artificial, sujeita à sobrevivência e recombinação dos mais fortes. Talvez falemos mais dessas técnicas por aqui, se houver interesse.

Hoje eu vou falar de uma outra técnica, ou família de técnicas: Ant Colony Optimization (ACO), ou otimização de colônias de formigas. ACO foi inventada por Marco Dorigo em 1992, e se baseia na capacidade de grupos de formigas de apresentar comportamento coletivo muito mais inteligente que o que uma formiga sozinha seria capaz de fazer. Por exemplo, formigas podem achar o melhor caminho entre o formigueiro e uma fonte de comida. Se algum obstáculo mudar o terreno, elas se adaptam rapidamente e encontram um novo caminho, como você pode ver na figura abaixo.

Adaptando o caminho

Isso acontece porque as formigas se “comunicam” de forma indireta, através do ambiente, usando feromônios. As formigas deixam uma trilha de feromônio pelo caminho que seguem. Quanto menor o caminho, mais forte o feromônio. Outras formigas tendem a seguir o feromônio mais forte. Caminhos alternativos, e piores, são abandonados porque o feromônio mais fraco depositado ali evapora com o tempo. Esse é o princípio básico de Ant Colony Optimization. O Dorigo usou essa capacidade para resolver o clássico problema do Caixeiro Viajante, com excelentes resultados.

Isso foi em 92. Hoje, o trabalho do Dorigo e de outros pesquisadores deu origem a todo um subcampo de pesquisa em computação, chamado de Inteligência de Enxame, que se baseia na premissa de usar agentes muito simples, mas que colaboram entre si, para atingir objetivos complexos e de forma robusta, ou seja, tolerante a falhas e mudanças no ambiente. Um exemplo interessante, também baseado em formigas, é clustering. As formigas sabem naturalmente agrupar objetos por grupos e fazem isso para limpar o formigueiro, separando comida de lixo.

Antes do agrupamentoDepois do agrupamento

A combinação de robustez e inteligência coletiva é muito interessante pro pessoal que trabalha com robótica. Agentes simples são baratos, se você tem um grupo de robôs que pode se adaptar à perda de um deles, por falha mecânica, falta de energia ou qualquer outro motivo, diminuem as chances de seu enorme investimento em robôs ir por água abaixo por um detalhe bobo.

O casamento de inteligência de enxame com robótica atende pelo nome de Swarm Robotics. Os robozinhos, sempre trabalhando em equipe, realmente têm um comportamento coletivo interessante. Por exemplo, eles aprendem que podem se conectar, formando um objeto maior, para passar por um obstáculo intransponível para um único robô:

Saltando um obstáculo

Eles também conseguem transportar grandes objetos, navegar um terreno em formação e otras cositas más. Aqui tem um bando de videos bacanas.

Inteligência Artificial, Robótica 1 Comentário

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)

O que é inteligência?

Como funciona o cérebro humano? A resposta desta pergunta solucionaria um dos maiores mistérios sobre a natureza do homem. Mas, como ainda não temos esta resposta, buscamos, através de diversas teorias, explicar como nós somos capazes de resolver problemas, memorizar enormes quantidades de dados, reconhecer padrões sensoriais (imagens, sons, cheiros, etc.) com grande rapidez, além de realizar diversas outras tarefas que não sabemos ao certo como são tratadas no nosso cérebro.

Uma das mais importantes teorias sobre o cérebro, mais especificamente sobre o córtex cerebral, foi cunhada pelo neurocientista Vernon Mountcastle e se refere às colunas corticais e aos padrões cerebrais. O córtex cerebral é a camada mais externa, constituída de tecido nervoso cinzento, que encobre a parte interna do cérebro (tecido nervoso branco) de todos os mamíferos. Nos humanos, o córtex possui seis camadas, cada uma da espessura uma carta de baralho. Acredita-se que quanto mais camadas, mais ‘inteligente’ a espécie – os golfinhos possuem apenas três camadas. Não entrarei em detalhes sobre a parte da teoria que fala sobre as colunas corticais, mas de uma forma geral elas mapeiam o córtex em uma arquitetura de colunas conectadas de forma hierárquica e dispostas nas seis camadas que constituem o córtex cerebral. Essa dica não ajuda muito a entender como as colunas funcionam (quem quiser se aventurar busque por: An Organizing Principle for Cerebral Function…” 1978, por Vernon Mountcastle), mas será importante para compreender como os padrões cerebrais são transformados em memórias e vice-versa.

Mas o que são estes tais padrões cerebrais? Você já deve ter ouvido falar das sinapses e dos pulsos elétricos (provavelmente nas aulas de biologia que você assitiu no segundo grau), utilizados pelas células cerebrais (neurônios), para se ‘comunicarem’ entre si. Não se lembra? Tudo bem. Imagine que o cérebro é formado por uma malha de bilhões de fios metálicos que trafegam freneticamente energia elétrica de um ponto a outro do cérebro. Hmm, mas e os padrões? Bom, os padrões podem ser compreendidos como sequências de pulsos elétricos, que passam a ter um significado se levado em consideração o intervalo de tempo que estes pulsos chegam ao cérebro. Para ficar mais interessante, pense em todos os seus órgãos sensoriais (olhos, ouvidos, pele, etc.) como conversores de padrões. Eles capturam, no ambiente externo, dados brutos de diversos tipos, fazem o devido tratamento e entregam os resultados ao cérebro no formato destes pulsos elétricos temporalmente ordenados. Dessa forma, o cérebro “apenas” tem que se preocupar em receber os padrões, reconhecê-los, catalogá-los, armazená-los e prover alguma forma de serem recuperados futuramente. É importante ressaltar que qualquer parte do córtex é capaz de tratar padrões provenientes de quaisquer fontes sensoriais.

Ei, espera aí. Qualquer parte do córtex é capaz de tratar padrões de qualquer origem? Mas como ficam aquelas teorias que sempre ouvimos falar sobre o cérebro ter uma área responsável por reconhecer padrões visuais, outra para lidar com a língua falada, outra para realizar raciocício matemático, etc. ? Mountcastle acredita que o córtex não é constituído de forma modular. Segundo ele, qualquer área do córtex é capaz de lidar com informações de qualquer natureza. Ah! É por isso que eu já vi vários casos de pessoas acidentadas perderem boa parte do cérebro e depois de um tempo de recuperação voltaram a viver suas vidas normalmente (ou quase). Sim, é muito provável que o cérebro funcione desta forma e, levando isto em consideração, podemos dizer que o córtex trabalha com um “algoritmo genérico de manipulação de padrões”. Ou seja, qualquer padrão que chegue ao cérebro ou trafegue por ele é tratado da mesma forma, sem essa de módulo que faz isso pra cá e módulo que faz aquilo pra lá.

O modelo forjado por esta teoria permitiu o avanço de diversas pesquisas sobre a organização e o processamento dos padrões cerebrais. Um exemplo disso: o criador do mundialmente conhecido Palm Pilot e entusiasta dos estudos sobre o córtex cerebral, Jeff Hawkins, que escreveu um livro em 2005 chamado OnIntelligence. Neste livro ele reforça com diversos outras suposições, relatos e experimentos as teorias de Mountcastle e ainda faz especulações sobre vários outros assuntos ainda não explicados sobre o funcionamento do cérebro. É importante ressaltar o autor de OnIntelligence é um computeiro e um sujeito bastante prático. Ele deixa claro que o seu objetivo, no final das contas, é converter as teorias criadas por neurocientistas, biólogos, psicólogos, filósofos e outros estudiosos (incluindo ele próprio) num modelo computacional aplicável à construção de máquinas inteligentes. Mas, o que chama atenção em seu livro é a forma com que ele aborda os principais fundamentos das teorias sobre o córtex cerebral, além de explicá-las de forma prática. De uma forma sintética, as principais responsabilidades do córtex, apresentadas por Hawkins, são:

  • Armazenamento sequencial de padrões: Quando o cérebro precisa armazenar alguma informação, os padrões que chegam ao córtex são armazenados de forma sequencial. Isso significa que o cérebro cria elos de comunicação entre os padrões de entrada, constituindo a memória a partir de um encadeamento de padrões. Como o tempo é levado em consideração durante este sequenciamento, as cadeias geradas também possuem informações temporais, que indicam o momento de chegada e/ou ativação de cada padrão. A ativação se refere ao acionamento de um padrão já armazenado no córtex, que também pode compor uma nova memória, combinando-se com outros novos padrões.
  • Capacidade de invocar padrões auto-associativos: Ao tentar se lembrar de algum fato, nosso cérebro começa a busca pelo padrão que inicializa a cadeia referente à memória que explica tal fato. Depois que este padrão foi recuperado, ele invoca o padrão consequente através do elo criado entre os dois. Este processo se repete até que toda a cadeia tenha sido recuperada e o fato relembrado. Por isso você consegue se lembrar do alfabeto de A a Z com facilidade, mas não consegue de Z a A, pois você não foi ‘treinado’ e não possui os padrões sequenciais necessários para se lembrar do alfabeto de trás p/ frente. É claro, que se você fizer um treinamento – pensando no córtex, este treinamento seria o armazenamento de padrões temporais que representam as letras de Z a A – semelhante ao que você fez para se lembrar de A a Z, você conseguirá facilmente realizar esta tarefa.
  • Armazenamento de padrões num formato invariante: Imagine que você está num parque brincando com uma criança. Você tem uma bola em suas mãos. A criança pede a bola e você a joga. Então a criança repete o seu gesto e joga a bola para você. Você a pega e continua a brincadeira. Todo o mecanismo necessário para realizar as ações que você e a criança executaram é tratado de forma ‘inconsciente’. Você não se preocupa com a velocidade da bola, as forças que atuam sobre ela, o seu peso, etc. Simplesmente a joga e depois a pega. Isto porque existe uma invariante armazenada no seu cérebro que representa ‘pegar algo’ e ‘jogar algo’. Uma invariante nada mais é do que um conjunto de padrões genéricos, que serve como modelo para o processamento de padrões mais específicos. Não existe, de forma detalhada, uma teoria que explique como são formadas as invariantes mas, acredita-se que as invariantes são as responsáveis por conseguirmos lidar com uma variedade enorme de estímulos durante o dia, sem ficar a todo momento se perguntando “o que é aquilo?” ou “como isto funciona?”.
  • Armazenamento padrões em hierarquia: Como já foi dito anteriormente, as colunas corticais são organizadas hierarquicamente. Os padrões mais genéricos e invariantes ficam no alto desta hierarquia. Padrões mais específicos ficam mais abaixo nesta hierarquia. Quando o estímulo vem dos órgãos sensoriais, os padrões são ativados num fluxo de baixo para cima nesta hierarquia de colunas. Mas quando imaginamos alguma coisa ou tentamos nos lembrar de um fato, os padrões são ativados de cima para baixo, das invariantes para os padrões específicos. Esta organização permite o reaproveitamento de padrões por diversos fragmentos de memória, evitando a replicação desnecessária e formando uma malha que facilita a recuperação posterior de informações.
  • Recuperação da memória auto-associativa: Basicamente, a recuperação de memórias funciona assim. Temos diversos padrões sequenciais armazenados no córtex. Você então passa a ele uma seqüência de padrões que representa uma caneta. Então o cérebro te devolve uma seqüência de padrões que representa a caneta e por fim você entende que é uma caneta. Parece meio estúpido a princípio, mas o mecanismo de recuperação de informação no córtex é algo extremamente poderoso. Por exemplo, se você passa, ao invés dos padrões da caneta inteira, padrões que apenas representam a ponta da caneta, ou a caneta de cabeça p/ baixo, ou apenas metade da caneta ou uma caneta deformada pelo fogo de um isqueiro ou… A resposta será a sequência completa de padrões que representam a caneta e você entenderá que é uma caneta. O nosso cérebro completa as informações com diversos padrões, realiza buscas nas invariantes, faz conexões associativas com outras cadeias de padrões e te devolve a resposta de maneira completa, desde que ela já esteja previamente armazenada. Estar previamente armazenada exige que seu cérebro já tenha sido exposto àqueles padrões.
  • Antecipação dos fatos: O cérebro prevê o futuro o tempo todo, mas não é como a mãe Diná que ‘enxerga um futuro distante’. As conseqüências de todas as nossas ações a curto prazo são antecipadas pelo nosso cérebro. Quando chegamos em casa depois do trabalho e giramos a maçaneta da porta, o cérebro já antecipa o quanto de força será necessário aplicar sobre a maçaneta para girá-la e empurrar a porta. Se as forças aplicadas abrirem a porta como o de costume, a antecipação é confirmada e o cérebro continua seu papel de ‘vidente a curto prazo’. Caso alguém tenha mexido na porta e a força aplicada não seja o suficiente para abrí-la ou enquanto você a empurra para trás ela fizer um rangido que antes não fazia, haverá uma violação na previsão e o cérebro tentará buscar padrões que expliquem o porquê disso. Logo, você pode considerar todo e qualquer tipo de aprendizado como um treinamento que construirá padrões a serem utilizados para antecipar fatos.

Se você sempre imaginou o cérebro como um processador utilizado em computadores, você pode estar se perguntando: Mas é só isso? Nosso cérebro somente lida com memórias em formato de padrões? Ele apenas faz o armazenamento e a recuperação de padrões? Nada de cálculos e processamentos complexos assim como os processadores fazem? Nada disso. Quando esticamos os braços para segurar uma bola jogada para nós, nosso cérebro não calcula a trajetória da bola, muito menos integra as forças para realizar a cinemática inversa, ele simplesmente consulta a memória e traz a resposta. Isso mesmo. O cérebro sempre consulta as respostas dos problemas que queremos resolver. Por isso temos que aprender técnicas para lidar com problemas complexos. Usamos estas técnicas para organizar as variáveis do problema na memória, recuperar os padrões necessários para reconhecer estas variáveis através de associações e, por fim, alcançar a solução (que também será armazenada). Problemas desconhecidos são resolvidos através de analogias a problemas conhecidos já armazenados em nossa memória.

Bom, agora que você já conhece um pouco sobre as teorias que são utilizadas para explicar o funcionamento do nosso cérebro, podemos definir o que é inteligência de uma forma bem simples. Basicamente, inteligência é a capacidade de antecipar as coisas. Os testes de QI exploram justamente esta capacidade. Portanto, segundo esta teoria, é possível que o cérebro seja treinado para se tornar inteligente (inclusive para tirar notas altas em testes de QI). Quanto mais invariantes e padrões mais genéricos para a resolução de problemas diversos, mais eficiente o cérebro será na antecipação de situações desconhecidas ou consideradas complicadas para a maioria das pessoas. Esta é apenas uma definição sintética de inteligência, baseada nas teorias de Mountcastle e Hawkins. Se você se interessou pelo assunto, vale a pena ler os trabalhos destes dois pesquisadores. Lembrando que Hawkins é um cara da computação e seu trabalho é uma releitura, fortemente direcionada à sua área, das teorias de Mountcastle.

Curiosidade: Os transistores que compõem um processador são muito mais rápidos que os neurônios. Enquanto os neurônios trafegam informações na ordem de milisegundos, transistores gastam apenas nanosegundos. Mas por que os processadores ainda não superaram o cérebro humano na resolução de problemas comuns para o cérebro, como por exemplo o reconhecimento de imagens. Ainda tomando como base as teorias descritas neste artigo, o cérebro apenas consulta a resposta na memória, não realiza os cálculos complexos que são efetuados pelos softwares.

Inteligência Artificial, Memória, Processamento de Sinais 5 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Post-its eletrônicos usando… post-its!

Existem trocentas aplicações que tentam criar post-its virtuais no desktop do seu computador. Nunca vi uma que funcionasse direito. Um pessoal do MIT resolveu que a melhor maneira de criar post-its eletrônicos é usando… post-its de papel! O projeto Quickies usa canetas digitais, RFID e inteligência artificial para transformar post-its de papel em arquivos digitais, com busca, tags, e outras funcionalidades bacanas, tipo reconhecer quando uma nota é sobre um compromisso e mandar uma mensagem por email ou SMS para lembrá-lo na hora certa. Muito bacana!

Inovação, Inteligência Artificial 0 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Fusão de Dados e Longevidade

Certos fenômenos que muito interessam atualmente a Biologia têm causas difíceis de serem identificadas, e muito debate e hipóteses a respeito das mesmas. Um desses fenômenos é o aumento de longevidade associado com restrição calórica: é um fato bem conhecido há muitos anos que animais de várias espécies recebendo uma dieta mais pobre em calorias têm tendência a viver muito mais que outros com dieta normal. Dessa forma, há um grande interesse da Biologia, da Medicina e também (como não poderia deixar de ser) da indústria farmacêutica na causa ou causas desse fenômeno. Uma vez que as mesmas sejam identificadas, no melhor dos mundos talvez um “santo graal” já imaginado há um bom tempo seja alcançado: a produção de uma droga simulando os efeitos da restrição calórica – permitindo a uma pessoa ter uma dieta normal e ainda assim viver bem além da expectativa de vida atual. Seria algo que lembraria distantemente o lendário “elixir da vida eterna” – embora “elixir da vida longa” seja um nome mais apropriado, ainda que menos bombástico, nesse caso. :)

Uma das pesquisas realizada pelo Vetta Labs em parceria com a Biomind, foi aceita recentemente para publicação no renomado periódico científico Rejuvenation Research – talvez o mais importante da atualidade em matéria de pesquisa de longevidade – que de fato se ocupa do problema das causas dos efeitos de extensão de vida obtidos pela restrição calórica. Os resultados biológicos que conseguimos com essa pesquisa foram bastante interessantes, mas acho melhor deixar nosso biológo, o Maurício, escrever a respeito dessa parte e da restrição calórica em geral. Afinal, sou apenas um pobre computeiro que só tem uma vaga idéia do que são coisas como a “hipótese da hormesis”. :) Assim, vou me concentrar na nossa abordagem computacional para o estudo das bases de dados relacionadas com restrição calórica, abordagem essa que, modéstia à parte, foi bastante inovadora.

Conforme já mencionei, atualmente existem várias hipóteses concorrentes para explicar qual é o mecanismo central por trás da longevidade por restrição calórica. Ao mesmo tempo, são feitos vários experimentos com enfoques diferentes para se medir ou observar um ou outro aspecto da restrição calórica, e talvez testar um ou outro aspecto das várias teorias para a restrição calórica. Essa abordagem reducionista, porém, ao mesmo tempo que é uma força pode ser uma fraqueza: ao focar em detalhes do problema da restrição calórica, pode ficar bem difícil enxergar a “visão panorâmica” contendo os princípios universais que dão a solução definitiva para esse problema.

Assim, nossa abordagem foi um tanto quanto na contramão do que é feito – em vez de estudarmos uma ou outra base de dados isolada referente a um experimento preocupado com um ou outro aspecto da restrição calórica, integramos bases de dados produzidas por diversos experimentos diferentes – todos eles relacionados a restrição calórica – para daí tirarmos nossas conclusões.

Mais especificamente, lidamos com bases de dados de expressão genética em camundongos. Um mapa de expressão gênica, como o nome sugere, mostra o nível de atividade de um grande número de genes em um dado indivíduo. No caso das bases de dados utilizadas, alguns indivíduos haviam sido submetidos a restrição calórica, enquanto outros era os “controles”, recebendo uma dieta normal. Assim, explicando de um jeito “numérico”, cada base de dados dessas pode ser imaginada como uma planilha (ou matriz) onde as linhas estão associadas aos genes (tipicamente, milhares deles), as colunas estão associadas aos indivíduos (em geral poucos – frequentemente bases de dados de expressão gênica têm algo entre apenas dez e vinte indivíduos), e os números nas células da matriz dizem o quanto o gene X da linha estava expresso no indivíduo Y da coluna. Cada coluna tem ainda um rótulo indicando se o indivíduo correspondente é caso (sofreu restrição calórica) ou controle. As matrizes (bases de dados) que utilizamos foram feita a partir de condições experimentais diferentes, mas no fundo todas comparavam indivíduos com restrição calórica com controles: por exemplo as linhagens de camudongos usadas em uma dada matriz eram diferentes das usadas nas outras; em uma das matrizes, os indivíduos com restrição calórica incluíam camundongos velhos e jovens, enquanto que nas outras a idade era uma variável controlada; e assim por diante.

De novo explicando numericamente, o que nós fizemos foi fundir essas matrizes, e analisar a meta-base de dados daí resultante. Essa “fusão de dados” é bem trivial no caso das colunas – basta simplesmente incorporar todas as colunas de indivíduos de todas as matrizes na mesma matriz fundida. No caso das linhas, porém – isto é, na hora de fundir os genes vindos de base de dados diferentes – fazer a fusão de uma maneira que faça sentido biológica e numericamente está longe de ser elementar.

Uma das reações que a maioria das pessoas tem ao se deparar com um problema desses é pensar em escalar ou normalizar a expressão de um gene em cada base de dados individual, e então fundir as versões normalizadas, e não as contendo os números originais. Dando um exemplo disso usando um tipo de normalização bem simples, imagine que a expressão do gene X varie de 100 a 1000 unidades entre os indivíduos da matriz A, enquanto que nos indivíduos da matriz B varia de 8 a 80. Fazendo uma normalização linear, podemos então dizer que 100 unidades no dataset A mapeia para 0.0 em sua versão normalizada, e 1000 unidades mapeiam para 1.0, e escalamos todos os outros valores para o intervalo [0,1]. Fazendo a mesma coisa com a base de dados B (usando 8 como zero e 80 como 1.0 desta vez), no final temos duas matrizes onde todos os valores de expressão genética caem no intervalo [0,1], e assim a fusão das duas bases parece ser – numericamente ao menos – compatível.

O problema, com alguns já devem ter visto pelos próprios números propositalmente discrepantes usados no exemplo, é que biologicamente isso faz muito pouco sentido. No exemplo a expressão do gene X no dataset A pode ser mais de uma ordem de magnitude maior que no dataset B. Assim, embora a “miraculosa” transformação numérica passe todos os valores para a mesma faixa, o que nós estamos fazendo na prática é usar um gene X que se comporta de forma completamente diferente em dois datasets que tratam do mesmo fenômeno, a restrição calórica. Malabarismos numéricos à parte, isso parece mais um indicador de que o gene X *não é* la muito relacionado com a restrição calórica.

Porém, fomos rigorosos (alguns diriam teimosos :) e decidimos dar a essa abordagem o benefício da dúvida. O interessante na abordagem de aprendizagem de máquina usada pela Biomind e Vetta Labs é que podemos validar essas transformações de dados simplesmente gerando modelos de classificação em cima dos dados transformados, e então observando a qualidade dos resultados de classificação assim obtidos. Em termos bem simples, e restringindo a explicação ao presente caso, um modelo de classificação (ou simplesmente modelo) é uma função lógico-matemática, “descoberta” automaticamente por um método de aprendizagem de máquina, capaz de dizer se um indivíduo é controle ou com restrição calórica, com base em sua expressão gênica. No caso desta pesquisa, o método de aprendizagem usado foi Programação Genética – “evolução” de programas inspirada em princípios Darwinianos. Os programas em si eram bem limitados, na verdade expressões lógicas do tipo “se o gene X tem expressão maior que 0.5 e o gene Y tem expressão menor que 0.2, então o indivíduo tem restrição calórica, senão é controle”, para dar um exemplo simples. Pois bem, aplicando esse processo em bases de dados fundidas por meio de normalização (como exemplicado acima), os modelos alcançaram resultados bem ruins – os modelos acertavam o diagnóstico restrição calórica/controle apenas em 70% dos indivíduos.

O resultado bem melhor, próximo dos 91% de acerto, que efetivamente analisamos, foi obtido com uma abordagem bem diferente, que ao mesmo tempo faz sentido numérica e biologicamente. Nesta abordagem, em vez de forçarmos todos os genes a se conformarem em faixas de valores compatíveis, propositalmente deixamos de usar todos os genes, selecionando apenas aqueles genes cujas faixas de variação de nível de expressão são parecidas nas duas (ou mais) bases de dados sendo integradas. Criamos uma simples medida de “sobreposição” (baseada na média e desvio padrão expressões de um gene em um dataset e em outro) para escolher apenas aqueles genes com faixas de valores mais sobrepostas nas duas ou mais bases de dados em fusão. (Exemplo numérico: suponha um gene X com média de expressão 100 e desvio padrão 10 na matriz A, e média 105 e desvio 15 na matriz B. Isso daria uma sobreposição de cerca de 0.67 para X em A e B, e o gene passaria no limiar de 0.5 usado para a seleção, indo para a matriz fundida final.) Biologicamente falando, se esses genes naturalmente se comportam de forma numérica parecida em bases de dados de restrição calórica diferentes, as chances parecem ser de que os mesmos são intrinsecamente relacionados ao problema da restrição calórica…

Fundimos três bases de dados diferentes – e mais tarde quatro – usando esse método. Na fusão tripla diminuímos o conjunto inicial de mais de oito mil genes para pouco mais de 500; na fusão quádrupla, conseguimos uma lista de genes muito parecida (apenas ligeiramente menor) com a da fusão tripla, indicando que o nosso método realmente estava convergindo para um conjunto de genes particularmente estáveis, robustos, no que diz respeito ao seu comportamento em estudos de restrição calórica.

As matrizes fundidas produzidas por essa abordagem passaram por toda a “linha de montagem” de análises do OpenBiomind, o software aberto para análises de dados de bioinformática desenvolvido pelo Vetta Labs e Biomind. Assim, pudemos gerar modelos de classificação (que conforme já dito acertavam o diagnóstico em mais de 90% dos casos), analisar esses modelos em busca dos genes mais importantes para a classificação, e finalmente montar redes de múltiplas relações entre os genes – mostrando importância de genes, co-ocorrência de genes nos mesmos modelos, co-expressão dos genes nos mesmos indivíduos, etc – que permitiram fechar o cerco em torno dos mecanismos da restrição calórica. Mas aqui, como eu já disse, acho que o Maurício é a pessoa indicada para falar com mais propriedade do que nosso estudo concluiu a respeito dessas redes de relações.

Este estudo de fato representa no campo de aplicação particular da Bioinformática uma lição “a união faz a força” que é recorrente em estudos de mineração de dados: às vezes, integrando múltiplas fontes de dados heterogêneas e indiretamente relacionadas (mesmo que essa integração não seja nem óbvia e nem simples), seus resultados são bem melhores, e lançam muito mais luz sobre o problema em questão, que visões “míopes” focando em um ou outro aspecto do mesmo…

Biotecnologia, Data Mining, Inovação, Inteligência Artificial 4 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Automação residencial – 3/3

Concluindo o post sobre automação residencial, vou falar um pouco sobre os demais subsistemas que citei no artigo original.

Controle de iluminação

Tradicionalmenete a maioria dos projetos de automação residencial começam por esse sistema. Você pode entendê-lo como uma parte do sistema de controle de eletricidade mas resolvi deixá-lo separado para acrescentar algumas coisinhas legais que se pode fazer aqui:

  • O uso de RFID permite um controle muito acurado dos locais da casa que precisam estar iluminados em um dado instante de tempo. Se cada morador usa, por exemplo, uma pulseira com um tag RFID o sistema pode usar antenas estrategicamente colocadas para ir acendendo ou apagando lâmpadas conforme necessário. Isso proporciona uma economia de energia muito grande principalmente se você integrar o HVAC ao mesmo mecanismo de controle).
  • Painéis centralizadores para monitorar/atuar em todo o sistema de iluminação também podem ser bem úteis. Por exemplo, na hora de dormir, o usuário pode ir ao painel e ligar/desligar as luzes conforme seu desejo ao invés de ir fazendo uma peregrinação pela casa e áreas externas para verificar se tudo está como ele quer.
  • Integrado ao sistema de monitoramento patrimonial, o sistema de iluminação pode ser uma ferramenta bastante eficaz na defesa da casa. Seja iluminando automaticamente áreas onde foram detectadas violação, seja fazendo simulação de presença no imóvel quando todos estão fora.

Detecção e combate a incêndios

Há no mercado uma infinidade de sensores capazes de detectar diversos tipos de situação de perigo (fumaça, emissão de gases, temperatura elevada, chamas etc). Uma integração desses sensores com um bom sistema de alarmes pode ser a diferença entre um simples incômodo e uma catástrofe. Além dos tradicionais alarmes visuais e auditivos, o sistema pode ser programado para entrar em contado com brigadas de incêndio ou com o corpo de bombeiros. Ou soluções intermediárias como enviar SMS, e-mail ou ligações telefônicas com mensagens previamente gravadas.

Os atuadores também são figurinhas repetidas no mercado. Sistemas de esguichos de água ou pó químico podem ser facilmente integrados e monitorados se estiverem em perfeita integração com os demais sistemas da casa (controle de fluidos, vigilância, elétrico etc).

Sistemas de vigilância e segurança patrimonial

Esse é talvez o sistema mais popular hoje quando se fala em automação residencial. Muita gente já tem um sistema de vigilância sofisticado, integrado à rede da casa e à internet que permite monitoramento remoto via WEB. Na verdade não há o que inventar aqui. Tais sistemas podem simplesmente ser integrados aos demais sistemas da casa. Talvez o maior ganho seja integrar os mecanismos de alarme e interface com o mundo externo usados pelos outros sistemas (e-mail, SMS, chamadas gravadas etc).

Outra coisa interessante é integrar o sistema de vigilância aos canais de distribuição de vídeo da casa. Isso permite tratar as imagens do sistema como qualquer outro tipo de vídeo, chaveando o aparelho para onde será transmidido, permitindo o arquivamento digital, permitindo a distribuição para mais de um ponto da casa etc.

Controle de acesso

Os mecanismos de controle de acesso evoluiram muito nos últimos anos. Há no mercado soluções de todas as faixas de preço e com propriedades variadas. O mais simples continua sendo o tradicional interfone (com ou sem vídeo). Bastante seguro, principalmente se for integrado a múltiplas câmeras e sistema de iluminação adequado. A principal desvantagem é a usabilidade: você precisa esperar que alguém de dentro da casa atenda, te identifique e abra a porta. Na verdade essa espera pode não ser apenas um problema de desconforto: em muitos casos essa espera pode ser uma falha de segurança, por expor o usuário desnecessariamente a uma possível abordagem por um bandido exatamente na hora em que ele quer entrar na casa (tenho uma amiga que foi assaltada exatamente nessas circunstâncias).

Para evitar essa espera há alternativas que vão desde soluções mais baratas (cartões com código de barra, ópticos ou magnéticos, smart cards, bótons etc) até soluções mais dispendiosas como reconhecimento de digital, íris, retina e face.

Os mecanismos baseados em “tokens” (cartoes, bótons etc) tem a desvantagem de serem fraudáveis com mais facilidade. Já os sistemas de biometria não podem ser fraudados facilmente. Desses, o mais eficaz em termos de taxa de acerto (e também o mais caro) é o reconhecimento de íris e retina. O reconhecimento de digital, embora sua utilização esteja em franca expansão no mercado, é muito suscetível a erro. Condições de oleosidade adversa nos seus dedos podem fazer com que o sistema te deixe dormir do lado de fora se você estiver “naquele dia”. Mas o sistema mais interessante na minha opinião é o baseado em reconhecimento de face. Ele tem várias vantagens:

  • Não ser intrusivo: você não precisa pôr seu olho ou seu dedo em um aparelho. Simplesmente ande em direção à porta normalmente e ele faz o trabalho de pegar sua imagem na câmera previamente colocada para isso e te identificar.
  • O sistema possibilita um esquema de auditoria muito bom. Você tem as fotos dos rostos de todas as pessoas que fizeram uso do acesso controlado. Isso pode ser usado de diversas maneiras úteis, por exemplo, voce pode receber em seu celular a foto de qualquer pessoa que esteja entrando em sua casa.
  • O sistema tem um efeito inibidor mais eficaz sobre pessoas mal intencionadas. Sabendo que seu rosto está sendo filmado, um engraçadinho se sentirá menos disposto a tentar burlar/danificar a porta, portão ou outro dispositivo de bloqueio do acesso.

O Labs desenvolveu uma solução completa de controle de acesso via reconhecimento de face. Eu trabalhei diretamente no projeto e talvez seja por isso que tenha minha preferência biased para essa opção ;-).

Serviços de telefonia

Integrar sua rede doméstica com um sistema de telefonia digital traz uma série de benefícios:

  • Extrema facilidade para fazer auditoria nas ligações.
  • Auditoria na qualidade/aferição de uso por parte das operadoras.
  • Maior facilidade de interface com os mecanismos de monitoramento remoto.
  • Maior facilidade com as interfaces de alarme.
  • Chaveamento apropriado para os diversos cômodos da casa.
  • Facilidade para realização de tele-conferências

Distribuição de áudio e vídeo

Muita gente hoje tem os chamados “media centers”. Computadores ou vídeo-games com capacidade de armazenamento e decodificação de aúdio e vídeo (em diversos formatos) integrados a canais de distribuição para os diversos cômodos da casa. Se bem implementado, esse sistema permite um grande conforto na distribuição de áudio e vídeo pela casa. A grande dificuldade está em fazer com que a interface seja simples, intuitiva e eficaz, não para um nerd analista de sistemas, mas para usuários leigos (sua mãe ou sua irmã que faz direito e ODEIA computadores ;-)).

Um pouco mais do mesmo

Além das menções explícitas às integrações entre os sistemas comentados acima há inúmeras outras maneiras de se integrá-los de forma a extrair o máximo de usabilidade do seu sistema como um todo. Como eu disse anteriormente, pensar nessa integração é um dos grandes desafios da domótica. É através da sinergia entre os sistemas que o usuário vai sentir os maiores e mais relevantes benefícios de um sistema de automação residencial. Se você estiver pensando em projetar um sistema desses (ou contratar alguém para projetar), não cometa o erro comum de implementar um sistema de cada vez, se preocupando com a integração na medida que cada sistema é implementado. Projete pelo caminho inverso. Pense em uma arquitetura que vá comportar tudo que o mercado tem disponível e vá implementando sistema a sistema depois. E não se esqueça de me convidar para um churrasco em sua casa quando tudo estiver “no ar” :-).

Automação, Inteligência Artificial, Reconhecimento de Faces 4 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 1,00 out of 5)

« Previous Entries Next Entries »