OpenWorm - modelo computacional do verme C. elegans
(github.com/openworm)- OpenWorm é um projeto que tem como objetivo construir um modelo computacional abrangente do nematódeo microscópico Caenorhabditis elegans (C. elegans)
- A abordagem é uma modelagem bottom-up que simula dados obtidos em experimentos científicos realizados na última década para observar se o comportamento do verme emerge
- O contêiner Docker reúne os principais componentes da simulação em um ambiente executado na máquina local
- Executar o modelo do sistema nervoso c302
- Executar em paralelo o modelo corporal 3D do verme Sibernetic usando a saída do modelo do sistema nervoso
- Gerar gráficos do funcionamento dos modelos do sistema nervoso e do corpo
- Gerar vídeos da saída do modelo corporal
- O tempo de execução da simulação padrão é limitado para manter um tempo de execução razoável, e apenas uma saída parcial equivalente a cerca de 5% do tempo de execução é exibida em comparação com a saída de exemplo {p:5}
- Os requisitos de execução são no mínimo 60GB de espaço livre, pelo menos 2GB de RAM, um ambiente capaz de clonar repositórios git e Docker instalado
- O fluxo de execução consiste em
git clone,./build.shopcional,./run.sh,stop.shao terminar e verificação do diretório localoutput - Se você pular
./build.sh, a imagem Docker da versão mais recente será baixada do OpenWorm Docker hub - O argumento
-d [num]permite alterar o tempo de simulação em milissegundos; o padrão é15, e o valor para gerar o vídeo de exemplo completo é5000 ./run-shell-only.shserve para entrar no contêiner antes de executarmaster_openworm.pye inspecionar ou modificar a base de código em checkout e o sistema instalado- Para mudar itens de instalação, edite o
Dockerfile; para mudar itens de execução, editemaster_openworm.py; depois disso, é necessário executarbuild.shpara reconstruir a imagem local - A saída padrão exporta para o sistema hospedeiro apenas algumas figuras e vídeos; a saída completa da simulação ou dados como
worm_motion_log.txtprecisam ser copiados do contêiner Docker stop.shremove o contêiner e os arquivos relacionados, portanto não deve ser executado antes de extrair os dados- Documentação adicional é fornecida em http://docs.openworm.org, e o repositório inclui high-level issues e milestones para acompanhar o projeto como um todo
1 comentários
Comentários do Hacker News
302 neurônios podem não parecer impressionantes para quem está acostumado com redes neurais de 7 bilhões+ de parâmetros
Mas a semelhança entre essas redes neurais e neurônios biológicos é mais ou menos como a semelhança entre uma bicicleta e um cavalo. Ambos podem se mover bem rápido, mas um evoluiu ao longo de mais de 1 bilhão de anos de seleção natural brutal, e o outro é uma máquina de metal ajustada com precisão para um único propósito
O mesmo vale para os neurônios: são máquinas biológicas extremamente sofisticadas, com bilhões de pares de bases de DNA que controlam o comportamento, e o comportamento emergente dos neurônios, tanto em sistemas biológicos quanto em sistemas de IA, é bastante interessante
“Esses neurônios não disparam potenciais de ação, nem expressam canais de sódio dependentes de voltagem” [1]
Por isso, o fato de poder haver vício em nicotina fica ainda mais interessante
“C. elegans também pode ser usado para estudar dependência de nicotina, porque apresenta respostas comportamentais à nicotina semelhantes às de mamíferos. Isso inclui resposta aguda, tolerância, abstinência e sensibilização” [1]
[1] https://en.m.wikipedia.org/wiki/Caenorhabditis_elegans
Em certo sentido, esses circuitos se parecem com redes neurais e, acima de tudo, têm memória e estado que persistem ao longo de períodos curtos e longos. Cada neurônio está mais próximo de um organismo vivo capaz de aprender e agir do que de um parâmetro dentro de um modelo
Em contraste, um “neurônio” virtual é uma abstração matemática muito simples, com complexidade computacional esmagadoramente menor do que a de um neurônio biológico. O conectoma é apenas um mapa muito grosseiro de como os neurônios se conectam, bem longe de ser o diagrama completo de uma “rede neural”
Talvez seja possível modelar um neurônio biológico como uma sub-rede neural com estado dentro de uma rede neural maior, mas mesmo assumindo equivalência computacional, não sabemos nem de longe quantos “neurônios” virtuais seriam necessários para representar todo o comportamento computacionalmente relevante de um neurônio biológico
Então um verme com 302 neurônios biológicos pode ser computacionalmente equivalente a dezenas de bilhões de neurônios virtuais, ou não; simplesmente não sabemos
Nesse sentido, pode parecer um pouco com uma rede LSTM, já que o neurônio tem memória, e como redes neurais biológicas não são simples feedforward, elas certamente estão mais próximas de redes neurais recorrentes
É por isso que eu rio quando vejo gente falando de upload da mente. Não vou parar de rir até que consigamos entender e modelar o comportamento relevante dos neurônios biológicos e extrair o estado utilizável de neurônios vivos. No momento isso é 100% ficção científica, e quem acha que vamos conseguir fazer upload da mente em breve não entende de biologia
Se funcionam por princípios parecidos, como o verme consegue ter esse comportamento com tão poucos recursos? Por exemplo, se ficar claro que características detalhadas do substrato não são essenciais para as capacidades do verme, isso pode ser uma boa notícia para a pesquisa em IA
Nos anos 1990, tive a chance de fazer programação no laboratório de Ralph Siegel, e ele também pesquisava esse tipo de modelo de conectoma de vermes
https://en.wikipedia.org/wiki/Ralph_Siegel_(scientist)
Ele usava as equações de Hodgkin-Huxley para simular respostas neurais sobre o conectoma. Alguém me explicou que o modelo de Hodgkin-Huxley é parecido com modelar uma perna humana como três blocos rígidos conectados por dobradiças. É suficiente para ser útil em muitos modelos, mas não é uma descrição completa
Além disso, neurônios de vermes não geram spikes, e as equações HH descrevem neurônios que produzem trens de spikes, então talvez não sejam um modelo adequado para neurônios de vermes. Esses neurônios existem em sistemas nervosos mais complexos
As equações HH são o modelo matemático que temos, então acabam sendo usadas em simulações, e parece que ainda são usadas no projeto OpenWorm. O que ouvi sobre as propriedades dos neurônios de vermes foi há muito tempo, então a informação pode estar desatualizada
É ótimo que esse trabalho continue, e ele pode trazer insights sobre o funcionamento do sistema nervoso. Mas a dificuldade é enorme, e estamos avançando de forma muito lenta e penosa em um território gigantesco de desconhecido
Nesse caso, eles são muito diferentes dos neurônios humanos? Tenho curiosidade sobre como funcionam e onde posso ler mais sobre isso
Gosto dessa abordagem bottom-up. Porque ela mostra muito bem o quanto ainda não sabemos sobre a vida
Aqui também vale mencionar o projeto de célula mínima syn3.0, de Craig Venter. Essa equipe criou uma célula sintética viva composta por 473 genes, e boa parte disso foi feita por tentativa e erro, sendo que a função de muitos desses genes ainda é desconhecida
Uma revisão recente da mesma equipe está em https://doi.org/10.1016/j.cell.2022.06.046
É uma forma de ver quais peças você consegue remover sem que o sistema desmorone
O fato técnico de o genoma ter sido sintetizado artificialmente é mais um tipo de exibicionismo, já que no fim ainda precisaram colocá-lo dentro de uma célula já existente
É como copiar um chip existente, trocar algumas peças tirando alguns bits e depois dizer que você construiu um carro do zero porque “a seta não funciona, mas no geral ele anda”
Noam Chomsky diz que existem dois tipos de IA
O primeiro tipo de pesquisa em IA é mais próximo da engenharia, como carros autônomos, tradução de idiomas e reconhecimento de objetos
O segundo tipo de pesquisa em IA busca replicar a inteligência de organismos, como humanos ou vermes, de uma forma consistente com os modelos que os cientistas cognitivos têm
Por exemplo, um sistema que adquire qualquer linguagem humana com muito pouca supervisão, como as crianças, seria desse tipo
O OpenWorm parece mais próximo do segundo tipo. Gostaria de conhecer materiais interessantes para explorar mais esse tipo 2 de IA
[0]: https://youtu.be/TAP0xk-c4mk
Olhei para isso há alguns anos e sempre esperei que houvesse alguma validade no apocalipticismo ao estilo Kurzweil
A ideia era: primeiro simular o C. elegans, depois só aumentar a escala para simular humanos também, e então viria a singularidade
Na prática, quão difícil poderia ser simular um verme tão simples? Já temos o conectoma, conhecemos todos os neurônios e conexões, então parecia que deveria ser fácil
Mas quando fui ver, fiquei chocado. Não funcionava. Era possível reproduzir parte do movimento básico, mas muitos comportamentos do verme real ainda eram um mistério. Mesmo na documentação, não parecia que as pessoas estavam perto de descobrir isso e, alguns anos depois, vi que aparentemente acabaram desistindo
Até onde eu sei, o projeto europeu superbadalado de emulação cerebral também foi encerrado em meio a suspeitas de corrupção
Não entendemos isso de forma alguma, e parece que ainda estamos muito longe. Por enquanto, acho que é melhor voltar para a ficção científica
Cada sinapse tem neurotransmissores específicos, e distância, tamanho, forma, número de receptores e a glia associada influenciam enormemente a transmissão. A distância e a espessura do axônio também afetam a força do sinal transmitido, e tudo isso é muito difícil de medir
Os neurônios também são extremamente sensíveis à intensidade e ao timing do sinal. Por exemplo, sinapses inibitórias funcionam abrindo poros na membrana celular, fazendo a carga vazar com o tempo. Se você errar um pouco essa velocidade, o comportamento da célula pode mudar bastante
O conectoma é, por assim dizer, algo mais próximo de um modelo pré-treinado absurdamente complexo, e cada neurônio tem vários pesos que descrevem não só a resposta direta ao sinal, mas também seu comportamento ao longo do tempo. Sem esses pesos, não dá para emular
Isso me lembra o primeiro episódio de Devs
https://www.imdb.com/title/tt8134186/
Há uma cena em que um engenheiro de IA mostra uma demonstração sincronizando o movimento de um nematódeo e depois prevendo seus movimentos futuros. Aliás, é uma série realmente muito boa
A ideia de extrapolar com altíssima precisão com base em informação é central na série, então vou parar por aqui
Um modelo de conectoma do cérebro da mosca-da-fruta foi publicado recentemente[1]
[1] https://hub.jhu.edu/2023/03/09/scientists-complete-first-map...
Ainda estamos longe até de provar que isso é possível
Por isso, projetos como o neurokernel [1] parecem um pouco ambiciosos demais. Ainda assim, boa sorte para eles
[1] http://neurokernel.github.io/
Fui a algo parecido com uma mini conferência do OpenWorm em Londres alguns anos atrás
Foram alguns dias falando sobre locomoção do verme. Eu não sabia nada sobre vermes nem sobre locomoção animal em geral e era um completo leigo, com apenas um interesse amador em simulação de vida, então quase não entendi nada
Mesmo assim, foi realmente fascinante, e foi muito legal conhecer pessoas tão apaixonadas por esse tema
Se você encerrar a simulação, matou o verme?
Como membro fundador do OpenWorm, há quase 10 anos emulei o conectoma e o apliquei à robótica
https://youtu.be/YWQnzylhgHc
Nesse experimento, cada neurônio era representado como um programa, e mensagens UDP eram usadas para a comunicação entre os programas de neurônios individuais. Houve vários problemas, mas o maior foi que o conectoma é muito cíclico, então ocorreu um fenômeno que chamamos no experimento de “UDP stacking”. Ou seja, as mensagens UDP de ativação chegavam mais rápido do que os programas conseguiam processar
Atualmente estou baixando o conectoma de Drosophila concluído para criar uma emulação. Estou explorando hipervetores para emular neurônios ou neurópilos, mas ainda estou refinando o conceito
Também tentei várias ideias, como matriz de adjacência, programação funcional etc. Cada função representaria uma parte do sistema nervoso do animal; no caso de C. elegans, por exemplo, seria como ter neurônios sensoriais, interneurônios e neurônios motores como três funções e programas separados
A emulação de C. elegans também já foi implementada como um único app em Python e portada para várias outras linguagens de programação, além de ter mostrado emulações claras em vários robôs. Experimentos de ablação mostraram que o sistema nervoso emulado correspondia ao sistema nervoso biológico em termos de comportamento observável
No contínuo evolutivo do sistema nervoso, em uma ponta está o cérebro do verme e na outra está o cérebro humano. Mas mesmo só com o sistema nervoso do verme já dá para ver claramente o caminho até a inteligência geral e a AGI