Yapay Zekâ 101
Otomatik Kodlayıcı Nedir?

Önceden denetimli öğrenme teknikleri hakkında okudunuzysa, muhtemelen “otomatik kodlayıcı” terimini duymuşsunuzdur. Otomatik kodlayıcılar, denetimli öğrenme modellerinin geliştirildiği birincil yollardan biridir. Peki, otomatik kodlayıcı tam olarak nedir?
Kısaca, otomatik kodlayıcılar veri alımı, verilerin sıkıştırılması ve kodlanması, ardından kodlanmış temsilinden verilerin yeniden oluşturulmasıyla çalışır. Model, kayıp mínimuma indirgene ve veriler mümkün olduğunca yakın bir şekilde yeniden üretilene kadar eğitilir. Bu süreçte, bir otomatik kodlayıcı verilerin önemli özelliklerini öğrenebilir. Otomatik kodlayıcıların hızlı bir tanımı buysa da, otomatik kodlayıcıları daha yakından incelemek ve nasıl çalıştıklarını daha iyi anlamak faydalı olacaktır. Bu makale, otomatik kodlayıcıların mimarisini ve uygulamalarını açıklamak yoluyla otomatik kodlayıcıları açıklamaya çalışacaktır.
Otomatik Kodlayıcı Nedir?
Otomatik kodlayıcılar sinir ağlarıdır. Sinir ağları, birden fazla katmandan oluşur ve bir otomatik kodlayıcının tanımlayıcı özelliği, girdi katmanlarının çıktı katmanıyla aynı miktarda bilgi içermesidir. Giriş katmanı ve çıkış katmanının aynı sayıda birimi olması, bir otomatik kodlayıcının girdi verilerini yeniden üretmeye çalışmasıdır. Verileri analiz ettikten ve yeniden inşa ettikten sonra, denetimli bir şekilde çıktı verilerini verir.
Veriler bir otomatik kodlayıcıdan geçerken, doğrudan girdiden çıktıya haritalanmaz, yani ağ, girdi verilerini sadece kopyalamaz. Bir otomatik kodlayıcıda üç bileşen vardır: veri sıkıştıran bir kodlama (giriş) bölümü, sıkıştırılmış veriyi işleyen bir bileşen (darboğaz) ve veriyi orijinal haline geri döndüren bir dekodlayıcı (çıkış) bölümü. Veri bir otomatik kodlayıcıya beslendiğinde, kodlanır ve daha küçük bir boyuta sıkıştırılır. Ağ, kodlanmış/sıkıştırılmış veriler üzerinde eğitilir ve bu verilerin bir kopyasını çıkarır.
Peki, neden bir ağı, sadece kendisine verilen verilerin bir kopyasını çıkarmak için eğitmek istersiniz? Sebep, ağın girdi verilerinin “özünü” veya en önemli özelliklerini öğrenmesidir. Ağ eğitildikten sonra, benzer veriler oluşturmak veya belirli hedef özelliklerini eklemek ya da çıkarmak için bir model oluşturulabilir. Örneğin, bir otomatik kodlayıcıyı grainli resimler üzerinde eğitebilir ve sonra eğitilen modeli kullanarak resimden gürültüyü kaldırmak için kullanabilirsiniz.
Otomatik Kodlayıcı Mimarisi
Bir otomatik kodlayıcının mimarisine bir göz atalım. Burada, bir otomatik kodlayıcının temel mimarisini tartışacağız. Aşağıdaki bölümde ele alacağımız bu genel mimarinin varyasyonları vardır.

Foto: Michela Massi via Wikimedia Commons,(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)
Önceden de bahsedildiği gibi, bir otomatik kodlayıcı temel olarak üç farklı bileşenden oluşur: kodlayıcı, darboğaz ve dekodlayıcı.
Kodlayıcı bölüm, genellikle bir ileri beslemeli, yoğun olarak bağlı ağdır. Kodlama katmanlarının amacı, girdi verilerini alması ve bunları daha düşük boyutlu bir latent uzay temsiline sıkıştırmaktır, böylece verilerin yeni bir temsili oluşturulur.
Kodlama katmanları, veya darboğaz, sıkıştırılmış veri ile ilgilenir. Darboğaz kodu, gözlemlenen verilerin en ilgili kısımlarını belirlemek için özenle tasarlanır, yani verilerin yeniden inşa edilmesi için en önemli özelliklerini belirlemek. Burada amaç, hangi verilerin korunması gerektiğini ve hangilerinin atılabileceğini belirlemektir. Darboğaz kodu, temsil boyutu (temsilin ne kadar kompakt olduğu) ve değişken/özellik alaka düzeyi arasında bir denge kurmalıdır. Darboğaz, ağırlıkların ve ağınBias’larının element-wise aktivasyonunu gerçekleştirir. Darboğaz katmanı bazen latent temsil veya latent değişkenler olarak da adlandırılır.
Dekodlayıcı katman, sıkıştırılmış veriyi alarak ve onu orijinal boyutuna geri döndüren katmandır. Dönüşüm, kodlayıcı tarafından oluşturulan latent uzay temsilini kullanarak yapılır.
Bir otomatik kodlayıcının en temel mimarisi, bir tek katmanlı perceptronun mimarisine benzer bir ileri beslemeli mimaridir. Normal ileri beslemeli sinir ağları gibi, otomatik kodlayıcı geri yayılım yoluyla eğitilir.
Otomatik Kodlayıcı Özellikleri
Farklı türde otomatik kodlayıcılar vardır, ancak hepsi belirli özelliklere sahiptir.
Otomatik kodlayıcılar otomatik olarak öğrenirler. Etiketlere ihtiyaç duymazlar ve yeterli veri verildiğinde, bir otomatik kodlayıcının belirli bir tür girdi verisi üzerinde yüksek performans göstermesi kolaydır.
Otomatik kodlayıcılar veri spesifiktir. Bu, yalnızca daha önce eğitildiği veri türüne benzer verileri sıkıştırabileceği anlamına gelir. Otomatik kodlayıcılar ayrıca kayıp içerir, yani modelin çıktıları, girdi verilerine kıyasla bozulur.
Bir otomatik kodlayıcı tasarlanırken, makine öğrenimi mühendislerinin dört farklı model hiperparametresine dikkat etmesi gerekir: kod boyutu, katman sayısı, her katmandaki düğümler ve loss fonksiyonu.
Kod boyutu, ağın orta bölümünde kaç düğümün başladığını belirler ve daha az düğüm, verilerin daha fazla sıkıştırılmasını sağlar. Derin bir otomatik kodlayıcıda, katman sayısı mühendisin uygun gördüğü herhangi bir sayı olabilir, ancak kodlayıcı ilerledikçe her bir katmandaki düğümlerin sayısı azalmalıdır. Buna karşılık, dekodlayıcıda, düğümlerin sayısı, dekodlayıcı katmanları son kata yaklaştıkça artmalıdır. Son olarak, bir otomatik kodlayıcının loss fonksiyonu genellikle ikili cross-entropy veya mean squared error’dir. İkili cross-entropy, girdi verilerinin değerleri 0-1 aralığında olduğunda uygundur.
Otomatik Kodlayıcı Tipleri
Yukarıda bahsedildiği gibi, klasik otomatik kodlayıcı mimarisinin varyasyonları vardır. Farklı otomatik kodlayıcı mimarilerini inceleyelim.
Seyrek

Foto: Michela Massi via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)
Otomatik kodlayıcılar genellikle, verilerin bir darboğaz aracılığıyla sıkıştırılmasını sağlayan bir mimariye sahiptir. Seyrek otomatik kodlayıcılar, bu tipik işleme biçimine bir alternatiftir. Bir seyrek ağda, gizli katmanlar kodlayıcı ve dekodlayıcı katmanlarla aynı boyutu korur. Bunun yerine, bir katmandaki aktivasyonlar cezalandırılır, böylece loss fonksiyonu, girdi verilerinin istatistiksel özelliklerini daha iyi yakalar. Başka bir deyişle, bir seyrek otomatik kodlayıcının gizli katmanları, geleneksel bir otomatik kodlayıcınınkinden daha fazla birim içerir, ancak bir anda yalnızca belirli bir yüzdesi aktif olur. En etkili aktivasyon fonksiyonları korunur ve diğerleri ihmal edilir, bu da ağın, girdi verilerinin en önemli özelliklerini belirlemesine yardımcı olur.
Sıkıştırıcı
Sıkıştırıcı otomatik kodlayıcılar, verideki küçük varyasyonlara karşı dayanıklıdır ve verilerin tutarlı bir temsilini korur. Bu, loss fonksiyonuna bir ceza uygulanarak gerçekleştirilir. Bu düzenleme tekniği, girdi kodlayıcı aktivasyonlarının Jacobian matrisinin Frobenius normuna dayanır. Bu düzenleme tekniğinin etkisi, modelin, benzer girdilerin benzer kodlamalara sahip olacağı bir kodlama oluşturmasını sağlamaktır.
Evrişimli
Evrişimli otomatik kodlayıcılar, girdi verilerini alt bölümlere ayırarak ve bunları basit sinyallere dönüştürerek, verilerin yeni bir temsilini oluşturur. Evrişimli sinir ağlarına benzer şekilde, bir evrişimli otomatik kodlayıcı, özellikle görüntü verilerini öğrenmeye uzmanlaşır ve tüm görüntü bölümü boyunca hareket ettirilen bir filtre kullanır. Kodlayıcı katman tarafından oluşturulan kodlamalar, görüntüyü yeniden oluşturmak, görüntüyü yansıtmak veya görüntünün geometrisini değiştirmek için kullanılabilir. Filtreler bir kez ağ tarafından öğrenildiğinde, benzer girdiler üzerinde özellik çıkarmak için kullanılabilir.
Gürültü Giderici

Foto: MAL via Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)
Gürültü giderici otomatik kodlayıcılar, kodlama aşamasına gürültü ekler, böylece orijinal girdi verisinden bozulmuş bir kodlama oluşur. Bu bozulmuş veri, modeli eğitmek için kullanılır, ancak loss fonksiyonu, çıktı değerlerini bozulmuş girdi ile değil, orijinal girdi ile karşılaştırır. Hedef, ağın orijinal, bozulmamış görüntüyü yeniden üretmesini sağlamaktır. Bozulmuş veriyle orijinal veri arasında karşılaştırma yaparak, ağ, verilerin hangi özelliklerinin önemli olduğunu ve hangilerinin önemsiz/gürültü olduğunu öğrenir. Başka bir deyişle, bir modelün gürültülü görüntüleri temizlemesi için, görüntüdeki önemli özellikleri çıkarması gerekir.
Değişkenli
Değişkenli otomatik kodlayıcılar, verilerin latent değişkenlerinin nasıl dağıldığı hakkında varsayımlar yapar. Bir değişkenli otomatik kodlayıcı, eğitim görüntülerinin farklı özelliklerine ilişkin bir olasılık dağılımı üretir. Eğitime sırasında, kodlayıcı, girdi görüntülerinin farklı özelliklerine ilişkin latent dağılımlar oluşturur.

Ağın eğitimi sırasında, kodlanmış veri analiz edilir ve tanıma modeli, görüntülerin ortalama ve standart sapmasını çıkaran iki vektörü verir. Bu değerlere dayalı bir dağılım oluşturulur. Bu, latent durumlar için yapılır. Dekodlayıcı, ilgili dağılımdan rastgele örnekler alır ve bunları, ağa verilen ilk girdileri yeniden oluşturmak için kullanır.
Otomatik Kodlayıcı Uygulamaları
Otomatik kodlayıcılar, boyut azaltma, veri gürültü giderme, özellik çıkarma, görüntü oluşturma, diziden diziye tahmin ve öneri sistemleri gibi çeşitli uygulamalar için kullanılabilir.
Veri gürültü giderme, otomatik kodlayıcıların görüntülerden grain veya gürültüyü kaldırmak için kullanılmasıdır. Benzer şekilde, otomatik kodlayıcılar, bulanık görüntüler veya bazı kısımları eksik olan görüntüler gibi diğer tür görüntü hasarlarını onarmak için de kullanılabilir. Boyut azaltma, yüksek kapasiteli ağların görüntülerin yararlı özelliklerini öğrenmesine yardımcı olabilir, bu nedenle otomatik kodlayıcılar, diğer tür sinir ağlarının eğitimini desteklemek için kullanılabilir. Bu, otomatik kodlayıcıların özellik çıkarmak için kullanılmasına da uygulanır, çünkü otomatik kodlayıcılar, diğer eğitim veri kümelerinin özelliklerini tanımlamak ve diğer modelleri eğitmek için kullanılabilir.
Görüntü oluşturma açısından, otomatik kodlayıcılar, sahte insan görüntüleri veya animasyon karakterleri oluşturmak için kullanılabilir, bu da yüz tanıma sistemleri tasarlamak veya animasyonun belirli yönlerini otomatikleştirmek için uygulamalara sahiptir.
Dizi-dizi tahmin modelleri, verilerin zamanlı yapısını belirlemek için kullanılabilir, yani bir otomatik kodlayıcı, bir dizi中的 sonraki olayı oluşturmak için kullanılabilir. Bu nedenle, bir otomatik kodlayıcı, videolar oluşturmak için kullanılabilir. Son olarak, derin otomatik kodlayıcılar, kullanıcı ilgisine ilişkin kalıpları tanımlayarak, öneri sistemleri oluşturmak için kullanılabilir, kodlayıcı, kullanıcı etkileşim verilerini analiz eder ve dekodlayıcı, kurulmuş kalıplara uyan öneriler oluşturur.












