saplama Otomatik Kodlayıcı nedir? - Unite.AI
Bizimle iletişime geçin

AI 101

Otomatik Kodlayıcı nedir?

mm
Güncellenmiş on

Denetimsiz öğrenme tekniklerini daha önce okuduysanız “” terimiyle karşılaşmış olabilirsiniz.otomatik kodlayıcı”. Otomatik kodlayıcılar, denetimsiz öğrenme modellerinin geliştirilmesinin birincil yollarından biridir. Yine de otomatik kodlayıcı tam olarak nedir?

Kısaca, otomatik kodlayıcılar verileri alarak, verileri sıkıştırarak ve kodlayarak ve ardından verileri kodlama temsilinden yeniden oluşturarak çalışır. Model, kayıp en aza indirilene ve veriler mümkün olduğunca yakın bir şekilde yeniden üretilene kadar eğitilir. Bu süreç sayesinde, bir otomatik kodlayıcı verilerin önemli özelliklerini öğrenebilir. Bu, otomatik kodlayıcının hızlı bir tanımı olsa da, otomatik kodlayıcılara daha yakından bakmak 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çıklayarak otomatik kodlayıcıların gizemini çözmeye çalışacak.

Otomatik Kodlayıcı nedir?

Otomatik kodlayıcılar sinir ağlarıdır. Sinir ağları birden çok katmandan oluşur ve bir otomatik kodlayıcının tanımlayıcı yönü, giriş katmanlarının tam olarak çıktı katmanı kadar bilgi içermesidir. Girdi katmanı ve çıktı katmanının tam olarak aynı sayıda birime sahip olmasının nedeni, bir otomatik kodlayıcının girdi verilerini kopyalamayı amaçlamasıdır. Analiz ettikten ve denetimsiz bir şekilde yeniden oluşturduktan sonra verilerin bir kopyasını çıkarır.

Bir otomatik kodlayıcı aracılığıyla hareket eden veriler, doğrudan girdiden çıktıya eşlenmez, bu da ağın yalnızca girdi verilerini kopyalamadığı anlamına gelir. Bir otomatik kodlayıcının üç bileşeni vardır: verileri sıkıştıran bir kodlama (giriş) bölümü, sıkıştırılmış verileri (veya darboğazı) işleyen bir bileşen ve bir kod çözücü (çıktı) bölümü. Veriler bir otomatik kodlayıcıya beslendiğinde, kodlanır ve daha sonra daha küçük bir boyuta sıkıştırılır. Ağ daha sonra kodlanmış/sıkıştırılmış veriler üzerinde eğitilir ve bu verilerin yeniden oluşturulmasını sağlar.

Öyleyse neden bir ağı kendisine verilen verileri yeniden yapılandırması için eğitmek isteyesiniz? Bunun nedeni, ağın girdi verilerinin "özünü" veya en önemli özelliklerini öğrenmesidir. Ağı eğittikten sonra, belirli hedef özelliklerin eklenmesi veya çıkarılmasıyla benzer verileri sentezleyebilen bir model oluşturulabilir. Örneğin, bir otomatik kodlayıcıyı grenli görüntüler üzerinde eğitebilir ve ardından eğitilen modeli görüntüden gren/gürültüyü gidermek için kullanabilirsiniz.

Otomatik Kodlayıcı Mimarisi

Bir göz atalım bir otomatik kodlayıcının mimarisi. Burada bir otomatik kodlayıcının ana mimarisini tartışacağız. Aşağıdaki bölümde tartışacağımız bu genel mimaride varyasyonlar var.

Fotoğraf: Wikimedia Commons aracılığıyla Michela Massi,(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

Daha önce bahsedildiği gibi, bir otomatik kodlayıcı temelde üç farklı bileşene ayrılabilir: kodlayıcı, darboğaz ve kod çözücü.

Otomatik kodlayıcının kodlayıcı kısmı tipik olarak ileri beslemeli, yoğun şekilde bağlı bir ağdır. Kodlama katmanlarının amacı, girdi verilerini alıp gizli bir uzay temsiline sıkıştırarak, verilerin azaltılmış boyutsallığa sahip yeni bir temsilini oluşturmaktır.

Kod katmanları veya darboğaz, verilerin sıkıştırılmış temsiliyle ilgilenir. Darboğaz kodu, gözlemlenen verilerin en ilgili kısımlarını belirlemek veya başka bir deyişle, verilerin yeniden yapılandırılması için en önemli olan özelliklerini belirlemek için dikkatlice tasarlanmıştır. Buradaki amaç, verilerin hangi yönlerinin korunması gerektiğini ve hangilerinin atılabileceğini belirlemektir. Darboğaz kodunun iki farklı hususu dengelemesi gerekir: temsil boyutu (temsil ne kadar kompakttır) ve değişken/özellik alaka düzeyi. Darboğaz, ağın ağırlıkları ve önyargıları üzerinde eleman bazında aktivasyon gerçekleştirir. Darboğaz katmanı bazen gizli temsil veya gizli değişkenler olarak da adlandırılır.

Kod çözücü katmanı, sıkıştırılmış verileri alıp orijinal, değiştirilmemiş verilerle aynı boyutlara sahip bir temsile dönüştürmekten sorumlu olan katmandır. Dönüştürme, kodlayıcı tarafından oluşturulan gizli alan gösterimi ile yapılır.

Bir otomatik kodlayıcının en temel mimarisi, çok katmanlı algılayıcılarda kullanılan tek katmanlı algılayıcıya çok benzeyen bir yapıya sahip ileri beslemeli bir mimaridir. Normal ileri beslemeli sinir ağları gibi, otomatik kodlayıcı da geri yayılım kullanılarak eğitilir.

Bir Otomatik Kodlayıcının Nitelikleri

Çeşitli otomatik kodlayıcı türleri vardır, ancak hepsinin onları birleştiren belirli özellikleri vardır.

Otomatik kodlayıcılar otomatik olarak öğrenir. Etiket gerektirmezler ve yeterli veri verilirse, belirli bir tür girdi verisinde yüksek performansa ulaşmak için bir otomatik kodlayıcı elde etmek kolaydır.

Otomatik kodlayıcılar verilere özeldir. Bu, yalnızca otomatik kodlayıcının üzerinde eğitilmiş olduğu verilere oldukça benzeyen verileri sıkıştırabilecekleri anlamına gelir. Otomatik kodlayıcılar da kayıplıdır, yani modelin çıktıları, girdi verilerine kıyasla daha düşük olacaktır.

Bir otomatik kodlayıcı tasarlarken, makine öğrenimi mühendislerinin dört farklı model hiper parametresine dikkat etmesi gerekir: kod boyutu, katman sayısı, katman başına düğümler ve kayıp işlevi.

Kod boyutu, ağın orta kısmında kaç düğümün başlayacağına karar verir ve daha az düğüm, verileri daha fazla sıkıştırır. Derin bir otomatik kodlayıcıda, katman sayısı mühendisin uygun gördüğü herhangi bir sayı olabilirken, kodlayıcı ilerledikçe bir katmandaki düğüm sayısı azalmalıdır. Bu arada, kod çözücüde bunun tersi geçerlidir, yani kod çözücü katmanları son katmana yaklaştıkça katman başına düğüm sayısı artmalıdır. Son olarak, bir otomatik kodlayıcının kayıp fonksiyonu tipik olarak ya ikili çapraz entropi ya da ortalama karesel hatadır. İkili çapraz entropi, verilerin giriş değerlerinin 0 – 1 aralığında olduğu durumlar için uygundur.

Otomatik Kodlayıcı Türleri

Yukarıda bahsedildiği gibi, klasik otomatik kodlayıcı mimarisinde varyasyonlar mevcuttur. Farklı otomatik kodlayıcı mimarilerini inceleyelim.

Seyrek

Fotoğraf: Wikimedia Commons aracılığıyla Michela Massi, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

Otomatik kodlayıcılar tipik olarak düğümlerin azaltılması yoluyla verileri sıkıştıran bir darboğaza sahipken, seyrek otomatik kodlayıcıs, bu tipik işlem biçimine bir alternatiftir. Seyrek bir ağda, gizli katmanlar, kodlayıcı ve kod çözücü katmanlarıyla aynı boyutu korur. Bunun yerine, belirli bir katmandaki aktivasyonlar cezalandırılır ve kayıp fonksiyonu giriş verilerinin istatistiksel özelliklerini daha iyi yakalayacak şekilde ayarlanır. Başka bir deyişle, seyrek bir otomatik kodlayıcının gizli katmanları, geleneksel bir otomatik kodlayıcıdan daha fazla birime sahipken, herhangi bir zamanda bunların yalnızca belirli bir yüzdesi etkindir. En etkili etkinleştirme işlevleri korunur ve diğerleri göz ardı edilir ve bu kısıtlama, ağın yalnızca girdi verilerinin en belirgin özelliklerini belirlemesine yardımcı olur.

büzülme

Sözleşmeli otomatik kodlayıcılar verilerin tutarlı bir temsilini koruyarak verilerdeki küçük değişikliklere karşı dirençli olacak şekilde tasarlanmıştır. Bu, kayıp fonksiyonuna bir ceza uygulanarak gerçekleştirilir. Bu düzenleme tekniği, giriş kodlayıcı aktivasyonları için Jacobian matrisinin Frobenius normuna dayanmaktadır. Bu düzenlileştirme tekniğinin etkisi, modelin benzer girdilerin benzer kodlamalara sahip olacağı bir kodlama oluşturmaya zorlanmasıdır.

Katlamalı

Evrişimli otomatik kodlayıcılar verileri alt bölümlere ayırarak ve ardından bu alt bölümleri, verilerin yeni bir temsilini oluşturmak için bir araya toplanan basit sinyallere dönüştürerek giriş verilerini kodlayın. Evrişimli sinir ağlarına benzer şekilde, evrişimli bir otomatik kodlayıcı, görüntü verilerinin öğrenilmesinde uzmanlaşmıştır ve tüm görüntü boyunca bölüm bölüm hareket ettirilen bir filtre kullanır. Kodlama katmanı tarafından üretilen 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 ağ tarafından öğrenildikten sonra, görüntünün özelliklerini çıkarmak için yeterince benzer herhangi bir girdide kullanılabilirler.

Gürültü arındırma

Fotoğraf: Wikimedia Commons aracılığıyla MAL, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

Otomatik kodlayıcıları gürültüden arındırma orijinal giriş verilerinin bozuk bir versiyonu olan bir kodlamayla sonuçlanan kodlamaya parazit katar. Verilerin bu bozuk sürümü, modeli eğitmek için kullanılır, ancak kayıp işlevi, çıktı değerlerini bozuk girdiyle değil orijinal girdiyle karşılaştırır. Amaç, ağın görüntünün orijinal, bozulmamış sürümünü yeniden üretebilmesidir. Ağ, bozuk verileri orijinal verilerle karşılaştırarak, verilerin hangi özelliklerinin en önemli ve hangi özelliklerinin önemsiz/bozulma olduğunu öğrenir. Başka bir deyişle, bir modelin bozuk görüntüleri giderebilmesi için görüntü verisinin önemli özelliklerini çıkarmış olması gerekir.

varyasyonel

Varyasyonlu otomatik kodlayıcılar verilerin gizli değişkenlerinin nasıl dağıldığı hakkında varsayımlar yaparak çalışır. Varyasyonel bir otomatik kodlayıcı, eğitim görüntülerinin/gizli özniteliklerin farklı özellikleri için bir olasılık dağılımı üretir. Eğitim sırasında kodlayıcı, girdi görüntülerinin farklı özellikleri için gizli dağılımlar oluşturur.

 

Model, özellikleri veya görüntüleri ayrık değerler yerine Gauss dağılımları olarak öğrendiğinden, yeni görüntüler oluşturmak için kullanılabilir. Gauss dağılımı, kod çözme ağına beslenen ve bu örnek vektörüne dayalı bir görüntü oluşturan bir vektör oluşturmak için örneklenir. Temel olarak, model, eğitim görüntülerinin ortak özelliklerini öğrenir ve bunların oluşmasına ilişkin bazı olasılıklar atar. Olasılık dağılımı, daha sonra, orijinal eğitim görüntülerine benzeyen yeni görüntüler oluşturarak bir görüntüyü tersine çevirmek için kullanılabilir.

Ağı eğitirken, kodlanmış veriler analiz edilir ve tanıma modeli, görüntülerin ortalamasını ve standart sapmasını çizerek iki vektör çıkarır. Bu değerlere göre bir dağılım oluşturulur. Bu, farklı gizli durumlar için yapılır. Kod çözücü daha sonra karşılık gelen dağıtımdan rasgele örnekler alır ve bunları ağa ilk girişleri yeniden yapılandırmak için kullanır.

Otomatik Kodlayıcı Uygulamaları

Otomatik kodlayıcılar geniş bir yelpazede kullanılabilir. uygulama çeşitliliği, ancak tipik olarak boyut azaltma, 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ırlar.

Veri gürültü giderme, görüntülerden gren/gürültüyü çıkarmak için otomatik kodlayıcıların kullanılmasıdır. Benzer şekilde, otomatik kodlayıcılar, bulanık görüntüler veya eksik bölümler gibi diğer görüntü hasarlarını onarmak için kullanılabilir. Boyut azaltma, yüksek kapasiteli ağların görüntülerin faydalı özelliklerini öğrenmesine yardımcı olabilir, bu da otomatik kodlayıcıların diğer sinir ağı türlerinin eğitimini artırmak için kullanılabileceği anlamına gelir. Otomatik kodlayıcılar, diğer modelleri eğitmek için diğer eğitim veri kümelerinin özelliklerini tanımlamak için kullanılabileceğinden, bu aynı zamanda özellik çıkarımı için otomatik kodlayıcıların kullanılması için de geçerlidir.

Görüntü üretimi açısından, otomatik kodlayıcılar, yüz tanıma sistemlerinin tasarlanmasında veya animasyonun belirli yönlerinin otomatikleştirilmesinde uygulamaları olan sahte insan görüntüleri veya animasyonlu karakterler oluşturmak için kullanılabilir.

Diziden diziye tahmin modelleri, verilerin zamansal yapısını belirlemek için kullanılabilir; bu, bir dizide bir sonraki çifti oluşturmak için bir otomatik kodlayıcının kullanılabileceği anlamına gelir. Bu nedenle, videolar oluşturmak için bir otomatik kodlayıcı kullanılabilir. Son olarak, derin otomatik kodlayıcılar, kodlayıcının kullanıcı katılım verilerini analiz etmesi ve kod çözücünün yerleşik modellere uyan öneriler oluşturmasıyla, kullanıcının ilgisiyle ilgili kalıpları toplayarak öneri sistemleri oluşturmak için kullanılabilir.

Uzmanlık alanlarına sahip blogcu ve programcı Makine öğrenme ve Derin Öğrenme konular. Daniel, başkalarının yapay zekanın gücünü toplumsal fayda için kullanmasına yardım etmeyi umuyor.