Otomatik kodlayıcılar anlamlı özellikleri öğrenemez


24

Bu ikisi gibi 50.000 imge var:

veri örneği veri example2

Veri grafiklerini gösteriyorlar. Bu görüntülerden özellikler çıkarmak istedim, böylece Theano (deeplearning.net) tarafından sağlanan otomatik kodlayıcı kodunu kullandım.

Sorun şu ki, otomatik kodlayıcılar herhangi bir özellik öğrenmiyor gibi görünüyor. RBM'yi denedim ve aynı.

MNIST veri kümesi hoş özellikler sağlıyor ancak verilerim hiçbir sonuç vermedi. Aşağıdaki örnekleri ekliyorum:

MNIST'te oluşturulan filtreler:

mnist filtresi

Verilerim hakkında eğitim verilerek oluşturulan filtreler:

verilerimden gelen filtreler

Gizli katman boyutları ve eğitim dönemlerinin birçok farklı permütasyonunu kullandım, ancak sonuçlar her zaman aynı.

Neden çalışmıyor Otomatik kodlayıcılar neden bu görüntülerden özellikler çıkaramıyor?

DÜZENLE:

Benzer bir sorunu olan herkes için. Çözüm gerçekten basitti ve sebep gerçekten aptaldı. Piksel değerlerini RGB kodlamasından 0 - 1 aralığında yüzmeye çıkarmayı unuttum.

Yeniden ölçekleme değerleri sorunu çözdü.

Yanıtlar:


15

Sinir ağlarında hata ayıklama genellikle ince ayarlı hiperparametreleri, öğrenilen filtreleri görselleştirmeyi ve önemli ölçümleri çizmeyi içerir. Hangi hiperparametreleri kullandığını paylaşır mısın?

  • Parti büyüklüğünüz nedir?
  • Öğrenme oranın nedir?
  • Ne tür bir otomatik kodlayıcı kullanıyorsunuz?
  • Bir Denoising Autoencoder kullanmayı denediniz mi? (Hangi yolsuzluk değerlerini denediniz?)
  • Kaç tane gizli katman ve hangi boyutta?
  • Giriş resimlerinizin boyutları nelerdir?

Eğitim kayıtlarını analiz etmek de faydalıdır. Dönemin bir fonksiyonu olarak rekonstrüksiyon kaybınızın (Y ekseni) grafiğini çizin (X ekseni). Yeniden yapılanma kaybınız yaklaşıyor mu yoksa uzaklaşıyor mu?

İşte, farklılaşan, 1500 çağdan sonra durdurulmuş, hiperparametreleri ayarlanmış (bu durumda öğrenme oranındaki bir düşüş) ve farklılaşan ve sonunda birleşen aynı ağırlıklarla yeniden başlatılan insan cinsiyet sınıflandırma için bir otomatik kodlayıcı örneği.

İşte yakınsak olanı: (bunu istiyoruz)

Vanilla "sınırlandırılmamış" sadece kimlik haritalamasını öğrendikleri bir problemle karşılaşabilir. Bu, toplumun Denoising, Sparse ve Contractive lezzetlerini yaratmasının sebeplerinden biri.

Buraya verilerinizin küçük bir alt kümesini gönderebilir misiniz? Size otomatik kodlayıcılarımdan birinin sonuçlarını göstermeye istekli olmak isterim.

Bir yandan not: Neden bu grafiklerin kolayca bir veri vektörü olarak temsil edilebildiği durumlarda, ilk olarak grafiklerin görüntülerini kullandığınızı kendinize sorabilirsiniz. yani,

[0, 13, 15, 11, 2, 9, 6, 5]

Yukarıdaki gibi bir problemi düzeltebiliyorsanız, esas olarak otomatik kodlayıcınızın ömrünü kolaylaştırırsınız. Üreten dağılımı öğrenmeye çalışmadan önce görüntüleri nasıl göreceğini öğrenmeye gerek yoktur.

Takip cevabı (verilen veriler)

İşte 1000 gizli ünite, tek katmanlı Denoising Autoencoder gelen filtreler. Filtrelerin bazılarının görünüşte rastgele olduğuna dikkat edin. Çünkü eğitimi çok erken bıraktım ve ağın bu filtreleri öğrenmek için zamanı yoktu.

İşte onu çalıştığım hiperparametreler:

batch_size = 4
epochs = 100
pretrain_learning_rate = 0.01
finetune_learning_rate = 0.01
corruption_level = 0.2

58. dönemden sonra antrenmandan vazgeçtim çünkü filtreler buraya göndermek için yeterince iyi. Yerinde olsam, başlamak için 1000x1000x1000 mimarisine sahip 3 katlı bir Yığın Denoising Autoencoder'ı eğitirdim.

İnce ayar adımının sonuçları:

validation error 24.15 percent
test error 24.15 percent

Dolayısıyla ilk bakışta, şanstan daha iyi görünüyor, ancak iki etiket arasındaki veri dağılımına baktığımızda, aynı yüzde oranının olduğunu görüyoruz (% 75,85 karlı ve% 24,15 kârsız). Bu, şebekenin, sinyal ne olursa olsun, "karlı" bir şekilde yanıt vermeyi öğrendiği anlamına gelir. Ne olacağını görmek için muhtemelen bunu daha büyük bir ağla daha uzun bir süre boyunca eğitirdim. Ayrıca, bu verilerin bir tür temel finansal veri kümesinden üretildiği anlaşılıyor. Sorununuzu yukarıda açıklanan vektörlere dönüştürdükten sonra Tekrarlayan Sinir Ağlarına bakmanızı tavsiye ederim. RNN'ler, bunun gibi zaman çizelgesi verilerinde bulunan geçici bağımlılıkların bazılarının yakalanmasına yardımcı olabilir. Bu yardımcı olur umarım.


Parti büyüklüğüm 20'dir. Öğrenme oranı 0.1 olarak ayarlanmıştır. Daraltmayı ve otomatik kodlayıcıları boşa harcamayı denedim. Bir gizli katman kullanıyorum. Her şeyi 50'den 1000 nörona kadar denedim. Görüntüleri 25x25'e yükseltirim - mnist'ten bile daha küçükler. Buna değer, bu arşivdeki tüm verilerimi ekliyorum: Bana otomatik kodlayıcılarınızın ve bu verilerin sonuçlarını gösterir misiniz?
b93dh44


Tamam, bu verilerle bir ağ kurdum. Cevaptaki düzenlemeye bakın.
sabalaba

Bu gerçekten ilginç görünüyor. Kodunu gönderebilir misin? Gerçekten çok memnun olurum. Kodumda ağın eğitim almasını önleyen bazı hatalar olabileceğini düşünüyorum. İnce ayar aşaması olduğunu fark ettim mi? Sanırım otomatik kodlayıcı sadece herhangi bir ince ayar yapmadan pretrains. Sakıncası yoksa bana çözümünüzü gösterir misiniz?
b93dh44

Kodumu gönderemem çünkü bu benim şirketim, ancak sizi Denoising Otomatik Kodlayıcı yapmak için örnek kod içeren bu eğiticiye işaret edebilirim: deeplearning.net/tutorial/dA.html . Tüm hiperparametre tavsiyesi bu kod için geçerli olacaktır.
sabalaba

3

Yorum yapacak kadar bilgim yok, bu yüzden cevap olarak koyacağım. Ancak kesin nedeni bilmiyorum:

  1. Sol alt bölgedeki desen ikinci örneğinize benzer görünüyor ve sağ alt köşedeki desen yakından incelendiğinde ilk örneğinize çok benziyor. Asıl soru, kaynak verilerinizde ne kadar çeşitlilik olduğu? 50 000 görüntünün tümü aynı desenin varyasyonlarıysa, otomatik kodlayıcının tüm verilerinizi açıklaması ve yeniden yapılandırması için gördüğümüz bu 3 anlamlı özellik haritası oldukça yeterli olabilir.

  2. İkincisi, yeniden yapılanma hatasına ve gerçek yapılanmış görüntülere bakmak isteyebilirsiniz. Ne kadar iyi sonuçlar? Yeniden yapılandırma hatası düşükse, muhtemelen aşağıda açıklanan resonlar nedeniyle (veya bu 3 modelin birleşimi ilgilenen tüm verileri tanımlamak için yeterli olabilir) nedeniyle bir kıyafeti olabilir. Aksi takdirde, otomatik kodlayıcı verilerinizi nasıl yeniden yapılandıracağınızı öğrenemez ve daha büyük otomatik kodlayıcıya veya daha iyi bir eğitim algoritmasına ihtiyacınız vardır.


1. Bu verilerde çok fazla çeşitlilik olduğunu düşünüyorum. Bu 50.000 grafiğin her biri biraz farklıdır. Otomatik kodlayıcının hepsini yalnızca 3 filtreye göre yeniden yapılandırmasının imkansız olduğunu düşünüyorum. 2. Yeniden yapılanma hatasını tahmin etmek için herhangi bir ipucu? Kullandığım kod hata veriyor ancak bana fazla bir şey söylemeyen çok büyük bir rakam. Yeniden yapılanma hatasını girişin büyüklüğü veya gizli katman sayısı ile karşılaştırmalı mıyım?
b93dh44
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.