C-Value-Enigma’s Weblog

março 10, 2008

Será que sou medieval?

Filed under: ciencia — cvalueenigma @ 6:48 pm
Tags: , , , ,

Nesse último final de semana, enquanto relia meu post anterior, percebi o quanto meu artigo pareceu demasiadamente defensor do ponto de vista “Pró-vida”, embora esta não seja minha posição pessoal em relação ao tema.

Num período onde as massas estão cada vez voltando-se mais às religiões mainstream, e a Igreja por sua vez, aproveitando-se de sua ampla influência, publica nova lista de pecados capitais no qual existe explicitamente um item sobre a pesquisa da célula-tronco, fico a me perguntar se tamanha pressão midiática/religiosa não está afetando a parte irracional do meu cérebro e assim me levando inconcientemente a defender de forma sutil idéias as quais na verdade discordo.

Se eu (e a grande maioria de nós, acredito) tivesse algum problema físico o qual a pesquisa com células-tronco beneficiasse diretamente, não tenho dúvidas que não hesitaria em doar meu semêm para o primeiro banco de embriões que aparecesse. É por esse motivo que não acho de muito crédito apresentar na mídia pessoas com deficiencia física defendendo tais pesquisas. Porém, no íntimo, saberia exatamente o que meu ato representaria: a futura destruição de um diminuto ser de minha espécie.

É dificil dormir quando sabe-se que teve uma melhora de vida as custas de outro ser. Porém, não podemos ser hipócritas, algo parecido já acontece todo santo dia no momento em que nos alimentamos.

Não há dúvidas que os embriões congelados nos diversos laboratórios pelo mundo são viáveis, como nos demonstram tantos artigos a respeito, restando-nos a perguntar porque tais embriões devem então ser usados para a pesquisa e os demais não.

Será que tais embriões congelados poderiam assim ser classificados como indesejáveis, nos dando permissão irrestrita a fazer o que bem quiser com eles?

Isso assusta, pois parece a época em que os homens (inclusive a Igreja) justificavam a escravidão do negro/índio no Brasil como sendo devido a “natureza de sub-espécie e quase animalesca” de tais indivíduos (tantas vezes retratado na coleção Terra Brasilis). São estes embriões então sub-espécie humana?

Em contra partida, existem aqueles que acreditam na pós-vida dos embriões, sugerindo que estes não são realmente destruidos pela pesquisa na tentativa de minimizar o problema. Porém, acho esta idéia particularmente pouco científica, sendo uma posição quase que apelante ao sobrenatural.

Mas, a despeito disso tudo, o que realmente faz afastar minhas recaídas “Pró-vida” e me re-aproximar da idéia “Pró-escolha” é lembrar de como se deu o progresso da medicina no mundo.

Para quem leu o livro As Dez Maiores Descobertas da Medicina, de Friedman/Friedland, sabe, por exemplo, que a grande maioria das principais descobertas se deram a partir de alguma abnegação particular, seja ela física, religiosa, ou ideológica, de uma geração de heróicos humanos.

O exito, por exemplo, quase que total das incontáveis cirurgias realizadas a cada dia nos hospitais pelo mundo resultam diretamente do conhecimento pleno do homem de sua anatomia. Esta, por sua vez, advém da pesquisa em cadáveres que se deu no inicio da era moderna da medicina.

Se não fosse a doação, consensual ou não (como visto no livro supracitado, onde os estudiosos frequentemente roubavam corpos), que essa geração fez de seus cadáveres (tão místicos e sagrados para eles), ainda estaríamos numa era obscura sobre a natureza do corpo humano.

Será que não é nossa hora de sermos também altruístas e doarmos algo que nos é caro em prol das gerações futuras?

Ao permitirmos tais pesquisas, por mais dolorosas que nos sejam, estamos contribuindo para o êxito de nossa espécie e cumprindo nosso papel de deixarmos um legado para as próximas gerações. Não sejamos então meros e preguiçosos aproveitadores dos frutos do legado passado (quem leu Quem Mexeu no Meu Queijo sabe do que estou falando).

É por tantas e outras que tento evitar minhas recaídas medievais. 

Parafraseando um verso do grande poeta Cazuza:

    “Será que sou medieval? Baby, eu me acho um cara tão atual… na moda da nova idade média… na mídia da novidade média…”

março 6, 2008

Células, troncos e a raiz do problema…

Filed under: ciencia — cvalueenigma @ 7:30 pm
Tags: ,

Nesses últimos dias o tema Célula tronco tem estado em voga aqui no Brasil. O julgamento do STJ sobre a constitucionalidade de pesquisas com essas células, além de importantíssima para o futuro desfecho biotecnológico do país, está rendendo acaloradas discussões nas mais diversas rodas e classes.

Embora essa questão, no frigir dos ovos, resuma-se a decidir se o Brasil será ou não dependente de tecnologia alheia para a medicina do século XXI (nesse caso condenando-nos ou não a um estado de curandeirismo medieval do século passado, no qual se bombardeiava o corpo todo para resolver uma dor no dedão do pé), os “meios” em que isso se dará é que é o X da questão. 

Discute-se assim se os “meios” justificam os “fins”, mesmo que tais “fins” sejam inevitavelmente atingidos em algum momento por qualquer dos outros países minimamente capazes tecnologicamente desse pequeno e azulado grão de nada imerso no universo chamado Terra.

Tal futuro tecnológico promissor, diga-se de passagem, faço questão de defender, por acreditar que o desenvolvimento científico brasileiro (unida a divulgação e propagação da ciência às camadas mais desafortunadas), é o único caminho para nos livrar desse estado pequenês de pensar e mendigância secular em que vivemos.

Porém, o que geralmente não se vê na mídia é que o tema da célula tronco tem estreita relação com a questão do aborto, principalmente no que tange a definição de quando um embrião/feto se torna definitivamente e inequivocamente um ser humano, com todos os direitos resultantes a serem respeitados.

É esse o motivo da forte oposição da Igreja a tais pesquisas, pois, como todos sabem, a Igreja prega o direito a vida, muito embora tal “vida” que esta se refira seja apenas a humana, já que outras formas de vida são diária e ininterruptamente desrespeitadas por nós (e apoiada por ela).

Nesse sentido, temos que enxergar tal tema sob o enfoque do aborto, o qual, segundo o ótimo capítulo sobre tal assunto constante no livro Bilhões e Bilhões de Carl Sagan, polariza as opiniões entre os “Pró-vida” e os “Pró-escolha”.

Os autodenominados “Pró-vida” são aqueles que dizem-se defensores do direito a vida, enquanto os “Pró-escolha” são os que acham que o indivíduo, enquanto dono do próprio corpo, deve ter o direito de decidir o que fazer com ele.

Nesse contexto, fazendo-se um paralelo com o caso das células-troncos, os “Pró-escolha” acreditariam que toda pessoa que sofre de algum tipo de paralisia e que possui espermatozóides sadios teria  todo direito de doá-los para pesquisa em prol de sua cura.

Já a opinião dos “Pró-vida” seria que estas mesmas pessoas estariam na verdade compactuando com um tipo de assassinato, já que tais espermatozóides iriam fecundar óvulos igualmente doados, resultando inevitavelmente em um embrião que é tido como humano.

É importante fazer uma distinção aqui, muito embora espermatozóides e óvulos são ambos entidades inequivocamente vivas, destruí-los não é considerado assassinato pelos “Pró-vida”, já que bilhões deles são desperdiçados a cada santo dia pelo mundo afora. Os adeptos do “Pró-vida” consideram como “ser humano vivo” apenas os óvulos fecundados.

Mas será que o simples ato da fecundação por si só já nos deixa aptos a considerar essa nova entidade um ser humano? Bem, em termos de DNA sim, pois este possui uma cadeia completa. Mas em termos de humanidade real? Este novo ser pode a partir desse momento ser considerado humano? O que caracteriza um ser humano? Ter um DNA completo? O viver? O respirar?

Se fosse possível aproveitarmos células tronco de outros animais (digamos, talvez, de chipanzés, nossos primos próximos), certamente esse tema não seria controverso, já que teriamos um estoque quase inesgotável a aproveitar. Nesse contexto, óvulos fecundados de animais, embora inequivocamente vivos, alguns poderem respirar e todos terem DNA completos, valem menos que a vida humana. Percebemos aí o quanto esses parâmetros superficiais não são confiáveis para definir uma vida humana.

Muitos cientistas, alí incluía-se Sagan, propunham como limite o “pensar humano”, que se caracteriza nos fetos a partir do sexto mês de gestação. É interessante esse limite pois, embora semelhante ao momento do fortalecimento da capacidade respiratória, ele enquadra-se bem em leis existentes sobre o aborto pelo mundo afora.

Vejamos o que diz a lei americana: esta considera o aborto totalmente permitido até o terceiro mês da gestação, e parcialmente permitido até o sexto, baseando-se no fato que até aí o embrião não tem capacidade respiratória própria para viver fora do útero. Até esse limite, vale o direito da mulher de escolher se quer ou não ter esse filho.

Mas esse limite parece arbitrário no momento em que o vemos como baseado na tecnologia em vigencia, já que ela leva em conta a existencia das encubadoras, que garantem ao feto a sobrevivencia fora do útero em determinadas situações.

E se aparecer uma tecnologia que permita ao óvulo fecundado sobreviver e se desenvolver deste o inicio fora do útero materno? Se for desenvolvido um útero artificial? Nesse momento não seria imoral destruir um óvulo fecundado?

Quando percebemos que o que define o que é moral e o que é imoral em relação ao aborto (ou ao caso da célula tronco) tem raizes tão frágeis, vemos o quanto é arbitrário qualquer limite que impomos para considerar o que é “ser humano” ou o que não é. E vemos finalmente o quanto realmente é complexo o tema.

Seja qual for a decisão de nossos juízes de direito, apoiando ou não tais pesquisas, esta poderá ser considerada, em ambas as situações, “de extrema ignorância” no futuro próximo.

Por fim, quem quiser ter mais detalhes técnicos sobre a questão, pode visitar o excelente blog do Matheus Laureano, o qual postou muitas informações a respeito.

fevereiro 29, 2008

Nas ondas do wavelet

Filed under: programação — cvalueenigma @ 3:24 pm
Tags: , , ,

A análise numérica de dados é um vasto campo da matemática que tornou-se acessível ao público em geral com o barateamento dos computadores.

Livros como A Lógica do Mercado de Ações de John Allen Paulos, e o clássico Análise de Séries Temporais de Morettin & Toloi, ensinam, por exemplo, peripécias matemáticas que podem tanto ajudar à incautos investidores a como tentar prever e evitar as inconstâncias da bolsa de valores quanto a pequenas indústrias ajustarem sua linha de produção com base na previsão de vendas oriundas de tais técnicas.

A essa imensa literatura disponível, tanto física quanto no mundo virtual, soma-se os inúmeros softwares (muitos deles de custo inacessível a maioria dos mortais) que prometem, em rítmo de produção em massa, mastigar números e cuspir informações, estas últimas de valor inegavelmente estratégico para o incremento da eficiencia num mundo multi-conectado e competitivo de hoje.

Nesse contexto, dentro da minha modesta capacidade, tenho nas últimas semanas reservado tempo para estudar o método de programação genética linear como analisador numérico de dados. Como me deparei no programa que desenvolvi com alguns problemas relacionados a lenta convergência dos modelos encontrados para certas amostras (citado no post anterior), pensei em tentar caminhos alternativos para melhorar esse desempenho.

Com essa idéia na cabeça, comecei a desenvolver um novo programa que permite analisar dados numéricos a partir do método de wavelet (ou, em bom português: ondaletas).

O método de ondaletas surgiu como uma alternativa ao velho método da transformada de Fourier para análise de sinais, permitindo, dentre outras vantagens, uma análise temporal das informações escondidas na amostra estudada, coisa que o método de Fourier não permite pois este último analisa apenas as frequências alí contidas, e não o comportamento destas frequências ao longo do tempo.

Ondaletas são adotadas em diversos campos do saber, como a física (dinâmica molecular, astrofísica, geofísica, mecânica quântica), processamento de imagem (análise de EEG e DNA, clima, reconhecimento da fala e visão artificial), compressão de dados (o famoso JPEG 2000 utiliza essa técnica), em geral substituindo a já citada transformada de Fourier.

O algoritmo que utilizei no programa baseia-se no método discreto de Haars (matemático hungaro precursor desse método), que, a grosso modo funciona assim:

  1. Lê-se dois itens da amostra;
  2. Aplica-se a eles dois filtros de passagem (isto é, duas funções matemáticas pré-definidas, chamadas de low e high-pass);
  3. Obtêm-se dois novos valores, onde cada qual é colocado em amostras diferentes, formando assim duas novas sequências da amostra original;
  4. Volta-se ao item 1 até chegar ao final da amostra original.

Ao final do processo as duas novas amostras possuirão metade do tamanho da amostra original, sendo que representarão duas ondaletas dispersas ao longo do tempo, as quais estavam escondidas nos dados analisados.

Os filtros de passagem adotados para implementar o método discreto de Haars impressiona pela simplicidade. Estes foram:

Filtros de passagem

Na imagem abaixo temos um exemplo do programa em funcionamento. Na tela, vemos o sinal de uma função senóide – gerada aleatóriamente – sendo quebrada em duas ondas de frequência menores.

Wavelet de sinal senóide

Essa quebra pode ser feita em componentes ainda menores, até um limite imposto pelo tamanho da amostra estudada.

No programa inseri também uma função de forecast, permitindo inferir futuros valores que a amostra irá apresentar caso as ondaletas calculadas se mostrem corretas.

O passo seguinte será implementar uma regressão não linear como método adicional de forecast, bem como integrar esse programa ao de LGP que desenvolvi anteriormente e ver se com isso este último passa a gerar modelos mais precisos dos dados analisados.

fevereiro 28, 2008

Pequenos quadrados….

Filed under: Darwinismo,programação — cvalueenigma @ 1:19 pm
Tags: ,

Ontem atualizei o programa LGPTester para utilizar o conhecidíssimo Método dos Mínimos Quadrados como função de escolha do indivíduo da população que melhor se adequa aos dados analisados.

Essa mudança provocou uma aceleração brutal no tempo de processamento do programa, fazendo-o encontrar mais rapidamente (e com maior qualidade) modelos que se ajustem aos dados analisados.

Na tela abaixo podemos visualizar o LGPTester modelando uma função senóide escolhida aleatóriamente. O programa conseguiu fazer a engenharia reversa dos dados e encontrar um código C que imite o comportamento da função original.

LGPTester

É uma pena que o mesmo ainda não se dá com dados oriundos de geradores pseudo-aleatórios, onde o LGPTester tende a convergir muito lentamente para um modelo coerente.

Um possível motivo para que isso ocorra talvez seja a necessidade ainda de inclusão de novas funções matemáticas (como módulo, por exemplo) ao leque disponível para o programa. Como as funções disponíveis são relativamente simples, talvez o programa só consiga modelar dados oriundos de fontes igualmente simples.

Outra possibilidade seria talvez a necessidade de avaliar os dados sob novos enfoques, rearranjando-os para facilitar a análise pelo programa. Nesse sentido, pretendo implementar três métodos que permitem analisar padrões escondidos em dados: wavelets, return maps e recurrence plots.

Comentarei tais métodos nos próximos posts, a medida que for implementando-os.

fevereiro 25, 2008

TV aberta brasileira: Criacionismo 1 x Evolucionismo 0

Filed under: Darwinismo — cvalueenigma @ 9:07 pm
Tags: , , , ,

Semana passada assisti, em uma TV controlada por um grupo religioso, a uma reportagem tendenciosa que tentava refutar a teoria evolucionista em favor do criacionismo.

Nessa tentativa usaram até como argumentos as “maracutaias” que pseudo-cientistas do século 19 (e inicio dos XX) inventaram em prol de enriquecimento próprio (como falsas ossadas, etc). Porém, desmerecer toda uma teoria só porque existem pilantras que fazem mal uso dela e tentam iludir o público é ignorancia por si só; sem contar que esse tipo de argumento falacioso é muito conhecido na literatura: é o famoso “ad hominem” (isto é, ataque o homem, não sua idéia).

Se partir para esse caminho, tivemos, temos e ainda teremos inumeros malandros que tem na religião sua forma de enriquecimento ilicito.

Porém, o que a reportagem não falou é das irrefutáveis evidencias que o estudo do DNA nos trouxe. Está lá, escrito claramente no DNA, que temos 99% de parentesco com algumas espécies de macacos, e que todos os animais na Terra (inclusive insetos e afins) partilham grande parte do DNA, indicando que todos, de certa forma, temos a mesma origem, mesmo que longíngua.

E não falaram também que a evolução se dá em saltos, coisa que modelos computacionais demonstram ser verdadeiro, já que o processo de combinação e recombinação dos genes a cada geração se passa aleatóriamente. É apenas quando a “sorte” se faz presente que uma dada geração se mostra mais eficiente que os demais (tendo, por mera sorte, alguma leve vantagem), ocorrendo aí a seleção natural e a longo prazo a prevalescencia dos genes desse grupo.

Carl Sagan, em seu ótimo livro “O mundo assombrado pelos demônios” escrito em meados da década de 90, já denunciava a pressão que a teoria da evolução sofria para não ser ensinada nas escolas americanas. Parece que no século XXI o “criacionismo” voltou a tomar força, principalmente num mundo ainda fortemente controlado pela religião.

Como relata Sagan em seu livro:

    “Conheço muitas pessoas que se sentem ofendidas com a evolução, que preferem apaixonadamente ser uma obra pessoal de Deus a ter surgido do lodo por forças físicas e químicas cegas ao longo das eras. Elas também tendem a evitar o contato com a evidencia. Esta tem pouco a ver com a questão: o que elas querem que seja verdade, elas acreditam que é verdade. […] Quando o filme Jurassic Park foi exibido em Israel, alguns rabinos ortodoxos o condenaram, porque aceitava a evolução e porque ensinava que os dinossauros viveram há 100 milhões de anos, quando, como se afirma claramente em todo Rosh Hashanah e toda cerimônia de casamento judaica, o Universo tem menos de 6 mil anos. A evidencia mais clara de nossa evolução ainda é contestada, ironicamente por aqueles cujo próprio DNA a proclama, nas escolas, nos tribunais, nas editoras de livros didáticos […]”

E nas emissoras de TV brasileiras controladas por facções religiosas, como pude constatar.

Em outro trecho do livro de Sagan encontramos:


    “Quando Darwin formulou sua teoria da evolução, ele era ateísta e materialista. […] Darwin estava prestes a se tornar ministro da Igreja da Inglaterra, quando surgiu a oportunidade de zarpar no H.M.S. Beagle. Suas idéias religiosas, como ele próprio as descrevia, eram na época bastante convencionais. […] Pela sua investigação da Natureza, pela ciência, começou lentamente a compreender que pelo menos parte de sua religião era falsa.”

Por fim, ele conclui acertadamente:


    “Se censurássemos Darwin, que outros tipos de conhecimento seriam também censurados? Quem faria a censura? Quem dentre nós é bastante sábio para saber quais as informações e idéias que podemos descartar sem problemas e quais as que serão necessárias daqui a dez, cem ou mil anos?”

É preocupante quando idéias medievais voltam a povoar a mente do povo, pois, como vivemos na “ditadura da maioria“, acaba por afetar e influenciar as decisões desse (e quem decide por esse) povo como um todo.

O que podemos fazer é não deixar essas idéias contaminarem as mentes dos jovens, esclarecendo-os para não cairem nas armadilhas (principalmente a subserviencia) que a ignorância nos traz.

    “É mais freqüente que a confiança seja gerada pela ignorância do que pelo conhecimento: são os que conhecem pouco, e não os que conhecem muito, os que afirmam tão positivamente que este ou aquele problema nunca será solucionado pela ciência.” Charles Darwin, The descent of man (1871).

fevereiro 20, 2008

Modelando o caos

Filed under: Darwinismo — cvalueenigma @ 3:03 pm
Tags: ,

Encontrei um ótimo artigo sobre um experimento feito com um pacote de software baseado na seleção natural (veja em Comparison of Discipulus™ Linear Genetic Programming Software with Support Vector machines, Classification Trees, Neural Networks and Human Experts, seção “Deriving Physical Laws”, de Larry M. Deschaine e Frank D. Francone).

No experimento foi entrado dados de uma equação da física bem conhecida e o computador, mimetizando a teoria evolucionista, chegou como resultado a exata equação original.

Abaixo segue uma livre tradução de um trecho desse artigo:

    […] Nós testamos o programa “Discipulus Lite” e “Standard” em inúmeros domínios de problemas durante a primeira fase de nossa investigação. A primeira fase cobriu cerca de dois anos e tem seus resultados descritos nas próximas três seções […]
    DERIVANDO LEIS DA FÍSICA
    O interesse em LGP (linear genetic programming) da SAIC (Science Applications International Corporation’s) era inicialmente baseada na sua potencial habilidade de modelar relações físicas. Assim, seu primeiro teste foi se LGP pode modelar a bem conhecida (ao menos para engenheiros ambientais) lei de Darcy. Essa lei descreve o fluxo da água através de um meio poroso.
    A equação é a seguinte:
    Q=K*I*A
    onde:
    Q = fluxo [L3/T],
    K = condutividade hidráulica [L/T],
    I = gradiente [L/L], e
    A = area [L2].
    Foi então obtida uma massa de dados real, aplicando-se a lei de Darcy para produzir os resultados que serão usados como amostra.
    A essa amostra foi também adicionado 10% de variação aleatória (para camuflar imprecisão) e o software LGP foi rodado em cima dessa nova massa de dados. Após o fim do processo, o melhor modelo gerado pelo sofware foi examinado.

    A melhor solução que o software derivou da amostra foram as seguintes quatro instruções:

    Q = 0.0
    Q += I
    Q *= K
    Q *= A

    Estas instruções são precisamente a lei de Darcy, representada na linguagem ANSI C.

    No programa evoluído, Q é um acumulador e, além disso, o resultado final desse programa. […]

A partir desse estudo empírico, a conclusão chegada por Deschaine e Francone foi que o pacote de software LGP consistentemente produziu excelentes resultados em problemas industriais difíceis, com pouca interferencia humana no algoritmo de aprendizado utilizado por ele.

Além disso, embora o pacote não tenha em geral produzido um melhor resultado que os outros algoritmos estudados (redes neurais, máquinas vetoriais etc), em todo problema analisado ele produziu um modelo que era pelo menos tão bom quanto qualquer outro método de análise numérica pesquisado por eles.

Outro ponto foi que o pacote produziu modelos robustos comparados a outros métodos de inteligencia artificial. LGP identificou quais eram os dados importantes em uma amostra e quais não eram, reduzindo o número de variaveis a serem monitoradas e permitindo uma melhor acertividade além de menor tempo de processamento.

Com base nessa idéia, pensei em testar o programa LGPTester em cima de uma amostra obtida a partir de um gerador de números pseudo-aleatórios, já que este tipo de dado decididamente possui uma função matemática por trás – sendo assim bem mais um exemplo de caoticidade (onde resultados mudam completamente de acordo com o ambiente inicial dado: no caso, a semente do gerador) do que de aleatoriedade  propriamente dita.

No teste que realizei, o programa encontrou modelos que acertavam o dado Y da amostra entre 20 a 25% das vezes.

Embora eu não tenha feito uma análise mais adequada para verificar se 20% de acerto dentre uma amotra de 100 números “aleatórios” não se enquadra dentro do esperado pela “pura sorte” (isto é, por exemplo, tal qual duas pessoas dizendo 100 numeros em sequencia e descobrir que a chance de que certa quantidade desses números sejam idênticos esteja perto dos 20%), não há como negar que esse é um percentual interessante que nos leva a pensar se o modelo não está encontrando alguma relação escondida.

Relações escondidas dentro de geradores de números pseudo-aleatórios é um fato bastante conhecido na literatura, vide o caso da famosa congruencia linear, usada em muitas linguagens de programação, onde surgem padrões quando os dados são plotados em múltiplas dimensões, situação esta chamada de efeito Marsaglia em homenagem a quem a descobriu.

Testei também o programa com alguns dados da lotofácil – no caso, a primeira bola dos últimos 100 sorteios – e verifiquei que rapidamente o programa encontrou um modelo que apostava mais na bola “1” do que em qualquer outra. O interessante é que estatísticamente essa bola sai em 60% dos sorteios da lotofácil.

Embora apostar na bola “1” seja um fato fácil de um humano deduzir estatísticamente (veja mais detalhes aqui), o computador chegar a essa conclusão por si só, principalmente através da evolução de programas puramente aleatórios, é um fato intrigante.

Isso também demonstra que outras relações podem ser encontradas pelo programa, caso entremos com os dados certos e deixemos ele processar por tempo necessário.

Estou pensando agora em fazer uma versão em C, a fim de que rode mais rápido, e que use Threads para aproveitar máquinas bi-processadas.

fevereiro 19, 2008

Programação Genética Linear

Filed under: Darwinismo — cvalueenigma @ 2:00 pm
Tags: ,

Ando pesquisando sobre Programação Genética Linear, que trata de gerar automaticamente modelos matemáticos (leia-se: código fonte) a partir de amostra de dados numéricas.

As principais idéias estou tirando da excelente dissertação de Brameier (On Linear Genetic Programming), bem como de uma ferramenta comercial que cumpre bem esse fim (Discipulus).
 
Nessa técnica, os modelos evoluem muito parecido como é descrito na teoria darwinista, isto é: dada uma população aleatória de indivíduos (programas) os quais estão imersos em um ambiente hostil (massa de dados numérica previamente definida), aqueles que melhor se adequarem ao ambiente (mimetizarem a amostra) passam para uma próxima geração (rodada de testes), onde partes deles são propagados para o resto da população. Nesse processo, ainda, a parte da população que menos se adaptou é descartada e novos individuos são gerados aleatóriamente para substituí-los.
 
Assim, em resumo:
 
1) Individuos que apresentam bom desempenho permanecem e distribuem parte de seu código para os indivíduos “medianos” (aqui chamado de “crossover”).
2) Os indivíduos “mediocres” são eliminados e novos individuos – de igual proporção aos eliminados e com código aleatório – são introduzidos na população (aqui chamado de “mutation”).
 
Quem quiser pode pegar o protótipo do programa no seguinte link: LGPTester.
 
Esse programa teste permite analisar amostras no formato X -> Y, isto é, quando executado, o programa busca por uma função de X que resulte em Y para toda a amostra.

Para testar, tente 1 variável e 3 instruções (que dá um desempenho bem interessante). Veja como rapidamente ele consegue modelar funções senóides aleatórias (geradas pelo botão “sample generate”).
 
O código gerado para o modelo, embora simule C, pode ser transcrito para qualquer linguagem (ou até Excel). Isso pode ser feito para, por exemplo, testar a efetividade do modelo em uma massa de dados semelhante mas ainda não analisada.
 
É interessante como mesmo um programa com regras simples como esse consegue chegar a modelos rebuscados, mesmo que seja de matemática elementar.

E é ainda mais interessante como modelos que, de outro modo exigiriam um mínimo de inteligencia para criá-los, podem simplesmente emergir do puramente aleatório, sem magias ou misticismos, nos fazendo ter um pequeníssimo vislumbre do poder da seleção natural.

fevereiro 18, 2008

Como tudo tem um inicio…

Filed under: Darwinismo — cvalueenigma @ 8:15 pm
Tags: , , ,

Resolvi abrir esse weblog como forma de compartilhar algumas idéias sobre programação, que costumo pesquisar sem muita pretensão ou preciosismo nas minhas horas vagas. Como minha área de interesse é inteligencia artificial, esse tema será bastante recorrente por aqui.

O nome do blog deriva da biologia, mais especificamente da genética. Tive essa idéia quando li uma reportagem que falava que nosso DNA possui muito código “lixo”, ou ainda “inativo”, e que o tamanho do DNA não significa propriamente “complexidade” do organismo, já que há muitas plantas simples que tem sequencias de DNA maiores que o do ser humano.

Podemos fazer um paralelismo disso com o mundo dos bits e bytes, onde nem sempre códigos gigantes apresentam necessariamente comportamento complexos e vice-versa (vide os estudos sobre automatos celulares de Stephen Wolfram).

Isso inclusive nos leva a pensar se simplesmente “inflar” um software com código o fará realmente mais eficiente, ou melhor, ou mais completo, já que isso definitivamente não é o que contribui para esses atributos.

Ou então o inverso: subestimar o problema, isto é, achar que este, por ser simples, terá uma solução igualmente simples. A natureza nos mostra que não é bem por aí. Ela nos ensina que o que vale realmente é o poder de adaptação às mudanças que tal código (ou codificador) tem, já que o mundo real está em constante e ininterrupta evolução.

Fica então a dica para nós meros mortais codificadores de bits e bytes: evolução sempre, de idéias, crenças e atitudes.

E para saber mais sobre o “enigma do valor C”, vale a pena uma consulta nessa reportagem da Folha ou, ainda, sua definição na Wikipedia.

Vale também uma visita aos termos Noncoding DNA e Junk DNA, que falam sobre a parte do DNA que não faz nada de útil e da parte que é meramente lixo.

« Página anterior

Blog no WordPress.com.