BYOL: Aprender sem Negativos sem Entregar Tudo ao Colapso
por Frank de Alcantara em 28/07/2026
No SimCLR, cada imagem encontra uma companheira positiva e uma multidão de negativas. Retiremos a multidão. Se pedirmos apenas que duas views da mesma imagem produzam a mesma representação, a rede pode resolver o problema atribuindo o mesmo vetor a tudo. Cães, pontes e torradeiras finalmente unidos, embora por uma geometria inútil.
Índice da Série: Representações e Modelos de Mundo
- 1. Autoencoders: o Gargalo, a Reconstrução e o Latente
- 2. Difusão Latente: Comprimir Antes de Gerar
- 3. SimCLR: Aprender por Contraste e Pagar pelos Negativos
- 4. BYOL: Aprender sem Negativos sem Entregar Tudo ao Colapso (Você está aqui)
- 5. DINO: Autodestilação e Objetos que Emergem da Atenção
- 6. MAE: Mascarar 75% da Imagem e Reconstruir o que Falta
- 7. Prever, não gerar: o template JEPA e o problema do colapso
O BYOL, de Bootstrap Your Own Latent (algo como construir a própria representação por autoalimentação), aceita o risco e remove todos os pares negativos. Duas views da mesma imagem devem concordar, mas nenhuma imagem diferente entra no denominador. O método funciona apesar da solução constante, apoiado numa arquitetura assimétrica e numa dinâmica em duas escalas. A distinção importa: observamos resistência ao colapso; não recebemos uma prova universal de que a função constante seja impossível.
1. Duas redes, três cabeçalhos
Uma view $v=t(x)$ percorre a rede online:
\[y_\theta=f_\theta(v),\qquad z_\theta=g_\theta(y_\theta),\qquad q_\theta(z_\theta).\]O encoder $f_\theta$ produz a representação, o projector $g_\theta$ leva essa representação ao espaço da tarefa pretexto e o predictor $q_\theta$ tenta alcançar o alvo.
A outra view $v’=t’(x)$ percorre a rede target:
\[y_\xi'=f_\xi(v'),\qquad z_\xi'=g_\xi(y_\xi').\]O ramo alvo não tem predictor e não recebe gradiente. Ele é atualizado por uma EMA, de exponential moving average (média móvel exponencial):
\[\xi\leftarrow \tau\xi+(1-\tau)\theta, \qquad 0\le\tau<1.\]O operador stop-gradient trata $z_\xi’$ como constante durante a diferenciação. Portanto, o gradiente altera $\theta$, mas nunca atravessa o alvo para alterar $\xi$.
2. A perda é uma regressão angular
Normalizamos predição e alvo:
\[\bar q_\theta= \frac{q_\theta(z_\theta)} {\lVert q_\theta(z_\theta)\rVert_2}, \qquad \bar z_\xi'= \frac{z_\xi'}{\lVert z_\xi'\rVert_2}.\]A perda numa direção é
\[\mathcal{L}_{\theta,\xi} =\left\lVert\bar q_\theta-\operatorname{sg}(\bar z_\xi')\right\rVert_2^2 =2-2\frac{q_\theta(z_\theta)^\top z_\xi'} {\lVert q_\theta(z_\theta)\rVert_2\lVert z_\xi'\rVert_2},\]na qual $\operatorname{sg}$ denota stop-gradient. A igualdade mostra que minimizar o erro quadrático entre vetores unitários equivale a maximizar o cosseno.
O treinamento troca as views e soma as duas direções:
\[\mathcal{L}_{BYOL} =\mathcal{L}(v,v')+\mathcal{L}(v',v).\]Não há matriz $2B\times2B$, rótulo de negativo ou fila. O custo de similaridades deixa de ser quadrático no lote.
3. Um alvo lento
Se $\tau=0{,}99$, uma contribuição antiga decai geometricamente como $\tau^k$. Uma aproximação útil para a janela efetiva é
\[N_{\text{efetivo}}\approx\frac{1}{1-\tau}.\]Assim, $\tau=0{,}99$ corresponde a cerca de 100 passos e $\tau=0{,}999$ a cerca de 1000. A aproximação não transforma a EMA numa média retangular; ela apenas oferece uma escala intuitiva de memória.
O alvo muda mais devagar do que a rede online. Em vez de perseguir simultaneamente um alvo que recebe o mesmo gradiente, o predictor tenta acompanhar uma referência amortecida pela história dos parâmetros.
Uma atualização basta para enxergarmos a diferença de escalas. Se $\xi=0{,}25$, $\theta=1{,}00$ e $\tau=0{,}99$, então
\[\xi_{\text{novo}} =0{,}99\cdot0{,}25+0{,}01\cdot1{,}00 =0{,}2575.\]O parâmetro online pode mover-se por gradiente a cada passo; o alvo percorre apenas $1\%$ da distância naquele instante. Chamar o teacher de “rede congelada” seria tão incorreto quanto chamá-lo de cópia instantânea: ele é uma memória móvel.
4. Por que não colapsa?
A resposta segura possui três partes.
Primeiro, a solução constante continua admissível para a perda de alinhamento isolada. Não há um termo explícito de variância que a proíba.
Segundo, o sistema é assimétrico. Somente a rede online tem predictor e recebe gradiente; o alvo é uma média temporal com stop-gradient. Essas escolhas mudam a dinâmica de otimização, embora não apaguem matematicamente a solução degenerada.
Terceiro, ablações ajudam a separar necessidade prática de explicação definitiva. O artigo do BYOL mostra o papel da rede alvo lenta. O SimSiam obtém bom resultado sem EMA, mantendo predictor e stop-gradient. Análises posteriores relacionam o predictor à adaptação das direções do espaço e ao efeito de otimização implícita. Nenhum desses resultados autoriza a frase curta “a EMA impede o colapso” como teorema geral.
Esse cuidado será importante no I-JEPA. Lá, a EMA reaparece, mas em conjunto com mascaramento, predição contextual e escolhas próprias de arquitetura.
5. A conta muda de lugar
Retirar negativos elimina a matriz de similaridades $O(B^2)$. Ainda processamos duas views e mantemos dois conjuntos de parâmetros. O alvo não precisa guardar ativações para backpropagation, o que reduz sua memória de treinamento em relação a uma segunda rede diferenciável, mas seus pesos continuam ocupando memória.
Para $P$ parâmetros, a atualização da EMA realiza aproximadamente $P$ multiplicações por $\tau$, $P$ multiplicações por $1-\tau$ e $P$ somas por passo. É $O(P)$ e costuma ser menor do que o custo das convoluções ou da atenção, mas não é gratuito. Em treinamento distribuído, também precisamos manter os alvos coerentes com os parâmetros online sincronizados.
6. Uma dinâmica mínima em C++23
O programa abaixo não reproduz uma rede visual e não demonstra ausência de colapso. Ele isola a regra: o peso online e o predictor descem o gradiente; o alvo apenas segue a EMA.
#include <cmath>
#include <iomanip>
#include <iostream>
int main() {
double online_weight = 1.0;
double target_weight = 0.25;
double predictor = 0.40;
constexpr double learning_rate = 0.03;
constexpr double momentum = 0.99;
constexpr int steps = 50;
for (int step = 0; step < steps; ++step) {
const double error =
predictor * online_weight - target_weight;
const double online_gradient =
2.0 * predictor * error;
const double predictor_gradient =
2.0 * online_weight * error;
online_weight -= learning_rate * online_gradient;
predictor -= learning_rate * predictor_gradient;
target_weight =
momentum * target_weight
+ (1.0 - momentum) * online_weight;
}
const double error =
predictor * online_weight - target_weight;
std::cout << std::fixed << std::setprecision(6)
<< "online=" << online_weight << '\n'
<< "target=" << target_weight << '\n'
<< "predictor=" << predictor << '\n'
<< "loss=" << error * error << '\n';
}
Observe a ordem. Atualizamos a rede online com o alvo do passo corrente e somente depois movemos o alvo. Misturar as duas atualizações altera a dinâmica simulada.
No MSVC 19.51, compilamos com cl /std:c++latest /permissive- /W4 /EHsc /utf-8 /O2 byol.cpp. Depois de 50 passos, a saída arredondada é online=1.027166, target=0.545041, predictor=0.464421 e loss=0.004624. O alvo continua atrasado, e é precisamente esse atraso que o pequeno sistema pretende tornar visível.
7. Laboratório: duas escalas de tempo
Altere $\tau$, o número de passos e a presença do predictor. O laboratório mostra um sistema escalar deliberadamente pequeno, suficiente para visualizar quem recebe gradiente e quem apenas acompanha.
8. Do vetor para uma distribuição
BYOL regressa um vetor normalizado. O próximo artigo manterá student, teacher, EMA e stop-gradient, mas transformará os vetores em distribuições. O DINO acrescentará centralização, temperaturas diferentes e múltiplos recortes. Com um Vision Transformer, seus mapas de atenção também revelarão uma propriedade que a perda nunca pediu por nome: objetos começarão a emergir.
Retirar os negativos não retira o problema do colapso. Apenas obriga a arquitetura e a dinâmica a enfrentá-lo de outra forma.
Acrônimos e Abreviações neste artigo
A seguir está a lista de todos os acrônimos e abreviações identificados no texto, organizados em ordem alfabética com o termo original em inglês e a tradução para o português:
| Acrônimo / Abreviação | Definição em Inglês | Tradução em Português |
|---|---|---|
BLAS |
Basic Linear Algebra Subprograms | Subprogramas Básicos de Álgebra Linear |
CPU / CPUs |
Central Processing Unit | Unidade Central de Processamento |
FLOPs |
Floating Point Operations | Operações de Ponto Flutuante |
FP32 |
32-bit Floating Point | Ponto Flutuante de 32 bits |
GEMM |
General Matrix Multiply | Multiplicação Geral de Matrizes |
GPU |
Graphics Processing Unit | Unidade de Processamento Gráfico |
IA |
Artificial Intelligence | Inteligência Artificial |
I-JEPA |
Image Joint-Embedding Predictive Architecture | Arquitetura Preditiva de Incorporação Conjunta de Imagem |
JEPA |
Joint-Embedding Predictive Architecture | Arquitetura Preditiva de Incorporação Conjunta |
KiB |
Kibibyte | Kibibyte |
MAE |
Masked Autoencoder | Autocodificador Mascarado |
MSE |
Mean Squared Error | Erro Quadrático Médio |
MSVC |
Microsoft Visual C++ | Microsoft Visual C++ |
PCA |
Principal Component Analysis | Análise de Componentes Principais |
SIMD |
Single Instruction, Multiple Data | Instrução Única, Múltiplos Dados |
SimCLR |
Simple Framework for Contrastive Learning of Visual Representations | Estrutura Simples para Aprendizado Contrastivo de Representações Visuais |
Referências
CHEN, X.; HE, K. Exploring Simple Siamese Representation Learning. CVPR, 2021. Disponível em: https://openaccess.thecvf.com/content/CVPR2021/html/Chen_Exploring_Simple_Siamese_Representation_Learning_CVPR_2021_paper.html. Acesso em: 28 jul. 2026.
GRILL, J.-B. et al. Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning. NeurIPS, 2020. Disponível em: https://papers.nips.cc/paper/2020/hash/f3ada80d5c4ee70142b17b8192b2958e-Abstract.html. Acesso em: 28 jul. 2026.
TIAN, Y.; GANGULI, S. Understanding Self-Supervised Learning Dynamics without Contrastive Pairs. ICML, 2021. Disponível em: https://proceedings.mlr.press/v139/tian21a.html. Acesso em: 28 jul. 2026.
Índice da Série: Representações e Modelos de Mundo
- 1. Autoencoders: o Gargalo, a Reconstrução e o Latente
- 2. Difusão Latente: Comprimir Antes de Gerar
- 3. SimCLR: Aprender por Contraste e Pagar pelos Negativos
- 4. BYOL: Aprender sem Negativos sem Entregar Tudo ao Colapso (Você está aqui)
- 5. DINO: Autodestilação e Objetos que Emergem da Atenção
- 6. MAE: Mascarar 75% da Imagem e Reconstruir o que Falta
- 7. Prever, não gerar: o template JEPA e o problema do colapso
(Updated: )