Otomatik Kodlayıcı Nedir?

Otomatik kodlayıcı, girdi katmanındaki değerleri çıktı katmanına kopyalayan bir sinir ağıdır. Yani, sinir ağına girdi olarak verdiğimiz veriyi, çıktı katmanında tekrar oluştururuz. Otomatik kodlayıcı, veri setini eğitirken belirgin olarak (explicit) etiketlerin belirlenmediği bir denetimsiz öğrenme modelidir. Otomatik kodlayıcı, veriyi eğitirken kendi etiketlerini kendi ürettiği için öz-denetimli (self-supervised) bir öğrenme modeli olarak da geçer.

Bu sinir ağı iki ayrı fazdan oluşmaktadır; kodlayıcı (encoder) ve kod çözücü (decoder). Kodlayıcı x girdisinden f fonksiyonu ile h kodunu oluşturur h=f(x), Kod çözücü de bu h kodunu g fonksiyonu ile r çıktısına dönüştürür r=g(h), burada girdi (x) ve çıktı (r) birbirlerine eşit olacağından bu işleme yeniden yapılandırma (reconstruction) denir. Burada dikkat edilmesi gereken bir nokta eğer model g(f(x)) =x ‘i her yerde başarılı bir şekilde öğrenirse, bu aslında bizim pek işimize yarayan bir durum olmayacaktır; çünkü girdiyi aynen çıktı olarak kopyalamış ve girdiyi temsil edecek güzel bir kod örneği oluşturmamış demektir.

autoencoder1

Girdiyi temsil eden gizli katmana (hidden layer) kod denir. Mimari olarak otomatik kodlayıcıların en basit biçimi, bir girdi katmanı, bir çıkış katmanı ve bunları birbirine bağlayan bir veya daha fazla gizli katmana sahip çok katmanlı algılayıcıya (MLP) çok benzer ileri beslemeli, tekrarlanmayan bir sinir ağıdır. Bir otomatik kodlayıcı sinir ağı, hedef değerlerini girdilere eşit olacak şekilde ayarlayarak, geri yayılımı uygulayan denetimsiz bir öğrenme algoritmasıdır.

autoencoder2

 

Undercomplete: Otomatik kodlayıcının, girdi katmanından yararlı özellikler çıkartabilmek için bir yolu kodu yani h’yi, girdi katmanı x’den daha küçük boyutta tutacak şekilde kısıtlamaktır. Kod boyutu, girdi boyutundan daha az olan otomatik kodlayıcıya undercomplete denir. Undercomplete temsil edilen öğrenmede otomatik kodlayıcı, eğitim setinden önemli özellikler çıkartmaya mecbur kalmış olur.

Ne yazık ki, kodlayıcı ve kod çözücünün kapasitesi çok büyük olursa, otomatik kodlayıcı kopyalama işlemini yaparken, veri dağılımı hakkında yararlı bilgileri çıkartamayacaktır.

Overcomplete: Eğer gizli katman olan kodun boyutu girdinin boyutundan daha büyük olabiliyorsa bu duruma overcomplete denir.

İdeal olarak, otomatik kodlayıcının mimarisinin başarılı bir şekilde eğitim gerçekleştirebilmesi için kodlayıcı ve kod çözücünün kapasitesinin ve boyutunun, üzerinde çalıştığımız verinin dağılımının karmaşıklığına göre seçilmesi gerekir.

Otomatik Kodlayıcı Nerede Kullanılır?

Otomatik kodlayıcı, otomatik ilişkilendirme veya Diabolo ağı, etkin kodlamaların denetimsiz öğrenimi için kullanılan bir yapay sinir ağıdır. Bir otomatik kodlayıcının amacı, tipik olarak boyutsallığın azaltılması amacıyla bir veri kümesi için bir gösterimi (kodu) öğrenmektir. Boyutsallığın azaltılmasının yanısıra otomatik kodlayıcılar, veri sıkıştırma (data compression) algoritması olarak veya bir denetimli öğrenme modeli için özellik çıkartmak (feature extraction) amacıyla kullanılabilir. Bunların dışında otomatik kodlayıcıların bazı özel yapıları üretici model (generative model) olarak da kullanılabilmektedir.

Otomatik Kodlayıcının 4 Parametresi

Otomatik kodlayıcıyı oluşturmadan önce ayarlamamız gereken 4 tane hiper parametre bulunmaktadır.

  1. Kod Büyüklüğü (Code Size): Orta katmandaki düğümlerin az sayıda olması daha çok veri sıkıştırma anlamına gelmektedir.
  2. Katman Sayısı (Number of Layer) : Otomatik kodlayıcı istediğimiz derinliğe sahip olabilir.
  3. Katmanlardaki Düğüm Sayısı (Number of Nodes per Layer): Üzerinde çalıştığımız otomatik kodlayıcı mimarisine istif edilmiş otomatik kodlayıcı (stacked autoencoder) denilmektedir. Bunun sebebi her katman bir sonraki katman üzerine yığılmış, istif edilmiştir. Genelde bu istif edilmiş otomatik kodlayıcılar ‘Sandwitch’e benzetilmektedir. Kodlayıcının her katmanı giderek azalan düğüm sayısına sahip olmakta ve kod çözücü de aynı oranda katmanlarında giderek artan düğümlere sahiptir. Aynı zamanda kod çözücü, kodlayıcının simetriğidir.
  4. Kayıp Fonksiyonu (Loss Function): Kayıp fonksiyonu olarak eğer girdimiz [0,1] arasında bir dağılıma sahip ise binary crossentropy değilse de ortalama kare hata (mean squarred error) kullanabilmekteyiz.

 

Otomatik Kodlayıcılar Hakkında Daha Fazla Bilgi İçin

 

Designed by Freepik