Francesinha Reversa
O que é, na prática
A francesinha reversa é uma técnica de reconstrução de dados de entrada a partir da saída de um modelo. Em vez de treinar para prever um rótulo, você usa o gradiente do modelo para iterativamente ajustar um tensor randômico até que a ativação final se aproxime de um alvo específico. O resultado não é perfeito, mas costuma ser suficiente para extrapolação, análise de decisão ou geração de amostras adversariais. Eu comecei a usar isso em 2019 porque precisava entender por que um classificador de tomografia estava confundindo certos artefatos de metal com lesões. Em vez de coletar mais dados, peguei os mapas de ativação e rodei a inversão. O processo leva cerca de 20 minutos por amostra num GPU dedicada. Se tentar na CPU, esqueça.
Como funciona a francesinha reversa
Você começa com um ruído branco como entrada inicial. O modelo é percorrido normalmente (forward pass) para gerar a saída-alvo. Depois, o gradiente da perda em relação à entrada é calculado via backward pass. Esse gradiente é usado para atualizar a entrada com um passo de descendência de gradiente, geralmente com taxa de aprendizado entre 0.01 e 0.1, dependendo do número de parâmetros que o modelo expõe. O grande detalhe que ninguém explica direito é que a regularização faz tudo ou nada. Sem regularização, o tensor de entrada converge para algo que maximiza a loss mas fica visualmente irreconhecível — ruído puro com alta frequência. Com regularização L2 forte, fica suave demais e perde detalhes importantes. O sweet spot fica entre 1e-4 e 1e-3 para a weight decay na entrada. Outro ponto: o step size importa mais do que o número de iterações. Eu já vi gente rodar 5000 iterações com learning rate alto e o resultado ser pior do que 200 iterações bem calibradas. A perda oscila violentamente depois do pico de convergência e você perde informação útil.
No meu caso, com o modelo de tomografia, eu aplicava uma máscara de Fourier no espaço de frequência para eliminar componentes acima de 80% da banda. Isso reduzia o ruído de alta frequência sem destruir a estrutura anatômica relevante. Funcionou porque meu modelo tinha sido treinado com dados que naturalmente ocupavam uma faixa limitada de frequência.

Pegadinhas e limites reais
A francesinha reversa não funciona bem quando o modelo tem muitas camadas de pooling ou downsampling agressivo. Cada operação que reduz resolução é informação que se perde de forma irreversível. Você consegue reconstruir a forma geral mas não os detalhes finos. Se o seu modelo usa stride 2 em 6 camadas consecutivas, está perdendo 2^6 = 64 vezes a resolução original. Nada de magic bullet aqui. Também há o problema de não unicidade. Duas entradas completamente diferentes podem mapear para a mesma saída. A técnica te dá uma delas, não a correta. Isso é crítico quando você está tentando reconstruir dados sensíveis ou quando a aplicação exige fidelidade ao dado original. Se o modelo for muito grande e você tiver memória limitada, o forward e backward pass juntos podem estourar o GPU. Minhalma foi de 12GB para 24GB quando passei a usar batch size maior na reconstrução. Uma solução prática é usar gradient checkpointing, que troca computação por memória. Aumenta o tempo em cerca de 40% mas permite processar batches maiores.
Para quem quer implementar rápido, o código base é simples. Usa PyTorch, define um tensor autograd, roda o modelo, calcula a MSE contra o alvo e chama backward. Mas os ajustes finos é que fazem diferença. Learning rate decay, regularização adaptativa por camada, e early stopping baseado na distância EMAD (Earth Mover's Distance) entre as distribuições de frequência da saída gerada e do alvo. Se precisar de um ponto de partida, dá para adaptar scripts abertos de DeepDream ou de inversion attacks de papers como "Inferring Conditional Distributions from Representations" (Taigman et al., 2017). O código original deles é em MATLAB, mas há reimplantações em PyTorch no GitHub. Procure por "gradient ascent input image" que encontra os forks mais recentes.
Galeria
-
Francesinha Reversa: +53 Ideias Magníficas e TUDO Sobre! -
Francesinha reversa: 50 ideias + tutoriais para fazer a sua -
Francesinha Reversa: +53 Ideias Magníficas e TUDO Sobre! -
Francesinha Reversa: +53 Ideias Magníficas e TUDO Sobre!