DINO: Autodestilação e Objetos que Emergem da Atenção
por Frank de Alcantara em 28/07/2026
Um professor treinado antes do aluno pode transmitir classes conhecidas. Um professor que é apenas uma cópia atrasada do próprio aluno não dispõe desse luxo: precisa produzir um alvo útil sem rótulos, sem nomes de classes e sem saber mais do que o estudante sabia há pouco. Parece uma organização escolar desenhada pelo setor financeiro. No DINO, ela aprende representações surpreendentemente boas.
Í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
- 5. DINO: Autodestilação e Objetos que Emergem da Atenção (Você está aqui)
- 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 ensina uma rede online a prever o vetor de um alvo lento. O DINO, de self-DIstillation with NO labels (autodestilação sem rótulos), mantém a família student-teacher, a EMA e o stop-gradient, mas muda o objeto previsto: o student aprende uma distribuição produzida pelo teacher.
Quando o backbone é um ViT, de Vision Transformer, uma segunda descoberta aparece. Os mapas de autoatenção do token de classe delimitam objetos sem que o treinamento receba máscaras de segmentação. Isso é uma propriedade empírica emergente, não uma prova de que cada cabeça aprendeu uma explicação causal da cena.
1. O professor não vem pronto
O student possui parâmetros $\theta_s$. O teacher possui parâmetros $\theta_t$ atualizados por EMA:
\[\theta_t\leftarrow\lambda\theta_t+(1-\lambda)\theta_s.\]Não há professor pré-treinado nem rótulos externos. O próprio histórico amortecido do student gera os alvos. Por isso o método é chamado de autodestilação.
Para logits $g_s(x)$ e $g_t(x)$ de dimensão $K$, as distribuições são
\[P_s^{(i)}(x)= \frac{\exp(g_s^{(i)}(x)/\tau_s)} {\sum_{k=1}^{K}\exp(g_s^{(k)}(x)/\tau_s)}\]e
\[P_t^{(i)}(x)= \frac{\exp((g_t^{(i)}(x)-c^{(i)})/\tau_t)} {\sum_{k=1}^{K}\exp((g_t^{(k)}(x)-c^{(k)})/\tau_t)}.\]$c$ é um centro calculado como média móvel dos logits do teacher. $\tau_s$ e $\tau_t$ são temperaturas, geralmente com o professor mais frio.
2. Entropia cruzada entre views
Para uma view $x_1$ observada pelo teacher e outra $x_2$ observada pelo student, a perda é
\[H(P_t(x_1),P_s(x_2)) =-\sum_{i=1}^{K}P_t^{(i)}(x_1)\log P_s^{(i)}(x_2).\]O alvo $P_t$ recebe stop-gradient. O treinamento soma pares de views distintas e também troca seus papéis quando ambas são globais.
Diferentemente de uma classificação supervisionada, os $K$ índices não chegam com nomes como “cão” ou “automóvel”. São coordenadas do cabeçalho de projeção. O que importa é que o teacher produza alvos informativos e que o student os preserve entre recortes da mesma imagem.
3. Aguçar e centralizar combatem colapsos diferentes
Temperatura baixa aguça uma distribuição. Se um logit supera os demais, dividir por $\tau_t<1$ amplia a diferença antes da softmax. Isso evita o colapso uniforme no qual todas as dimensões recebem probabilidades semelhantes e o alvo carrega pouca informação.
A centralização subtrai a média móvel $c$ antes da temperatura. Ela dificulta que uma dimensão mantenha vantagem global em todos os lotes. Sem esse contrapeso, o sistema pode concentrar todas as imagens na mesma coordenada dominante.
Os mecanismos tensionam a distribuição em direções distintas:
- o sharpening reduz a entropia de cada alvo;
- o centering redistribui a preferência agregada entre dimensões.
O equilíbrio é dinâmico. Frio demais pode produzir alvos quase binários e gradientes sensíveis; quente demais volta a aproximar o alvo da uniformidade.
4. Multi-crop: consistência local e global
O teacher recebe duas global views, recortes grandes que conservam boa parte da cena. O student recebe essas duas e várias local views menores. Cada saída do teacher deve ser prevista a partir de outras views do student.
Essa assimetria tem duas consequências. A tarefa obriga um recorte local a concordar com a identidade visual capturada globalmente. Ao mesmo tempo, o ramo alvo evita o custo de processar todos os pequenos recortes, enquanto o student paga pelas visualizações adicionais.
O número de pares cresce com os recortes, mas cada par compara distribuições de dimensão $K$. Não reaparece a matriz de negativos $O(B^2)$ do SimCLR.
5. O objeto nos mapas de atenção
Num ViT, a imagem é dividida em patches e recebe um token de classe. A autoatenção desse token sobre os patches pode ser reorganizada como mapa espacial. No DINO, certas cabeças passam a destacar primeiro plano e contornos de objetos.
O artigo original mede essa propriedade com segmentação produzida diretamente pelos mapas e mostra bons resultados de $k$-NN e linear probing. A conclusão correta é que a tarefa autossupervisionada induziu características espaciais e semânticas úteis. A conclusão excessiva seria tratar qualquer mapa de atenção como explicação fiel da decisão do modelo.
Para a mecânica de consultas, chaves, valores e atenção, consulte Prestando Atenção. Aqui basta lembrar que a atenção é um mecanismo computacional; seu mapa não se torna automaticamente uma explicação causal da decisão.
6. BYOL e DINO lado a lado
| Aspecto | BYOL | DINO |
|---|---|---|
| Alvo | vetor normalizado | distribuição sobre $K$ dimensões |
| Perda | erro quadrático, equivalente ao cosseno | entropia cruzada |
| Assimetria | predictor somente no ramo online | temperaturas e centro no teacher |
| Alvo lento | EMA | EMA |
| Negativos | não | não |
| Views | duas transformações | duas globais e várias locais |
Os dois métodos compartilham uma intuição, mas não são a mesma função com nomes diferentes. Temperatura e centralização pertencem à geometria probabilística do DINO.
7. Softmax, centro e entropia em C++23
O programa calcula a distribuição centralizada do teacher e sua entropia. A implementação subtrai o maior logit escalado para evitar overflow.
#include <algorithm>
#include <array>
#include <cmath>
#include <iomanip>
#include <iostream>
#include <span>
#include <stdexcept>
template <std::size_t N>
std::array<double, N> softmax_centered(
const std::array<double, N>& logits,
const std::array<double, N>& center,
const double temperature) {
if (temperature <= 0.0) {
throw std::invalid_argument("a temperatura deve ser positiva");
}
std::array<double, N> scaled{};
for (std::size_t i = 0; i < N; ++i) {
scaled[i] = (logits[i] - center[i]) / temperature;
}
const double maximum =
*std::max_element(scaled.begin(), scaled.end());
double sum = 0.0;
for (double& value : scaled) {
value = std::exp(value - maximum);
sum += value;
}
for (double& value : scaled) {
value /= sum;
}
return scaled;
}
double entropy(const std::span<const double> probabilities) {
double result = 0.0;
for (const double probability : probabilities) {
if (probability > 0.0) {
result -= probability * std::log(probability);
}
}
return result;
}
int main() {
const std::array logits{2.0, 1.0, 0.0};
const std::array center{0.5, 0.0, 0.0};
const std::array temperatures{0.50, 0.10, 0.07};
std::cout << std::fixed << std::setprecision(9);
for (const double temperature : temperatures) {
const auto probabilities =
softmax_centered(logits, center, temperature);
std::cout << "tau=" << temperature << " p=[";
for (std::size_t i = 0; i < probabilities.size(); ++i) {
std::cout << probabilities[i]
<< (i + 1 == probabilities.size() ? "] " : ", ");
}
std::cout << "entropy=" << entropy(probabilities) << '\n';
}
}
Em uma implementação real, o centro é um vetor sincronizado entre dispositivos e atualizado com a média dos logits do teacher. Reduzir somente a média local de cada GPU mudaria o alvo conforme a partição do lote.
No MSVC 19.51, compilamos com cl /std:c++latest /permissive- /W4 /EHsc /utf-8 /O2 dino.cpp. A entropia cai de aproximadamente $0{,}714$ com $\tau=0{,}50$ para $0{,}040$ com $\tau=0{,}10$ e $0{,}006$ com $\tau=0{,}07$. O centro permanece fixo no experimento; portanto, a variação isola o efeito de aguçamento da temperatura.
8. Laboratório: temperatura e centro
Mova separadamente a temperatura do teacher, a temperatura do student e o primeiro componente do centro. Compare a entropia do alvo e a entropia cruzada. O laboratório mostra por que “deixar o professor confiante” e “impedir uma dimensão sempre dominante” são operações diferentes.
9. Da destilação ao mascaramento
BYOL e DINO comparam views aumentadas. O próximo artigo importará da linguagem uma escolha diferente de tarefa: ocultar grande parte da entrada e reconstruí-la. O MAE processará somente os patches visíveis no encoder, uma decisão que muda simultaneamente a tarefa e a conta de computação.
No DINO, o professor não nomeia o objeto. Ainda assim, a geometria aprendida pode fazê-lo aparecer.
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
CARON, M. et al. Emerging Properties in Self-Supervised Vision Transformers. ICCV, 2021. Disponível em: https://openaccess.thecvf.com/content/ICCV2021/html/Caron_Emerging_Properties_in_Self-Supervised_Vision_Transformers_ICCV_2021_paper.html. Acesso em: 28 jul. 2026.
DOSOVITSKIY, A. et al. An Image Is Worth 16x16 Words: Transformers for Image Recognition at Scale. ICLR, 2021. Disponível em: https://openreview.net/forum?id=YicbFdNTTy. 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
- 5. DINO: Autodestilação e Objetos que Emergem da Atenção (Você está aqui)
- 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: )