Autoencoders para aprendizado de representações
Arquitetura codificador-decodificador, gargalo, perda de reconstrução e aplicações na detecção de anomalias.
Autoencoders para aprendizado de representações é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
O que é um autocodificador?
Um autocodificador aprende a comprimir dados em um código pequeno e a reconstruí-los. Ele tem duas metades: um codificador, que comprime, e um decodificador, que reconstrói. A compressão no meio o força a aprender o que é importante.
import torch
import torch.nn as nnA ideia do gargalo
A camada central estreita é o gargalo ou código latente. Ao forçar todas as informações a passar por alguns números, a rede precisa descartar o ruído e manter a estrutura essencial dos dados.
Construindo o codificador
Para imagens de 28x28 (784 pixels), o codificador reduz a entrada passo a passo: de 784 para 256 e depois para um código latente de 64 dimensões. Cada camada Linear é seguida por uma não linearidade ReLU.
encoder = nn.Sequential(
nn.Linear(784, 256),
nn.ReLU(),
nn.Linear(256, 64)
)Construindo o decodificador
O decodificador espelha o codificador, expandindo o código de 64 dimensões novamente para 784 pixels. Um Sigmoid final comprime as saídas para o intervalo [0,1], correspondendo aos valores de pixels normalizados.
decoder = nn.Sequential(
nn.Linear(64, 256),
nn.ReLU(),
nn.Linear(256, 784),
nn.Sigmoid()
)O codificador automático completo
Conecte o codificador e o decodificador em um único módulo. A passagem forward codifica e depois decodifica, retornando uma reconstrução com o mesmo formato da entrada.
class AutoEncoder(nn.Module):
def __init__(self, enc, dec):
super().__init__()
self.enc, self.dec = enc, dec
def forward(self, x):
z = self.enc(x)
return self.dec(z)Perda de reconstrução (MSE)
O próprio dado de entrada é o alvo do treinamento. O erro quadrático médio mede, pixel a pixel, o quanto a reconstrução se distancia do original. Minimizá-lo ensina o modelo a comprimir os dados fielmente.
criterion = nn.MSELoss()
x_flat = x.view(x.size(0), -1)
recon = model(x_flat)
loss = criterion(recon, x_flat)Treinando o codificador automático
O treinamento não é supervisionado: não há rótulos, apenas entradas. O laço é o padrão zero_grad, forward, backward, step, mas a perda compara a saída com a entrada.
optimizer.zero_grad()
recon = model(x_flat)
loss = criterion(recon, x_flat)
loss.backward()
optimizer.step()O espaço latente
Após o treinamento, o codificador mapeia cada entrada para um ponto no espaço latente. Entradas semelhantes ficam próximas umas das outras, portanto esse código de 64 dimensões é uma representação compacta dos dados, aprendida pelo modelo.
z = model.enc(x_flat)
print(z.shape) # [batch, 64]Visualizando com t-SNE
É difícil visualizar o espaço latente de 64 dimensões. O t-SNE o projeta em 2D para criar um gráfico. Os agrupamentos no gráfico mostram que o codificador automático reuniu itens semelhantes sem jamais ver rótulos.
from sklearn.manifold import TSNE
codes = model.enc(all_data).detach().numpy()
proj = TSNE(n_components=2).fit_transform(codes)
# scatter plot proj colored by true labelDetecção de anomalias
Um codificador automático treinado com dados normais os reconstrói bem, mas tem dificuldade com anomalias que nunca viu. Um erro de reconstrução alto sinaliza um valor atípico, funcionando como um poderoso detector não supervisionado de anomalias.
errors = ((model(data) - data) ** 2).mean(dim=1)
anomalies = errors > thresholdPor que aprender representações?
O verdadeiro benefício é o código latente: um vetor de características aprendido que pode ser usado para agrupamento, visualização, detecção de anomalias ou como entrada para outro modelo, tudo isso aprendido sem rótulos.
Verificação rápida
Teste sua compreensão sobre codificadores automáticos.
Recapitulação: codificadores automáticos
Você construiu um codificador (784 para 256 para 64) e um decodificador espelhado, treinados com a perda de reconstrução MSE e sem rótulos. Usou o código latente para aprender representações, visualizou-o com t-SNE e detectou anomalias por meio de um erro de reconstrução alto.
Perguntas Frequentes
A aula “Autoencoders para aprendizado de representações” é grátis?
Sim — o texto completo de “Autoencoders para aprendizado de representações” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Autoencoders para aprendizado de representações”?
Arquitetura codificador-decodificador, gargalo, perda de reconstrução e aplicações na detecção de anomalias. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Autoencoders para aprendizado de representações”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Autoencoders para aprendizado de representações
- Autoencoders variacionais (VAE)
- GANs: gerador e discriminador
- GANs condicionais e transferência de estilo