AutoEncoder nedir ? Türkçe

Muhammed Buyukkinaci
4 min readDec 28, 2017

--

AutoEncoder , Çok boyutlu datayı önce hidden space’de sıkıştıran sonra da sıkıştırılmış hidden space’den datayı reconstruct etmek (yeniden inşa etmek) için kullanılan unsupervised bir Neural Network çeşididir .

Yukarıdaki resim bir AutoEncoders örneğidir .(Source :https://blog.wtf.sg/2014/05/10/recursive-auto-encoders-an-introduction/)

Vanilla AutoEncoders’ta(yani en basit ve temel AE’da) 3 layer vardır . Yukarıdaki resimde yeşil node’lar input layer’ı , mavi node’lar hidden space’i(hidden layer veya latent space) , kırmızı node’lar ise output layer’ı temsil etmektedir. Input layer’daki node sayısı ile output layer’daki node sayısı eşittir çünkü AE’ın amacı datayı yeniden inşa etmektir.

Input Layer ile Hidden Space arasında encoder denir. Encoder çok boyutlu datayı az boyuta düşürmemizi sağlar . Hidden Space ile Output layer arasına ise decoder denir . Decoder ise sıkıştırılmış hidden space’in boyutunu artırarak inputu reconstruct etmeye çalışır (x= input, x’ = output)

Source :(https://www.researchgate.net/figure/Autoencoder-architecture_318204554)

AutoEncoders’ın amaçlarından birisi de datanın içinden önemli input featureları çıkarmaktır .Bunu çıkartırken hidden space’i kullanır . Yani AE hidden space’i önemli feature’ları çıkarmaya zorlar(bottleneck) .

Soldaki resim 28x28=784'lük MNIST datasetidir. Sağdaki ise 25 nodeluk hidden space vasıtası ile reconstruct edilmiş x’ . Source:(https://www.quora.com/What-is-an-auto-encoder-in-machine-learning)

AE’nin günümüzdeki en önemli kullanım alanlarından bir tanesi data denoising’dir yani datanın(daha çok ses ve image)içinde olup da datayı bozan ögelerin datadan temizlenmesi işlemidir .Yani bu işlem sonucu x’ yani bizim output layer’daki sonucumuz , input olan x’in içerdiği noise’leri içermemektedir. Bu işlem , özellikle voice recognition işlemlerinde sıkça kullanılmaktadır .(Denoising AutoEncoders)

AE sayesinde noise’lerden arındırılmış bir image, üstteki input alttaki ise output . Source:(https://www.learnopencv.com/tag/denoising/)

Mesela face detection (yüz tespiti) için train edilen bir AutoEncoder düşünelim. Face resimlerini input olarak koyduk ve AE’a dedik ki bize bunu yeniden reconstruct et . Yeterince train ettik ve modelimizi save ettik .Sonra o save ettiğimiz modeli load ettik ve bu train edilmiş modeli bu sefer de tree detection (ağaç tespiti) için kullanalım dedik. AE’ın hidden space’i face(yüz) için önemli feature’ları extract ettiği için (veya da ağaç için feature extraction yapmadığı için)tree (ağaç) içeren resimler bu AE üzerinde iyi çalışmayacaktır .

Eğer ki biz bir input data’dan önemli feature’ları çıkartacaksak(dimensionality reduction) , bizim outputumuz hidden space’in ta kendisi olacaktır . Bu açıdan PCA(Principal Component Analysis)’e benzemektedir . PCA linear bir boyut azaltma yöntemi iken AE’s non-linear bir boyut azaltma işlemidir. AE’da linear activation function’ı kullanılırsa, AE PCA’ya converge edecektir . Bu yüzden , Image ve Ses gibi çok non-linearity içeren datalarda AE kullanmak PCA kullanmaktan daha makuldur .

Bir text datası üzerinde train edilen PCA ve AE sonuçları . AE’nün bariz şekilde datayı daha iyi cluster ettiği görülüyor . Source: (https://www.slideshare.net/Technosphere1/lecture-8-47107559)

AE datayı reconstruct ederken aşağıdaki loss fonksiyonunu kullanır ve hata oranını düşürmek için neural nework’teki weight’leri gradient’lerle yani partial derivative’lerle update eder. Böylece x’ ; x’e yaklaşmış olur ve AE loss fonksiyonunu minimize eder.

x’ ve z’yi bulmak için kullanılan formüller aşağıdaki gibidir. Feed Forward Neural Network’ün çalışma yapısı ile benzerlik gösterir . Resimdeki σ activasyon fonksiyonunu temsil etmektedir. (1) sayesinde hidden space’deki value’leri (z) bulurken , (2 ) sayesinde z’yi kullanarak output layer’daki value’lar (x’) hesaplandı .

z ve x’ için kullanılan formüller(z hidden space’i represent ederken , x’ ise output layer’i temsil eder ): Source:(https://en.wikipedia.org/wiki/Autoencoder)

Eğerki hidden space’den başka da hidden layer’lar network’e eklenirse , bu yeni daha fazla layer içeren AE’a Stackted AutoEncoder veya Deep AutoEncoder denir.

Stackted AutoEncoder örneği Source :(https://wikidocs.net/3413)

Özet olarak söylemek gerekirse AE , daha çok,feature extraction ,dimensionality reduction ve data denoising için kullanılan bir unsupervised Neural Network çeşididir . Generative bir model değildir yani bir distribution fit edip o distribution’dan sample’lar üretmez .

Kaynakça (Sources):

  1. https://www.quora.com/What-are-autoencoders
  2. https://en.wikipedia.org/wiki/Autoencoder
  3. https://towardsdatascience.com/autoencoders-are-essential-in-deep-neural-nets-f0365b2d1d7c
  4. https://blog.keras.io/building-autoencoders-in-keras.html
  5. https://www.quora.com/Why-are-autoencoders-considered-a-failure-What-are-their-alternatives
  6. https://www.quora.com/What-are-the-differences-between-PCA-and-a-stacked-autoencoder

--

--