Yapay Zeka Resim Yapmayı Nasıl Öğrendi?

Yaratıcı resimler üreten yapay zekaları duymuşsunuzdur belki. Bu yapay zekalar kahve içerek e-maillerini okuyan gözlüklü bir tavşanın veya astronot giysisi giymiş tenis oynayan bir ayının resmini üretebilirler. Ama nasıl? Bu soruyu cevaplamadan önce yapay zekanın en temelinde nasıl çalıştığını anlamamız ve basit modelleri görmemiz lazım.

Yapay zeka tarafından üretilen bazı resimler. Resimleri aldığım kaynak: https://arxiv.org/abs/2209.04747

Bu yazıda yaratıcı yapay zekaların(Generative artificial intelligence) nasıl çalıştığını anlamaya çalışacağız. Bunu yapmak için de yapay zekanın çalışma prensibini öğreneceğiz. Fakat amacım konuyu tüm ayrıntılarıyla aktarmak değil; konu hakkında

genel bir fikir sahibi olmanızı sağlamak, merak uyandırmak ve daha fazlasını öğrenmek isteyenlere yol göstermek.

 

Yapay Zeka nasıl çalışır: Makine öğrenimi, Derin Öğrenme ve Yapay Sinir Ağları

 

Yazıya yapay zekanın nasıl çalıştığını tartışarak başlamak istiyorum. Zira en basit yapay zekaların nasıl çalıştığını anlamadan sanat üreten yapay zekalara geçemeyiz. Yürümeden koşamayız.

Makine Öğrenimi

Doğduğumuzda ve bebekken çevremiz hakkında pek az şey biliriz. Nasıl yürüyeceğimizi bilmeyiz, konuşmayı bilmeyiz, kalem tutmayı bilmeyiz, yaratıcı yapay zekaların nasıl çalıştığını hiç bilmeyiz. Ama bunların hepsini büyüdükçe tecrübe kazandıkça öğreniriz. Etrafımızdaki örüntüleri (pattern) tanımaya ve öğrenmeye başlarız. Ebeveynlerimizin söylediği kelimeleri ilk başlarda anlayamayız, dil bilmeyiz çünkü. Ama onların konuşmalarına maruz kaldıkça kelimeler arasındaki örüntüleri anlamaya başlarız: hangi kelimenin cümlenin neresinde, hangi kelimeden önce veya sonra, hangi durumlarda kullanıldığı gibi örüntüleri öğreniriz. Böylece zamanla konuşmayı öğreniriz.

Yapay zeka da ilk başta bir bebek gibidir(hatta bir bebekten de daha aptaldır, en azından bebeklerin içgüdüleri var): Başlangıçta dış dünya hakkında hiç bir şey bilmez, zamanla çevresi hakkında tecrübe edinir, öğrenir, örüntüleri tanır ve en sonunda da hepimizi şaşırtan sonuçlar ortaya koyar. Yapay zekanın bu şekilde öğrenmesine makine öğrenimi diyoruz.

Dikkatli okuyucuların aklına şöyle bir soru gelmiş olabilir: Bebekler çevreleri hakkında bilgi toplayıp yeni şeyler öğrenebiliyor çünkü bunu yapmalarını sağlayan bir beyinleri, sinir ağları var. Peki ya makineler nasıl öğreniyor? Cevap basit: Onların da sinir ağları var!(Ve-veya dahiyane matematiksel modellemeleri var!)

 

Derin Öğrenme ve Yapay Sinir Ağları

İnsan beyni nöronlardan oluşur. Bir nörondan başka nörona sinyal aktarılır ve bu işlem devasa nöron ağları boyunca devam eder, bu sayede beynimiz bilgiyi işler. Yapay sinir ağları(Artificial Neural Network) da beynimizin bu yapısından ilham alır, bu nöronları taklit eder. Bir yapay nörondan(perceptron) diğerine bilgi aktarılır, bu bilgi aktarımı tüm ağ boyunca katman katman yapılır ve en sonunda bir çıktı elde edilir.

Bu resimde görülen yuvarlakların her biri birer perceptron(yapay nöron)u temsil ediyor. Her bir bağ ise veri aktarımını temsil ediyor. Veri aktarımı sırasında veriler bazı katsayılar ile çarpılır ve sonucunda elde edilen sayı sonraki nörona girdi olarak girer. İlk başta bu katsayılar rastgele berirlenir. Bu nöral ağı antrenman verileri ile eğittikçe(training) katsayılar da istenilen sonucu elde etmemizi sağlayacak şekilde güncellenir. Bu “training” işlemi back-propogation(geri yayılım) ve gradient descent(gradyan düşüşü) yöntemleri ile yapılır.

Bir örnek ele alalım: Fashion MNIST

Bu projede yapay zekamız ona verilen kıyafet resimlerinin hangi kıyafete ait olduğunu tahmin ediyor. Kıyafetlerin ve onların kategorilerini belirten etiketlerin olduğu veri setini indirdikten sonra yapay zekamızın içindeki nöron katmanlarını tanımlayarak nöral ağ yapısını oluşturup projeye başlayabiliriz. Bunu yapmak python kütüphaneleri sayesinde birkaç satır kod yazmak kadar kolaydır:

Yapay zekanın beynini oluşturan kod satırları

Şu anda çevresi hakkında bilgisiz bir bebeğe benzeyen yapay zekamızı eğiterek ona tecrübe kazandırmamız gerekir. Kıyafetlerin ve onlara karşılık gelen kategorilerin veri setini yapay zekamızı yükleyerek onu eğitelim. Bu aşama “training” kısmını oluşturur. Bu da bir satır kod yazmak kadar kolaydır.

Yapay zekayı eğittiğimiz kod satırı

Yapay zekamızı eğittikten sonra kıyafetler hakkında tahmin yapmasını isteyebiliriz.

Yapay zekanın kıyafetlerin kategorileri üzerine yaptığı tahminler

Yapay zeka nasıl yeni şeyler üretir?

Nöral ağların nasıl çalıştığını anladığımızı umuyorum. Ama hala bir sorun var. Fark etmiş olabileceğiniz gibi MNIST örneğinde yapay zekanın yaptığı iş bir sınıflandırma(classification) göreviydi. Kıyafetlerin resimleri yapay zeka modelimize girdi olarak girmiş ve yapay zeka resimdeki kıyafetin ne olduğunu tahmin etmeye çalışmıştı. Takdir edersiniz ki resimleri sınıflandırmak ve yeni resimler üretmek arasında bir uçurum var. Birinden sonrakine atlamak pek kolay değil ama gelin bunu nasıl yapıyorlar anlamaya çalışalım.

 

Encoders ve Decoders(kodlayıcı ve kod çözücüler)

Encoder decoder modelinin amacı girdi(input) resminin aynısını üretmeye çalışmaktır. Yapay zeka modelimiz Encoder ve Decoder olmak üzere iki parçadan oluşur. Girdi resmi Encoder parçasına girer, buradaki yapay sinir ağları boyunca ilerler. Encoder’ın amacı resmimizi latent değişkenlerinden(latent variable) oluşan latent space’e indirmektir. Latent space resimimizin içindeki en önemli bilgilerin daha düşük boyutlu bir küme tarafından ifade edilmesi olarak düşünülebilir (latent space’i az sonra daha iyi anlatacağım). Resmimizi latent space’e çevirdikten sonra devreye Decoder kısmı girer. Decoder kısmının görevi latent dağılımından yola çıkarak(latent distribution) orijinal resmi yeniden üretmeye çalışmaktır.

 

Latent Space

Platon’un mağara alegorisini duymuşsunuzdur. Bir grup tutsak mağaraya kilitlenir.

Sadece mağaranın duvarını görebilecekleri şekilde bağlanırlar. Tutsakların arkasında ateş yakılır ve ateşin önünden nesneler geçirilir. Nesnelerin gölgesi mağaranın duvarına düşer. Tutsakların görebildikleri tek şey bu gölgelerdir, nesnelerin kendisini göremezler. Sadece gölgelerini gözlemleyebilirler. Biz de bu tutsaklar gibiyiz der Platon. Generative AI düşünüldüğünde gerçekten de biz de öyleyiz(Platon’nun ileri görüşlülüğünü takdir etmek lazım). Girdi olarak giren resmi gözlemleyebiliyoruz ama resim hakkında asıl bilmek istediklerimiz latent değişkenlerde saklı. Latent değişkenler bize resmin özünde yatan önemli bilgileri veren değişkenler. Ama onları doğrudan gözlemleyemiyoruz. Neyse ki burada yardımımıza yapay zeka koşuyor. Encoder, resmin altında yatan latent değişkenleri bulmayı , bir nevi resmin içindeki bilgileri kodlamayı öğreniyor. Decoder ise bu bilgileri kullanarak orijinal resmi yeniden üretmeyi öğreniyor.

 

Variational Auto Encoders

Hadi işin içine biraz farklılık katalım! Yukarıda bahsettiğimiz encoder-decoder modelinde y apay zeka ona verilen resmi yeniden üretmeyi ve latent değişkenleri kullanmayı öğreniyordu. Peki ya ona verilen resmin aynısını değil de biraz değiştirilmiş halini yeniden üretmesini istersek? Burada devreye Variational Auto Encoder(VAE) giriyor. VAE genel yapı itibari ile yukarıda bahsettiğimiz modelin aynısı. Ama aralarında önemli bir fark var: Encoder elimizdeki resmi latent uzayına dönüştürdükten sonra latent uzayındaki değişkenleri rastgele şekilde bir miktar değiştiriyoruz. Bir miktar değiştirilmiş latent değişkenlerini girdi olarak alan decoder ise orijinal resime benzer ama farklı bir resim üretiyor. Latent değişkenlerini değiştirip farklı resimler üretme süreci sayesinde resim hakkında daha çok bilgiye sahip olup farklı resimler üretmenin yollarını keşfediyoruz.

Generative AI’ı anlamak için anlaşılması gereken en önemli modelin yukarıdaki model olduğunu düşünüyorum. Ama Diffusion Models ve Generative Adverserial Networks gibi başka modeller de bu alanda kullanılıyor. Özellikle difüzyon modelleri son yıllarda hızla önemini arttırmakta ve yapay zekanın yarattığı etkide önemli bir rol oynamakta.

Muhammet Talha Karasoy

Yazar

Related Posts

Bir Cevap Yazın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.