Ölü relu nöronları nasıl kontrol edilir


10

Arka plan: Sinir ağlarını relu aktivasyonu ile donatırken, bazen tahminin sabit kaldığını gördüm. Bunun eğitim sırasında burada anlatılan relu nöronlarından kaynaklandığına inanıyorum. ( Sinir ağlarında "ölen ReLU" problemi nedir? )

Soru: Yapmayı umduğum şey, nöronların öldüğünü kontrol etmek için kodun kendisine bir kontrol uygulamak. Bundan sonra, kod gerekirse ağı yeniden bağlayabilir.

Öyleyse, ölü nöronları kontrol etmek için iyi bir citeria nedir? Şu anda bir citeria olarak tahmin düşük varyans kontrol düşünüyorum.

Eğer yardımcı olursa, keras kullanıyorum.


Tensorboard'daki önyargılar için bir özet ekleyin: tensorflow.org/get_started/summaries_and_tensorboard
Emre

Yanıtlar:


6

Ölü bir ReLU hemen hemen onun argüman değerinin negatif olduğu anlamına gelir, böylece eğim 0'da kalır; bu noktadan itibaren nasıl eğittiğiniz önemli değil. Bir ReLU'nun ölüp ölmediğini görmek için eğitim sırasında eğime bir göz atabilirsiniz.

Pratikte, sızdıran ReLU'ları kullanmak isteyebilirsiniz, yani f (x) = maks (0, x) yerine x (0) ise f (x) = x ve x <= 0 ise f (x) = 0.01x Bu şekilde her zaman sıfır olmayan küçük bir eğime izin verirsiniz ve ünite artık eğitimde tamamen sıkışmamalıdır.


1

Ölü bir nöron, eğitim sırasında güncellenmeyen bir nöron, yani. 0 gradyan.

Keras, belirli bir veri satırı için doğrudan gradyan çıkarmaya izin verir . (Bir başka güzel örnek)

Veya nöron ağırlıklarını çıkarabilir ve degradeyi kendiniz hesaplayabilirsiniz
(örn. Relu için, relu -> 0 gradyanına yönelik negatif argüman.)

Ne yazık ki, gradyan veri noktasına özgüdür. Yalnızca her egzersiz verisi satırı için degrade 0 ise, nöronun bir eğitim dönemi sırasında tüm minibatchlar için güncellenmeyeceğinden emin olabilirsiniz.

Sızdıran relu yararlı bir strateji olabilir, çünkü eğimin 0'a eşit olduğu sızdıran relu için değer yoktur.

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.