Yapay zeka temelleri
Otomatik Kodlayıcı Nedir?
Eğer daha önce denetimli öğrenme teknikleri hakkında okudunuz, muhtemelen “otomatik kodlayıcı” terimini duymuşsunuzdur. Otomatik kodlayıcılar, denetimli öğrenme modellerinin geliştirilmesinde kullanılan birincil yöntemlerden biridir. Ancak otomatik kodlayıcı tam olarak nedir?
Kısaca, otomatik kodlayıcılar veri alarak, verileri sıkıştırarak ve kodlayarak, ardından kodlanmış temsilinden verileri yeniden oluşturarak çalışır. Model, kayıp minimize edildiğinde 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ı açıklamaya çalışacak, otomatik kodlayıcıların mimarisini ve uygulamalarını açıklayacak.
Otomatik Kodlayıcı Nedir?
Otomatik kodlayıcılar sinir ağlarıdır. Sinir ağları,多 katmanlardan oluşur ve bir otomatik kodlayıcının tanımlayıcı özelliği, giriş katmanlarının çıkış 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 giriş verilerini kopyalamayı amaçlamasıdır. Veri, analiz edildikten ve yeniden oluşturulduktan sonra, denetimli bir şekilde çıktı olarak verilir.
Veri, otomatik kodlayıcıdan geçerken, doğrudan girişten çıktıya haritalanmaz, yani ağ, giriş verilerini kopyalamaz. Bir otomatik kodlayıcıda üç bileşen vardır: veri sıkıştırarak kodlayan (giriş) bir bölüm, sıkıştırılmış veriyle ilgilenen bir bileşen (darboğaz) ve kodlanmış veriyi orijinal boyutuna geri dönüştüren (çıkış) bir bölüm. Veri bir otomatik kodlayıcıya verildiğinde, kodlanır ve daha küçük bir boyuta sıkıştırılır. Ağ, kodlanmış/sıkıştırılmış verilere göre eğitilir ve bu verilerin bir kopyasını çıktı olarak verir.
Peki, neden bir ağı, sadece kendisine verilen verilerin bir kopyasını çıkarmak için eğitmek istersiniz? Sebep, ağın giriş verilerinin “özünü” veya en önemli özelliklerini öğrenmesidir. Ağ eğitildikten sonra, benzer veriler oluşturmak için bir model oluşturulabilir, belirli hedef özellikler eklenerek veya çıkarılarak. Örneğin, bir otomatik kodlayıcı, grainli görseller üzerinde eğitilebilir ve daha sonra eğitilen model, görsellerdeki gürültüyü/gürültüyü kaldırmak için kullanılabilir.
Otomatik Kodlayıcı Mimarisi
Bir otomatik kodlayıcının mimarisine bakalım. Otomatik kodlayıcıların genel mimarisini burada tartışacağız. Bu genel mimarinin varyasyonları olacaktır, bunları aşağıda tartışacağız.

Foto: Michela Massi via Wikimedia Commons, (https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)
Önceden de bahsedildiği gibi, bir otomatik kodlayıcı esasen üç farklı bileşene ayrılabiliyor: kodlayıcı, darboğaz ve dekodlayıcı.
Otomatik kodlayıcının kodlayıcı bölümü genellikle ileri beslemeli, yoğun olarak bağlı bir ağdır. Kodlama katmanlarının amacı, giriş verilerini alıp bunları daha düşük boyutlu bir uzayda temsil eden yeni bir temsil oluşturmak, yani verilerin boyutlarını azaltmaktır.
Kod katmanları veya darboğaz, sıkıştırılmış veri temsilini işler. Darboğaz kodu, gözlemlenen verilerin en ilgili kısımlarını belirlemek için özenle tasarlanır, yani verilerin yeniden oluşturulması için en önemli özelliklerini belirlemek için. Burada amaç, hangi veri kısımlarının 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 alakalığı arasında bir denge kurmalıdır. Darboğaz, ağırlıkların ve ağın önyargılarının element-wise aktivasyonunu gerçekleştirir. Darboğaz katmanı bazen gizli temsil veya gizli değişkenler olarak da adlandırılır.
Dekodlayıcı katmanı, sıkıştırılmış veriyi orijinal boyutuna geri dönüştürmekle sorumludur. Dönüştürme, kodlayıcı tarafından oluşturulan gizli uzay temsilini kullanarak yapılır.
En temel otomatik kodlayıcı mimarisi, bir tek katmanlı perceptronun yapısına benzer bir ileri beslemeli mimaridir. Normal ileri beslemeli sinir ağları gibi, otomatik kodlayıcı da geri yayılım yoluyla eğitilir.
Otomatik Kodlayıcının Özellikleri
Farklı türde otomatik kodlayıcılar vardır, ancak hepsi bazı ortak özelliklere sahiptir.
Otomatik kodlayıcılar otomatik olarak öğrenirler. Etiketler gerektirmezler ve yeterli veri verildiğinde, belirli bir veri türünde yüksek performans elde etmek kolaydır.
Otomatik kodlayıcılar veri spesifiktir. Yani, yalnızca daha önce eğitildiği verilere benzer veriler üzerinde veri sıkıştırabilirler. Otomatik kodlayıcılar ayrıca kayıp içerir, yani modelin çıktısı, giriş verilerine göre 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üğümlerin sayısı ve kayıp fonksiyonu.
Kod boyutu, ağın orta kısmındaki düğüm sayısı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 her katmandaki düğüm sayısı, kodlayıcı ilerledikçe azalmalıdır. Buna karşılık, dekodlayıcıda, her katmandaki düğüm sayısı, son katmana yaklaştıkça artmalıdır. Son olarak, bir otomatik kodlayıcının kayıp fonksiyonu genellikle ikili cross-entropy veya ortalama kare hatadır. İkili cross-entropy, veri girişlerinin 0-1 aralığında olduğu durumlar için 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 boyutlarını azaltmak için bir darboğaz içerir. Seyrek otomatik kodlayıcılar, bu geleneksel işleyişe bir alternatiftir. Bir seyrek ağda, gizli katmanlar, kodlayıcı ve dekodlayıcı katmanlarla aynı boyutlara sahiptir. Bunun yerine, bir katmandaki aktivasyonlar cezalandırılır, böylece kayıp fonksiyonu, giriş 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 birime sahiptir, ancak yalnızca belirli bir yüzdesi her zaman aktiftir. En etkili aktivasyon fonksiyonları korunur ve diğerleri ihmal edilir, bu kısıtlama, ağın giriş 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 verileri tutarlı bir şekilde temsil eder. Bu, kayıp fonksiyonuna bir ceza uygulanarak gerçekleştirilir. Bu düzenleme tekniği, giriş kodlayıcı aktivasyonlarının Jacobian matrisinin Frobenius normuna dayanır. Bu düzenlemenin etkisi, modelin, benzer girişlerin benzer kodlamalara sahip olacağı bir kodlama oluşturmasıdır.
Convolutional
Convolutional otomatik kodlayıcılar, girişi alt bölümlere ayırır ve bu alt bölümleri basit sinyallere dönüştürür, ardından bu sinyalleri toplayarak verilerin yeni bir temsilini oluşturur. Convolutional sinir ağlarına benzer şekilde, bir convolutional otomatik kodlayıcı, özellikle görüntü verilerini öğrenmeye uzmanlaşır ve tüm görüntü bölümü boyunca hareket eden bir filtre kullanır. Kodlayıcı katman tarafından oluşturulan kodlamalar, görüntüyü yeniden oluşturmak, yansıtmak veya geometrisini değiştirmek için kullanılabilir. Bir kez filtreler ağ tarafından öğrenildiğinde, benzer girişlerden özellikler çı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 kodlama, orijinal giriş verilerinin bozulmuş bir sürümü olur. Bu bozulmuş veri, modeli eğitmek için kullanılır, ancak kayıp fonksiyonu, çıkış değerlerini orijinal girişle değil, bozulmuş girişle karşılaştırır. Hedef, ağın orijinal, bozulmamış görüntüyü yeniden üretebilmesidir. Bozulmuş veri ile orijinal veri arasındaki karşılaştırmayla, ağ, verilerin en önemli özelliklerini öğrenir ve hangilerinin gürültü veya bozulma olduğunu belirler. Başka bir deyişle, bir modelin gürültülü görüntüleri temizlemesi için, görüntüdeki önemli özellikleri çıkarması gerekir.
Değişkenlik
Değişkenlik otomatik kodlayıcılar, verilerin gizli değişkenlerinin dağılımı hakkında varsayımlar yapar. Bir değişkenlik otomatik kodlayıcı, eğitim görüntülerinin farklı özelliklerine ilişkin olasılık dağılımı üretir. Eğitim sırasında, kodlayıcı, giriş görüntülerinin farklı özelliklerine ilişkin gizli dağılımlar oluşturur.

Ağ eğitilirken, kodlanmış veri analiz edilir ve tanıma modeli, görüntülerin ortalama ve standart sapmasını üreterek iki vektör çıkarır. Bu değerlere dayanarak bir dağılım oluşturulur. Bu, farklı gizli durumlar için yapılır. Dekodlayıcı, karşılık gelen dağılımdan rastgele örnekler alır ve bunları orijinal girişleri yeniden oluşturmak için kullanır.
Otomatik Kodlayıcı Uygulamaları
Otomatik kodlayıcılar, çeşitli uygulamalar için kullanılabilir, ancak genellikle boyut indirgeme, veri gürültü giderme, özellik çıkarma, görüntü oluşturma, diziden diziye tahmin ve öneri sistemleri gibi görevler için kullanılır.
Veri gürültü giderme, otomatik kodlayıcıları kullanarak görüntülerdeki gürültüyü veya graini temizlemeyi içerir. Benzer şekilde, otomatik kodlayıcılar, diğer görüntü hasarlarını onarmak için de kullanılabilir, Örneğin, bulanık görüntüler veya eksik kısımları olan görüntüler. Boyut indirgeme, yüksek kapasiteli ağların görüntülerin önemli özelliklerini öğrenmesine yardımcı olabilir, yani otomatik kodlayıcılar, diğer sinir ağlarının eğitimini desteklemek için kullanılabilir. Bu, otomatik kodlayıcıları özellik çıkarmak için kullanmak için de geçerlidir, çünkü otomatik kodlayıcılar, diğer modelleri eğitmek için diğer eğitim veri kümelerinden özellikler tanımlamak 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ı tespit ederek, kodlayıcı kullanıcı etkileşim verilerini analiz ederek ve dekodlayıcı established kalıplara uyan öneriler oluşturarak öneri sistemleri oluşturmak için kullanılabilir.












