Evrişimli sinir ağının gradyan yükseliş görselleştirmesi

Leifeng.com AI teknolojisi inceleme notu: Yazar Chen Zhongming, Leifeng.com AI teknoloji incelemesi yayınlama yetkisine sahiptir.

CNN ağ modelim neden her zaman gereğinden fazla uyuyor? Parametreleri defalarca değiştirdim ve çalışmıyor Örnek veya ağ modeli tanımıyla ilgili bir sorun mu var? Sorun nerede?

CNN ağ modelindeki her katman hangi özellikleri öğrenir? Neden bazıları evrişim çekirdeğinin ilk katmanının kenar bilgi özelliklerini çıkardığını söylerken, bazıları evrişim çekirdeğinin ilk katmanının renk özelliklerini çıkardığını söyler? İkisi mi yoksa bir şey mi?

CNN ağı birkaç katmanı azaltabilir ve ardından aynı doğruluk ve kayıp oranını koruyabilir mi? Birkaç katmanın azaltılması ağ parametrelerini azaltabilir. Başlangıçta, GPU belleğim çok büyük değil ve ağ çok büyük. Bir GPU satın almak istemiyorsam, yalnızca katmanları azaltabilirim. Bana nasıl çalıştırılacağını öğretebilecek bir tanrı var mı?

Çoğu zaman yukarıdaki sorunlarla karşılaşacağız ve sonra diğerleri hakkında övünmeye başlayacağız. Ondan önce, VGG16 ağının son iki katmanı olan block5 conv2 ve block5 conv3'ün sonuna kadar neredeyse hiç doku özelliği olmadığını bilmiyordum. biliyor musun? Bilmiyorsan benimle çalışabilirsin. Ben de yeni başlayan biriyim. CNN Çin'de popüler olmadan önce çukura atlamaya başladım ve çukur şimdi derin. Çukurdan çıkın. . . .

Kısa bir süre önce, aşağıdaki şekilde gösterildiği gibi, şirketim için eğitimli CNN ağ modelini analiz etmek için bir araç yazdım: İlk resimden, bu resimde birçok balık kuyruğuna sahip gibi görünen bazı akvaryum balığı modelleri olduğunu görebiliyoruz. Sonra ortada çok sayıda ölçek var, çok garip bir görüntü, ancak bu görüntüyü beğenmeyin çünkü bu görüntüyü ImageNet veri kümesinde eğitilmiş VGGNet modeline atarsanız, Japon balığı olma olasılığı kesinlikle% 99'dur. Japon balığı olup olmadığını görmek için 100 kez daha dene.

Aynı şekilde ikinci resim ve üçüncü resim de bunun sonucudur.Biber sanatlar okuyan kız kardeşim bile bu resimleri gördü ve yaya denilen bu nedir, iğrenç, üçüncü resim neden biraz kuş gibi ama var Kuş değil. Evet, bu iğrenç resimler gibi sinir ağlarıyla meşgul olan bizler. Ne kadar iğrençse, özellikler o kadar barizdir.

Gradyan tırmanışı yoluyla görsel bir evrişim haritası elde edin

Yapay olarak sentezlenen görsel evrişim çekirdek görüntüsünün x olduğunu varsayarsak, bu yapay görüntü x'in karşılık gelen nöronu (evrişim çekirdeği) en yüksek aktivasyon değerine sahip yapabileceğini umuyoruz. Ortaya çıkan bileşik görüntü, hacmin temel katmanının evrişim çekirdeğinin "görmek istiyorum" veya "doku özelliğidir". Yani CNN ağı üzerinden bir görüntü bulmayı ve belirtilen evrişim çekirdeğine yayılmayı umduğumuzda, bu resim evrişim çekirdeğinin en yüksek puanı almasını sağlayabilir.

Bu resmi sentezlemek için rastgele gürültülü bir resimle başlıyoruz ve her piksel değeri için rastgele bir renk seçiyoruz.

Daha sonra, bu gürültü haritasını ileriye doğru yaymak için CNN ağının girdisi olarak kullanırız ve ardından ağdaki i-inci katmandaki j-inci evrişim çekirdeğinin a_ij (x) aktivasyonunu elde ederiz ve sonra bir geri yayılma hesaplaması yaparız delta a_i (x ) / delta x gradyanı ve son olarak parazit görüntüsünü parazit görüntüsünün evrişim çekirdek gradyanı ile güncelliyoruz. Amaç, her pikselin renk değerini değiştirerek evrişim çekirdeğinin aktivasyonunu arttırmaktır.Burada gradyan yükselme yöntemi kullanılır:

Bunların arasında, eğim yükselişinin öğrenme hızıdır. Yukarıdaki işlemi x görüntü i-inci katmanın j-inci evrişim çekirdeğini daha yüksek bir etkinleştirme değerine sahip olana kadar tekrarlayın.

Spesifik uygulama için, belirli bir evrişim çekirdeğinin aktivasyon değerini maksimize etmek için kullanılacak bir kayıp fonksiyonu tanımlamamız gerekir. Kayıp fonksiyonunu optimizasyon hedefi olarak alırsak, bu evrişim çekirdeğinin ne tür bir resmin daha iyi bir aktivasyon değeri elde etmesini sağlayabileceğini anlayabiliriz.

Şimdi bu kayıp fonksiyonunu tamamlamak için Keras'ın arka ucunu kullanıyoruz, gradyanlar (kayıp, değişkenler), kayıp fonksiyonunun değişkenlere göre gradyanını döndürür.

start_time = time.time

# Kayıp, seçilen sınıf için nöronun aktivasyonudur

kayıp = layer_output

# bu kayıpta girdi resminin gradyanını hesaplıyoruz

grads = K. gradyanlar (kayıp, input_img)

# bu işlev, giriş resminde verilen kayıp ve notları döndürür

# ayrıca öğrenme aşamasını devre dışı bırakmak için bir işaret ekleyin (bizim durumumuzda bırakma)

yineleme = K.function (,)

np.random.seed (1337) # tekrarlanabilirlik için

# Rastgele gürültülü gri bir görüntüden başlıyoruz

input_img_data = np.random.normal (0, 10, (1,) + model.input_shape)

Toplu eksen için # (1,)

Burada küçük bir hile olduğuna dikkat edin - L2 regülasyonu hesaplanan gradyan üzerinde gerçekleştirilir, böylece gradyan çok küçük veya çok büyük olmayacaktır ve avantajı gradyan yükselme sürecini yumuşatmaktır.

Arka uç işlevi, döndürülecek parametrelerle bir Keras Function sınıfını başlatır. Bu, çıktılar = self.train_function (inputs) gibi braket operatörünü aşırı yüklemeye eşdeğer olan Function nesnesini bir işlev olarak kullanmaya eşdeğerdir.

Az önce tanımlanan iterate_fun kayıp fonksiyonuna göre, evrişim çekirdeğinin aktivasyon değeri artık gradyan yükselişine göre hesaplanabilir.

# 1000 adımda gradyan tırmanışı gerçekleştiriyoruz

aralıktaki i için (1000):

loss_value, grads_value = iterate () # 0 test aşaması için

input_img_data + = grads_value * learning_rate # Resme gradyan uygulama

print ('Mevcut kayıp değeri:', kayıp_değer)

# ortaya çıkan giriş görüntüsünün kodunu çözün ve listeye ekleyin

img = deprocess (input_img_data)

keep_images.append ((img, loss_value))

end_time = time.time

print ('% ds'de işlenen filtre% d'% (class_index, end_time-start_time))

Son çıktı görüntüsü aşağıdaki şekilde gösterilmektedir: Bu bir balık kafası mı? Veya bir koyun kafası? ImageNet bağlantısına bakmadan başlığın ne olduğunu bilmiyorum. Bununla birlikte, bu yöntem, giriş görüntüsünü mümkün olduğunca evrişim çekirdeğinin görmek istediğini görmek, bu katmanın evrişim çekirdeğinin kaybı ve gradyanı ile tamamlamak, giriş orijinal görüntüsünün ayrıntılarını doldurmak ve nihayet görsel evrişimi elde etmek için mümkün olduğunca yapmaktır. Nükleer diyagram.

Tüm evrişim çekirdek haritalarını görselleştirin

Görsel evrişim çekirdeği bu örneğin en ilginç kısmı ve aynı zamanda en sevdiğim kısım. CNN ağ modelinde evrişim çekirdeğini analiz ederek, her evrişim çekirdek özütlerinin hangi içerik, doku ve özellik katmanlarını göreceğiz. CNN modelinin çıkardığı özelliklerin arkasındaki anlamı derinlemesine anladığımızda, evrişimli sinir ağı CNN'nin parametrelerini değiştirmek için yeterli güvene sahip olabiliriz.

Aşağıda, her ağ katmanının çeşitli evrişim çekirdeklerini sistematik olarak görselleştirmek için eğitimli VGG16 ağ modelini kullanacağız ve CNN'nin özellikleri çıkarmak için giriş katmanını katman katman ayrıştırdığını göreceğiz.

Nihai yürütme sonucu aşağıdaki şekilde gösterilmektedir. Block1_Conv1'in evrişim çekirdeği esas olarak renk ve yön gibi kodlamayı tamamlar. Block2_Conv2'nin evrişim çekirdeği, açıkça Block1_Conv1'den daha fazla doku ve farklı doku yönlerine sahiptir ve ifade edilen renkler de daha fazladır. Zengin ve çeşitlidir ve uçta bazı dengesiz performans görülebilir.

VGG16 ağ modeli derinleşmeye devam ederken, bu renkler ve yönler, kademeli olarak özel dokular oluşturmak için temel dokularla birleştirilir. Block3_Conv1'e girdikten sonra yön ve rengin performansı düşmeye başladı ve daha karmaşık doku özellikleri (daire, spiral, çokgen, dalga ve diğer şekil kombinasyonları) ortaya çıkmaya başladı.Block5_Conv1'den sonra dokusunun daha özel ve evrişimli olduğunu açıkça görebilirsiniz. Siber uzay bilgisinin artmasıyla birlikte çekirdek daha sofistike ve karmaşık özelliklere sahiptir.

Evrişim çekirdekleri gittikçe daha karmaşık hale geldi, çünkü gittikçe daha fazla uzamsal bilgiyi birleştirmeye başladılar ve sunulan ve ifade edilen bilgiler daha da zenginleştirildi.

Dikkatli okuyucular gerçek denemelerden sonra şunu bulabilir: aynı evrişim katmanındaki az sayıda görsel evrişim çekirdeği boş veya aynıdır, bu da evrişim çekirdeğinin sonraki işlemler üzerinde gerçek bir etkisinin olmadığı anlamına gelir. Ağ hesaplamalarının miktarını azaltmak ve aşırı uydurma olasılığını azaltmak için bu evrişim çekirdeklerini çıkarın.

Ek olarak, başka bir görsel evrişim çekirdeği elde etmek için bazı görsel evrişim çekirdekleri döndürülebilir ve çevrilebilir. Bu çok ilginç bir araştırma yönüdür.Bir dönme değişmezliği yöntemi bularak, evrişim çekirdeklerinin sayısını azaltarak, ağ katmanındaki diğer evrişim çekirdeklerini potansiyel olarak değiştirebiliriz. Şaşırtıcı bir şekilde, Block4_Conv1 gibi nispeten yüksek seviyeli filtreler için bile, döndürme ve çevirme ile elde edilen aynı görselleştirme evrişim çekirdeği hala geçerlidir.

Ancak blok5 conv3'ün sonunda, kod uygulamasından sonra, 512 evrişimli çekirdeğin yalnızca 65'inin sıfır olmayan bir kayıp olduğunu, yani kalan evrişim çekirdeklerinin artık yüksek boyutlu doku özelliği bilgisini çıkaramadığını bulacağız. , Bu nasıl aynı şey? Neden olmasın? Bu aynı zamanda ResNet veya GoogleNet'in VGGNet'e iyileştirilmesidir.Bazen, CNN ağının her evrişim çekirdeği (nöron) ağın hesaplanmasına katılamaz, bir rol oynamaz ve yüksek boyutlu özellikleri çıkaramaz. Aşağıdaki şekil, ResNet'in katman atlama yöntemini göstermektedir, çünkü VGG'nin block5 conv3 ve block5 conv2'si birçok işe yaramaz evrişim çekirdeği olarak görünmeye başlamışken, block4 conv3 geri aktarılabilecek pek çok yararlı bilgiye sahiptir.

CNN ağ modelinin görsel analizi ile, evrişimli sinir ağı CNN'nin spesifik işlem sürecini ve ne tür doku özelliği bilgilerinin çıkarıldığını daha derin bir şekilde anladık. Enerjiniz varsa, bırakmanın nöronlarını kendiniz de belirleyebilir, evrişimli sinir ağınızın neden aşırı uyduğunu ve ağı nasıl kesebileceğinizi kontrol edebilirsiniz. Bu çok ilginç bir süreç ve insan sabrını test eden bir süreç.

CNN vizyonu gerçekten anlıyor mu?

Evrişimli sinir ağı CNN'nin iki ana işlevi şunlardır: 1) Giriş görsel uzay görüntüsünü birleştirin ve bileşen düzeyinde evrişim çekirdeğini ayırın. 2) Giriş verilerini hiyerarşik evrişim çekirdeği aracılığıyla farklı geometrik alanlarla eşleştirin.

Bazı insanlar evrişimli sinir ağı CNN'nin giriş görüntüsünü katmanlı bir fikirle ayırdığını iddia edecekler.Bu süreç insan görsel korteksini simüle ederek böylesine ince bir etki elde edebilir. Ama gerçekten durum bu mu? Bilimsel bir bakış açısından bu, bilgisayarla görme problemini bir dereceye kadar çözdüğümüz anlamına gelmez.Giriş görüntü verilerini örneklemek ve geometrik olarak boşluk bırakmak için sadece matematiksel yöntemler kullandık. Bilim bunu bu şekilde açıklasa bile görsel korteksin bu şekilde çalışmadığını iddia etmez.

Derin öğrenme gerçek zekayı ifade edemese de, şüphesiz tahmin etkisi o kadar şaşırtıcı ki, son yıllarda başka hiçbir algoritma onunla eşleşemiyor ve hatta bazı durumlarda insanların tahmin doğruluğunu aşıyor! Algoritmaların düşünme tarzımızı öğrenmesini beklemiyoruz, bunun yerine matematiği kucaklamalı, insanlığa hizmet etmek için onun özel yolunu kullanmalı, keşfetmeye devam etmeli, yaratmaya devam etmeli, analog ve dijital alanında lider olmaya devam etmeliyiz!

Referanslar:

Yosinski__2015__ICML_DL__Understanding_Neural_Networks_Through_Deep_Visualization

Evrişimli sinir ağları dünyayı nasıl görüyor?

Adres: https://blog.keras.io/how-convolutional-neural-networks-see-the-world.html

Lei Feng.com AI Teknolojisi İncelemesi.

Kuzey Avrupa Dani Phantom S180'den CI özel hoparlörler tam deneyim
önceki
Bu Noel şovu dolu! Rap Star Nas kişisel tasarım öğeleri yayınladı
Sonraki
Charlize Theron'un otoriter Kraliçe Faner Sokağı övgüyle karşılandı: korumasını kısa gösteren bir kadın
2019'daki ilk Dadu Mağazası Üyelik Günü burada
Yatırım yükselişe geçti ve takip, CB Insights tarafından yetkili olarak yayınlanan zayıf 2017 blockchain yatırım trendi raporu.
Çıplak araba 15-20W, aile arabası, hangisi daha iyi?
"Battlefield 5" geliştiricilerine "Black Ops 4" tarafından çok iyi oynadıkları için bir ünvan verildi.
Bu hafta, baharın kalbinin dalgalanmasını engelleyemiyorum, Bırakalım Brother Hammer herkes için "Saoyu doğru" yapsın
Ni Ni'nin altın ışıltılı eteği, harika bir mizaç ile bir gülümseme ve bir gülümsemeyle aşırı derecede güzel
Gakki ne kadar sevimli olursa olsun, 20. yüzyılın sonundaki son kız idolü Hirosue Ryoko'yu asla unutmayacağım.
Nubia Alpha poster özeti, çok fazla önemli nokta, gelecek burada
2 yıldan kısa bir süre içinde hisse senedi fiyatı 6 kat arttı, NVIDIA'nın "yükseliş mucizesi" devam ediyor
Şarkıcılar Kralı'nın gecesi "Şarkıcı" 2019 Şarkıcı Savaşı Karşılaşması
Araba alırken yeni yıl yaklaşıyor Damai X7 neden çalışanların favorisi?
To Top