FlyDoom Fourier: uma mosca remodelando o próprio ambiente 3D
· 5 min de leitura · atualizado
No FlyDoom original, a camada descendente do MaleCNS termina em comandos motores que movem a mosca.
Neste experimento, trocamos a pergunta:
e se a saída motora da mosca não movesse apenas o corpo, mas deformasse o próprio espaço em que ela está?
O demonstrador abaixo fecha o loop em duas direções. A mosca recebe uma visão egocêntrica da arena e uma aferência artificial de erro morfológico que informa em quais componentes espectrais o shape atual está desajustado. Na saída, os 1.314 neurônios descendentes formam um espaço latente de controle. Esse espaço pode ser interpolado para até 4.096 atuadores Fourier. Separadamente, o usuário define um teto para a resolução da grid e um meta-atuador descendente escolhe a resolução efetiva durante a tarefa. Assim, quantidade de atuadores, resolução física e complexidade do target viram variáveis experimentais independentes.
O loop
arena 3D deformável
↓
câmera egocêntrica / retina de 32 colunas
+
erro morfológico espectral
↓
ingresso sensorial artificial no MaleCNS
↓
recorrência do conectoma (165.122 neurônios)
↓
1.314 neurônios descendentes
↓
1.314 controles latentes
↓
decoder / interpolação espectral
↓
N atuadores Fourier (16–4.096)
+
meta-atuador de resolução
↓
grid efetiva (16×16 até o teto definido pelo usuário)
↓
novo shape da arena
↓
similaridade com o shape-alvo
↓
reward
O conectoma continua congelado. Não estamos treinando os pesos do MaleCNS. Os DNs funcionam como controles latentes. Um decoder contínuo projeta esse espaço para os atuadores Fourier, inclusive quando há mais atuadores do que DNs. Um controle descendente adicional regula a resolução efetiva da grid dentro do teto escolhido pelo usuário. Os oito buckets continuam existindo apenas como resumo visual.
Atuadores, grid e carga de controle
Os atuadores Fourier e a resolução da grid são parâmetros diferentes.
atuadores Fourier: quantos graus de liberdade espectrais podem ser comandados;teto da grid: a maior resolução física permitida para a superfície;grid efetiva: a resolução que o meta-atuador descendente escolhe naquele momento;complexidade: quanta energia o target coloca em frequências espaciais altas.
Não existe um tradeoff obrigatório entre uma grid fina e muitos atuadores. Os dois podem aumentar juntos. O que tende a ficar mais difícil é a coordenação: os mesmos 1.314 DNs precisam controlar um espaço de atuação cada vez maior.
A interface mostra essa pressão como control load:
control load = número de atuadores Fourier / 1.314 DNs
Quando esse valor ultrapassa 1×, o decoder está expandindo um espaço latente menor para mais graus de liberdade físicos. Isso permite testar diretamente se a capacidade de controle se degrada e em que ritmo.
Há ainda uma segunda pergunta: para uma dada tarefa e um dado nível de controle, qual resolução física vale a pena manter? A grid efetiva também é uma ação. Assim, a mosca pode aprender que certas tarefas pedem uma superfície mais fina e outras não.
O experimento passa a procurar uma superfície de capacidade:
atuadores × teto da grid × complexidade do target
↓
desempenho + grid efetiva escolhida
Isso permite estimar uma resolução ótima por nível de controle e por tarefa, em vez de fixar arbitrariamente a malha.
O alvo e a recompensa
O demo inclui targets simples e complexos: cratera, sela, crista, ilhas, labirinto, símbolo, montanhas, espectro aleatório e um alvo adversarial multiescala. O botão “Novo target aleatório” produz outro espectro e o controle de complexidade altera a presença de frequências espaciais mais altas.
A tela mostra ao mesmo tempo:
- a superfície atual em azul;
- o shape-alvo como wireframe violeta;
- a retina egocêntrica enviada ao MaleCNS;
- oito resumos visuais da camada descendente;
- uma amostra dos coeficientes atuais e seus valores-alvo;
- a magnitude do mismatch aferido;
- número de atuadores Fourier;
- teto e resolução efetiva da grid;
- control load (
atuadores / 1.314); - valor do meta-atuador de resolução;
- similaridade, melhor similaridade, reward e número de acertos.
O reward é deliberadamente simples: uma função contínua da distância entre os vetores de coeficientes, com bônus ao ultrapassar 97% de similaridade. Isso deixa o processo observável no navegador e evita esconder a função objetivo.
O que vem do MaleCNS de verdade
O demo reutiliza diretamente os mesmos assets do FlyDoom:
/flydoom/malecns_l3_compact.mcns/flydoom/malecns_circuit.json
A recorrência é executada no navegador em um Web Worker. A retina é renderizada de uma câmera colocada na cabeça da mosca, não da câmera do espectador. Além disso, uma amostra compacta do erro espectral target - current é transformada em um padrão oponente de aferência e injetada no ingresso sensorial antes da recorrência. Isso dá ao sistema uma maneira explícita de sentir que está desajustado.
Esse canal de erro é deliberadamente artificial: não afirmamos que a drosófila biológica tenha um sensor de Fourier. Ele representa o sinal de tarefa que, em um corpo real, viria de propriocepção, equilíbrio, visão ou outra aferência relevante.
Depois de cada step, o Worker devolve os 1.314 DNs individualmente ao readout. Os oito buckets permanecem somente para a visualização da atividade descendente.
A parte treinável
Os 1.314 DNs alimentam controles latentes com ganho e bias ajustáveis. Quando existem mais atuadores do que DNs, a ação é expandida por interpolação suave para a base Fourier ativa. Um dos controles latentes também funciona como meta-atuador de resolução, escolhendo a grid efetiva dentro do teto permitido pelo usuário.
A exploração acontece no espaço latente. O reward mantém uma baseline móvel e modula ganho/bias dos controles descendentes: perturbações que precedem melhora recebem crédito; perturbações que precedem piora recebem crédito negativo.
Essa separação é importante:
MaleCNS recorrente = fixo
erro → ingresso sensorial = interface artificial
1.314 DN → 1.314 latentes = adaptável
latentes → N Fourier = decoder/interpolação
latente → resolução efetiva = meta-atuador
N = 16–4.096 nesta demo
teto da grid = 16×16–128×128
arena + reward = ambiente artificial
Portanto, este demo não diz que uma mosca biológica conhece séries de Fourier ou sabe remodelar superfícies. Ele testa uma pergunta arquitetural mais forte: qual fronteira de complexidade espacial um estado descendente de 1.314 dimensões consegue controlar quando variamos separadamente os atuadores, a resolução física e a dificuldade da tarefa — e qual resolução a própria política escolhe usar?
Próximo experimento
A versão realmente interessante é comparar três controladores sob as mesmas condições:
- MaleCNS congelado;
- reservoir aleatório com o mesmo número de canais efetivos;
- uma rede pequena treinável com orçamento de parâmetros equivalente.
Mesmos seeds, mesmos shapes, mesmo número de steps, mesmo adapter e mesma função de reward.
A pergunta útil deixa de ser “a mosca conseguiu?” e passa a ser:
há alguma vantagem mensurável em usar a dinâmica recorrente do conectoma como estado intermediário para controlar transformações geométricas?
Você também pode gostar
Como rodamos Doom no conectoma cerebral de uma mosca (em tempo real e a 300 FPS)
Comprimimos os 165.122 neurônios do MaleCNS de 37MB para 4.98MB via FlatBuffers e 4-bit LUT para caber no cache L3, e co…
FlyGenesis: uma mosca criando corpos para resolver mundos físicos
Reutilizamos o mesmo conectoma MaleCNS compactado do FlyDoom e o colocamos dentro de um loop de evolução morfológica: co…
FlyTTS: treinando o conectoma de uma mosca para gerar waveform direto no navegador
Um loop contínuo no browser conecta texto e a própria saída de áudio ao MaleCNS congelado e treina um readout online par…