Giriş
Üretken yapay zekanın heyecan verici dünyasını keşfedeceğimiz bu makaleye hoş geldiniz. Esas olarak Koşullu Değişken Otomatik Kodlayıcılar veya CVAE'lere odaklanacağız; bunlar, Yapay Zeka sanatının bir sonraki seviyesi gibidir; Değişken Otomatik Kodlayıcıların (VAE'ler) güçlü yönlerini belirli talimatları takip etme yeteneğiyle birleştirerek bize görüntü oluşturma üzerinde ince ayarlı kontrol sağlar. Bu makale boyunca CVAE'lerin derinliklerine ineceğiz ve bunların çeşitli gerçek dünya senaryolarında nasıl ve neden kullanılabileceğini göreceğiz ve hatta potansiyellerini sergilemek için size anlaşılması kolay bazı kod örnekleri sunacağız.
Bu makale, Veri Bilimi Blogatonu.
İçindekiler
Değişken Otomatik Kodlayıcıları (VAE'ler) Anlamak
CVAE'lere dalmadan önce VAE'lerin temellerine odaklanalım. VAE'ler, bir kodlayıcı ve kod çözücü ağını birleştiren bir tür üretken modeldir. Verilerin temel yapısını öğrenmek ve yeni örnekler oluşturmak için kullanılırlar.
Elbette, Değişken Otomatik Kodlayıcıları (VAE'ler) açıklamak için kahve tercihlerini içeren basit bir örnek kullanalım
Ofisinizdeki herkesin kahve tercihlerini temsil etmek istediğinizi düşünün:
- Encoder: Her kişi kahve seçimini (siyah, latte, cappuccino) birkaç kelimeyle (örneğin, sert, kremalı, yumuşak) özetler.
- Varyasyon: Aynı seçimde (örneğin latte) bile süt, tatlılık vb. açısından farklılıklar olduğunu anlar.
- Gizli Alan: Kahve tercihlerinin farklılık gösterebileceği esnek bir alan yaratır.
- dekoder: Bu özetleri, meslektaşlarının tercihlerine saygı göstererek, küçük değişikliklerle kahve hazırlamak için kullanır.
- Üretken Güç: Bireysel zevklere uygun ancak birebir kopyası olmayan yeni kahve stilleri yaratabilir.
VAE'ler benzer şekilde çalışır, verilerdeki temel özellikleri ve varyasyonları öğrenerek küçük farklılıklar içeren yeni, benzer veriler üretir.
İşte Python ve TensorFlow/Keras kullanan basit bir Değişken Otomatik Kodlayıcı (VAE) uygulaması. Bu örnekte basitlik sağlamak amacıyla MNIST veri kümesi kullanılmaktadır ancak bunu diğer veri türlerine de uyarlayabilirsiniz.
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import numpy as np # Load and preprocess the MNIST dataset
(x_train, _), (x_test, _) = keras.datasets.mnist.load_data()
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0 # Define the VAE model
latent_dim = 2 # Encoder
encoder_inputs = keras.Input(shape=(28, 28))
x = layers.Flatten()(encoder_inputs)
x = layers.Dense(256, activation='relu')(x)
z_mean = layers.Dense(latent_dim)(x)
z_log_var = layers.Dense(latent_dim)(x) # Reparameterization trick
def sampling(args): z_mean, z_log_var = args epsilon = tf.keras.backend.random_normal(shape=(tf.shape(z_mean)[0], latent_dim)) return z_mean + tf.exp(0.5 * z_log_var) * epsilon z = layers.Lambda(sampling)([z_mean, z_log_var]) # Decoder
decoder_inputs = keras.Input(shape=(latent_dim,))
x = layers.Dense(256, activation='relu')(decoder_inputs)
x = layers.Dense(28 * 28, activation='sigmoid')(x)
decoder_outputs = layers.Reshape((28, 28))(x) # Define the VAE model
encoder = keras.Model(encoder_inputs, [z_mean, z_log_var, z], name='encoder')
decoder = keras.Model(decoder_inputs, decoder_outputs, name='decoder')
vae_outputs = decoder(encoder(encoder_inputs)[2])
vae = keras.Model(encoder_inputs, vae_outputs, name='vae') # Loss function
def vae_loss(x, x_decoded_mean, z_log_var, z_mean): x = tf.keras.backend.flatten(x) x_decoded_mean = tf.keras.backend.flatten(x_decoded_mean) xent_loss = keras.losses.binary_crossentropy(x, x_decoded_mean) kl_loss = -0.5 * tf.reduce_mean(1 + z_log_var - tf.square(z_mean) - tf.exp(z_log_var)) return xent_loss + kl_loss vae.compile(optimizer='adam', loss=vae_loss)
vae.fit(x_train, x_train, epochs=10, batch_size=32, validation_data=(x_test, x_test))
Koşullu Değişken Otomatik Kodlayıcıların (CVAE'ler) Açıklaması
CVAE'ler koşullu girdiler sunarak VAE'lerin yeteneklerini genişletir. CVAE'ler belirli koşullara veya bilgilere dayalı olarak veri örnekleri oluşturabilir. Örneğin, modele girdi olarak istenen sınıf etiketini sağlayarak koşullu olarak kedi veya köpek görselleri oluşturabilirsiniz.
Gerçek zamanlı bir örnek kullanarak anlayalım.
CVAE'lerle Çevrimiçi Alışveriş Spor ayakkabı için çevrimiçi alışveriş yaptığınızı hayal edin:
- Temel VAE (koşul yok): Web sitesi size rastgele spor ayakkabılarını gösteriyor.
- CVAE (koşullarla birlikte): Tercihlerinizi siz seçersiniz – renk (kırmızı), boyut (10) ve stil (koşu).
- Encoder: Web sitesi seçimlerinizi anlar ve spor ayakkabılarını bu koşullara göre filtreler.
- Varyasyon: Koşullarınız dahilinde bile farklılıklar (kırmızının farklı tonları, koşu ayakkabısı stilleri) olduğunu kabul ederek bunları dikkate alır.
- Gizli Alan: Çeşitliliklere izin verilen bir “spor ayakkabı kişiselleştirme alanı” yaratır.
- dekoder: Kişiselleştirilmiş koşullarınızı kullanarak tercihlerinize yakından uyan spor ayakkabılarını size gösterir.
CVAE'ler, çevrimiçi alışveriş web siteleri gibi, seçimlerinizle yakından uyumlu özelleştirilmiş veriler (spor ayakkabı seçenekleri) oluşturmak için belirli koşulları (tercihleriniz) kullanır.
Değişken Otomatik Kodlayıcı (VAE) örneğinden devam ederek, Koşullu Değişken Otomatik Kodlayıcı (CVAE) uygulayabilirsiniz. Bu örnekte, MNIST veri kümesini ele alacağız ve bir sınıf etiketine göre koşullu olarak rakamlar üreteceğiz.
# Define the CVAE model
encoder = keras.Model([encoder_inputs, label], [z_mean, z_log_var, z], name='encoder')
decoder = keras.Model([decoder_inputs, label], decoder_outputs, name='decoder')
cvae_outputs = decoder([encoder([encoder_inputs, label])[2], label])
cvae = keras.Model([encoder_inputs, label], cvae_outputs, name='cvae')
VAE'ler ve CVAE'ler Arasındaki Fark
VAE
- VAE'ler sanat yaratan sanatçılar gibidir ama biraz rastlantısaldır.
- Herhangi bir özel talimat olmadan, çeşitli veri varyasyonları oluşturmayı öğrenirler.
- Rastgele resim gibi koşullar olmadan yeni veri örnekleri oluşturmak için kullanışlıdır.
CVVAE
- CVAE'ler belirli istekleri takip edebilen sanatçılar gibidir
- Verilen koşullara veya talimatlara göre veri üretirler
- Ana özellikleri korurken bir atı zebraya dönüştürmek gibi, oluşturulanlar üzerinde hassas kontrol istediğiniz görevler için kullanışlıdır
CVAE'leri Uygulama: Kod Örnekleri
El yazısı rakamları oluşturmak için bir CVAE uygulamak üzere TensorFlow ve Keras'ı kullanarak basit bir Python kod örneğini inceleyelim
# Import necessary libraries
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.models import Model # Define the CVAE model architecture
latent_dim = 2
input_shape = (28, 28, 1)
num_classes = 10 # Encoder network
encoder_inputs = keras.Input(shape=input_shape)
x = layers.Conv2D(32, 3, padding='same', activation='relu')(encoder_inputs)
x = layers.Flatten()(x)
x = layers.Dense(64, activation='relu')(x) # Conditional input
label = keras.Input(shape=(num_classes,))
x = layers.concatenate([x, label]) # Variational layers
z_mean = layers.Dense(latent_dim)(x)
z_log_var = layers.Dense(latent_dim)(x) # Reparameterization trick
def sampling(args): z_mean, z_log_var = args epsilon = tf.keras.backend.random_normal(shape=(tf.shape(z_mean)[0], latent_dim)) return z_mean + tf.exp(0.5 * z_log_var) * epsilon z = layers.Lambda(sampling)([z_mean, z_log_var]) # Decoder network
decoder_inputs = layers.Input(shape=(latent_dim,))
x = layers.concatenate([decoder_inputs, label])
x = layers.Dense(64, activation='relu')(x)
x = layers.Dense(28 * 28 * 1, activation='sigmoid')(x)
x = layers.Reshape((28, 28, 1))(x) # Create the models
encoder = Model([encoder_inputs, label], [z_mean, z_log_var, z], name='encoder')
decoder = Model([decoder_inputs, label], x, name='decoder')
cvae = Model([encoder_inputs, label], decoder([z, label]), name='cvae')
#import csv
Bu kod, bir CVAE modeli için temel bir yapı sağlar. Görüntüleri eğitmek ve oluşturmak için uygun bir veri kümesine ve daha fazla ayarlamaya ihtiyacınız olacak.
CVAE'lerin uygulamaları
CVAE'lerin aşağıdakiler dahil çeşitli alanlarda uygulamaları vardır:
Görüntüden Görüntüye Çeviri: İçeriği korurken görüntüleri bir alandan diğerine çevirmek için kullanılabilirler. Bir atın fotoğrafınız olduğunu ve onu ana özelliklerini koruyarak bir zebraya dönüştürmek istediğinizi düşünün. CVAE'ler şunları yapabilir:
#import csv# Translate horse image to a zebra image
translated_image = cvae_generate(horse_image, target="zebra")
Stil Transferi: CVAE'ler sanatsal tarzların görseller arasında aktarılmasını sağlar. Diyelim ki bir resminiz var ve onun ünlü bir tabloya, örneğin Van Gogh'un "Yıldızlı Gece"sine benzemesini istiyorsunuz. CVAE'ler bu stili uygulayabilir:
#import csv
# Apply "Starry Night" style to your photo
styled_image = cvae_apply_style(your_photo, style="Starry Night")
- Anomali tespiti : Verilerdeki anormallikleri tespit etmede etkilidirler. Normal kalp atışlarından oluşan bir veri kümeniz var ve düzensiz kalp atışlarını tespit etmek istiyorsunuz. CVAE'ler anormallikleri tespit edebilir:
# Detect irregular heartbeats
is_anomaly = cvae_detect_anomaly(heartbeat_data)
- İlaç Keşfi: CVAE'ler ilaç keşfi için moleküler yapıların oluşturulmasına yardımcı olur. Diyelim ki hayat kurtaran bir ilaç için yeni moleküller bulmanız gerekiyor. CVAE'ler moleküler yapıların tasarlanmasına yardımcı olabilir:
#import csv# Generate potential drug molecules
drug_molecule = cvae_generate_molecule("anti-cancer")
Bu uygulamalar, CVAE'lerin görüntüleri nasıl dönüştürebildiğini, sanatsal stiller uygulayabildiğini, anormallikleri tespit edebildiğini ve ilaç keşfi gibi önemli görevlere nasıl yardımcı olabildiğini ve aynı zamanda temeldeki verileri anlamlı ve yararlı tutabildiğini gösteriyor.
Zorluklar ve Gelecekteki Yönler
Zorluklar
- Mod Daralt: CVAE'leri bazen tüm renklerini kullanmayı unutan bir ressam gibi düşünün. Modun çökmesi, CVAE'ler farklı şeyler için aynı renkleri (temsilleri) kullanmaya devam ettiğinde meydana gelir. Yani tüm hayvanları tek bir renge boyayarak çeşitliliği kaybedebilirler.
- Yüksek Çözünürlüklü Görüntüler Oluşturma: Bir sanatçıdan küçük bir tuval üzerine detaylı, büyük bir duvar resmi yapmasını istediğinizi hayal edin. Bu zorlayıcı. CVAE'ler son derece ayrıntılı, büyük resimler oluşturmaya çalışırken benzer bir zorlukla karşı karşıyadır.
Gelecek Hedefler
Araştırmacılar CVAE'leri daha iyi hale getirmek istiyor:
- Modun Çökmesini Önleme: Sanatçının (CVAE) sahip olduğu tüm renkleri (temsilleri) kullanmasını, daha çeşitli ve doğru sonuçlar yaratmasını sağlamaya çalışıyorlar.
- Yüksek Çözünürlüklü Sanat: Kullanılan teknikleri geliştirerek sanatçının (CVAE) daha büyük ve detaylı duvar resimleri (resimler) yapmasına yardımcı olmayı amaçlamaktadır. Bu sayede CVAE'lerden etkileyici, kaliteli sanat eserleri elde edebiliyoruz.
Sonuç
Koşullu Değişken Otomatik Kodlayıcılar, Üretken Yapay Zekada çığır açan bir gelişmeyi temsil eder. Belirli koşullara dayalı veri üretme yetenekleri, çeşitli uygulamalarda bir olasılıklar dünyasının kapılarını açıyor. Temel ilkelerini anlayarak ve bunları etkili bir şekilde uygulayarak, gelişmiş görüntü oluşturma ve ötesi için CVAE'lerin potansiyelinden yararlanabiliriz.
Önemli Noktalar
- Üretken Yapay Zeka Gelişimi: Koşullu girişlerle görüntü oluşturmayı etkinleştirme.
- Basit Kahve Analojisi: VAE'leri kahve tercihlerini özetlemek, özü korurken farklılıklara izin vermek gibi düşünün.
- Temel VAE Kodu: MNIST veri kümesi kullanılarak yeni başlayanlar için uygun bir VAE Python kodu örneği sağlanmıştır.
- CVVAE Uygulaması: Makale, koşullu görüntü oluşturmaya yönelik bir CVAE uygulamak için bir kod pasajı içerir.
- Çevrimiçi Alışveriş Örneği: Çevrimiçi spor ayakkabı alışverişine bir benzetme, CVAE'lerin verileri koşullara göre özelleştirme yeteneğini göstermektedir.
Sık Sorulan Sorular
C. VAE'ler bir miktar rastgele veri üretirken, CVAE'ler belirli koşullara veya kısıtlamalara sahip veriler üretir. VAE'ler rastgele sanat yaratan sanatçılar gibidir.
A. Koşullu Değişken Otomatik Kodlayıcılar (CVAE'ler), yapay zeka dünyasında çok faydalıdır. Belirli koşullara göre özelleştirilmiş veriler oluşturarak birçok uygulamaya kapı açabilirler.
C. Evet, CVAE oluşturmaya yönelik araçlar sağlayan TensorFlow ve PyTorch gibi açık kaynaklı kitaplıkları bulabilirsiniz. Projelerinizi başlatmak için bu kitaplıklarda önceden eğitilmiş bazı modeller ve kod örnekleri mevcuttur.
C. Önceden eğitilmiş CVAE modelleri, Evrişimli Sinir Ağları (CNN'ler) gibi diğer mimarilere kıyasla daha az yaygındır. Ancak modelde ince ayar yaparak görevinize uyarlayabileceğiniz önceden eğitilmiş VAE'ler bulabilirsiniz.
Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır.
İlgili bağlantılar
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- PlatoData.Network Dikey Üretken Yapay Zeka. Kendine güç ver. Buradan Erişin.
- PlatoAiStream. Web3 Zekası. Bilgi Genişletildi. Buradan Erişin.
- PlatoESG. Otomotiv / EV'ler, karbon, temiz teknoloji, Enerji, Çevre, Güneş, Atık Yönetimi. Buradan Erişin.
- PlatoSağlık. Biyoteknoloji ve Klinik Araştırmalar Zekası. Buradan Erişin.
- ChartPrime. Ticaret Oyununuzu ChartPrime ile yükseltin. Buradan Erişin.
- Blok Ofsetleri. Çevre Dengeleme Sahipliğini Modernleştirme. Buradan Erişin.
- Kaynak: https://www.analyticsvidhya.com/blog/2023/09/generative-ai-conditional-vaes/