Keras: Çekirdek ve Etkinlik düzenleyiciler arasındaki fark


89

Weight_regularizer'ın Keras'ta artık kullanılamadığını ve onun yerine, etkinlik ve çekirdek düzenleyicisinin olduğunu fark ettim . Bilmek isterim:

  • Çekirdek ve etkinlik düzenleyiciler arasındaki temel farklar nelerdir ?
  • Weight_regularizer yerine activity_regularizer kullanabilir miyim ?

Yanıtlar:


87

Etkinlik düzenleyici, ağın çıktısının bir işlevi olarak çalışır ve çoğunlukla gizli birimleri düzenlemek için kullanılırken, weight_regularizer, adından da anlaşılacağı gibi, ağırlıklar üzerinde çalışır ve bozulmalarını sağlar. Temel olarak, düzenleme kaybını çıktının ( activity_regularizer) veya ağırlıkların ( weight_regularizer) bir fonksiyonu olarak ifade edebilirsiniz .

Belgelerden çok açık olmasa da yeni kernel_regularizeryerini alıyor weight_regularizer.

Tanımından kernel_regularizer:

kernel_regularizer: kernelAğırlık matrisine uygulanan düzenleyici işlevi (düzenleyiciye bakın).

Ve activity_regularizer:

activity_regularizer: Katmanın çıktısına uygulanan düzenleyici işlevi ("aktivasyonu"). (düzenleyiciye bakın).

Önemli Düzenleme : bir hata var Not olduğu activity_regularizer edildi ancak keras sürümünde 2.1.4 giderilmiştir (Tensorflow arka ucuyla en azından). Aslında, eski sürümlerde, etkinlik düzenleyici işlevi, çıktıya (amaçlandığı gibi katmanın gerçek etkinleştirmeleri) uygulanmak yerine, katmanın girdisine uygulanır. Bu nedenle, Keras'ın daha eski bir sürümünü kullanıyorsanız (2.1.4'ten önce), etkinlik düzenlemesi muhtemelen amaçlandığı gibi çalışmayabilir.

Üzerinde taahhüt görebilirsiniz GitHub'dan

Beş ay önce François Chollet, daha sonra Keras 2.1.4'e dahil edilen etkinlik düzenleyiciye bir düzeltme sağladı.


Bunun kernel_regularizerdeğiştirileceğinden tamamen emin weight_regularizermisin?
Simone

3
Kernel_regularizer'ı kullanan birçok örnek buluyorum, ancak activity_regularizer için bulmuyorum. Activity_regularizer için kullanım örnekleri hakkında yorum yapabilir misiniz?
Milad M

1
Gizli katmanların çıktılarını neden düzenli hale getirmek istersiniz? Girişleri (-1, 1) veya (0, 1) aralığına normalleştirmemizin nedeni aynı mı? Bu, SGD sürecine yardımcı olmak için girdileri sonraki katmanlara daha küçük tutmak mı?
Nagabhushan Baddi

1
@NagabhushanBaddi bu cevabı görün: datascience.stackexchange.com/a/15195/32811
Michele Tonutti

1
@FinncentPrice Sadece orada olduğunu varsayabilirim ve artık artık yok
Michele Tonutti

39

Bu cevap biraz geç, ancak gelecekteki okuyucular için yararlıdır. Dedikleri gibi zorunluluk, buluşun anasıdır. Sadece ihtiyacım olduğunda anladım.
Yukarıdaki cevap, her ikisinin de ağırlıkları etkilemesine neden olan farkı gerçekten belirtmiyor, bu yüzden ağırlıkların kendilerini cezalandırmakla katmanın çıktısı arasındaki fark nedir?
İşte cevap: Ağ ağırlıklarının küçük ve güzel olduğu, [-0.3] ile [+0.3] arasında değişen bir durumla karşılaştım.
Bu yüzden onları gerçekten cezalandıramam, onlarda yanlış bir şey yok. Çekirdek düzenleyici işe yaramaz. Bununla birlikte, katmanın çıktısı 100'lü yıllarda BÜYÜK.
Katmanın girdisinin de küçük olduğunu, her zaman birden az olduğunu unutmayın. Ancak bu küçük değerler, bu muazzam çıktıları üretecek şekilde ağırlıklarla etkileşime girer. Burada ihtiyacım olan şeyin çekirdek düzenleyiciden çok bir etkinlik düzenleyici olduğunu fark ettim. Bununla, bu büyük çıktılar için katmanı cezalandırıyorum, ağırlıkların kendilerinin küçük olması umrumda değil, sadece böyle bir duruma ulaşmasını engellemek istiyorum çünkü bu sigmoid aktivasyonumu doyuruyor ve kaybolma gibi tonlarca başka soruna neden oluyor. gradyan ve durgunluk.


1
Gerçekten Sezgisel.
Sarang Manjrekar
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.