|
|
||
|---|---|---|
| .. | ||
| README.md | ||
README.md
Otomatik Kodlayıcılar
CNN'leri eğitirken, karşılaştığımız sorunlardan biri çok fazla etiketli veriye ihtiyaç duymamızdır. Görüntü sınıflandırması durumunda, görüntüleri farklı sınıflara ayırmamız gerekir ki bu da manuel bir çabadır.
Ön ders sınavı
Ancak, CNN özellik çıkarıcılarını eğitmek için ham (etiketsiz) verileri kullanmak isteyebiliriz ki buna kendinden denetimli öğrenme denir. Etiketler yerine, eğitim görüntülerini hem ağ girişi hem de çıkışı olarak kullanacağız. Otomatik kodlayıcının ana fikri, girdi görüntüsünü bazı gizli alanlara (genellikle daha küçük boyutlu bir vektör) dönüştüren bir kodlayıcı ağına sahip olmamızdır; ardından orijinal görüntüyü yeniden oluşturmayı amaçlayan çözücü ağı gelir.
✅ Bir otomatik kodlayıcı, "etiketsiz verilerin verimli kodlamalarını öğrenmek için kullanılan bir tür yapay sinir ağıdır."
Otomatik kodlayıcıyı, orijinal görüntüden mümkün olduğunca fazla bilgiyi yakalamak için eğittiğimiz için, ağ girdi görüntülerinin anlamını yakalamak için en iyi gömülü alanı bulmaya çalışır.
Görsel Keras blogu kaynağındandır.
Otomatik Kodlayıcıların Kullanım Senaryoları
Orijinal görüntüleri yeniden oluşturmanın kendi başına faydalı görünmemesi bir yana, otomatik kodlayıcıların özellikle yararlı olduğu birkaç senaryo vardır:
- Görüntülerin boyutunu düşürmek için görselleştirme veya görüntü gömülü alanları eğitimi. Genellikle otomatik kodlayıcılar, PCA'dan daha iyi sonuçlar verir çünkü görüntülerin mekansal doğasını ve hiyerarşik özelliklerini dikkate alır.
- Gürültü azaltma, yani görüntüden gürültüyü kaldırma. Çünkü gürültü birçok gereksiz bilgi taşır, otomatik kodlayıcı bunu nispeten küçük gizli alana sığdıramaz ve dolayısıyla yalnızca görüntünün önemli kısmını yakalar. Gürültü gidericileri eğitirken, orijinal görüntülerle başlarız ve otomatik kodlayıcı için girdi olarak yapay olarak eklenmiş gürültü içeren görüntüleri kullanırız.
- Süper çözünürlük, görüntü çözünürlüğünü artırma. Yüksek çözünürlüklü görüntülerle başlarız ve daha düşük çözünürlüklü görüntüyü otomatik kodlayıcı girişi olarak kullanırız.
- Üretken modeller. Otomatik kodlayıcıyı eğittikten sonra, çözücü kısmı rastgele gizli vektörlerden yeni nesneler oluşturmak için kullanılabilir.
Varyasyonel Otomatik Kodlayıcılar (VAE)
Geleneksel otomatik kodlayıcılar, girdi verilerinin boyutunu bir şekilde azaltarak, girdi görüntülerinin önemli özelliklerini belirler. Ancak, gizli vektörler genellikle pek anlam ifade etmez. Başka bir deyişle, MNIST veri setini örnek alırsak, farklı gizli vektörlerin hangi rakamlara karşılık geldiğini bulmak kolay bir iş değildir, çünkü yakın gizli vektörler aynı rakamlara karşılık gelmeyebilir.
Diğer yandan, üretken modelleri eğitmek için gizli alanı anlamak daha iyidir. Bu fikir bizi varyasyonel otomatik kodlayıcı (VAE) kavramına götürür.
VAE, gizli parametrelerin istatistiksel dağılımını tahmin etmeyi öğrenen bir otomatik kodlayıcıdır, buna gizli dağılım denir. Örneğin, gizli vektörlerin belirli bir ortalama zmean ve standart sapma zsigma ile normal dağılıma sahip olmasını isteyebiliriz (hem ortalama hem de standart sapma belirli bir boyut d'ye sahip vektörlerdir). VAE'deki kodlayıcı bu parametreleri tahmin etmeyi öğrenir ve ardından çözücü, nesneyi yeniden oluşturmak için bu dağılımdan rastgele bir vektör alır.
Özetlemek gerekirse:
- Girdi vektöründen
z_meanvez_log_sigmatahmin ediyoruz (standart sapmayı tahmin etmek yerine, onun logaritmasını tahmin ediyoruz) - Dağılımdan N(zmean,exp(zlog_sigma)) dağılımından bir vektör
sampleörnekliyoruz - Çözücü,
sample'yi girdi vektörü olarak kullanarak orijinal görüntüyü çözmeye çalışır
Görsel bu blog yazısından Isaak Dykeman'a aittir.
Varyasyonel otomatik kodlayıcılar, iki bölümden oluşan karmaşık bir kayıp fonksiyonu kullanır:
- Yeniden yapılandırma kaybı, yeniden oluşturulan bir görüntünün hedefe ne kadar yakın olduğunu gösteren kayıp fonksiyonudur (Bu, Ortalama Kare Hatası veya MSE olabilir). Bu, normal otomatik kodlayıcılardaki kayıp fonksiyonu ile aynıdır.
- KL kaybı, gizli değişken dağılımlarının normal dağılıma yakın kalmasını sağlar. Bu, iki istatistiksel dağılımın ne kadar benzer olduğunu tahmin etmek için kullanılan Kullback-Leibler sapması kavramına dayanır.
VAE'lerin önemli bir avantajı, yeni görüntüler oluşturmayı nispeten kolaylaştırmalarıdır çünkü gizli vektörleri örneklemek için hangi dağılımdan yararlanacağımızı biliyoruz. Örneğin, MNIST üzerinde 2D gizli vektörle VAE eğitimi yaptığımızda, farklı rakamlar elde etmek için gizli vektörün bileşenlerini değiştirebiliriz:
Görsel Dmitry Soshnikov tarafından sağlanmıştır.
Gizli parametre alanının farklı kısımlarından gizli vektörler almaya başladığımızda, görüntülerin birbirine nasıl karıştığını gözlemleyin. Bu alanı 2D olarak da görselleştirebiliriz:
Görsel Dmitry Soshnikov tarafından sağlanmıştır.
✍️ Alıştırmalar: Otomatik Kodlayıcılar
Otomatik kodlayıcılar hakkında daha fazla bilgi edinmek için ilgili not defterlerini inceleyin:
Otomatik Kodlayıcıların Özellikleri
- Veri Spesifik - yalnızca eğitildikleri görüntü türleriyle iyi çalışırlar. Örneğin, çiçekler üzerinde süper çözünürlük ağı eğitirsek, portreler üzerinde iyi çalışmaz. Bunun nedeni, ağın eğitim veri setinden öğrenilen özelliklerden ince detaylar alarak daha yüksek çözünürlüklü görüntü üretebilmesidir.
- Kaybı - yeniden oluşturulan görüntü, orijinal görüntüyle aynı değildir. Kayıp doğası, eğitim sırasında kullanılan kayıp fonksiyonu tarafından tanımlanır.
- Etiketsiz veriler üzerinde çalışır.
Ders sonrası sınav
Sonuç
Bu derste, AI bilimcisine sunulan çeşitli otomatik kodlayıcı türlerini öğrendiniz. Onları nasıl inşa edeceğinizi ve görüntüleri nasıl yeniden oluşturmak için kullanacağınızı öğrendiniz. Ayrıca VAE'yi ve yeni görüntüler oluşturmak için nasıl kullanacağınızı öğrendiniz.
🚀 Meydan Okuma
Bu derste, otomatik kodlayıcıların görüntüler için nasıl kullanıldığını öğrendiniz. Ancak müzik için de kullanılabilirler! Otomatik kodlayıcıları müziği yeniden yapılandırmayı öğrenmek için kullanan Magenta projesinin MusicVAE projesine göz atın. Ne yaratabileceğinizi görmek için bu kütüphane ile bazı deneyler yapın.
Ders sonrası sınav
Gözden Geçirme & Kendi Kendine Çalışma
Otomatik kodlayıcılar hakkında daha fazla bilgi için bu kaynakları okuyun:
- Keras'da Otomatik Kodlayıcılar İnşası
- NeuroHive'daki Blog Yazısı
- Varyasyonel Otomatik Kodlayıcılar Açıklaması
- Koşullu Varyasyonel Otomatik Kodlayıcılar
Görev
TensorFlow kullanan bu not defterinin sonunda bir 'görev' bulacaksınız - bunu ödev olarak kullanın.
Açıklama:
Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkan yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz.
