Neural Lab: investigando se uma IA pode aprender com poucos exemplos e generalizar de verdade

Estou desenvolvendo uma pesquisa experimental de inteligência artificial chamada Neural Lab — nome fictício usado para identificar o projeto durante esta investigação.

A ideia surgiu de uma pergunta:

E se fosse possível desenvolver uma IA que aprendesse com poucos exemplos, generalizasse para situações que nunca viu e funcionasse localmente, sem depender de grandes datacenters?

Não estou tentando simplesmente pegar um modelo existente e quantizá-lo para reduzir seu tamanho. Quero investigar se diferentes arquiteturas e mecanismos de aprendizagem podem chegar a resultados melhores sob restrições severas de dados, memória e processamento.

Neste artigo, quero apresentar o objetivo da pesquisa, as hipóteses que estou investigando e o que os experimentos já revelaram.

1. O objetivo central

O Neural Lab tem três objetivos principais:

  • Aprender com poucos exemplos: reduzir a quantidade de dados necessários para adquirir uma capacidade.
  • Generalizar para situações inéditas: resolver problemas que não apareceram durante o treinamento, em vez de apenas reproduzir exemplos conhecidos.
  • Executar com recursos limitados: investigar mecanismos que permitam executar o modelo localmente, inclusive em computadores modestos.

O objetivo final é exigente: atingir 100% de exatidão nos conjuntos de treinamento e de avaliação fora da distribuição (out-of-distribution, ou OOD), com resultados reproduzíveis em múltiplas seeds.

Isso não significa que o projeto já tenha alcançado esses resultados. Pelo contrário: eles definem o critério pelo qual as hipóteses serão avaliadas.

Uma arquitetura que melhora de 40% para 60% pode fornecer uma pista importante, mas não é considerada a solução. Quero descobrir quais mecanismos conseguem romper as limitações encontradas, e não apenas acumular melhorias parciais.

2. Por que investigar novas arquiteturas?

Modelos de linguagem atuais conseguem realizar tarefas impressionantes, mas seu treinamento pode exigir grandes volumes de dados e recursos computacionais consideráveis.

Uma pergunta que me interessa é se parte dessa capacidade pode ser obtida por meio de mecanismos de aprendizagem diferentes, representações mais estruturadas ou formas alternativas de utilizar a memória.

Não parto da premissa de que uma arquitetura nova será necessariamente superior. A hipótese precisa sobreviver aos experimentos.

Por isso, procuro manter uma separação clara entre:

  • O que foi observado nos testes.
  • O que os resultados sugerem.
  • O que ainda é apenas uma hipótese.

Um resultado negativo não demonstra automaticamente que toda uma linha de pesquisa está errada. Ele mostra que a configuração testada não resolveu o problema.

3. O que estou investigando na prática?

Uma das linhas experimentais do Neural Lab envolve uma representação universal baseada em grafos.

A ideia é investigar se frases, código e expressões matemáticas podem ser representados por uma estrutura comum, sem criar uma arquitetura específica para cada domínio.

Por exemplo, considere:

  • Linguagem natural: Ana mora em Fortaleza.
  • Código: print("Olá, mundo!")
  • Matemática: x = 2 + 3

Apesar das diferenças, todos esses exemplos são sequências de elementos que possuem identidade, ordem e relações estruturais.

Um grafo pode representar esses elementos e suas conexões. A hipótese é que essa representação possa ajudar o modelo a aprender estruturas reutilizáveis, em vez de depender exclusivamente da memorização de sequências completas.

Mas existe uma distinção fundamental: conseguir reconstruir uma sequência a partir de um grafo não significa que uma rede neural aprendeu a generalizar usando esse grafo.

É justamente essa diferença que os experimentos procuram medir.

4. Os primeiros resultados e o que aprendi com eles

Nos experimentos mais recentes, encontrei um bug que fazia o grafo fornecer índices de átomos onde o mecanismo de cópia esperava IDs do vocabulário. Corrigi o problema, preservei os artefatos anteriores e executei novamente os testes.

Na Etapa 20, com seed 42 e 200 épocas, os resultados corrigidos foram:

Condição

TRAIN

Modelo sem grafo

38/58

Modelo com grafo universal

43/58

Grafo sem relações de ordem

40/58

O grafo universal apresentou cinco acertos adicionais em relação à condição sem grafo. Remover as relações de ordem também reduziu o resultado, de 43 para 40 acertos.

Esses números são um sinal inicial de que a representação pode contribuir para a tarefa, mas ainda não demonstram robustez nem generalização OOD. Nessa etapa, o resultado OOD foi de 0/15 nas três condições.

A descoberta mais informativa veio na Etapa 21, quando investiguei o mecanismo responsável por selecionar e percorrer os nós.

Política de geração

TRAIN

OOD

Estrutural

Geração livre (I0)

51/58

0/15

0/6

Ponteiro oracle (Ipt)

57/58

5/15

5/6

Ponteiro deslocado (Ips)

0/58

0/15

0/6

Gate fechado (Ig0)

0/58

0/15

0/6

Gate fechado sem grafo (Ig0n)

0/58

0/15

0/6

O ponteiro oracle fornece ao mecanismo a trajetória correta pelos nós. Com essa informação auxiliar, o resultado passou de 51 para 57 acertos no TRAIN, de zero para cinco no OOD e de zero para cinco nos seis casos estruturais.

Além disso, 20 das 21 sequências avaliadas com o ponteiro oracle tiveram o corpo completo correto, com 693 de 706 tokens corretos.

O problema predominante observado foi a terminação: em alguns exemplos, o modelo continuou repetindo tokens depois de completar o conteúdo.

É importante interpretar esse resultado corretamente. O ponteiro oracle não é uma solução utilizável por si só, porque fornece informação que o modelo normal precisa aprender. Seu valor experimental está em indicar que, quando a trajetória correta é fornecida, o mecanismo consegue produzir o conteúdo e a ordem quase integralmente.

Isso fortalece a hipótese de que aprender a selecionar e percorrer os nós é um gargalo importante da arquitetura atual. Ainda é uma conclusão preliminar, baseada em uma seed, que precisa ser confirmada.

5. Como estou conduzindo os experimentos?

Um dos aprendizados mais importantes dessa pesquisa foi perceber que não basta executar testes e olhar para a porcentagem final de acertos.

Agora, procuro registrar também o processo que levou ao resultado:

  • Prompt original e resposta esperada.
  • Resposta gerada e status de cada caso.
  • Primeira divergência entre a resposta esperada e a produzida.
  • Candidatos considerados pelo mecanismo de seleção.
  • Probabilidades e sinais internos relevantes.
  • Diferenças entre geração livre e condições controladas.

Cada experimento também precisa produzir um transcript em Markdown e dados estruturados em JSON, permitindo auditar o que realmente aconteceu.

O benchmark original de 73 casos permanece congelado para comparação entre versões. Experimentos auxiliares podem ajudar a estudar mecanismos específicos, mas não substituem a avaliação final.

Também procuro mudar uma variável por vez. Quando várias hipóteses são alteradas simultaneamente, fica muito mais difícil identificar qual mudança produziu o resultado.

6. O que vem pela frente?

A próxima prioridade é investigar se o modelo consegue aprender o percurso que, até agora, precisou receber do ponteiro oracle.

Pretendo separar três problemas:

  1. Seleção: identificar o nó correto.
  2. Ordenação: avançar pelos nós na sequência adequada.
  3. Terminação: reconhecer quando a resposta está completa.

A intenção é testar intervenções específicas e observar se elas produzem as mudanças previstas nos rastros internos, em vez de modificar a arquitetura por tentativa e erro.

Depois, os mecanismos que demonstrarem potencial precisarão ser avaliados em múltiplas seeds, em combinações estruturais inéditas e no benchmark original completo.

O critério final não muda: exatidão integral, generalização e resultados reproduzíveis, sob as restrições de recursos estabelecidas.

7. Por que estou compartilhando a pesquisa?

Quero documentar o processo de investigação, inclusive os erros, os bugs encontrados e as hipóteses que não funcionam.

Construir uma arquitetura nova é apenas parte do desafio. A outra parte é descobrir, com experimentos controlados, por que ela funciona ou falha.

O Neural Lab ainda não atingiu seu objetivo final. Os resultados atuais são pistas sobre mecanismos específicos, não evidência de que o problema esteja resolvido.

Mesmo assim, cada experimento bem documentado ajuda a restringir o espaço de hipóteses e a formular testes mais precisos.

A pergunta que orienta o projeto continua sendo: até onde podemos chegar em aprendizagem e generalização com poucos dados e recursos computacionais limitados?

Source

8 views·1 share