Derin öğrenme: Hangi değişkenlerin önemli olduğunu nasıl bilebilirim?


20

Sinir ağı lingo açısından (y = Ağırlık * x + önyargı) hangi değişkenlerin diğerlerinden daha önemli olduğunu nasıl bilebilirim?

10 giriş, 1 düğüm 20 düğüm ve 1 düğüm olan 1 çıkış katmanı ile bir sinir ağı var. Hangi giriş değişkenlerinin diğer değişkenlerden daha etkili olduğunu nasıl bileceğimden emin değilim. Düşündüğüm şey, eğer bir girdi önemliyse, o zaman ilk katmanla yüksek ağırlıklı bir bağlantıya sahip olacaktır, ancak ağırlık pozitif veya negatif olabilir. Yani yapabileceğim şey, girdilerin ağırlıklarının mutlak değerini alıp toplamlarıdır. Daha önemli girdilerin toplamı daha yüksek olur.

Bu nedenle, örneğin, saç uzunluğu girişlerden biriyse, bir sonraki katmandaki düğümlerin her birine 1 bağlantı, yani 20 bağlantı (ve dolayısıyla 20 ağırlık) olmalıdır. Her bir ağırlığın mutlak değerini alıp toplayabilir miyim?


3
Bunu kesinlikle yapabilirsiniz, ancak "bu değişken için tüm bağlantılar üzerindeki tüm ağırlıkların toplamı" dışında bunun ne anlama geldiği açık değildir. Buna "önem" demek tamamen keyfidir.
Matthew Drury

1
Sadece bir değişkenin önemli olduğunu gösteren herhangi bir bilgi istiyorum ve bunun iyi bir yol olabileceğini düşünüyorum.
user1367204

Yanıtlar:


16

Açıkladığınız şey aslında nöral-net girdilerin önemini ölçmenin standart bir yoludur. Ancak bunun çalışması için giriş değişkenlerinin bir şekilde normalleştirilmesi gerektiğini unutmayın. Aksi takdirde, daha büyük değerlere sahip olan giriş değişkenlerine karşılık gelen ağırlıklar orantılı olarak daha küçük olacaktır. Örneğin, bir değişkenin ortalamasını çıkartmak ve standart sapmasına bölmek gibi farklı normalleştirme şemaları vardır. Değişkenler ilk etapta normalleştirilmemişse, önem hesaplamasında, değişkenin standart sapması ile çarpma gibi ağırlıkların kendileri üzerinde bir düzeltme yapabilirsiniz.

.Ii=σij=1nhidden|wij|

Burada standart sapmasıdır i inci girişi, I i olan I inci girişin önemi, W ı j ağırlığı bağlanan i inci giriş j birinci tabaka içinde gizlenmiş düğüm inci, ve n, gizli sayı İlk katmandaki gizli düğümler.σiiIiiwijijnhidden

Diğer bir teknik , nöral-net eşlemenin türevini, girdiler üzerinden ortalaması alınan söz konusu girdiye göre kullanmaktır.

Ii=σi|dydxi|

Burada olan i inci giriş y çıkışı, ve beklenen değer giriş vektörü ile ilgili olarak alınır x .xiiyx


Yalnızca girişler ve ilk gizli katman (tüm gizli katmanları kullanmak yerine) arasındaki bağlantıları kullanırsam bu işe yarar mı?
user1367204

Yalnızca ilk gizli katmanı kullanmalısınız. Bir katmandan sonra, diğer ağırlıklar bir girdiye diğerinden daha fazla bağlanmaz. Bunu açıklığa kavuşturmak için cevabı biraz düzenledim.
Sam Marinelli

Başka bir yaklaşımı hatırladım ve cevaba ekledim.
Sam Marinelli

11

Biraz kaba kuvvet ama etkili bir çözüm:

Giriş özelliklerinizden biri için bir sabit kullanarak bir girdiyi 'bırakmayı' deneyin. Ardından, olası vakaların her biri için ağı eğitin ve doğruluğunuzun nasıl düştüğünü görün. Önemli girdiler, genel doğruluğa en büyük faydayı sağlayacaktır.


Bu kesinlikle bir olasılık.
SmallChess

6
Yine de bir tuzak var: bir özellik son derece önemli olsa bile, birincisiyle son derece ilişkili başka bir özellik varsa, ikisi de kriterleriniz tarafından önemli olarak kabul edilmeyecektir (ilkinin eksikliği, ikincisinin varlığı ile telafi edilir, ancak daha az bilgilendirici ancak daha 'benzersiz' özellikler bu şekilde daha önemli görünecek)
Firebug

Buna bazen ablasyon (daha spesifik olarak mikro ablasyon) testi denir
Veltzer Doron

7

105

Sığ bir ağ için bu , değişken önemi tanımlamaya bir örnek verir.

Gerçekten derin bir ağ için, insanlar değişken önem hakkında çok fazla konuşmazlar. Girişler, görüntüdeki pikseller gibi ham düzey özellikleridir.


Ne demek istediğimi yansıtacak şekilde yorumumu düzenledim. İlk katmanda 5 düğüm değil, 20 düğüm demek istedim. Büyük pay ve sığ / derin ağları ayırt ettiğiniz için teşekkürler.
user1367204

9
@ hxd1011 bilgiçlik taslama değil, derin demek binlerce gizli birim değil daha fazla katman demektir :).
Rafael

3

Bu konuda bulduğum en fazla bu sitede ayrıntılı olarak listelenmiştir . bu . Sadece doğrusal modeller hakkında konuşuyorsanız, yorumlanabilir hale getirmek için ağırlıkları normalleştirmeniz gerekir, ancak bu bile söz konusu bağlantıda daha fazla yanıltıcı olabilir. Bazı insanlar girdilerin (Garson, Gedeon ve Milne's) önemini yorumlamak için ağırlıkların karmaşık işlevlerini yapmaya çalıştı, ancak bu bile yanıltıcı olabilir, bahsettiğim ilk bağlantıyı kaydırdığınızda bu konuda daha fazla bulabilirsiniz. Genel olarak bir tuz tanesi ile sonuçları yorumlamak için tavsiye ediyorum.

@ rhadar'ın cevabına katılıyorum, ancak herhangi bir sabit kullanmak yerine, bu girdi için ortalama değeri kullanmayı deneyin ve ağı yeniden eğitmeyi unutmayın.

PS: üzgünüm daha fazla bağlantı gönderemedi veya burada yorum yapamam çok fazla üne sahip değil.


1

Sahip olduğunuz göz önüne alındığında:

  1. Bir sınıflandırma görevi
  2. Eğitimli bir model
  3. Normalleştirilmiş özellikler (0 ile 1 arasında)

Kimse denedi:

  1. Önyargıları sıfırlamak
  2. Her seferinde özelliklerin biri hariç tüm özelliklerin sıfır olduğu sıcak bir vektör olarak geçirin.
  3. Çıktıyı inceleyin.

Bu durumda, çıktı, özelliğin "önemini" belirten bir sayı olacağını düşünüyorum, çünkü bu çıktı aynı zamanda ağ içindeki bu 1 sinyalin yolunun çıktısını da temsil edecektir.

Bir labirent içinde sadece bir ampulü aydınlatmak ve çıkışta çıkan ışığı ölçmek gibidir.


Bunun çok yardımcı olacağını düşünmüyorum. Değerlendirmek istediğiniz şey, bu girdinin varyasyonunun çıktıyı ne kadar etkileyeceğidir (tek başına veya diğer özelliklerle birlikte)
elachell
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.