Zephyrnet Logosu

Gelişmiş Üretken Yapay Zekayı Keşfetmek | Koşullu VAE'ler

Tarih:

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.

Koşullu VAE'ler | Üretken Yapay Zeka
Kaynak: IBM

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.

Değişken Otomatik Kodlayıcıları Anlamak | Koşullu VAE'ler | Üretken Yapay Zeka

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')
Kodlayıcı | Kod çözücü
Kaynak: ResearchGate

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ç

Kaynak: iNews

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

  1. Üretken Yapay Zeka Gelişimi: Koşullu girişlerle görüntü oluşturmayı etkinleştirme.
  2. Basit Kahve Analojisi: VAE'leri kahve tercihlerini özetlemek, özü korurken farklılıklara izin vermek gibi düşünün.
  3. 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.
  4. CVVAE Uygulaması: Makale, koşullu görüntü oluşturmaya yönelik bir CVAE uygulamak için bir kod pasajı içerir.
  5. Ç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

S1. Koşullu VAE'lerin VAE'lerden farkı nedir?

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.

Q2. Yapay zeka ve makine öğrenimi alanında Koşullu VAE'lerin rolü nedir?

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.

S3.CVAE'ler için açık kaynaklı veya önceden eğitilmiş modeller olan kütüphaneler nelerdir?

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.

S4. Belirli görevler için önceden eğitilmiş CVAE modelleri mevcut mu?

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.

spot_img

En Son İstihbarat

spot_img