En eksiksiz yorum! Prensipten koda, Hinton'un kapsül ağına kadar pratik kılavuzu (video + kod ile)

İşte Youtube Yapay Zeka Eğitimi sütunu, orijinal yazar Siraj Raval, Lei Feng'in altyazı grubunu derleme yetkisi verdi.

Orijinal başlık Kapsül Ağları: Evrişimli Ağlarda Bir İyileştirme

Tercüme | Xia Xuesong Zheng Hanwei Altyazılar | Fan Jiang Bitirme | Frank

Geçen yıl Ekim ayında, derin öğrenmenin babası Hinton, "Kapsüller Arasında Dinamik Yönlendirme" (Kapsül Ağları) yayınladı. Son zamanlarda, Google resmi olarak açık kaynaklı Hinton kapsülü teori kodunu sağladı.

Geoffrey Hinton, derin öğrenmenin vaftiz babalarından biridir ve geri yayılma algoritmasını 1980'lerde popüler hale getirmiştir. Derin öğrenmenin etkisinin önemli olmasının nedeni kesinlikle geri yayılma algoritmasıdır. İlk AI kışında (80'ler), diğer insanlar sinir ağlarının çalışabileceğine inanmıyordu, ancak Hinton sinir ağlarına sıkı sıkıya inanıyordu, bu yüzden bu kadar harikaydı.

Siraj, evrişimli sinir ağlarının hızlı gelişim geçmişine, kapsül ağlarının çalışma prensibine ve TensorFlow koduna odaklanacak.

Şu anda en gelişmiş algoritma: Evrişimli Sinir Ağı

Bu, evrişimli sinir ağının (CNN) bir resmidir.Standart bir çok katmanlı algılayıcı kullanırsak, yani tüm katmanlar diğer katmanlara tamamen bağlıdır, bu hızla zorlaşacaktır. Hesaplama. Görüntünün boyutsallığı çok yüksek olduğu için birçok piksel vardır.

(Evrişimli Sinir Ağı)

Görüntüdeki her bir piksele ve her katmana bu işlemleri arka arkaya uygularsak çok uzun sürecektir. Çözümümüz evrişimli bir ağ kullanmaktır. Önce bir girdi görüntüsü alıyoruz, bu girdi görüntüsünün ilgili bir etiketi var, eğer bu bir arabanın resmi ise, gördüğümüz gibi, ilgili bir araba etiketine sahip olacak. Resim bir arabadır, dolayısıyla etiketi bir arabadır.

Evrişimli bir sinir ağının yapacağı şey, giriş verileri ile çıkış etiketleri arasındaki eşleme ilişkisini öğrenmektir. Bu evrişimli sinir ağı eğitildikten sonra, ona bir arabanın resmini verirsek, haritalama ilişkisini öğrendiği için bir araba olduğunu bilecektir. Bu ağ için ilk kez bir araba resmi sağladığımızda, ilk olarak evrişimli katmana uygulandı. Evrişim katmanında, önce bir dizi matris çarpımı, ardından aşağıda yüksek düzeyde açıklanan bir toplama işlemi gelir.

Evrişim katmanı bir el feneri gibidir, görüntüdeki her piksele etki eder. Görüntünün en alakalı kısmını bulmaya çalışır. Genellikle evrişimli katman, birçok özelliği temsil eden özellik haritalarının çıktısını alır. Görüntüden evrişimsel katman tarafından öğrenilen özellikler kümesi bir matris ile temsil edilir. Doğrusal olmayan bir birim uyguluyoruz, tıpkı düzeltmeden sonra doğrusal bir birim gibi.

Doğrusal olmamayı ona uyguladığımızda, genellikle farklı amaçlara hizmet eder: İlk amaç, ağın hem doğrusal hem de doğrusal olmayan işlevlere sahip olmayı öğrenmesine izin vermektir. Sinir ağı genel işlevin yaklaşık hatası olduğundan, bu özellikle düzeltilmiş doğrusal aygıt için doğrudur; onu kullanmanın başka bir amacı, diğer doğrusal olmayan türlerden farklı olarak, geri yayılma sürecinde gradyanın kaybolması sorununu çözmektir.

İleriye doğru ilerlediğimizde bir dizi işlem gerçekleştirdiğimizde, çıktı sınıfının olasılığını alırız, hata değerini hesaplamak için onu gerçek etiketle karşılaştırırız ve sonra eğimi hesaplamak için hatayı kullanırız. Ağı geri yaydığımızda, gradyan bize ağırlıklarımızı nasıl güncelleyeceğimizi söyler. Kaybolan gradyan sorununu çözmeye yardımcı olur, çünkü bazen gradyan geri yayıldığında daha da küçülür, dolayısıyla ağırlık güncellemesi de Daha küçük ve daha küçük olun.

Evrişimli sinir ağlarının gelişim tarihi

Videoda geniş ve modern bir hedef tanıma tarihi var.Erişimsel sinir ağlarının tarihsel gelişimi, ImageNet yarışması ve yapılan tüm ilerlemeler de dahil olmak üzere çok ayrıntılı. Bunları aşağıda ayrıntılı olarak tanıtacağız.

(Nesne tanımanın geliştirme geçmişi)

AlexNet

Evrişimli sinir ağları tarafından yapılan ilk gelişme, 2012'de önerilen AlexNet ağıydı. İşte bazı önemli iyileştirmeler: Gradyan sorununun ortadan kalkmasını önlemeye yardımcı olan ReLu'yu öneriyor; ayrıca, her katmandaki nöronların aşırı uyumu önlemek için rastgele açılıp kapanmasını sağlayan bırakma kavramını da tanıtıyor. Verileriniz çok benzerse, benzer ancak farklı görüntüleri sınıflandıramaz çünkü egzersiz verilerinize fazlasıyla uygundur.

Bu nedenle, bırakma, aşırı uyumu önlemek için bir düzenleme tekniğidir.Nöronları rastgele açıp kapatarak, veriler yeni bir yol bulmaya zorlanır, çünkü yeni bir yol bulmaya zorlanır, ağ daha iyi genellenebilir; evrişim Ağ aynı zamanda veri geliştirme fikrini de ortaya koymaktadır.AlexNet veya AlexNet'in yazarı, görüntüleri sadece tek bir açıya yerleştirmek yerine, farklı açılarda döndürülmüş görüntüleri AlexNet ağına gönderir. Bu, farklı açılara daha iyi uygulanabilir hale getirir. Daha derin ağlar, böylece daha fazla katman eklerler ve bu da sınıflandırmanın doğruluğunu artırır.

VGG Net

Bundan sonra VGG Net. En büyük değişiklik, daha fazla katman eklememizdir.

GoogLeNet

Bundan sonra, GoogLeNet. GoogLeNet evrişim çekirdeğinin boyutu farklıdır. Aynı girişteyiz ve onu birbirine bağlıyoruz. Bir evrişim işleminden geçmek yerine ayrı bir katmanda çalışın. Çarpma ile başlıyoruz ve sonra toplama işlemi. Önce bir şeyi çarpar, sonra bir şeyi çarpar ve sonra tüm bu çarpımların çıktılarını ileriye doğru yayılma için birbirine bağlar. Bu, her katmandaki özellik temsilini öğrenmeyi daha iyi hale getirir.

ResNet

Sırada reçineden sonra bir fikir olan ResNet var. Katmanları yığmaya devam edersek, ağ her seferinde daha iyi olacak mı? cevap olumsuz. Daha fazlasını eklerseniz, performans düşecektir. ResNet önemli olmadığını söyledi. Dizi elemanlarının ardışık toplama işleminin her iki seviyede bir gerçekleştirilmesi, sadece bu işlemi artırır ve gradyan yayılımını iyileştirir, böylece geri yayılmayı kolaylaştırır. Gradyan kaybolması sorununu daha da çözer.

DenseNet

Bundan sonra DenseNet var. DenseNet, ağın her katmanındaki tüm blokları diğer katmanlarla bağlamayı önerir. Bu daha karmaşık bir bağlantı stratejisidir. Ağ daha derin ve daha derin tasarlanıyor. Performansı iyileştirmek için bu evrişimli ağlara ReLu veya bırakma veya Toplu Normalleştirme gibi eklenen bazı hesaplama teknikleri de vardır. Ek olarak, ağ katmanları arasında hala giderek daha fazla bağlantı kullanıyoruz, ancak Hinton, evrişimli sinir ağlarında sorunlar olduğunu söyledi.

Evrişimli sinir ağları, gördüklerinden en düşük seviyeli özellikleri öğrenebilir.

Köpeği örnek olarak alın, alt katmandaki kulağın kenarını ve eğriliğini öğrenin ve sonra seviye boyunca yüksek seviyeye çıkıyoruz. Bir sonraki seviyeye girdiğimizde, öğrenilen her özellik daha karmaşık hale gelecektir - ilk seviye kenar Özellikler, bir sonraki katmanda öğrenilen özellikler şekillere dönüşür, bir sonraki katmanda daha karmaşık şekillere, örneğin tam bir kulaklığa dönüşürler ve son katmanda, bir köpeğin tüm vücudu gibi çok, çok karmaşık şekiller haline gelirler. .

Bu, bildiğimiz şekliyle insan görsel korteksinin nasıl çalıştığına çok benzer. Ne zaman bir şey görsek, nöronları hiyerarşik sırayla etkinleştiririz. Gördüğümüz bir şeyi tanımlamaya çalıştığımızda, katmanlar arasındaki kesin ve karmaşık bağlantı mekanizmasını bilmiyoruz, ancak her katman arasında hiyerarşik ilişkiler olacağını biliyoruz.

(Evrişimli ağlarda neden sorunlar var)

Evrişimli sinir ağının özü nedir?

1. Her şeyden önce, tüm aşağı örnekleme havuzlama katmanları yüksek hassasiyetli uzamsal bilgiyi kaybedecektir.Yüksek düzey özellikler burun ile ağız arasındaki uzamsal ilişki gibidir, tıpkı burnunuz resimdeymiş gibi burnu ve ağzı ayırt etmek yeterli değildir. Ortada sol köşede ağız resmin sağ köşesinde, gözler ise resmin altında, bu üç özelliğe dayalı bir yüz olması gerektiğini söyleyemezsiniz.

2. Uzaysal bir korelasyon da vardır - gözler burnun üzerinde ve burun ağzın üzerinde olmalıdır. Bununla birlikte, altörnekleme veya havuzlama bu ilişkiyi ve geometrik ilişkileri anlamalarını kaybedecektir Evrişimli ağlar görüntü algılamada çok zayıftır.

Bu soruna yanıt olarak, düşüncemiz değişmeden kalır. Eşdeğerlik için çabalamalıyız, bu nedenle örneklemenin veya havuzlamanın asıl amacı aynıdır.

(Kimlik ve değişmezlik)

Alt örnekleme veya havuzlama, sinirsel aktiviteyi küçük değişikliklere sabit tutmaya çalışır, bu nedenle bu, görüntünün nasıl döndürüldüğüne, nerede olduğu veya bazı görüntüleri döndürdüğüne bakılmaksızın, sinir ağı tepkisinin aynı olduğu anlamına gelir, bu da veri akışının aynı olduğu anlamına gelir. , Ancak homomorfizmi hedeflemek daha iyidir, yani bir görüntüyü döndürürsek sinir ağı da değişecektir.

Yani ihtiyacımız olan şey değişecek daha sağlam bir ağdır Görüntü konumunun dönüşümü nedeniyle, eğitimli ağa dayalı olarak daha önce hiç görülmemiş veriler için daha iyi genelleme yeteneklerine sahip bir algoritmaya ihtiyacımız var.

Kapsül ağ kağıdını yorumlama

Bu makalede tartışılan evrişimli ağlarla ilgili makale, esas olarak derin sinir ağlarına karşı bir piksel saldırısından bahsediyor Makalenin yazarı, görüntüdeki birkaç pikseli ayarlayarak, tüm ağın sınıflandırmasının çok kötü hale geldiğini buldu.

Örneğin, köpeklerin sınıflandırılması mükemmel tahminlerde bulunabilirdi, ancak yalnızca bu küçük pikseli değiştirerek, tüm ağın sınıflandırma etkisinin iyi olmadığını buldular. Anlamsız sinir ağları saldırılara karşı savunmasızdır. Otonom araçlar gibi devasa makineler yolda uçarsa, yol koşullarını tespit etmek için hesaplamalı vizyon kullanırlar. Bu sistemler bu piksel saldırılarından etkilenemezler. Çok sağlam olmaları gerekir.

Hinton'un kapsül ağını tanıtma fikri, insan beyninin havuzlamadan daha iyi bir şekilde çeviri değişmezliğine ulaşması gerektiğidir. Hinton, beynin kapsül adını verdiği bazı modüllere sahip olduğunu varsaydı.

Bu modüller, farklı türde görsel uyaranlarla başa çıkmada ve belirli bir şekilde kodlamada çok iyidir. Evrişimli sinir ağları, havuzlama işlemleri aracılığıyla verilerin her katmana nasıl aktarılacağını yönlendirir. Bir görüntüyü girip ona bir evrişim işlemi uygularsak, üzerinde doğrusal olmayan bir işlem gerçekleştirir ve ardından görüntünün havuzlama katmanının çıktısına göre çeker ve bir sonraki katmana belirli bir yönde girer. Ancak, havuzlamaya dayalı olarak bir sonraki katmandaki bazı birimleri etkileyecektir, ancak havuzlama, verileri yönlendirmenin çok kaba bir yoludur.

Verileri yönlendirmenin daha iyi bir yolu var Kapsül ağının arkasındaki temel fikir şudur: Bu, başka bir katman eklemek yerine yalnızca bir sinir ağıdır, bu nedenle genellikle yeni katmanları bir katmana yerleştirmek yerine farklı katman türleri ekleriz. Başka bir deyişle, katmanın içine başka bir katman ekliyoruz, yani bu iç içe geçmiş bir katmandır. Bu nedenle, iç yuva katmanına bir grup nöron kapsülü denir.

(Kapsül Ağı)

Kapsül ağının iki ana özelliği vardır: Birincisi katman tabanlı sıkıştırma ve ikincisi dinamik yönlendirmedir. Tipik bir sinir ağının doğrusal olmayan bir şekilde sıkıştırılmış yalnızca bir birim çıktısı vardır, bu nedenle bir dizi çıktı nöronumuz var ve her bir çıktı nöronuna dayanarak, her bir nörona doğrusal olmama uygulamak yerine her bir nörona doğrusal olmama uygularız. , Bu nöronları bir kapsülde birleştirin ve ardından tüm nöron kümesine doğrusal olmama uygulayın. Dolayısıyla, doğrusal olmayanlığı uyguladığımızda, dinamik yönlendirme bireysel nöronlar yerine tüm katman için uygulanır.Çıktı haritalama dedektörünü bir vektör çıktı kapsülü ile değiştirir ve yönlendirme ve protokoller aracılığıyla maksimizasyon havuzunun yerini alır.

Her katmandaki her bir kapsül veriyi ileri doğru yaydığında, bir katman içindeki iç içe katmanlardan oluşan hiyerarşik bir ağaç gibi, bir sonraki en uygun kapsüle girecektir.Bu yeni mimarinin maliyeti bu yönlendirme algoritmasıdır.

Temel olarak, geleneksel evrişimli ağların temel farkı, ileri doğru yayılmanın, çıktıyı hesaplamak için tüm birimlerde (en az bir) dört yineleme gerektiren ek bir dış döngüye sahip olmasıdır. Veri akışı biraz karmaşık görünüyor çünkü her kapsül için bu işlemler, ister Softmax işlevi isterse ezme işlevi olsun, bir katmanda yuvalanmıştır, bu da gradyanı hesaplamayı daha zor hale getirir. Ve model, ağın genişlemesini engelleyebilecek daha büyük veri kümelerinde kaybolan gradyanlarla karşılaşabilir.

Kod gösterimi ve açıklaması

Bazı kodların hala güncellenmekte olduğunu görebiliriz ve bu makale nispeten yenidir. Ancak bu kod tensorFlow ile oluşturuldu.

Bu nedenle, bu seviyede yalnızca iki içe aktarma (koddaki anahtar kelimeler) veya numpy (Python temel paketi) ve tensorFlow olduğuna dikkat edin.

Bu kapsül evrişimli tabakayı inşa eden çok temiz bir mimari. Bu mimari, adım değişkenlerine benzer çıktı sayısı (num_outpurs değişkeni), çekirdek boyutu (kernel_size değişkeni) ve hiperparametrelerin if-else ifadesine sahiptir. Bahsettiğim şey, bu yöntemi bir yönlendirme şemasıyla oluşturmanız gerekmiyorsa, doğrudan bu yöntemi oluşturun.

Bir yönlendirme şemamız varsa, tüm kapsüllerin bir listesiyle başlayacağız, belirlediğimiz birimlerin sayısını yinelemeli olarak geçeceğiz, standart bir tensorFlow evrişimli katman gibi bir evrişimli katman oluşturacağız, onu bu kapsül değişkeninde saklayacağız ve sonra bunu saklayacağız Kapsül değişkeni, kapsül listesine eklenir. Son olarak, bu kapsül katmanındaki tüm evrişimli katmanlara sahibiz. Bu nasıl yuva yapar. Tüm katmanlara sahip olduktan ve bunları bir araya getirdikten sonra, sıkıştırmak için bu yeni doğrusal olmayan işlevi kullanın.

Bu kapsül uygulama yöntemine bir göz atalım ReLU için, onu tek bir nörona ekliyoruz, ancak bir doğrusal olmayanlık ekleyip bir grup nöron veya kapsül aldığımızda, bu doğrusal olmamanın çok iyi çalıştığını görüyoruz. Yani kapsül katmanına sahip olduğumuzda, onu kapsül ağına ekleyebiliriz.

İleriye bakabilir ve mimarimizi oluşturmaya başlayabiliriz.Her katman için bir primaryCaps değişkeni ve bir digitCaps değişkeni vardır ve bunlara bir kapsül katmanı ekleriz. Her bir kapsül katmanının içinde, iç içe geçmiş bir evrişimli ağ vardır ve bu kapsüller, kağıda yeni doğrusal olmayan sıkıştırma işlevini uygular.

Bu nedenle, kağıttaki ağın sonunda, dijital kapsül katmanından bir sayıyı yeniden oluşturmak için yalnızca bir kod çözücü kullanılır ve ardından ilk kapsül işlemleri seti uygulanır ve ardından öğrenme temsilinden gelen girdi yeniden yapılandırılabilir ve iyileştirmek için bir yeniden yapılandırma kaybı uygulanır. Notasyonu öğrenin, bu yeniden yapılandırma hatasıdır. Zamanla rekonstrüksiyon kaybı, gösterimi öğrenmek ve gösterimi geliştirmek için kullanılır.

Kod demosu: https://github.com/llSourcell/capsule_networks

Orijinal belge: https://arxiv.org/pdf/1710.09829.pdf

Daha fazla makale için Leifeng.com'u (herkese açık hesap: Leifeng.com) takip edin, Leiphonefansub WeChat hesabını (leiphonefansub) arkadaş olarak ekleyin

Yapay Zeka Gönüllüsü Olmak İçin "Katılmak istiyorum" açıklaması Lei Feng

Patlayıcı modellerin de güçlü olması gerekir Acer Hummingbird Swift3 dizüstü bilgisayar incelemesi
önceki
CSHIA Club Paylaşım Toplantısı Önizlemesi Dünyanın ilk akıllı çok işlevli penceresi SM-5, kapı ve pencerelerin yeni geleceğine öncülük ediyor
Sonraki
Bugün piyasaya çıkan "Asura", fantezi dünyası bir yaz görsel-işitsel şöleni başlatıyor
Hayalet Ejderha Akademisi Gaoyue Shenyi'nin "Saf Ruh" un "Slashing Servant: Different Cloth" filmindeki görsel resmi yayınlandı
Şehrin durumu neden değişiyor? İkinci ve üçüncü kademe şehirlerdeki fırsatlar nerede?
Motorlu araçlarla doğrudan ulaşılabilen, az sayıda insan ve güzel manzaraya sahip kar ve buz alanları, aynı gün ileri geri arayabilir!
Fotovoltaik güç kaynağının PCB'si nasıl yerleştirilir?
Veri silme ve farklı SSD'lerin kurtarılabilirliğinin yorumlanması
Akıntı mı yoksa çamur kayması mı? Akıllı ev endüstrisinde yeni bir güç geliyor
"Venom: Deadly Guardian" Dünya Kupası posterlerini sergiliyor
Nintendonun mali üçüncü çeyrek mali 2019 raporu: Anahtar satış hedefi düşürüldü, gelir hedefi devam ediyor
"Fang Hua" da parçalanmış ve yok edilmiş olan nedir?
Portre çekimi için yeni bir seçim - Canon EF70-200mm IS II USM performans değerlendirmesi
"Otel Sihirbazı 3: Çılgın Tatiller" in yeni bir macera ve serin bir yaz tanıtması bekleniyor.
To Top