10.1 Öğrenilmiş Özellikler (Learned Features)
Last updated
Last updated
Evrişimli (Convolutional) sinir ağları, ham görüntü piksellerinden soyut özellikler ve kavramlar öğrenir. Feature Visualization (Özellik Görselleştirmesi) yöntemi, aktivasyonların maksimize edilmesi yoluyla öğrenilmiş özellikleri görselleştirir. Network Dissection (Ağ Ayrıştırması) ise, sinir ağındaki birimleri (örneğin kanalları) insan tarafından anlaşılabilir kavramlarla etiketler.
Derin sinir ağları, gizli katmanlarında üst düzey özellikler öğrenir. Bu, en büyük güçlerinden biridir ve özellik mühendisliği (feature engineering) ihtiyacını azaltır. Bir destek vektör makinesi (SVM) ile bir görüntü sınıflandırıcı kurmak istediğinizi düşünün. Ham piksel matrisleri, SVM’nizi eğitmek için en iyi giriş değildir, bu yüzden renk, frekans bölgesi, kenar dedektörleri vb. gibi yeni özellikler oluşturursunuz. Evrişimli sinir ağlarında ise, görüntü ham formunda (piksel düzeyinde) ağa beslenir. Ağ, görüntüyü defalarca dönüştürür. İlk olarak, görüntü birçok evrişim (convolution) katmanından geçer. Bu katmanlarda ağ, katmanlarında giderek karmaşıklaşan yeni özellikler öğrenir. Daha sonra dönüştürülmüş görüntü bilgisi tam bağlantılı (fully connected) katmanlara geçer ve burada bir sınıflandırma veya tahmine dönüşür.
İlk evrişim katmanı (veya katmanları), kenarlar ve basit dokular gibi özellikleri öğrenir. Daha sonraki evrişim katmanları, daha karmaşık dokular ve desenler gibi özellikleri öğrenir. Son evrişim katmanları, nesneler veya nesne parçaları gibi özellikleri öğrenir. Tam bağlantılı (fully connected) katmanlar, üst düzey özelliklerin aktivasyonlarını tahmin edilmesi gereken tek tek sınıflarla ilişkilendirir. Harika. Peki bu “halüsinatif” görüntüleri nasıl elde ediyoruz?
Öğrenilen özellikleri açık hâle getirmenin bu yaklaşımına Özellik Görselleştirme (Feature Visualization) denir. Bir sinir ağındaki bir birimin (unit) özellik görselleştirmesi, o birimin aktivasyonunu maksimize eden girdi verisini bularak yapılır.
“Birim (Unit)”, sinir ağındaki tekil nöronlara, kanallara (bazı kaynaklarda “özellik haritaları/feature maps” olarak geçer), tüm katmanlara veya sınıflandırmada son katmandaki sınıf olasılığına (ya da önerilen şekilde, ilgili pre-softmax nöronuna) işaret eder. Tekil nöronlar ağın atomik birimleridir, dolayısıyla her nöron için bir özellik görselleştirmesi oluşturmak en fazla bilgiyi sağlayabilir. Ancak bir sorun var: Sinir ağları genellikle milyonlarca nörona sahiptir. Her nöronun özelliğini görselleştirmeye bakmak çok uzun sürer. “Kanal” (bazen “aktivasyon haritası / activation map” denir) seviyesindeki birimler, özellik görselleştirme için iyi bir seçenektir. Bir adım daha ileri giderek tüm bir evrişim (convolution) katmanını görselleştirebiliriz. Katmanlar, birim olarak Google’ın DeepDream yönteminde kullanılır; DeepDream, seçilen katmanın görselleştirilmiş özelliklerini tekrar tekrar özgün görüntüye ekleyerek, girdi görüntünün “rüya benzeri” bir sürümünü üretir.
Matematiksel terimlerle ifade edecek olursak, özellik görselleştirme bir optimizasyon problemidir. Sinir ağının ağırlıklarının sabit (ağ eğitilmiş) olduğunu varsayarız. Ağımızın girdi olarak alacağı yeni bir görüntü arıyoruz; bu görüntü, bir birimin (burada tek bir nöronun) (ortalama) aktivasyonunu maksimize edecek şekilde tasarlanmalıdır:
Burada h, bir nöronun aktivasyon fonksiyonudur, img img ağın girdisi olan görüntüyü, x ve y nöronun uzamsal konumunu (spatial position), n katman indeksini ve z kanal indeksini belirtir. Bir katman n içindeki tamamı kanal z olan nöronların ortalama aktivasyonunu maksimize etmek istediğimizde ise:
Bu formülde, kanal 𝑧 içindeki tüm nöronlar eşit şekilde ağırlıklandırılmıştır. Alternatif olarak, rastgele yönleri de maksimize edebilirsiniz; bu, nöronların farklı parametrelerle (negatif yönler dahil) çarpılacağı anlamına gelir. Böylelikle, nöronların kanal içinde nasıl etkileştiğini de incelemiş olursunuz. Aktivasyonu maksimize etmek yerine, onu minimize de edebilirsiniz (bu da negatif yönü maksimize etmeye denk gelir). İlginç bir şekilde, aynı birim için negatif yönü maksimize ettiğinizde, ortaya çok farklı özellikler çıkabilir:
Bu optimizasyon problemini farklı şekillerde ele alabiliriz. Örneğin, yeni görüntüler oluşturmak yerine, eğitim verilerimizdeki görüntüler arasında arama yapıp aktivasyonu maksimize edenleri seçebiliriz. Bu geçerli bir yaklaşım olsa da, eğitim verisini kullanmanın, görüntülerdeki öğelerin birbirleriyle ilişkili (korelasyonlu) olabilmesi gibi bir sorunu vardır ve sinir ağının gerçekte neye odaklandığını tam olarak göremeyebiliriz. Eğer belirli bir kanalı yüksek aktivasyonla tetikleyen görüntülerde bir köpek ve bir tenis topu varsa, sinir ağının köpeğe mi, tenis topuna mı yoksa ikisine birden mi baktığını bilemeyiz.
Başka bir yaklaşım ise, rastgele gürültüden (noise) başlayarak yeni görüntüler oluşturmaktır. Anlamlı görselleştirmeler elde edebilmek için, genelde görüntüde sadece küçük değişikliklere izin vermek gibi bazı kısıtlamalar konulur. Özellik görselleştirmedeki gürültüyü azaltmak için, optimizasyon adımından önce görüntüye ufak kaydırma (jittering), döndürme veya ölçeklendirme (scaling) uygulayabilirsiniz. Diğer düzenlileştirme (regularization) seçenekleri arasında frekans cezalandırma (örneğin, komşu piksellerin varyansını azaltmak) veya öğrenilmiş öncüller (learned priors) ile görüntü oluşturma bulunur. Buna, örneğin üretici-ayırt edici ağlar (GAN’ler) veya gürültü giderici (denoising) otomatik kodlayıcılar dahildir.
Eğer özellik görselleştirme konusunda çok daha derine inmek istiyorsanız, özellikle Olah ve arkadaşlarının (2017) tarihli “feature visualization” yazısı başta olmak üzere distill.pub çevrimiçi dergisine göz atmanızı öneririm. Ayrıca “the building blocks of interpretability” makalesini de tavsiye ederim.
Özellik görselleştirme ile adversarial (kötücül) örnekler arasında bir bağlantı vardır: Her iki teknik de bir sinir ağı biriminin aktivasyonunu maksimize eder. Adversarial örneklerde, yanlış (adversarial) sınıf için nöronun aktivasyonunun maksimumunu ararız. İki yaklaşım arasındaki fark, başladığımız görüntüdür: Adversarial örneklerde, adversarial görüntüyü oluşturmak istediğimiz asıl görüntüyü kullanırız. Özellik görselleştirmede ise, yaklaşıma bağlı olarak rastgele gürültü kullanırız.
Literatürde, özellik görselleştirme genellikle görüntü tanıma (image recognition) amacıyla kullanılan evrişimli sinir ağlarına odaklanır. Teknik olarak, tablo verileri için tam bağlantılı (fully connected) bir sinir ağındaki veya metin verileri için yinelemeli (recurrent) bir sinir ağındaki bir nöronu maksimum derecede aktifleştiren girdiyi bulmaktan sizi alıkoyan bir şey yoktur. Buna artık “özellik görselleştirme” demeyebilirsiniz, çünkü “özellik” tablosal bir veri girişi veya metin olabilir. Örneğin kredi temerrüt tahmini (credit default prediction) yaparken, girdi olarak önceki kredi sayısı, mobil hat sözleşmesi sayısı, adres ve bunlar gibi onlarca özellik kullanabilirsiniz. Bir nöronun öğrendiği özellik, bu onlarca özelliğin belirli bir kombinasyonu olacaktır. Yinelemeli sinir ağlarında, ağın ne öğrendiğini görselleştirmek biraz daha keyiflidir: Karpathy ve arkadaşları (2015), yinelemeli sinir ağlarında gerçekten de yorumlanabilir (interpretable) özellikler öğrenen nöronlar olduğunu göstermiştir. Karakter düzeyinde (character-level) bir model eğitmişler ve bu model önceki karakterlerden sonraki karakteri tahmin etmektedir. Açma parantezi “(” geldiğinde, nöronlardan biri çok yüksek aktivasyon göstermiş; eşleşen kapama parantezi “)” geldiğinde ise aktivasyonu düşmüştür. Diğer bazı nöronlar satır sonunda veya URL’lerde ateşlenmiştir (aktivasyon göstermiştir). CNN’lerdeki özellik görselleştirme tekniğinden farkı ise, bu örneklerin optimizasyon yoluyla değil, eğitim verilerindeki nöron aktivasyonlarını inceleyerek bulunmuş olmasıdır.
Bazı görüntüler, köpek burnu (dog snouts) veya binalar gibi bilinen kavramları gösteriyor gibi görünür. Peki buna nasıl emin olabiliriz? Network Dissection yöntemi, insan kavramlarını tek tek sinir ağı birimleriyle ilişkilendirir. Spoiler uyarısı: Network Dissection, birinin insan kavramlarıyla etiketlemiş olduğu ek veri kümeleri (extra datasets) gerektirir.
Bau & Zhou ve arkadaşlarının (2017) ortaya koyduğu Network Dissection yaklaşımı, bir evrişimli sinir ağındaki birimin (örneğin bir kanalın) yorumlanabilirliğini nicelendirir. Bu yöntem, CNN kanallarında yüksek aktivasyon gösteren bölgeleri insan kavramlarıyla (nesneler, parçalar, dokular, renkler vb.) ilişkilendirir.
Evrişimli sinir ağının kanalları, Özellik Görselleştirme (Feature Visualization) bölümünde gördüğümüz gibi, yeni özellikler öğrenir. Ancak, bu görselleştirmeler bir birimin belirli bir kavramı öğrendiğini kanıtlamaz. Ayrıca, örneğin bir birimin gökdelenleri (skyscrapers) ne kadar iyi tespit ettiğini ölçebileceğimiz bir ölçüte de sahip değiliz. Network Dissection’ın ayrıntılarına girmeden önce, bu araştırma çizgisinin arkasında yatan büyük hipotezden bahsetmemiz gerek. Hipotez şöyle: Sinir ağının birimleri (örneğin evrişimli kanallar), ayrışık (disentangled) kavramlar öğrenir.
Ayrışık Özellikler Sorusu
(Evrişimli) sinir ağları gerçekten de ayrışık (disentangled) özellikler mi öğrenir? Ayrışık özellikler, tek tek ağ birimlerinin (units) belirli gerçek dünya kavramlarını tespit ettiği anlamına gelir. Örneğin, evrişimli kanal 394 gökdelenleri, kanal 121 köpek burunlarını, kanal 12 ise 30 derecelik açıda çizgileri tespit ediyor olabilir… Tam tersi bir durumda ise ağ tamamen “iç içe geçmiş” (entangled) bir yapıya sahip olabilir. Bu durumda, örneğin “köpek burnu” (dog snout) gibi bir kavram için tek bir birim olmaz; bütün kanallar bu kavramın tanınmasına katkıda bulunur.
Ayrışık özellikler, ağın yüksek düzeyde yorumlanabilir olduğu anlamına gelir. Tamamen ayrışık birimlere sahip ve bu birimlerin bilinen kavramlarla etiketlendiği bir ağ düşünelim. Bu, ağın karar verme sürecini adım adım izlememize olanak sağlayabilir. Örneğin, ağın kurt (wolf) ile husky köpeklerini nasıl sınıflandırdığını analiz edebiliriz. Önce “husky” birimini buluruz; bir önceki katmanda “köpek burnu”, “kabarık kürk” (fluffy fur) ve “kar” (snow) birimlerine mi bağlı bakarız. Eğer öyleyse, karlı bir fondaki husky resmini kurt olarak yanlış sınıflandırma riski olduğunu biliriz. Ayrışık bir ağda problemli ve nedensel olmayan korelasyonları (ör. “kar gördüğünde husky sanmak”) tespit edebiliriz. Bireysel bir tahmini açıklamak için, yüksek aktivasyon gösteren tüm birimleri ve onların kavramlarını otomatik olarak listeleyebiliriz. Ağdaki önyargıları da kolayca saptayabiliriz. Örneğin, ağ “beyaz ten” (white skin) özelliğini maaş tahmininde kullanmayı öğrenmiş mi?
Spoiler uyarısı: Evrişimli sinir ağları mükemmel bir şekilde ayrışık (disentangled) değildir. Şimdi Network Dissection’a daha yakından bakıp sinir ağlarının ne kadar yorumlanabilir olduğunu göreceğiz.
Network Dissection üç adımdan oluşur:
İnsan tarafından etiketlenmiş görsel kavramlara sahip görüntüler elde etme (çizgilerden gökdelenlere kadar uzanabilen etiketler).
Bu görüntüler için, CNN kanal aktivasyonlarını ölçme.
Aktivasyonlar ile etiketlenmiş kavramların ne kadar örtüştüğünü nicelendirme (quantify).
Aşağıdaki şekil, bir görüntünün kanala nasıl iletildiğini ve insan tarafından etiketlenmiş kavramlarla nasıl eşleştirildiğini görselleştirir:
İlk zor ama kritik adım veri toplama işlemidir. Network Dissection, farklı soyutlama düzeylerinde (renklerden sokak sahnelerine kadar) kavramları piksellik düzeyde etiketlenmiş görüntülere ihtiyaç duyar. Bau & Zhou ve arkadaşları, piksellik kavramlara sahip birkaç veri setini birleştirerek ‘Broden’ adını verdikleri, “geniş ölçüde ve yoğun şekilde etiketlenmiş veriler” anlamına gelen yeni bir veri seti oluşturmuşlardır. Broden veri seti, çoğunlukla piksel düzeyine kadar segmente edilmiştir, bazı veri setleri için ise tüm görüntü etiketlenmiştir. Broden, farklı soyutlama düzeylerinde 1.000’den fazla görsel kavram içeren 60.000 görüntüden oluşur: 468 sahne, 585 nesne, 234 parça, 32 malzeme, 47 doku ve 11 renk.
Bir sonraki adım olarak, her bir kanal ve görüntü için en yüksek aktivasyon gösteren alanların maskelerini (masks) oluştururuz. Bu noktada henüz kavram etiketleri (concept labels) işin içine girmiş değildir.
Her bir evrişim kanalı k için:
Broden veri setindeki her görüntü x için:
x görüntüsünü kanal k’yı içeren hedef katmana doğru ilerletin (forward propagate).
Evrişim kanalı k’nın piksel aktivasyonlarını çıkarın: .
Tüm görüntüler üzerindeki piksel aktivasyonlarının dağılımını olarak hesaplayın.
Aktivasyonlar için 0.995-kantil seviyesini olarak belirleyin. Bu, kanal k’nın x görüntüsü için tüm aktivasyonlarının %0.5’inin değerinden büyük olduğu anlamına gelir.
Broden veri setindeki her görüntü x için:
(Muhtemelen) daha düşük çözünürlüklü aktivasyon haritası ’i x görüntüsünün çözünürlüğüne ölçeklendirin. Sonuç, olarak adlandırılır.
Aktivasyon haritasını ikili (binary) hale getirin: Bir piksel, aktivasyon eşiği 'yı aşıp aşmadığına göre “açık” veya “kapalı” olarak işaretlenir. Yeni maske:
Adım 2 sonrasında, her bir kanal ve görüntü için bir aktivasyon maskesine sahibiz. Bu maskeler, yüksek aktivasyon gösteren bölgeleri işaretler. Her bir kanalın hangi insan kavramını aktifleştirdiğini bulmak istiyoruz. Bunu yapmak için, aktivasyon maskelerini elde bulunan tüm etiketli kavramlarla (concept) karşılaştırırız. Maske k ve kavram maskesi c arasındaki uyumu, Intersection over Union (IoU) skoru ile nicelendiririz:
Burada , bir kümenin büyüklüğünü (eleman sayısını) belirtir. Intersection over union, iki alan arasındaki uyumu (örtüşmeyi) karşılaştırır. birim k’nin kavram c’yi ne kadar doğru tespit ettiğinin bir göstergesi olarak yorumlanabilir. Bau & Zhou ve arkadaşları (2017), olduğunda birim k’nin kavram c’nin bir detektörü (algılayıcısı) olarak değerlendirilebileceğini belirtmişlerdir.
Aşağıdaki şekil, tek bir görüntü için aktivasyon maskesi ile kavram maskesinin kesişimini (intersection) ve birleşimini (union) görselleştirir:
Aşağıdaki figür köpeği tespit eden birimi göstermektedir.
Network Dissection yazarları, farklı ağ mimarilerini (AlexNet, VGG, GoogleNet, ResNet) farklı veri setlerinde (ImageNet, Places205, Places365) baştan (scratch) eğittiler. ImageNet, nesnelere odaklanan 1000 sınıftan oluşan 1,6 milyon görüntü içerir. Places205 ve Places365, 205 / 365 farklı sahneden oluşan 2,4 milyon / 1,6 milyon görüntü içerir. Yazarlar ayrıca AlexNet’i, video kare sıralamasını tahmin etme ya da görüntüleri renklendirme gibi kendini denetimli (self-supervised) eğitim görevlerinde de eğittiler. Bu çeşitli ayarların çoğunda, yorumlanabilirliğin bir ölçüsü olarak benzersiz (unique) kavram detektörlerinin sayısını saydılar. İşte bazı bulgular:
Ağlar, alt katmanlarda daha alt düzey kavramları (renkler, dokular), üst katmanlarda ise daha üst düzey kavramları (parçalar, nesneler) tespit eder. Bunu zaten Özellik Görselleştirmeleri’nde görmüştük.
Batch normalization, benzersiz kavram detektörü sayısını azaltır.
Birçok birim aynı kavramı tespit eder. Örneğin, VGG’de köpek (dog) için 95 (!) kanal vardır (ImageNet üzerinde eğitilmişse), eşiğini kullandığımızda (conv4_3’te 4, conv5_3’te 91; proje web sitesine bakınız).
Bir katmandaki kanal sayısını artırmak, yorumlanabilir birimlerin sayısını artırır.
Rastgele ilklemeler (farklı rastgele tohumlarla eğitim) yorumlanabilir birim sayılarında biraz farklılıklara neden olur.
ResNet, en fazla sayıda benzersiz detektör içeren ağ mimarisidir, onu VGG, GoogleNet ve en son AlexNet izler.
Places356 için eğitildiğinde en fazla benzersiz kavram detektörü öğrenilir, onu Places205 ve en son ImageNet izler.
Benzersiz kavram detektörü sayısı, eğitim iterasyonlarının artmasıyla birlikte artar.
Kendi kendine denetimli (self-supervised) görevlerde eğitilen ağlar, denetimli (supervised) görevlerde eğitilen ağlara kıyasla daha az benzersiz detektöre sahiptir.
Transfer öğreniminde, bir kanalın kavramı değişebilir. Örneğin, bir köpek detektörü bir şelale (waterfall) detektörüne dönüşmüştür. Bu, nesneleri sınıflandırmak için başlangıçta eğitilen ve ardından sahneleri sınıflandırmaya göre ince ayar (fine-tune) yapılan bir modelde meydana gelmiştir.
Deneylerden birinde yazarlar, kanalları yeni döndürülmüş (rotated) bir tabana yansıttılar. Bu, ImageNet üzerinde eğitilmiş VGG ağı için yapıldı. “Döndürülmüş” ifadesi, görüntünün döndürüldüğü anlamına gelmez. “Döndürülmüş” demek, conv5 katmanındaki 256 kanalı alıp, özgün kanalların doğrusal birleşimleri şeklinde 256 yeni kanal hesaplamak demektir. Bu süreçte kanallar iç içe geçer (entangled). Döndürme, yorumlanabilirliği (interpretability) azaltır, yani bir kavramla örtüşen kanal sayısı azalır. Bu dönüşüm, modelin performansını aynı tutacak şekilde tasarlanmıştır. İlk sonuç: CNN’lerin yorumlanabilirliği eksene bağımlıdır (axis-dependent). Bu, kanalların rastgele birleşimlerinin benzersiz kavramları tespit etme olasılığının daha düşük olduğu anlamına gelir. İkinci sonuç: Yorumlanabilirlik, ayırt edici (discriminative) güçten bağımsızdır. Kanallar, dikey (orthogonal) dönüşümlerle dönüştürülebilir ve ayırt edici güç aynı kalırken, yorumlanabilirlik azalır.
Yazarlar ayrıca Generative Adversarial Networks (GAN’ler) için de Network Dissection kullandılar. GAN’ler için Network Dissection’a proje web sitesinden ulaşabilirsiniz.
Özellik görselleştirmeler, özellikle görüntü tanıma için sinir ağlarının çalışma prensipleri hakkında benzersiz bir içgörü sunar. Sinir ağlarının karmaşıklığı ve opaklığı göz önüne alındığında, özellik görselleştirme sinir ağlarını analiz etmek ve betimlemek için önemli bir adımdır. Özellik görselleştirme sayesinde, sinir ağlarının önce basit kenar ve doku dedektörleri, daha yüksek katmanlarda ise daha soyut parça ve nesne dedektörleri öğrendiğini gördük. Network Dissection ise bu içgörüleri genişletir ve ağ birimlerinin yorumlanabilirliğini ölçülebilir hâle getirir.
Network Dissection bize, birimleri kavramlarla otomatik olarak ilişkilendirme olanağı sağlar ki bu çok kullanışlıdır.
Özellik görselleştirme, sinir ağlarının nasıl çalıştığını teknik olmayan bir şekilde aktarmak için harika bir araçtır.
Network dissection, sınıflandırma görevindeki sınıfların ötesindeki kavramları da tespit etmemize olanak tanır. Ancak bunun için, piksellik düzeyde etiketlenmiş kavramlara sahip veri setlerine ihtiyaç duyarız.
Özellik görselleştirme, hangi piksellerin sınıflandırma için önemli olduğunu açıklayan piksel atıfı (feature attribution) yöntemleriyle birleştirilebilir. Her iki yöntemin birleşimi, bireysel bir sınıflandırmayı açıklayarak sınıflandırmada rol oynayan öğrenilmiş özelliklerin yerel görselleştirmesini de sağlar. Bkz. distill.pub’daki “The Building Blocks of Interpretability”.
Son olarak, özellik görselleştirmeler harika masaüstü duvar kâğıtları ve tişört baskıları oluşturur.
Birçok özellik görselleştirme görüntüsü hiçbir şekilde yorumlanabilir değildir; üzerlerinde kelimelere veya zihinsel kavramlara dökebileceğimiz bir şey olmayan soyut özellikler bulunur. Eğitim verileriyle birlikte özellik görselleştirmelerini görüntülemek yardımcı olabilir. Bu görüntüler hâlâ sinir ağının tam olarak neye tepki verdiğini açığa çıkarmayabilir ve yalnızca “belki de görüntülerde sarı renk olmalı” gibi bir şey söyleyebilir. Network Dissection’a rağmen, bazı kanallar insan kavramlarıyla ilişkilendirilemez. Örneğin, ImageNet üzerinde eğitilen VGG’nin conv5_3 katmanında, 512 kanaldan 193’ü herhangi bir insan kavramıyla eşleştirilememiştir.
Yalnızca kanal aktivasyonlarını “görselleştirmekle” kalsak bile, bakacak çok fazla birim vardır. Örneğin Inception V1 mimarisi için dokuz evrişim katmanından gelen 5000’den fazla kanal zaten mevcuttur. Kanal için pozitif ve negatif aktivasyonları artı, kanalı maksimum veya minimum derecede aktifleştiren eğitim verilerinden birkaç görüntü (diyelim ki dört pozitif, dört negatif) de göstermek isterseniz, halihazırda 50.000’den fazla görüntü sergilemeniz gerekir. En azından — Network Dissection sayesinde — rastgele yönleri araştırmamıza gerek olmadığını biliyoruz.
Yorumlanabilirlik illüzyonu mu? Özellik görselleştirmeler, sinir ağını anladığımız yönünde bir illüzyon verebilir. Peki gerçekten sinir ağında neler olup bittiğini anlıyor muyuz? Yüzlerce veya binlerce özellik görselleştirmesine baksak bile sinir ağını anlayamayız. Kanallar karmaşık bir şekilde etkileşir, pozitif ve negatif aktivasyonlar birbiriyle ilişkili olmayabilir, birden fazla nöron çok benzer özellikler öğrenebilir ve birçok özellik için eşdeğer insan kavramlarına sahip değiliz. Sırf 7. katmandaki 349. nöronun papatyalarla (daisies) aktifleştirildiğini görmüş olmamız, sinir ağını tamamen anladığımız yanılgısına düşmemize neden olmamalı. Network Dissection, ResNet veya Inception gibi mimarilerin belirli kavramlara tepki veren birimlere sahip olduğunu gösterdi. Ancak IoU o kadar da yüksek değil, çoğu zaman birçok birim aynı kavrama tepki veriyor ve bazıları hiçbir kavrama tepki vermiyor. Kanallar tamamen ayrışık (disentangled) değil ve onları tek başlarına yorumlayamıyoruz.
Network Dissection için, piksellik düzeyde kavramlarla etiketlenmiş veri setlerine ihtiyacınız var. Bu tür veri setlerini toplamak çok zahmetlidir; çünkü her pikselin etiketlenmesi gerekir, genellikle bu da görüntü üzerindeki nesnelerin etrafına segment çizilerek yapılır.
Network Dissection yalnızca kanalların pozitif aktivasyonlarını insan kavramlarıyla ilişkilendirir, negatif aktivasyonları dikkate almaz. Özellik görselleştirmelerin gösterdiği gibi, negatif aktivasyonlar da kavramlarla bağlantılı görünüyor. Bu durum, ek olarak aktivasyonların daha düşük kantilini (lower quantile) de inceleyerek çözülebilir.
Lucid adlı, özellik görselleştirme için açık kaynak bir uygulama mevcuttur. Tarayıcınızda, Lucid’in GitHub sayfasındaki defter (notebook) bağlantılarını kullanarak kolayca deneyebilirsiniz. Ek bir yazılım gerekmez. Diğer uygulamalar arasında TensorFlow için tf_cnnvis, Keras için Keras Filters ve Caffe için DeepVis bulunur.
Network Dissection’ın harika bir proje web sitesi vardır. Makalenin yanı sıra bu sitede ek materyaller, örneğin kod, veri ve aktivasyon maskelerinin görselleştirmeleri de yer alır.
Nguyen, Anh, Alexey Dosovitskiy, Jason Yosinski, Thomas Brox, and Jeff Clune. “Synthesizing the preferred inputs for neurons in neural networks via deep generator networks.” Advances in neural information processing systems 29 (2016): 3387-3395.↩︎
Nguyen, Anh, Jeff Clune, Yoshua Bengio, Alexey Dosovitskiy, and Jason Yosinski. “Plug & play generative networks: Conditional iterative generation of images in latent space.” In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 4467-4477. 2017.↩︎
Olah, Chris, Alexander Mordvintsev, and Ludwig Schubert. “Feature visualization.” Distill 2, no. 11 (2017): e7.↩︎
Olah, Chris, Arvind Satyanarayan, Ian Johnson, Shan Carter, Ludwig Schubert, Katherine Ye, and Alexander Mordvintsev. “The building blocks of interpretability.” Distill 3, no. 3 (2018): e10.↩︎
Karpathy, Andrej, Justin Johnson, and Li Fei-Fei. “Visualizing and understanding recurrent networks.” arXiv preprint arXiv:1506.02078 (2015).↩︎
Bau, David, Bolei Zhou, Aditya Khosla, Aude Oliva, and Antonio Torralba. “Network dissection: Quantifying interpretability of deep visual representations.” In Proceedings of the IEEE conference on computer vision and pattern recognition, pp. 6541-6549 (2017).↩︎