Derin Sinir Ağlarında Duyarlılık Analizi


14

Zaten cevaplanan bir sorudan sonra ( Tek Katmanlı ileri beslemeli ağdan ağırlık önemini ayıklama ) Sinir ağlarındaki girdilerin alaka düzeyi hakkında çıkarım arıyorum.

İlgilenilen çıkış düğümünden katmanlar arasında geriye doğru gidilerek girdi önemini yeniden yapılandırmanın zor veya zaman alıcı olabileceği derin bir ağ göz önüne alındığında, sinir ağı için duyarlılık analizi yapılmasında bazı teorik çerçevelerin olup olmadığını merak ediyorum, Çıkar ve ilgilenilen çıkış düğümü nasıl değişir düşünün.

Sinir ağlarında bir çeşit duyarlılık analizi yapmanın kanonik bir yolu var mı?

Gerçekten, bunu yapmak için bazı Python kodlarını memnuniyetle karşılarım

Yanıtlar:


12

Önerdiğiniz hassasiyet analizi, çıktıların girdilere göre kısmi türevlerinin incelenmesine karşılık gelir. Diyelim ki çıkış vektörü tarafından verilir , burada giriş vektörü ve ağın uyguladığı işlevdir. Jakobyan girişler wrt çıkışların olduğu:yRmy=f(x)xRdf

Jij(x)=xjfi(x)

Jacobian, her bir girdi için her çıktının yerel değişim oranını verir, bu yüzden bize sonsuz küçük bozulmalara karşı nasıl davranacağını anlatır . Biz girdi ile başlarsanız ve son derece küçük bir değer katmak için inci girdi, biz bekliyoruz inci çıktı artacağı .fxΔjiΔJij(x)

Eğer büyük bir büyüklüğe sahiptir, bu çıkış anlamına gelir giriş duyarlıdır yakın . Çünkü olduğu, genel, lineer olmayan, bu hassasiyet kavramı girişine bağlıdır; bazı bölgelerde büyük, bazılarında sıfıra yakın olabilir. Çıktıların girdilere ne kadar güçlü bağlı olduğuna dair bir tür özet ölçüm istiyorsanız, birden çok girdi değeri üzerinde bir araya gelmeniz gerekir. Örneğin, eğitim setindeki tüm girdiler üzerinden ortalama alınan Jacobian'ın mutlak değerini alabilirsiniz (bu, girdilerin temel dağılımından beklenen değer için bir vekil görevi görür). Tabii ki, bu tür bir özet bilgilerin atılmasına neden olacaktır, bu nedenle bazı durumlarda yanıltıcı olabilir.Jij(x)ijxf

Zincir kuralını, backprop ile kullanılacak parametreler için kayıp fonksiyonunun gradyanını nasıl elde edeceğinize benzer şekilde, Jacobian için bir ifade türetmek için kullanabilirsiniz. Ağınızı uygulayan işlev ayırt edilemez değilse (son olarak pertürbasyonu simüle etmek ve çıkıştaki değişikliği ölçmek için) çok fazla neden yoktur (yani gerçekte bozulmayı simüle etmek ve çıktıdaki değişikliği ölçmek için) çok fazla bir neden yoktur. bu durumda Jacobian yoktur).

Birkaç uyarı: Girdilerin birbirinden farklı birimleri / ölçekleri varsa, duyarlılıkların da farklı birimleri / ölçekleri olacaktır ve doğrudan karşılaştırılamaz. Girişlerin standartlaştırılması / ölçeklendirilmesi olası bir çözümdür. Unutmamak gerekir ki, bu tür bir analiz bize modelin kendisinden bahsetmektedir, ancak veriyi oluşturan temel dağılım değildir. Örneğin, iki giriş ilişkilendirilirse, model ilkini kullanarak, ancak ikincisini kullanamayabilir. Bu durumda, duyarlılığın ilk girdi için yüksek ve ikincisi için düşük olduğunu bulduk, ancak ilk girdinin genel olarak çıktıyı tahmin etmek için doğal olarak daha önemli olduğu sonucuna varmamalıyız.

Bu makale ilgi çekici olmalıdır.


harika cevap ve harika makale! Herkes bu yöntemi uygulamakla ilgileniyorsa, jacobian hesaplamasının güzel bir uygulamasını burada bulabilirsiniz: medium.com/unit8-machine-learning-publication/…
pcko1
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.