MAE: Mascarar 75% da Imagem e Reconstruir o que Falta
por Frank de Alcantara em 28/07/2026
Esconder $15\%$ dos tokens já basta para dar trabalho ao BERT. em uma imagem natural, esconder $15\%$ dos patches pode deixar informação demais: textura, cor e contornos vizinhos denunciam facilmente o que falta. O MAE, de Masked Autoencoder (autoencoder mascarado), responde com uma medida pouco tímida. Esconde $75\%$ da imagem e entrega ao encoder apenas o quarto restante.
Índice da Série: Representações e Modelos de Mundo
- 1. Representações e Modelos de Mundo: o Mapa da Série
- 2. Autoencoders: o Gargalo, a Reconstrução e o Latente
- 4. Difusão Latente: Comprimir Antes de Gerar
- 5. SimCLR: Aprender por Contraste e Pagar pelos Negativos
- 6. BYOL: Aprender sem Negativos sem Entregar Tudo ao Colapso
- 7. DINO: Autodestilação e Objetos que Emergem da Atenção
- 8. MAE: Mascarar 75% da Imagem e Reconstruir o que Falta (Você está aqui)
- 9. Prever, não gerar: o template JEPA e o problema do colapso
Antes de atravessar a ponte entre modalidades, vale ler Masked Language Modeling: Esconder Tokens para Aprender Contexto e BERT: O Encoder que Lê dos Dois Lados. Eles separam o objetivo MLM da arquitetura BERT. Aqui faremos a mesma distinção entre mascaramento e modelo. Palavras são símbolos discretos e densos em significado; pixels vizinhos carregam muita redundância. A taxa de $75\%$ não é uma excentricidade decorativa. É o que impede a tarefa visual de virar preenchimento local com diploma de pós-graduação.
1. Da imagem para 196 patches
Considere uma imagem de $224\times224$ pixels dividida em patches de $16\times16$. Cada lado contém
\[\frac{224}{16}=14\]posições. Chamaremos de $N$ o número total de patches:
\[N=14^2=196\]patches. Com taxa de máscara $r=0{,}75$, chamaremos de $N_m$ o número de patches ocultos e de $N_v$ o número dos visíveis. Sorteamos
\[N_m=0{,}75\cdot196=147\]patches ocultos. Restam
\[N_v=196-147=49\]visíveis.
O sorteio é feito por imagem. Uma permutação aleatória dos índices separa visíveis e mascarados, preservando índices capazes de restaurar a ordem espacial mais tarde.
1.1 A genealogia do mascaramento
O MAE pertence à família dos denoising autoencoders, mas sua tarefa tem ancestrais mais específicos. Taylor propôs em 1953 o procedimento Cloze, no qual palavras removidas de um texto são recuperadas pelo contexto. O BERT transformou essa ideia em masked language modeling e mostrou que prever unidades ocultas podia pré-treinar um Transformer bidirecional. Na visão, os Context Encoders, de Pathak e colaboradores, já aprendiam em 2016 preenchendo regiões ausentes. O ViT tornou imagens compatíveis com o vocabulário de sequências de tokens. He e colaboradores reuniram essas linhas em 2022 e acrescentaram a decisão computacional central: remover os patches ocultos antes do encoder pesado.
A transformação de imagem em sequência também merece uma equação. Um patch RGB de lado $P$ e $C$ canais contém $P^2C$ escalares. Achatado, ele é o vetor $p_i\in\mathbb{R}^{P^2C}$ da posição $i$. Chamaremos de $d$ o número de coordenadas do token, de $W_e$ a matriz de pesos aprendidos e de $b_e$ o viés da projeção. Então,
\[e_i=p_iW_e+b_e, \qquad W_e\in\mathbb{R}^{P^2C\times d},\]produz um token $e_i\in\mathbb{R}^{d}$. Para $P=16$, $C=3$ e $d=768$, a matriz possui
\[16^2\cdot3\cdot768=589\,824\]pesos. A projeção não “descobre patches”; a grade já foi escolhida. Ela aprende como converter os $768$ números de cada bloco RGB em $768$ coordenadas do modelo.
1.2 Exercícios de lápis e papel
1. Calcule o número de patches de uma imagem $384\times384$ com $P=16$.
Solução: Cada eixo contém
\[\frac{384}{16}=24\]patches. Portanto,
\[N=24^2=576.\]2. Para $P=8$, $C=3$ e $d=256$, determine o formato e o número de pesos de $W_e$.
Solução: Cada patch achatado possui
\[P^2C=8^2\cdot3=192\]coordenadas. Logo,
\[W_e\in\mathbb{R}^{192\times256}\]e o número de pesos é
\[192\cdot256=49\,152.\]3. Uma taxa de máscara de $60\%$ é aplicada a $N=100$ patches. Calcule $N_m$ e $N_v$.
Solução: O número de patches mascarados é
\[N_m=0{,}60\cdot100=60.\]Restam
\[N_v=100-60=40\]patches visíveis.
4. Para $N=196$ e $r=0{,}8$, explique como arredondar $rN$ altera ligeiramente a taxa efetiva e calcule as duas opções inteiras vizinhas.
Solução: O número ideal seria
\[rN=0{,}8\cdot196=156{,}8,\]que não é inteiro. Arredondar para baixo produz $N_m=156$ e taxa efetiva
\[\frac{156}{196}\approx79{,}59\%.\]Arredondar para cima produz $N_m=157$ e
\[\frac{157}{196}\approx80{,}10\%.\]Nenhuma das duas escolhas realiza exatamente $80\%$; o arredondamento para $157$ é o mais próximo.
5. Compare o alvo de um procedimento Cloze textual com o alvo do MAE em termos de variável discreta e vetor contínuo.
Solução: No procedimento Cloze, o alvo é uma unidade textual discreta escolhida de um vocabulário, como uma palavra ou um token. No MAE, o alvo de cada posição é um vetor contínuo com $P^2C$ valores de pixels. O primeiro problema é uma classificação sobre símbolos; o segundo, uma regressão sobre coordenadas visuais.
2. A assimetria que economiza computação
O encoder ViT recebe somente os 49 patches visíveis, acompanhados de suas posições. Os 147 mask tokens não atravessam o encoder.
Depois, um decoder menor recebe:
- as 49 representações produzidas pelo encoder;
- 147 mask tokens aprendíveis;
- embeddings posicionais para restaurar as 196 posições.
O decoder prevê os pixels de cada patch. Seja $\mathcal M$ o conjunto de índices mascarados, $x_i$ o vetor de pixels original do patch $i$ e $\hat x_i$ sua reconstrução. A perda é calculada somente nessas posições:
\[\mathcal{L}_{MAE} =\frac{1}{N_m} \sum_{i\in\mathcal{M}} \left\lVert x_i-\hat{x}_i\right\rVert_2^2.\]O artigo também normaliza opcionalmente os pixels de cada patch pela média e pelo desvio padrão locais antes da reconstrução. Essa escolha altera o alvo: reduz a pressão para reproduzir brilho e contraste absolutos do patch.
A Figura 1 reúne a assimetria que torna o MAE eficiente: os 147 patches ocultos não entram no encoder pesado, mas reaparecem como mask tokens antes do decoder leve reconstruir a sequência completa.
Figura 1: Com 75% de mascaramento em uma grade de 196 *patches*, o *encoder* processa somente 49 *tokens*; o *decoder* recebe novamente 196 posições e a perda é calculada apenas nos 147 *patches* ocultos.
2.1 Remover, codificar e restaurar a ordem
Se $\pi$ é uma permutação aleatória de ${0,\ldots,N-1}$, escolhemos como visíveis os primeiros $N_v$ índices,
\[\mathcal{V}=\{\pi_0,\ldots,\pi_{N_v-1}\},\]e como mascarados os restantes. O encoder recebe os tokens $e_i+p_i^{\mathrm{pos}}$ apenas para $i\in\mathcal{V}$, nos quais $p_i^{\mathrm{pos}}$ é o embedding posicional da posição original. Assim, remover elementos da sequência não apaga onde eles estavam na grade.
O decoder recebe as representações visíveis projetadas para sua dimensão e um mesmo mask token aprendível repetido $N_m$ vezes. Uma permutação inversa restaura a ordem espacial. O que distingue duas posições mascaradas não é o conteúdo inicial do mask token, que é compartilhado, mas seu embedding posicional e o contexto recebido dos visíveis.
A normalização opcional de um patch $x_i\in\mathbb{R}^{P^2C}$ usa $\mu_i$ para sua média, $\sigma_i^2$ para sua variância, $j$ para indexar suas coordenadas e $\epsilon>0$ para evitar divisão por zero:
\[\mu_i=\frac{1}{P^2C}\sum_jx_{ij}, \qquad \sigma_i^2=\frac{1}{P^2C}\sum_j(x_{ij}-\mu_i)^2\]e alvo
\[x'_{ij} =\frac{x_{ij}-\mu_i} {\sqrt{\sigma_i^2+\epsilon}}.\]O alvo passa a ter média aproximadamente zero e variância aproximadamente um dentro de cada patch. O decoder não recebe recompensa direta por recuperar a média e o contraste absolutos que foram removidos da variável prevista.
Como a máscara $\mathcal M$ é uniforme, a média da perda apenas sobre $N_m$ posições é um estimador não viesado da média dos erros $e_i$ sobre todos os patches, se tratarmos esses erros como fixos durante o sorteio:
\[\mathbb{E}_{\mathcal M} \left[ \frac1{N_m}\sum_{i\in\mathcal M}e_i \right] =\frac1N\sum_{i=0}^{N-1}e_i.\]Isso não torna a tarefa igual a reconstruir tudo. O encoder viu uma entrada diferente, e o gradiente depende dessa entrada mascarada.
2.2 Exercícios de lápis e papel
1. Para a permutação $(3,0,2,1)$ e $N_v=2$, escreva os conjuntos visível e mascarado.
Solução: Os dois primeiros índices da permutação são visíveis:
\[\mathcal{V}=\{3,0\}.\]Os índices restantes são mascarados:
\[\mathcal{M}=\{2,1\}.\]2. Escreva a permutação inversa que restaura a ordem original no exercício anterior.
Solução: Na permutação $\pi=(3,0,2,1)$, o índice original $0$ ocupa a posição $1$, o índice $1$ ocupa a posição $3$, o índice $2$ ocupa a posição $2$ e o índice $3$ ocupa a posição $0$. Assim,
\[\pi^{-1}=(1,3,2,0).\]Aplicar essa inversa aos elementos na ordem permutada restaura a sequência original $(0,1,2,3)$.
3. Para o patch $(1,3)$, calcule média, variância com divisor $2$ e valores normalizados sem $\epsilon$.
Solução: A média é
\[\mu=\frac{1+3}{2}=2.\]A variância é
\[\sigma^2 =\frac{(1-2)^2+(3-2)^2}{2} =1.\]Como o desvio padrão também vale $1$, os valores normalizados são
\[\left(\frac{1-2}{1},\frac{3-2}{1}\right)=(-1,1).\]4. Quatro patches têm erros fixos $(1,2,3,4)$ e mascaramos um uniformemente. Calcule a esperança da perda mascarada.
Solução: Cada erro tem probabilidade $1/4$ de ser selecionado. Portanto,
\[\mathbb{E}[\mathcal{L}_{\mathrm{mascarada}}] =\frac14(1+2+3+4) =2{,}5.\]Esse valor coincide com a média dos erros sobre todos os patches.
5. Explique por que usar o mesmo mask token em todas as posições não torna as previsões iguais quando há embeddings posicionais.
Solução: Antes de entrar no decoder, cada cópia do mask token recebe um embedding posicional diferente. As entradas das posições mascaradas deixam, portanto, de ser idênticas. Além disso, a autoatenção combina cada posição com o contexto visível segundo relações posicionais distintas, permitindo previsões diferentes.
3. Quanto o encoder economiza?
Na autoatenção densa, a parte quadrática cai aproximadamente na razão
\[\frac{N_v^2}{N^2} =\left(\frac{49}{196}\right)^2 =\frac{1}{16} =6{,}25\%.\]Mas um bloco Transformer não contém apenas a matriz de atenção. Projeções lineares e o MLP escalam aproximadamente com $N$, então sua razão é
\[\frac{N_v}{N}=\frac14=25\%.\]Por isso, dizer que “o treinamento inteiro ficou 16 vezes mais barato” seria errado. A economia quadrática vale para componentes específicos. O artigo do MAE relata aceleração de três vezes ou mais no treinamento, resultado que inclui arquitetura, decoder leve e implementação.
O decoder volta à sequência completa, mas é deliberadamente menor e existe apenas no pré-treinamento. Em tarefas posteriores, ele é descartado.
3.1 Um modelo de custo para o bloco Transformer
Para uma sequência de $N$ tokens e largura $d$, as projeções $Q$, $K$, $V$ e a projeção de saída custam aproximadamente $8Nd^2$ FLOPs. Os dois produtos da atenção, $QK^\top$ e $\operatorname{softmax}(QK^\top)V$, custam aproximadamente $4N^2d$. Um MLP com largura interna $4d$ custa cerca de $16Nd^2$. Ignorando normalização, ativações e vieses, um bloco custa
\[W(N,d)\approx24Nd^2+4N^2d.\]Se a fração visível é $q=1-r$, o encoder recebe $qN$ posições e a razão de trabalho por bloco é
\[R(q) =\frac{24qNd^2+4q^2N^2d} {24Nd^2+4N^2d}.\]Para $N=196$, $d=768$ e $q=0{,}25$, a parcela linear domina. A razão total por bloco é aproximadamente $0{,}242$, perto de um quarto e muito acima de $1/16$. O termo de atenção isolado cai para $q^2=1/16$; as projeções e o MLP caem apenas para $q=1/4$. A aceleração real relatada pelo MAE, três vezes ou mais, é coerente com essa mistura e com o custo adicional do decoder leve.
O mascaramento também reduz memória de ativações do encoder. A matriz de atenção por cabeça passa de $N^2$ para $q^2N^2$ elementos, enquanto ativações de projeções passam de $Nd$ para $qNd$. De novo, duas leis de escala convivem no mesmo bloco.
3.2 Exercícios de lápis e papel
1. Calcule $q$ para taxas de máscara de $50\%$, $75\%$ e $90\%$.
Solução: A fração visível é $q=1-r$. Logo,
\[r=50\%\Longrightarrow q=0{,}5,\] \[r=75\%\Longrightarrow q=0{,}25\]e
\[r=90\%\Longrightarrow q=0{,}1.\]2. Para cada $q$ anterior, calcule a razão $q^2$ da matriz de atenção.
Solução: Elevando cada fração visível ao quadrado,
\[0{,}5^2=0{,}25=25\%,\] \[0{,}25^2=0{,}0625=6{,}25\%\]e
\[0{,}1^2=0{,}01=1\%.\]3. Use $W(N,d)$ para calcular a razão simbólica $R(q)$ quando $N=d$ e $q=1/2$.
Solução: Se $N=d$, podemos fatorar $N^3$ no numerador e no denominador:
\[R(q) =\frac{24qN^3+4q^2N^3}{24N^3+4N^3} =\frac{24q+4q^2}{28}.\]Para $q=1/2$,
\[R\left(\frac12\right) =\frac{12+1}{28} =\frac{13}{28} \approx0{,}4643.\]Embora a atenção isolada caia para $25\%$, o bloco completo conserva aproximadamente $46{,}43\%$ do trabalho nesse caso.
4. Para $N=196$ e $q=1/4$, calcule o número de entradas de uma matriz de atenção antes e depois da máscara.
Solução: Antes da máscara, a matriz possui
\[N^2=196^2=38\,416\]entradas. Depois da máscara, restam $qN=49$ posições e
\[(qN)^2=49^2=2\,401\]entradas, exatamente $1/16$ do total original.
5. Explique por que um decoder que processa todos os $N$ tokens precisa ser menor para preservar a economia do sistema.
Solução: O decoder volta a pagar custos lineares em $N$ e atenção quadrática em $N^2$. Se tivesse a mesma largura e profundidade do encoder, poderia consumir a economia obtida ao remover posições do ramo pesado. Reduzir sua dimensão, seu número de camadas ou ambos mantém esse custo de sequência completa como uma parcela menor do pré-treinamento.
4. MLM, autoencoder de ruído e MAE
Os três métodos corrompem uma entrada e pedem recuperação, mas diferem no que circula pela rede.
| Método | Entrada corrompida do encoder | Alvo | Particularidade |
|---|---|---|---|
| Denoising autoencoder | entrada ruidosa completa | entrada limpa | corrupção pode ser contínua |
| MLM no BERT | sequência completa com substituições | identidades discretas dos tokens selecionados | perda somente nos selecionados |
| MAE visual | apenas patches visíveis | pixels dos patches ocultos | máscara removida antes do encoder |
No BERT, tokens [MASK] ocupam posições dentro do encoder. No MAE, os mask tokens entram somente no decoder. Essa diferença evita gastar o codificador pesado com 75% de posições artificiais.
4.1 Densidade de informação muda a taxa útil
O BERT seleciona $15\%$ dos tokens para predição e aplica uma mistura de substituições para reduzir a diferença entre pré-treino e uso posterior. O MAE remove aleatoriamente cerca de $75\%$ dos patches do encoder. Copiar as duas taxas entre modalidades seria ignorar o mecanismo estatístico.
Um token textual é uma escolha discreta entre milhares de itens. Remover “não” pode inverter o sentido da frase. Um patch visual $16\times16$ possui $768$ valores RGB, mas muitos são previsíveis por continuidade de cor e textura com os vizinhos. Essa redundância espacial torna uma máscara pequena fácil demais: o modelo pode interpolar localmente sem precisar representar objeto ou cena.
A taxa útil depende também do tamanho do patch. Com patches maiores, cada unidade oculta remove mais área e a sequência fica menor. Com patches menores, a tarefa possui mais posições e maior redundância local. Taxa, tamanho e padrão da máscara precisam ser avaliados juntos; “75%” é resultado empírico para uma família de imagens, ViTs e configurações, não constante da natureza.
4.2 Exercícios de lápis e papel
1. Em uma sequência textual de $20$ tokens, quantos são selecionados por uma taxa de $15\%$?
Solução: O número selecionado é
\[20\cdot0{,}15=3\]tokens.
2. Em uma grade de $196$ patches, quantos são ocultos por $75\%$?
Solução: A máscara oculta
\[196\cdot0{,}75=147\]patches.
3. Compare a área removida por um patch $16\times16$ e por um $32\times32$.
Solução: As áreas são
\[16^2=256\]e
\[32^2=1024\]pixels. Um patch de $32\times32$ remove quatro vezes a área de um patch de $16\times16$.
4. Uma imagem $224\times224$ usa $P=32$. Calcule o número de patches e quantos ficam visíveis com $75\%$ de máscara.
Solução: Cada eixo possui $224/32=7$ posições, portanto
\[N=7^2=49.\]Uma máscara ideal de $75\%$ corresponderia a $36{,}75$ posições. Arredondando para $37$ mascaradas, ficam
\[N_v=49-37=12\]visíveis. A taxa efetiva de máscara é $37/49\approx75{,}51\%$.
5. Explique por que dois esquemas com a mesma fração mascarada, um aleatório e outro em um único bloco contíguo, definem tarefas diferentes.
Solução: A máscara aleatória espalha lacunas pela imagem e costuma deixar vizinhos visíveis próximos de cada alvo. Um bloco contíguo remove toda uma região e obriga o modelo a inferi-la a partir de contexto mais distante. A fração oculta é igual, mas a informação condicional disponível para cada previsão não é.
5. O que a reconstrução ensina e cobra
Uma taxa baixa de máscara permite interpolar vizinhos locais. Taxas altas obrigam o modelo a usar contexto mais amplo. O MAE encontra bom equilíbrio em 75% para imagens naturais e ViTs, não uma constante universal para toda modalidade.
O alvo em pixels preserva informação que pode ajudar reconhecimento, mas também cobra textura, cor e detalhe de baixa relevância semântica. O autoencoder já expôs essa tensão. A difusão latente a reduz movendo a geração para um latente.
O I-JEPA dará outro passo: mascarará regiões, mas preverá representações produzidas por um encoder alvo. Não haverá obrigação de reconstruir cada pixel oculto.
5.1 Pixels, médias condicionais e ambiguidade
Sob MSE, denotaremos por $\hat{x}_i^\star$ a previsão de menor erro quadrático para o patch oculto $i$. Ela é sua média condicional dado o contexto visível:
\[\hat{x}_i^\star =\mathbb{E}[x_i\mid x_{\mathcal V}].\]Se o contexto admite duas continuações igualmente prováveis, a média pode não se parecer com nenhuma. Uma borda vertical preta ou branca, cada uma com probabilidade $1/2$, produz uma faixa cinza como previsão quadrática ótima. O MAE não é projetado para gerar a imagem mais nítida; o decoder existe para impor uma tarefa de representação ao encoder.
A máscara controla a entropia condicional $H(X_{\mathcal M}\mid X_{\mathcal V})$, na qual $X_{\mathcal M}$ representa os valores aleatórios dos patches mascarados e $X_{\mathcal V}$ os valores dos visíveis. Com pouca máscara, vizinhos visíveis reduzem a incerteza e permitem atalhos locais. Com máscara extrema, a incerteza pode ficar tão alta que o alvo de pixels cobra detalhes imprevisíveis e o gradiente vira uma média pouco informativa. O ponto útil equilibra contexto suficiente para inferir estrutura e alvo difícil o bastante para exigir representação ampla.
Essa análise também separa MAE de I-JEPA. O MAE reduz erro no espaço de pixels; o I-JEPA reduz erro entre representações. Se o encoder alvo do I-JEPA descarta textura, continuidades diferentes de textura podem compartilhar o mesmo alvo e deixar de competir na média. A vantagem potencial nasce do espaço da perda, não apenas do padrão de máscara.
5.2 Exercícios de lápis e papel
1. Um pixel oculto vale $0$ ou $10$ com probabilidades iguais. Calcule a previsão ótima sob MSE e seu erro esperado.
Solução: A previsão ótima é a média condicional:
\[\hat{x}^\star=\frac12\cdot0+\frac12\cdot10=5.\]O erro esperado é
\[\frac12(0-5)^2+\frac12(10-5)^2 =\frac12\cdot25+\frac12\cdot25 =25.\]2. Compare o erro esperado se escolhermos sempre $0$.
Solução: Se a previsão for sempre zero,
\[\frac12(0-0)^2+\frac12(10-0)^2 =0+50 =50.\]Escolher a média reduz o MSE esperado de $50$ para $25$, embora o valor $5$ nunca ocorra nos dois futuros possíveis.
3. Dê um exemplo visual no qual a média de duas continuações plausíveis produz um resultado borrado.
Solução: Considere uma borda que pode continuar cinco pixels à esquerda ou cinco pixels à direita com probabilidades iguais. A média sobre as duas posições espalha intensidade entre ambas e produz uma faixa borrada no centro, embora cada continuação individual contenha uma borda nítida.
4. Explique por que aumentar a máscara tende a aumentar $H(X_{\mathcal M}\mid X_{\mathcal V})$.
Solução: Ao mascarar mais posições, retiramos evidências que poderiam restringir os valores dos alvos e aumentamos o conjunto de regiões que precisam ser previstas. Com menos vizinhos, texturas, contornos e objetos permanecem compatíveis com mais continuações. Por isso, a incerteza condicional tende a crescer, embora o comportamento exato dependa da distribuição e do padrão da máscara.
5. Compare o alvo de pixels do MAE com um alvo de representação que trate duas texturas como equivalentes.
Solução: O alvo de pixels atribui vetores diferentes às duas texturas e penaliza o modelo se reconstruir uma no lugar da outra. Um alvo de representação pode mapear ambas ao mesmo vetor quando a diferença é irrelevante para a tarefa que formou o encoder alvo. Nesse caso, a perda deixa de cobrar a escolha entre detalhes considerados equivalentes.
6. Mascaramento reproduzível em C++23
O programa embaralha os 196 índices com semente fixa, escolhe 147 posições mascaradas e calcula o erro quadrático somente nelas. Em um sistema real, cada alvo seria um vetor com $16\cdot16\cdot C$ componentes.
#include <algorithm>
#include <array>
#include <cmath>
#include <cstddef>
#include <iostream>
#include <numeric>
#include <random>
int main() {
constexpr std::size_t patch_count = 196;
constexpr std::size_t masked_count = 147;
std::array<std::size_t, patch_count> permutation{};
std::iota(permutation.begin(), permutation.end(), 0);
std::mt19937 generator{7};
std::shuffle(
permutation.begin(),
permutation.end(),
generator);
std::array<bool, patch_count> is_masked{};
for (std::size_t i = 0; i < masked_count; ++i) {
is_masked[permutation[i]] = true;
}
std::array<double, patch_count> target{};
std::array<double, patch_count> prediction{};
for (std::size_t i = 0; i < patch_count; ++i) {
target[i] = std::sin(static_cast<double>(i) * 0.1);
prediction[i] = target[i] + 0.05;
}
double squared_error = 0.0;
for (std::size_t i = 0; i < patch_count; ++i) {
if (!is_masked[i]) {
continue;
}
const double error = prediction[i] - target[i];
squared_error += error * error;
}
std::cout << "visible=" << patch_count - masked_count
<< " masked=" << masked_count << '\n'
<< "masked_mse="
<< squared_error
/ static_cast<double>(masked_count)
<< '\n';
}
A saída esperada informa 49 patches visíveis, 147 mascarados e erro médio $0{,}0025$, pois cada previsão foi deslocada por $0{,}05$.
No MSVC 19.51, compilamos com cl /std:c++latest /permissive- /W4 /EHsc /utf-8 /O2 mae.cpp. A semente altera quais índices são ocultados, mas não altera o erro deste exemplo, pois todas as previsões recebem o mesmo deslocamento. Essa invariância é uma propriedade dos dados sintéticos escolhidos, não do MAE.
6.1 Exercícios de rastreamento manual
1. Para patch_count=8 e masked_count=3, explique quais posições da permutação são marcadas como ocultas.
Solução: O laço percorre i=0, i=1 e i=2. Em cada iteração, marca is_masked[permutation[i]]. Portanto, os índices armazenados nas três primeiras posições da permutação são ocultados; as cinco posições restantes permanecem visíveis.
2. Se a permutação for $(5,2,7,0,1,3,4,6)$, escreva o vetor booleano is_masked.
Solução: Os três primeiros índices da permutação são $5$, $2$ e $7$. Assim, nas posições de $0$ a $7$,
\[\texttt{is\_masked} =(\texttt{false},\texttt{false},\texttt{true},\texttt{false}, \texttt{false},\texttt{true},\texttt{false},\texttt{true}).\]3. Calcule o erro quadrático de uma previsão deslocada por $0{,}05$.
Solução: A diferença entre previsão e alvo é $0{,}05$. Logo,
\[(0{,}05)^2=0{,}0025.\]4. Mostre por que a média de 147 erros idênticos a $0{,}0025$ continua valendo $0{,}0025$.
Solução: A soma dos erros é $147\cdot0{,}0025$. Dividindo pelo número de posições mascaradas,
\[\frac{147\cdot0{,}0025}{147}=0{,}0025.\]5. Se o deslocamento passasse a ser $0{,}01i$ no patch $i$, explique por que a semente começaria a alterar o MSE observado.
Solução: O erro do patch $i$ passaria a ser
\[(0{,}01i)^2=0{,}0001i^2,\]portanto índices diferentes contribuiriam com erros diferentes. A semente muda a permutação e, consequentemente, o subconjunto de índices mascarados. A média observada passaria a depender de quais valores de $i^2$ fossem selecionados.
7. Laboratório: a sequência que o encoder vê
Altere a taxa de máscara e a semente. As células verdes chegam ao encoder; as cinzas são removidas. A terceira medida mostra apenas a razão quadrática da matriz de atenção, não o custo total do modelo.
8. A fronteira JEPA
Chegamos a três respostas para a tarefa autossupervisionada:
- reconstruir a entrada, como o autoencoder e o MAE;
- comparar exemplos, como o SimCLR;
- destilar uma representação, como BYOL e DINO.
O próximo artigo combina partes dessas histórias e recusa outras. O JEPA usa contexto mascarado, alvo lento e previsão, mas abandona tanto os negativos quanto a reconstrução de pixels. A pergunta deixa de ser “como pintar o que falta?” e passa a ser “qual representação deveria ocupar aquela região?”.
O MAE economiza ao esconder do encoder aquilo que pretende reconstruir. O JEPA mudará também aquilo que merece ser reconstruído.
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
DEVLIN, J.; CHANG, M.-W.; LEE, K.; TOUTANOVA, K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. NAACL-HLT, 2019. Disponível em: https://aclanthology.org/N19-1423/. 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.
HE, K. et al. Masked Autoencoders Are Scalable Vision Learners. CVPR, 2022. Disponível em: https://openaccess.thecvf.com/content/CVPR2022/html/He_Masked_Autoencoders_Are_Scalable_Vision_Learners_CVPR_2022_paper.html. Acesso em: 28 jul. 2026.
PATHAK, D.; KRÄHENBÜHL, P.; DONAHUE, J.; DARRELL, T.; EFROS, A. A. Context Encoders: Feature Learning by Inpainting. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, p. 2536-2544, 2016. Disponível em: https://openaccess.thecvf.com/content_cvpr_2016/html/Pathak_Context_Encoders_Feature_CVPR_2016_paper.html. Acesso em: 29 jul. 2026.
TAYLOR, W. L. Cloze Procedure: A New Tool for Measuring Readability. Journalism Quarterly, v. 30, n. 4, p. 415-433, 1953. Disponível em: https://doi.org/10.1177/107769905303000401. Acesso em: 29 jul. 2026.
VINCENT, P.; LAROCHELLE, H.; BENGIO, Y.; MANZAGOL, P.-A. Extracting and Composing Robust Features with Denoising Autoencoders. Proceedings of the 25th International Conference on Machine Learning, p. 1096-1103, 2008. Disponível em: https://doi.org/10.1145/1390156.1390294. Acesso em: 29 jul. 2026.
Índice da Série: Representações e Modelos de Mundo
- 1. Representações e Modelos de Mundo: o Mapa da Série
- 2. Autoencoders: o Gargalo, a Reconstrução e o Latente
- 4. Difusão Latente: Comprimir Antes de Gerar
- 5. SimCLR: Aprender por Contraste e Pagar pelos Negativos
- 6. BYOL: Aprender sem Negativos sem Entregar Tudo ao Colapso
- 7. DINO: Autodestilação e Objetos que Emergem da Atenção
- 8. MAE: Mascarar 75% da Imagem e Reconstruir o que Falta (Você está aqui)
- 9. Prever, não gerar: o template JEPA e o problema do colapso
(Updated: )