Eğitimli bir sinir ağını daha anlaşılır hale getirmeyi ve daha az "kara kutu" gibi, özellikle de bahsettiğiniz evrişimli sinir ağları yapmayı amaçlayan birçok yaklaşım vardır .
Aktivasyonları ve katman ağırlıklarını görselleştirme
Aktivasyonlar görselleştirme , ilk açık ve anlaşılır olanıdır. ReLU ağları için, aktivasyonlar genellikle nispeten kanlı ve yoğun görünmeye başlar, ancak eğitim ilerledikçe aktivasyonlar daha seyrekleşir (çoğu değer sıfırdır) ve yerelleştirilir. Bu bazen, bir görüntü gördüğünde tam olarak belirli bir katmanın neye odaklandığını gösterir.
Bahsetmek istediğim aktiviteler üzerine yapılan bir başka harika çalışma da , her katmandaki havuzlama ve normalizasyon katmanları da dahil olmak üzere her nöronun reaksiyonunu gösteren deepvis . İşte nasıl açıkladıkları :
Kısacası, bir nöronun hangi özelliği öğrendiğini, DNN'lerin nasıl çalıştığını daha iyi anlamanıza yardımcı olacak “üçgenlemeyi” sağlayan birkaç farklı yöntem topladık.
İkinci ortak strateji ağırlıkları görselleştirmek (filtreler). Bunlar genellikle doğrudan ham piksel verisine bakan ilk CONV katmanında yorumlanabilir, ancak ağdaki daha derin filtre ağırlıklarını göstermek de mümkündür. Örneğin, ilk katman genellikle kenarları ve kabarcıkları temelde tespit eden gabor benzeri filtreleri öğrenir.
Oklüzyon deneyleri
İşte fikir. ConvNet'in bir görüntüyü köpek olarak sınıflandırdığını varsayalım. Arka plandaki bazı bağlamsal ipuçlarının veya diğer çeşitli nesnelerin aksine, görüntüdeki köpeği gerçekten aldığından nasıl emin olabiliriz?
Görüntünün hangi bölümünün bir sınıflandırma tahmininin geldiğini araştırmanın bir yolu, ilgilenilen sınıfın (örneğin köpek sınıfı) bir tıkayıcı nesnenin pozisyonunun bir fonksiyonu olarak olasılığını çizmektir. Görüntünün bölgeleri üzerinde yinelenirsek, onu tüm sıfırlarla değiştirip sınıflandırma sonucunu kontrol edersek, belirli bir görüntüdeki ağ için en önemli olanın 2 boyutlu bir ısı haritası oluşturabiliriz. Bu yaklaşım Matthew Zeiler'in Konvolüsyonlu Ağları Görselleştirmesi ve Anlaması'nda (sorunuzda bahsettiğiniz) kullanılmıştır:
Dekonvolüsyon
Başka bir yaklaşım, temel olarak nöronun aradığı belirli bir nöronun ateşlenmesine neden olan bir görüntüyü sentezlemektir. Fikir, gradient ağırlık yerine normal gradient yerine görüntüye göre hesaplamaktır. Öyleyse bir katman seçersiniz, gradyanı, bir nöron için biri hariç olmak üzere görüntüye sıfır olacak şekilde ayarlayın.
Deconv aslında daha iyi görünen bir görüntü elde etmek için rehberli geri yayılım denilen bir şey yapar , ancak bu sadece bir ayrıntıdır.
Diğer sinir ağlarına benzer yaklaşımlar
Bu yazıyı , Tekrarlayan Sinir Ağları (RNN) ile çok oynadığı Andrej Karpathy tarafından şiddetle tavsiye ediyorum . Sonunda, nöronların gerçekte ne öğrendiklerini görmek için benzer bir teknik uygular:
Bu resimde vurgulanan nöron, URL’ler hakkında çok heyecanlanıyor ve URL’lerin dışına çıkıyor. LSTM, bir URL içinde olup olmadığını hatırlamak için bu nöronu kullanıyor olabilir.
Sonuç
Bu araştırma alanındaki sonuçların sadece küçük bir kısmını belirtmiştim. Oldukça aktif ve sinir ağına ışık tutan yeni yöntemler her yıl ortaya çıkan içsel işleyişe geçiyor.
Sorunuzu cevaplamak için, her zaman bilim insanlarının henüz bilmediği bir şey vardır, ancak çoğu durumda içeride neler olup bittiğine dair iyi bir resmi (edebi) vardır ve birçok özel soruyu cevaplayabilir.
Bana göre, sorunuzdan alıntı sadece doğruluk geliştirmenin değil ağın iç yapısının araştırılmasının önemini vurgulamaktadır. Matt Zieler'in bu konuşmasında söylediği gibi , bazen iyi bir görselleştirme, daha iyi bir doğruluk sağlayabilir.