Yapay bir sinir ağı için girdiyi neden normalleştirmeliyiz?


151

Sinir ağları teorisi ile ilgili temel bir sorudur:

Bir sinir ağı girişini neden normalleştirmeliyiz?

Bazen, giriş değerleri sayısal olmadığında, belirli bir dönüşümün yapılması gerektiğini, ancak sayısal bir girişimiz olduğunda anlıyorum. Sayılar neden belirli bir aralıkta olmalıdır?

Veriler normalleştirilmezse ne olur?


1
Stats SE veya AI SE'ye ait olduğu için bu soruyu konu dışı olarak kapatmak için oy kullanıyorum.
nbro

Yanıtlar:


101

Bu en iyi izah burada .

Giriş değişkenleri bir MLP [çok katmanlı algılayıcı] 'da olduğu gibi doğrusal olarak birleştirilirse, en azından teoride girişlerin standartlaştırılması nadiren gereklidir. Bunun nedeni, bir giriş vektörünün herhangi bir yeniden ölçeklendirilmesinin, karşılık gelen ağırlıkları ve sapmaları değiştirerek etkin bir şekilde geri alınabilmesidir ve sizi daha önce yaptığınız çıktılarla aynı şekilde bırakır. Bununla birlikte, girdilerin standartlaştırılmasının eğitimi daha hızlı hale getirmesinin ve yerel optima'da takılma şansını azaltmasının çeşitli pratik nedenleri vardır. Ayrıca, ağırlık azalması ve Bayes kestirimi standart girdilerle daha rahat bir şekilde yapılabilir.


2
Merhaba, MLP'lerde, sabit bir öğrenme oranı kullanırken özellikleri standart hale getiremiyorum, farklı boyutlar için geri yayılım düzeltmelerinde aşırı / düşük telafiye neden oluyor mu? Bu yazı CNN'lere özelse veya MLP'ler bu sorunu paylaşabilirse aşağıdaki yazıdan merak ediyorum: stats.stackexchange.com/questions/185853/…
Austin

Sorun: Gradyan İniş ops. işlem çok daha uzun sürebilir. Neden? Özellikler farklı ölçekte olduğunda (x1 = 0-1 ve x2 = 0..1000), hata fonksiyon yüzeyi uzayabilir. Anlamı: farklı dims için farklı ölçekler (w1, w2). Ama öğrenme oranıdır AYNI tüm ölçüler için -> uzatılmış loş (w2) adımları ulaşır yerel dk kadar çok küçüktür. Sorun: LR dahil edilemez, çünkü diğer loştaki yerel min'i atlayacaktır (w1). Demoyu youtube.com/watch?reload=9&v=UIp2CMI0748
Dekel

Ölçeklemeden işlerin çok kötü olduğu doğrusal bir örnek: stackoverflow.com/q/59319643 . Neden olduğu hakkında bir fikrin var mı?
AlwaysLearning

62

Sinir ağlarında, sadece verileri normalleştirmek değil, aynı zamanda ölçeklemek de iyi bir fikirdir. Bu hata yüzeyinde küresel minimaya daha hızlı yaklaşmak için tasarlanmıştır. Aşağıdaki resimlere bakın: normalizasyon öncesi ve sonrası hata yüzeyi

ölçeklemeden önce ve sonra hata yüzeyi

Sinir ağları hakkında ders dersinden resimler çekilir . Dersin yazarı Geoffrey Hinton.


14
Gönderdiğiniz grafiğin yazarı için teşekkür ederiz. Grafik, Geoffrey Hinton'un kurs dersinden açıkça alınmıştır .
Ricardo Cruz

5
Bu videoyu yukarıdaki şemayı açıklamamda gerçekten yararlı buldum , ki bu tek başına benim için belirgin değildi.
chris838

21

NN'ye yapılan bazı girdiler 'doğal olarak tanımlanmış' bir değer aralığına sahip olmayabilir. Örneğin, ortalama değer yavaş olabilir, ancak zamanla sürekli artabilir (örneğin, veritabanındaki bir dizi kayıt).

Bu durumda, bu ham değeri ağınıza aktarmak çok iyi çalışmaz. Ağınıza, aralığın alt kısmındaki değerler hakkında bilgi verirken, gerçek girişler bu aralığın daha yüksek kısmından (ve ağın çalışmayı öğrendiği büyük olasılıkla aralığın üstünde) olacaktır.

Bu değeri normalleştirmelisiniz. Örneğin, bir önceki girişten bu yana değerin ne kadar değiştiğini ağa söyleyebilirsiniz. Bu artış genellikle belirli bir aralıkta yüksek olasılıkla tanımlanabilir, bu da onu ağ için iyi bir girdi haline getirir.


Önceki girdi kümesine normalleştirme hakkında güzel bir ipucu. Bu, kullanıcıyı keyfi bir normalleştirme faktörü tanımlamaktan kurtarır. Ancak normalizasyon faktörü her girdi vektörüne uygulanan global bir sabitse, ağın daha doğru bir şekilde çalışacağından şüpheleniyorum.
davide

11

Sinir ağına dışarıdan bakmak, sadece bazı argümanlar alan ve sonuç üreten bir işlevdir. Tüm işlevlerde olduğu gibi, bir etki alanı vardır (yani bir dizi yasal argüman). Etki alanında olduğundan emin olmak için sinir ağına iletmek istediğiniz değerleri normalleştirmeniz gerekir. Tüm işlevlerde olduğu gibi, bağımsız değişkenler etki alanında değilse, sonucun uygun olacağı garanti edilmez.

Sinir ağının alan dışındaki argümanlar üzerindeki tam davranışı, sinir ağının uygulanmasına bağlıdır. Ancak genel olarak, argümanlar etki alanı içinde değilse sonuç işe yaramaz.


16
Normal bir etkinleştirme işlevini (ReLu veya Sigmoid) alırsanız, etki alanı her zaman R ^ n alanının tamamıdır. Bu yüzden verileri normalleştirmek için bir neden olamaz.
Joker123

1
Bu aynı zamanda görüntülerin neden normalleştirildiğini de açıklamamaktadır, çünkü zaten 0-255
DollarAkshay

4

Sinir Ağına Beslemeden Önce Giriş Özelliklerini Normalleştirmemiz İçin 2 Neden Var:

Sebep 1 : Eğer bir Featurein Datasetdiğerlerine göre daha büyük ölçekli ise, o zaman bu büyük ölçekli özellik baskın hale gelir ve bunun sonucunda, Sinir Ağının Tahminleri Doğru olmayacaktır.

Örnek : Çalışan Verileri durumunda, Yaş ve Maaş'ı dikkate alırsak, Yaş İki Basamaklı Sayı olurken, Maaş 7 veya 8 Basamak (1 Milyon vb.) Olabilir. Bu durumda Maaş, Sinir Ağının Tahminine Hükmedecektir. Ancak bu Özellikleri Normalleştirirsek, her iki Özelliğin de değerleri (0 ile 1) aralığında olacaktır.

Sebep 2 : Yapay Sinir Ağlarının Önden Yayılması, Giriş Özelliklerine sahip Ağırlıkların Nokta Ürününü içerir. Bu nedenle, Değerler çok yüksekse (Görüntü ve Görüntü Dışı Veriler için), Çıktı Hesaplaması Bellek kadar çok Hesaplama Süresi gerektirir. Geri Yayılım sırasında da durum aynıdır. Sonuç olarak, Girişler Normalleştirilmezse Model yavaşça yakınsar.

Örnek : Görüntü Sınıflandırması yaparsak, her Pikselin Değeri 0 ila 255 arasında değiştiği için Görüntünün Boyutu çok büyük olacaktır. Bu durumda normalleştirme çok önemlidir.

Aşağıda Normalizasyonun çok önemli olduğu durumlar belirtilmiştir:

  1. K-Means
  2. K-En Yakın-Komşular
  3. Temel Bileşen Analizi (PCA)
  4. Dereceli alçalma

2

Cevabın senaryoya bağlı olduğuna inanıyorum.

NN'yi (sinir ağı) F operatörü olarak düşünün, böylece F (giriş) = çıkış . Bu ilişkinin doğrusal olması durumunda, F (A * girişi) = A * çıktısı olarak , giriş / çıkışı ham formlarında normalleştirilmemiş olarak bırakmayı veya her ikisini de A'yı ortadan kaldırmak için normalleştirmeyi seçebilirsiniz. Açıkçası bu doğrusallık varsayımı sınıflandırma görevlerinde veya olasılık çıktısı veren neredeyse tüm görevlerde ihlal (F (A * girişi) = 1 * çıktı)

Uygulamada, normalizasyon, deney yapamayan ağların, deneyciler / programcılar için çok önemli olan uygun hale getirilmesine izin verir. Bununla birlikte, normalleştirmenin kesin etkisi sadece ağ mimarisine / algoritmasına değil, aynı zamanda giriş ve çıkıştan önceki istatistiklere de bağlı olacaktır.

Dahası, NN genellikle çok zor problemleri kara kutu şeklinde çözmek için uygulanır, bu da altta yatan sorunun çok zayıf bir istatistiksel formülasyona sahip olabileceği anlamına gelir, bu da normalleşmenin etkisini değerlendirmeyi zorlaştırarak teknik avantajı (uygun hale gelir) istatistik üzerindeki etkisine hakim olmak.

İstatistiksel anlamda, normalleştirme, çıktıyı tahmin etmede nedensel olmadığı düşünülen varyasyonu ortadan kaldırır, böylece NN'nin bu varyasyonu bir öngörücü olarak öğrenmesini önlemek için ( NN bu varyasyonu görmez, dolayısıyla kullanamaz ).


2

Normalleştirilmemiş giriş özelliklerini kullandığınızda, kayıp işlevinin çok uzun vadilere sahip olması muhtemeldir. Degrade iniş ile optimizasyon yaparken, bu bir sorun haline gelir, çünkü degrade bazı parametrelere göre dik olacaktır. Bu, dik eğimler arasında zıplarken arama alanında büyük salınımlara yol açar. Telafi etmek için optimizasyonu küçük öğrenme hızlarıyla dengelemeniz gerekir.

Sırasıyla 0 ila 1 ve 0 ila 1 milyon arasında değişen x1 ve x2 özelliklerini düşünün. Karşılık gelen parametrelerin (örneğin, w1 ve w2) oranları da büyük olacaktır.

Normalleştirme, kayıp fonksiyonunu daha simetrik / küresel hale getirme eğilimindedir. Degradeler küresel minimum değere işaret etme eğilimi gösterdiğinden ve daha büyük adımlar atabildiğiniz için bunların optimize edilmesi daha kolaydır.


1

Normalleştirmenin gerekli olmasının nedeni, uyarlanabilir bir adımın işlev alanındaki bir yerde nasıl ilerlediğine bakarsanız ve sorunu basitçe, sonra farklı sonuçlar elde edersiniz. Doğrusal bir parçayı bir veri noktasına uyarlama sorusuna kaynar. Parça dönmeden ne kadar hareket etmeli ve bu eğitim noktasına karşılık olarak ne kadar dönmelidir? Alan adının farklı bölümlerinde değiştirilmiş bir adaptasyon prosedürünün olması hiç mantıklı değil! Bu nedenle, eğitim sonucundaki farkı azaltmak için normalleştirme gereklidir. Bunu yazmadım, ancak basit bir doğrusal işlev için matematiğe ve bunun iki farklı yerde bir eğitim noktası tarafından nasıl eğitildiğine bakabilirsiniz. Bu sorun bazı yerlerde düzeltilmiş olabilir, ancak onlara aşina değilim. ALN'lerde sorun düzeltildi ve wwarmstrong AT shaw.ca'ya yazarsanız size bir kağıt gönderebilirim


-9

Gizli katmanlar, verilerimizin karmaşıklığına uygun olarak kullanılır. Doğrusal olarak ayrılabilen giriş verileriniz varsa, örneğin OR geçidi gibi gizli katman kullanmamamız gerekir, ancak doğrusal olarak ayrılamaz bir veriye sahipsek, örneğin ExOR mantıksal kapısı gibi gizli katman kullanmamız gerekir. Herhangi bir katmanda alınan düğüm sayısı, çıktımızın çapraz doğrulama derecesine bağlıdır.

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.