MAE: Mascarar 75% da Imagem e Reconstruir o que Falta

por Frank de Alcantara em 28/07/2026

MAE: Mascarar 75% da Imagem e Reconstruir o que Falta

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.

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.

Fluxo do MAE em que 75 por cento dos patches são removidos antes do encoder e restaurados como mask tokens para o decoder

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.

(Updated: )