Ana içeriğe atla

Varyasyonel Otomatik Kodlayıcılar: Nasıl Çalışırlar ve Neden Önemlidirler

Varyasyonel otomatik kodlayıcıların temel ilkelerini, kullanım alanlarını ve pratik faydalarını öğrenin ve PyTorch ile adım adım bir uygulamayı izleyin.
Güncel 22 Nis 2026  · 14 dk. oku

Makine öğrenmesi teknolojisi eşi görülmemiş bir hızla ilerlerken, Varyasyonel Otomatik Kodlayıcılar (VAE'ler) veriyi işleme ve üretme şeklimizi dönüştürüyor. Güçlü veri kodlamayı yenilikçi üretim yetenekleriyle birleştiren VAE'ler, alandaki karmaşık zorluklara dönüştürücü çözümler sunuyor.

Bu yazıda, VAE'lerin arkasındaki temel kavramları, kullanım alanlarını ve PyTorch kullanarak adım adım nasıl etkili bir şekilde uygulanabileceklerini inceleyeceğiz.

Varyasyonel Otomatik Kodlayıcı nedir?

Otomatik kodlayıcılar, başlıca boyut indirgeme veya özellik öğrenimi amacıyla verinin verimli temsillerini öğrenmek üzere tasarlanmış bir sinir ağı türüdür. 

Otomatik kodlayıcılar iki ana bölümden oluşur: 

  1. Kodlayıcı: Girdi verisini daha düşük boyutlu bir gizil uzaya sıkıştırır.
  2. Kodçözücü: Orijinal veriyi bu sıkıştırılmış temsilden yeniden oluşturur. 

Otomatik kodlayıcıların birincil hedefi, girdi ile yeniden yapılandırılmış çıktı arasındaki farkı en aza indirmek ve böylece verinin kompakt bir temsilini öğrenmektir.

Varyasyonel Otomatik Kodlayıcılar (VAE'ler), kodlama sürecine olasılıksal öğeler ekleyerek geleneksel otomatik kodlayıcı çerçevesinin yeteneklerini genişletir. 

Standart otomatik kodlayıcılar girdileri sabit gizil temsillere eşlerken, VAE'ler kodlayıcının gizil uzay üzerinde genellikle bir çok değişkenli Gauss olarak modellenen bir dağılım üretmesiyle olasılıksal bir yaklaşım sunar. Bu, VAE'lerin kod çözme sürecinde bu dağılımdan örnekleme yapmasına olanak tanır ve yeni veri örneklerinin üretilmesine yol açar.

VAE'lerin temel yeniliği, yapılandırılmış ve sürekli bir gizil uzay öğrenerek yeni ve yüksek kaliteli veri üretebilmesidir. Bu, yalnızca veriyi sıkıştırmak değil, orijinal veri kümesine benzeyen yeni örnekler oluşturmayı amaçlayan üretken modelleme için özellikle önemlidir. 

VAE'ler, görüntü sentezi, veri gürültü giderme ve anomali tespiti gibi görevlerde kayda değer bir etkinlik göstermiştir; bu da onları makine öğrenmesi modellerinin ve uygulamalarının yeteneklerini ilerletmek için ilgili araçlar haline getirmektedir.

Varyasyonel Otomatik Kodlayıcıların Kuramsal Arka Planı

Bu bölümde, VAE'lerin kuramsal arka planını ve çalışma mekaniklerini tanıtarak, sonraki bölümlerdeki uygulamalarını keşfetmek için sağlam bir temel sağlayacağız.

Kodlayıcılarla başlayalım. Kodlayıcı, girdi verisini gizil bir uzaya eşlemekten sorumlu bir sinir ağıdır. Gizil uzayda sabit bir nokta üreten geleneksel otomatik kodlayıcılardan farklı olarak, bir VAE'deki kodlayıcı bir olasılık dağılımının parametrelerini—tipik olarak bir Gauss dağılımının ortalamasını ve varyansını—çıktılar. Bu, VAE'nin veri belirsizliğini ve değişkenliğini etkili şekilde modellemesini sağlar.

Kodçözücü adı verilen başka bir sinir ağı, gizil uzay temsilinden orijinal veriyi yeniden oluşturmak için kullanılır. Gizil uzay dağılımından alınan bir örnek verildiğinde, kodçözücü orijinal girdi verisine çok benzeyen bir çıktı üretmeyi hedefler. Bu süreç, VAE'nin öğrenilmiş dağılımdan örnekleme yaparak yeni veri örnekleri oluşturmasına olanak tanır.

Gizil uzay, girdi verisinin kodlandığı daha düşük boyutlu, sürekli bir uzaydır.

Kodlayıcı, kodçözücü ve gizil uzayın rolünün görselleştirilmesi.

Kodlayıcı, kodçözücü ve gizil uzayın rolünün görselleştirilmesi. Görsel kaynak.

Varyasyonel yaklaşım, karmaşık olasılık dağılımlarını yaklaşıklamak için kullanılan bir tekniktir. VAE bağlamında, veriye koşullu gizil değişkenlerin gerçek art dağılımını yaklaşıklamayı içerir; bu çoğu zaman çözülemez durumdadır. 

VAE, yaklaşık bir art dağılımı öğrenir. Amaç, bu yaklaşımı gerçek art dağılımına olabildiğince yaklaştırmaktır.

Bayesçi çıkarım, daha fazla kanıt veya bilgi erişilebilir hale geldikçe bir hipoteze ilişkin olasılık tahminini güncelleme yöntemidir. VAE'lerde Bayesçi çıkarım, gizil değişkenlerin dağılımını tahmin etmek için kullanılır. 

VAE'ler, ön bilgi (önsel dağılım) ile gözlemlenen veriyi (olasılık) bütünleştirerek, öğrenilen art dağılım aracılığıyla gizil uzay temsilini ayarlar.

Önsel dağılım, art dağılım ve olabilirlik fonksiyonu ile Bayesçi çıkarım.

Önsel dağılım, art dağılım ve olabilirlik fonksiyonu ile Bayesçi çıkarım. Görsel kaynak.

İşlem akışı şu şekildedir:

  1. Girdi verisi x kodlayıcıya verilir; kodlayıcı, gizil uzay dağılımının parametrelerini q(z∣x) (ortalama μ ve varyans σ2) çıktılar.
  2. Gizil değişkenler z, yeniden parametreleştirme numarası gibi teknikler kullanılarak q(z∣x) dağılımından örneklenir.
  3. Örneklenen z, kodçözücüden geçirilerek yeniden yapılandırılmış veri üretilir; bu çıktı, orijinal girdi x'e benzer olmalıdır.

Varyasyonel Otomatik Kodlayıcı vs Geleneksel Otomatik Kodlayıcı

VAE'lerin geleneksel otomatik kodlayıcılara göre farklarını ve avantajlarını inceleyelim.

Mimari karşılaştırma

Daha önce görüldüğü gibi, geleneksel otomatik kodlayıcılar, girdi verisini x sabit, daha düşük boyutlu bir gizil uzay temsili z’ye eşleyen bir kodlayıcı ağından oluşur. Bu süreç deterministiktir; yani her girdi gizil uzayda belirli bir noktaya kodlanır. 

Ardından kodçözücü ağ, girdi ile yeniden yapılandırma arasındaki farkı en aza indirmeyi hedefleyerek, orijinal veriyi bu sabit gizil temsilden yeniden oluşturur. 

Geleneksel otomatik kodlayıcıların gizil uzayı, olasılıksal modelleme içermeyen sıkıştırılmış bir temsildir; bu da belirsizliği ele alacak bir mekanizmadan yoksun oldukları için yeni ve çeşitli veri üretme yeteneklerini sınırlar.

Otomatik kodlayıcı mimarisi

Otomatik kodlayıcı mimarisi. Görsel yazar tarafından

VAE'ler, kodlama sürecine olasılıksal bir öğe ekler. Yani, bir VAE'deki kodlayıcı, girdi verisini genellikle ortalama μ ve varyans σ2. ile modellenen bir Gauss dağılımı olarak gizil değişkenler üzerindeki bir olasılık dağılımına eşler

Bu yaklaşım, her girdiyi tek bir nokta yerine bir dağılıma kodlayarak değişkenlik ve belirsizlik katmanı ekler.

Mimari farklar, geleneksel otomatik kodlayıcılardaki deterministik eşleme ile VAE'lerdeki olasılıksal kodlama ve örnekleme arasındaki ayrımla görsel olarak temsil edilir.

Bu yapısal fark, KL sapması olarak bilinen bir terim aracılığıyla düzenlileştirme (regularization) içeren VAE'lerin, gizil uzayı sürekli ve iyi yapılandırılmış hale getirme biçimini öne çıkarır. 

Bu düzenlileştirme, üretilen örneklerin kalitesini ve tutarlılığını önemli ölçüde artırır ve geleneksel otomatik kodlayıcıların yeteneklerini aşar.Varyasyonel otomatik kodlayıcı mimarisi

Varyasyonel Otomatik Kodlayıcı mimarisi. Görsel yazar tarafından

Kullanım alanı karşılaştırması

VAE'lerin olasılıksal doğası, geleneksel otomatik kodlayıcılara kıyasla uygulama yelpazesini önemli ölçüde genişletir. Buna karşılık, geleneksel otomatik kodlayıcılar deterministik veri temsilinin yeterli olduğu uygulamalarda oldukça etkilidir. 

Bu noktayı pekiştirmek için her birinin birkaç kullanım alanına bakalım. 

VAE'lerin kullanım alanları

  • Üretken modelleme. VAE'lerin temel avantajı, eğitim verisine benzer ancak herhangi bir belirli örnekle özdeş olmayan yeni veri örnekleri üretebilmesidir. Örneğin, görüntü sentezinde VAE'ler eğitim kümesine benzeyen ancak varyasyonlar içeren yeni görüntüler oluşturabilir; bu da yeni sanat eserleri yaratma, gerçekçi yüzler üretme veya moda ve mimaride yeni tasarımlar ortaya çıkarma gibi görevler için yararlıdır.
  • Anomali tespiti. Normal verinin dağılımını öğrenerek, bu dağılımdan sapmaları anomali olarak tanımlayabilirler. Bu, dolandırıcılık tespiti, ağ güvenliği ve kestirimci bakım gibi uygulamalarda özellikle faydalıdır.
  • Veri tamamamlama ve gürültü giderme. VAE'lerin güçlü yanlarından biri, eksik veya gürültülü kısımları olan veriyi yeniden yapılandırmaktır. Öğrenilmiş gizil dağılımdan örnekleme yaparak eksik değerleri tahmin edip doldurabilir veya bozulmuş veriden gürültüyü kaldırabilirler. Bu, doğru veri yeniden yapılandırmanın hayati olduğu tıbbi görüntüleme gibi alanlarda ya da bozulmuş ses ve görsel veriyi onarmada değerlidir.
  • Yarı gözetimli öğrenme. Yarı gözetimli senaryolarda, VAE'ler gizil uzayı kullanarak temel veri yapısını yakalar ve sınırlı etiketli veriyle öğrenme sürecini güçlendirerek sınıflandırıcı performansını artırabilir.
  • Gizil uzay manipülasyonu. VAE'ler, çeşitli uygulamalar için manipüle edilebilen yapılandırılmış ve sürekli bir gizil uzay sunar. Örneğin, görüntü düzenlemede aydınlatma veya yüz ifadeleri gibi belirli özellikler gizil uzayda gezinerek ayarlanabilir. Bu özellik, görselleri ve videoları değiştirme ve iyileştirme için yaratıcı sektörlerde özellikle kullanışlıdır.

Geleneksel otomatik kodlayıcıların kullanım alanları

  • Boyut indirgeme. Geleneksel otomatik kodlayıcılar, verinin boyutunu azaltmak için yaygın olarak kullanılır. Veriyi daha düşük boyutlu bir gizil uzaya kodlayıp yeniden yapılandırarak, verinin en önemli özelliklerini yakalayabilirler. Bu, yüksek boyutlu verinin iki veya üç boyuta yansıtılması gereken veri görselleştirme gibi senaryolarda ve diğer makine öğrenmesi modellerinin performansını artırmak ve hesaplama maliyetlerini azaltmak için önişleme adımlarında kullanışlıdır.
  • Özellik çıkarımı. Kodlayıcı girdi verisinin özünü yakalayacak şekilde eğitilerek, gizil temsiller sınıflandırma, kümeleme ve regresyon gibi aşağı akış görevleri için kompakt özellik vektörleri olarak kullanılabilir. Bu, gizil uzayın önemli görsel desenleri ortaya çıkarabildiği görüntü tanıma gibi uygulamalarda özellikle faydalıdır.
  • Gürültü giderme. Geleneksel otomatik kodlayıcılar, gürültülü sürümlerden temiz girdileri yeniden oluşturmayı öğrenerek verideki gürültüyü gidermede etkilidir. Bu, görüntülerden gürültünün kaldırılmasının görsel kaliteyi artırabildiği görüntü işleme ve ses sinyallerinin netliğini artırabildiği işaret işleme gibi senaryolarda değerlidir.
  • Veri sıkıştırma. Kompakt gizil vektörler, orijinal yüksek boyutlu veriye kıyasla daha verimli saklanabilir veya iletilebilir; gerektiğinde kodçözücü veriyi yeniden oluşturabilir. Bu, görüntü ve video sıkıştırma gibi uygulamalarda özellikle kullanışlıdır.
  • Görüntü yeniden yapılandırma ve inpainting. Geleneksel otomatik kodlayıcılar, görüntülerin eksik kısımlarını yeniden yapılandırmak için kullanılabilir. Görüntü inpainting'de otomatik kodlayıcı, çevre piksellerin sağladığı bağlama dayanarak bir görüntünün eksik veya bozuk bölgelerini doldurmak üzere eğitilir. Bu, bilgisayarlı görü ve dijital restorasyon gibi alanlarda faydalıdır.
  • Dizi öğrenimi. Otomatik kodlayıcılar, yinelemeli veya evrişimli katmanlar kullanılarak sıralı veriyle çalışacak şekilde uyarlanabilir. Zaman bağımlılıklarını ve desenlerini yakalayabilirler; bu da metin üretimi, konuşma sentezi ve finansal tahmin gibi uygulamalar için faydalıdır.

Varyasyonel Otomatik Kodlayıcı Türleri

VAE'ler, makine öğrenmesindeki farklı zorlukları ve uygulamaları ele almak üzere çeşitli uzmanlaşmış biçimlere evrilmiştir. Bu bölümde, kullanım durumlarını, avantajlarını ve sınırlamalarını vurgulayarak en öne çıkan türleri inceleyeceğiz.  

Koşullu varyasyonel otomatik kodlayıcı

Koşullu Varyasyonel Otomatik Kodlayıcılar (CVAE'ler), üretim sürecini ek bilgilere koşullayarak geliştiren özel bir VAE biçimidir. 

Bir VAE, hem kodlayıcıya hem kodçözücüye c ile gösterilen ek bilgiyi dahil ederek koşullu hale gelir. Bu koşullayıcı bilgi; sınıf etiketleri, öznitelikler veya diğer bağlamsal veriler gibi ilgili herhangi bir veri olabilir.

CVAE model yapısı.

CVAE model yapısı. Görsel kaynak.

CVAE kullanım durumları şunları içerir: 

  • Kontrollü veri üretimi. Örneğin, görüntü üretiminde bir CVAE, verilen etiketler veya tanımlara dayalı olarak belirli nesne veya sahnelerin görüntülerini oluşturabilir.
  • Görüntüden görüntüye dönüştürme. CVAE'ler, belirli öznitelikleri koruyarak görüntüleri bir alandan diğerine dönüştürebilir. Örneğin, siyah-beyaz görüntüleri renkli görüntülere çevirmek veya eskizleri gerçekçi fotoğraflara dönüştürmek için kullanılabilirler.
  • Metin üretimi. CVAE'ler, belirli istemlere veya konulara koşullu metin üretebilir; bu da hikâye oluşturma, sohbet botu yanıtları ve kişiselleştirilmiş içerik üretimi gibi görevler için faydalıdır.

Artı ve eksileri şöyledir: 

  • Üretilen veri üzerinde daha ince ayarlı kontrol 
  • Geliştirilmiş temsil öğrenimi
  • Aşırı uyum riskinin artması

Diğer varyantlar

Çözülmüş Varyasyonel Otomatik Kodlayıcılar, sıklıkla Beta-VAE olarak adlandırılır ve başka bir uzmanlaşmış VAE türüdür. Amaçları, gizil temsillerin her boyutunun verideki farklı ve yorumlanabilir bir değişim faktörünü yakaladığı temsiller öğrenmektir. Bu, orijinal VAE hedefinin, yeniden yapılandırma kaybı ile KL sapması terimini dengeleyen bir β hiperparametresiyle değiştirilmesiyle başarılır.

Beta-VAE'lerin artıları ve eksileri: 

  • Gizil faktörlerin daha iyi yorumlanabilirliği.
  • Üretilen verinin bireysel özelliklerini manipüle etme becerisinin artması.
  • β parametresinin dikkatli ayarlanmasını gerektirir.
  • Terimler arasındaki denge optimal değilse daha zayıf yeniden yapılandırma kalitesiyle sonuçlanabilir.

VAE'lerin bir başka varyantı Adversarial Autoencoder (AAE)’lerdir. AAE'ler, VAE çerçevesini Üretici Çekişmeli Ağlar (GAN) içindeki adversarial eğitim ilkeleriyle birleştirir. Ek bir ayrıştırıcı ağ, gizil temsillerin bir önsel dağılımla eşleşmesini sağlar ve modelin üretim yeteneklerini güçlendirir.

AAE'lerin artıları ve eksileri:

  • Yüksek kaliteli ve gerçekçi veri örnekleri üretir.
  • Gizil uzayı düzenlileştirmede etkilidir.
  • Adversarial bileşen nedeniyle artan eğitim karmaşıklığı.
  • GAN'lere benzer şekilde eğitim kararlılığıyla ilgili potansiyel sorunlar.

Şimdi Varyasyonel Otomatik Kodlayıcıların iki uzantısına daha bakacağız.

İlki Varyasyonel Yinelemeli Otomatik Kodlayıcılar (VRAE)’dir. VRAE'ler, kodlayıcı ve kodçözücü ağlarına yinelemeli sinir ağlarını (RNN) dahil ederek VAE çerçevesini sıralı veriye genişletir. Bu, VRAE'lerin zamansal bağımlılıkları yakalamasını ve sıralı desenleri modellemesini sağlar.

VRAE'lerin artıları ve eksileri:

  • Zaman serisi verilerini ve sıralı desenleri ele almakta etkilidir.
  • Konuşma sentezi, müzik üretimi ve zaman serisi tahmini gibi uygulamalarda kullanışlıdır.
  • Modelin yinelemeli doğası nedeniyle daha yüksek hesaplama gereksinimleri.

İnceleyeceğimiz son varyant ise Hiyerarşik Varyasyonel Otomatik Kodlayıcılar (HVAE)’dır. HVAE'ler, hiyerarşik bir yapıda düzenlenmiş birden fazla gizil değişken katmanı tanıtarak, modelin verideki daha karmaşık bağımlılıkları ve soyutlamaları yakalamasına olanak tanır. 

HVAE'lerin artıları ve eksileri:

  • Hiyerarşik yapılara sahip karmaşık veri dağılımlarını modelleyebilir.
  • Daha ifade gücü yüksek gizil temsiller sunar.
  • Artan model karmaşıklığı ve hesaplama maliyeti.

PyTorch ile Varyasyonel Otomatik Kodlayıcı Uygulaması

Bu bölümde, PyTorch kullanarak basit bir Varyasyonel Otomatik Kodlayıcı (VAE) uygulayacağız.

1. Ortamın hazırlanması

Bir VAE uygulamak için Python ortamımızı gerekli kütüphane ve araçlarla kurmamız gerekir. Kullanacağımız kütüphaneler şunlardır: 

  • PyTorch
  • torchvision
  • matplotlib
  • numpy

Bu kütüphaneleri yüklemek için kod: 

pip install torch torchvision matplotlib numpy

2. Uygulama

Bir VAE uygulamasını adım adım inceleyelim. Önce kütüphaneleri içe aktarmalıyız: 

import torch 
import torch.nn as nn 
import torch.optim as optim 
from torchvision import datasets, transforms 
from torch.utils.data import DataLoader 
import matplotlib.pyplot as plt 
import numpy as np

Sonra kodlayıcıyı, kodçözücüyü ve VAE'yi tanımlamalıyız. Kod şöyle: 

class Encoder(nn.Module):
    def __init__(self, input_dim, hidden_dim, latent_dim):
        super(Encoder, self).__init__()
        self.fc1 = nn.Linear(input_dim, hidden_dim)
        self.fc_mu = nn.Linear(hidden_dim, latent_dim)
        self.fc_logvar = nn.Linear(hidden_dim, latent_dim)
        
    def forward(self, x):
        h = torch.relu(self.fc1(x))
        mu = self.fc_mu(h)
        logvar = self.fc_logvar(h)
        return mu, logvar
class Decoder(nn.Module):
    def __init__(self, latent_dim, hidden_dim, output_dim):
        super(Decoder, self).__init__()
        self.fc1 = nn.Linear(latent_dim, hidden_dim)
        self.fc2 = nn.Linear(hidden_dim, output_dim)
        
    def forward(self, z):
        h = torch.relu(self.fc1(z))
        x_hat = torch.sigmoid(self.fc2(h))
        return x_hat
class VAE(nn.Module):
    def __init__(self, input_dim, hidden_dim, latent_dim):
        super(VAE, self).__init__()
        self.encoder = Encoder(input_dim, hidden_dim, latent_dim)
        self.decoder = Decoder(latent_dim, hidden_dim, input_dim)
        
    def forward(self, x):
        mu, logvar = self.encoder(x)
        std = torch.exp(0.5 * logvar)
        eps = torch.randn_like(std)
        z = mu + eps * std
        x_hat = self.decoder(z)
        return x_hat, mu, logvar

Kayıp fonksiyonunu da tanımlamalıyız. VAE'ler için kayıp fonksiyonu bir yeniden yapılandırma kaybı ve bir KL sapması kaybından oluşur. PyTorch'ta şöyle görünür: 

def loss_function(x, x_hat, mu, logvar):
    BCE = nn.functional.binary_cross_entropy(x_hat, x, reduction='sum')
    KLD = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())
    return BCE + KLD

VAE'yi eğitmek için MNIST veri setini yükleyecek, en iyileyiciyi tanımlayacak ve modeli eğiteceğiz.

# Hyperparameters
input_dim = 784
hidden_dim = 400
latent_dim = 20
lr = 1e-3
batch_size = 128
epochs = 10
# Data loader
transform = transforms.Compose([transforms.ToTensor(), transforms.Lambda(lambda x: x.view(-1))])
train_dataset = datasets.MNIST(root='./data', train=True, transform=transform, download=True)
train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
# Model, optimizer
vae = VAE(input_dim, hidden_dim, latent_dim)
optimizer = optim.Adam(vae.parameters(), lr=lr)
# Training loop
vae.train()
for epoch in range(epochs):
    train_loss = 0
    for x, _ in train_loader:
        x = x.view(-1, input_dim)
        optimizer.zero_grad()
        x_hat, mu, logvar = vae(x)
        loss = loss_function(x, x_hat, mu, logvar)
        loss.backward()
        train_loss += loss.item()
        optimizer.step()
    
    print(f"Epoch {epoch + 1}, Loss: {train_loss / len(train_loader.dataset)}")

3. Modelin test edilmesi ve değerlendirilmesi

Eğitimden sonra, yeniden yapılandırılmış çıktıları ve üretilen örnekleri görselleştirerek VAE'yi değerlendirebiliriz.

Kod şu şekildedir: 

# visualizing reconstructed outputs
vae.eval()
with torch.no_grad():
    x, _ = next(iter(train_loader))
    x = x.view(-1, input_dim)
    x_hat, _, _ = vae(x)
    x = x.view(-1, 28, 28)
    x_hat = x_hat.view(-1, 28, 28)
    
    fig, axs = plt.subplots(2, 10, figsize=(15, 3))
    for i in range(10):
        axs[0, i].imshow(x[i].cpu().numpy(), cmap='gray')
        axs[1, i].imshow(x_hat[i].cpu().numpy(), cmap='gray')
        axs[0, i].axis('off')
        axs[1, i].axis('off')
    plt.show()
#visualizing generated samples
with torch.no_grad():
    z = torch.randn(10, latent_dim)
    sample = vae.decoder(z)
    sample = sample.view(-1, 28, 28)
    
    fig, axs = plt.subplots(1, 10, figsize=(15, 3))
    for i in range(10):
        axs[i].imshow(sample[i].cpu().numpy(), cmap='gray')
        axs[i].axis('off')
    plt.show()

PyTorch ile varyasyonel otomatik kodlayıcı—çıktıların görselleştirilmesi.

Çıktıların görselleştirilmesi. Üst sıra orijinal MNIST verisi, orta sıra yeniden yapılandırılmış çıktılar ve son sıra üretilen örneklerdir — görsel yazar tarafından.

Varyasyonel Otomatik Kodlayıcılarda Zorluklar ve Çözümler

Varyasyonel Otomatik Kodlayıcılar (VAE'ler) üretken modelleme için güçlü araçlar olsa da, performanslarını etkileyebilecek çeşitli zorluk ve sınırlamalarla birlikte gelir. Bunlardan bazılarını tartışalım ve hafifletme stratejileri sunalım.

Mod çökmesi

Bu, VAE'nin veri dağılımının tüm çeşitliliğini yakalayamadığı bir olgudur. Sonuç olarak, üretilen örnekler veri dağılımının yalnızca birkaç modu (ayrı bölgesi) temsil eder ve diğerlerini göz ardı eder. Bu da üretilen çıktılarda çeşitlilik eksikliğine yol açar. 

Mod çökmesi şu nedenlerle ortaya çıkar: 

  • Zayıf gizil uzay keşfi: Eğitim sırasında gizil uzay yeterince keşfedilmezse model yalnızca birkaç bölgeden örnekler üretebilmeyi öğrenebilir.
  • Yetersiz eğitim verisi: Sınırlı veya temsili olmayan eğitim verisi, modelin belirli modlara aşırı uyum sağlamasına neden olabilir.

Mod çökmesi şu yollarla hafifletilebilir: 

  • Düzenlileştirme teknikleri: Dropout ve batch normalization gibi tekniklerin kullanılması genelleştirmeyi iyileştirebilir ve mod çökmesini azaltabilir.
  • Gelişmiş eğitim algoritmaları: Önem-ağırlıklı otomatik kodlayıcılar (IWAE), daha iyi gradyan kestirimleri sağlayabilir ve gizil uzay keşfini iyileştirebilir.

Bilgi taşımayan gizil uzaylar

Bazı durumlarda, bir VAE'nin öğrendiği gizil uzay bilgi taşımayan hale gelebilir; model, gizil değişkenleri girdi verisinin anlamlı özelliklerini yakalamak için etkili biçimde kullanamaz. Bu da üretilen örneklerin ve yeniden yapılandırmaların kalitesinin düşmesine neden olabilir.

Bu tipik olarak şu nedenlerle olur: 

  • Dengesiz kayıp bileşenleri: Yeniden yapılandırma kaybı ile KL sapması arasındaki denge iyi kurulamadığında, gizil değişkenler göz ardı edilebilir.
  • Art çökmesi (posterior collapse): Kodlayıcı, gizil uzaydaki bilgi kaybına yol açan şekilde, önsele çok yakın bir art dağılımı üretmeyi öğrenir.

Bilgi taşımayan gizil uzaylar, ısınma (warm-up) stratejisinden yararlanılarak—eğitim sırasında KL sapmasının ağırlığını kademeli olarak artırmak—veya kayıp fonksiyonundaki KL sapması teriminin ağırlığını doğrudan değiştirerek giderilebilir. 

Eğitimde kararsızlık

VAE'lerin eğitimi bazen kararsız olabilir; kayıp fonksiyonu salınım gösterebilir veya ıraksayabilir. Bu, yakınsamayı başarmayı ve iyi eğitilmiş bir model elde etmeyi zorlaştırabilir.

Bunun nedeni şunlardır: 

  • Karmaşık kayıp manzarası: VAE kayıp fonksiyonu, yeniden yapılandırma ve düzenlileştirme terimlerini birleştirir; bu da karmaşık bir en iyileme manzarasına yol açar.
  • Hiperparametre hassasiyeti: VAE'ler, öğrenme oranı, KL sapması ağırlığı ve sinir ağlarının mimarisi gibi hiperparametrelerin seçimine duyarlıdır.

Eğitimdeki kararsızlığı hafifletmek için şu adımlar atılabilir: 

  • Özenli hiperparametre ayarı: Hiperparametrelerin sistematik olarak araştırılması, eğitim için kararlı yapılandırmalar bulunmasına yardımcı olabilir.
  • Gelişmiş en iyileyiciler: Adam gibi uyarlanabilir öğrenme oranına sahip en iyileyicilerin kullanılması, karmaşık kayıp manzarasında daha etkili gezinmeye yardımcı olabilir.

Hesaplama maliyetleri

Özellikle büyük ve karmaşık veri setleriyle VAE eğitimi hesaplama açısından maliyetli olabilir. Bunun nedeni, örnekleme yapılması ve stokastik katmanlar üzerinden geri yayılım gereksinimidir.

Yüksek hesaplama maliyetlerinin nedenleri şunlardır:

  • Büyük ağlar: Kodlayıcı ve kodçözücü ağları büyük ve derin hale gelebilir; bu da hesaplama yükünü artırır.
  • Gizil uzayda örnekleme: Gizil uzaydan örnekleme ve bu örnekler üzerinden gradyanların hesaplanması hesaplama maliyetine eklenir.

Bazı hafifletme eylemleri şunlardır:

  • Modeli basitleştirme: Kodlayıcı ve kodçözücü ağlarının karmaşıklığını azaltmak, hesaplama maliyetlerini düşürmeye yardımcı olabilir.
  • Verimli örnekleme teknikleri: Daha verimli örnekleme yöntemleri veya yaklaşıklamalar kullanmak hesaplama yükünü azaltabilir.

Sonuç

Varyasyonel Otomatik Kodlayıcılar (VAE'ler), makine öğrenmesi ve veri üretimi alanında çığır açan bir ilerleme olduğunu kanıtlamıştır. 

Geleneksel otomatik kodlayıcı çerçevesine olasılıksal öğeler ekleyerek, VAE'ler yeni ve yüksek kaliteli veri üretimini mümkün kılar ve daha yapılandırılmış, sürekli bir gizil uzay sağlar. Bu benzersiz yetenek; üretken modelleme ve anomali tespitinden veri tamamlamaya ve yarı gözetimli öğrenmeye kadar geniş bir uygulama yelpazesinin kapılarını açmıştır.

Bu yazıda, Varyasyonel Otomatik Kodlayıcıların temellerini, farklı türlerini, PyTorch ile nasıl uygulanacağını ve VAE'lerle çalışırken karşılaşılan zorluklar ile çözümlerini ele aldık.

Öğrenmeye devam etmek için bu kaynaklara göz atın: 

SSS

Bir otomatik kodlayıcı ile varyasyonel otomatik kodlayıcı arasındaki fark nedir?

Bir otomatik kodlayıcı, girdi verisini daha düşük boyutlu bir gizil uzaya sıkıştırıp yeniden yapılandıran ve her girdiyi bu uzayda deterministik olarak sabit bir noktaya eşleyen bir sinir ağıdır. Bir Varyasyonel Otomatik Kodlayıcı (VAE) ise bunu, girdileri gizil uzay üzerinde tipik olarak Gauss olan bir olasılık dağılımına kodlayarak genişletir. Bu olasılıksal yaklaşım, VAE'lerin gizil dağılımdan örnekleme yapmasına olanak tanır; böylece yeni ve çeşitli veri örnekleri üretilebilir ve veri değişkenliği daha iyi modellenir.

VAE’ler ne için kullanılır?

Varyasyonel Otomatik Kodlayıcılar (VAE'ler), yeni ve yüksek kaliteli veri örnekleri üretmek için kullanılır; bu da onları görüntü sentezi ve veri çoğaltma gibi uygulamalarda değerli kılar. Ayrıca, öğrenilmiş veri dağılımlarından sapmaları belirledikleri anomali tespiti ile eksik veya bozuk veriyi yeniden yapılandırarak gürültü giderme ve veri tamamlama görevlerinde de kullanılırlar.

Varyasyonel otomatik kodlayıcıların faydaları nelerdir?

VAE'ler, sürekli ve yapılandırılmış bir gizil uzay öğrenerek çeşitli ve yüksek kaliteli veri örnekleri üretir. Ayrıca veri temsilinde dayanıklılığı artırır ve belirsizliği etkili şekilde ele almayı mümkün kılar; bu da anomali tespiti, gürültü giderme ve yarı gözetimli öğrenme gibi görevlerde özellikle faydalıdır.

Neden otomatik kodlayıcı yerine VAE kullanılır?

Varyasyonel Otomatik Kodlayıcılar (VAE'ler), sürekli bir gizil uzay dağılımını modelleyerek olasılıksal bir kodlama yaklaşımı sunar; bu da çeşitli ve yeni veri örnekleri üretmelerini sağlar. Geleneksel otomatik kodlayıcılar sabit gizil temsiller sunarken, VAE'ler veri üretim yeteneklerini artırır ve verideki belirsizlik ile değişkenliği daha iyi yönetebilir.

Varyasyonel otomatik kodlayıcıların eksileri nelerdir?

Varyasyonel Otomatik Kodlayıcılar (VAE'ler), veri dağılımının tüm çeşitliliğini yakalayamadıkları mod çökmesi gibi sorunlardan muzdarip olabilir; bu da daha az çeşitli üretilen örneklere yol açar. Ayrıca, GAN gibi diğer üretken modellere kıyasla daha bulanık veya daha az ayrıntılı çıktılar üretebilirler ve eğitimleri hesaplama açısından yoğun ve istikrarsız olabilir.


Kurtis Pykes 's photo
Author
Kurtis Pykes
LinkedIn
Konular

Bu kurslarla Yapay Zekâ hakkında daha fazla bilgi edinin!

Kurs

PyTorch ile Deep Learning'e Giriş

4 sa
82.5K
PyTorch'ta ilk sinir ağınızı oluşturmayı, hiperparametreleri ayarlamayı ve sınıflandırma ve regresyon problemlerini çözmeyi öğrenin.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow