LeNet5 LeNet5, 1994 yılında doğmuş olup, ilk konvolüsyon sinir ağlarından biridir ve derin öğrenme alanını ilerletmiştir. 1988'den beri, birçok başarılı yinelemeden sonra, Yann LeCun'un bu öncü çalışması LeNet5 olarak adlandırılmıştır (bkz: Belge Tanımaya Uygulanan Gradient Tabanlı Öğrenme).
LeNet5'in mimarisi, (özellikle) bir görüntünün özelliklerinin tüm görüntüye dağıtıldığı ve öğrenilebilir parametrelerle konvolüsyonun, benzer özellikleri az sayıda parametreyle birden fazla konumda çıkarmanın verimli bir yolu olduğu fikrine dayanır. O zamanlar eğitime yardımcı olacak bir GPU yoktu ve CPU bile yavaştı. Bu nedenle, parametreleri kaydetme yeteneği ve hesaplama süreci önemli bir gelişmedir. Bu, her pikseli büyük, çok katmanlı bir sinir ağı için ayrı bir giriş olarak kullanmanın tam tersidir. LeNet5, bu piksellerin ilk katmanda kullanılmaması gerektiğini açıklar; çünkü görüntünün güçlü uzamsal korelasyonları var ve bu korelasyonlar farklı giriş özellikleri olarak bağımsız pikseller kullanılarak kullanılamaz.
LeNet5 özellikleri şu şekilde özetlenebilir:
Konvolüsyon sinir ağları 3 katmanı ardışık olarak kullanır: konvolüsyonel, havuzlu, doğrusal olmayan → Bu makaleden beri muhtemelen görüntü derin öğrenmesinin temel bir özelliği! Mekansal özellikleri çıkarmak için konvolüsyonlar kullanın Uzamsal ortalamaya eşlemeyle alt örneklem Hiperbolik teğet (tanh) veya S-şekilli (sigmoid) şeklinde doğrusal olmayanlık vardır. Çok katmanlı Sinir Ağları (MLP'ler) nihai sınıflandırıcı olarak hizmet eder Katmanlar arasındaki seyrek bağlantı matrisleri, büyük hesaplama maliyetlerini önler
Genel olarak, bu ağ, son dönemde geliştirilen birçok mimarinin başlangıç noktasıdır ve bu alandaki birçok kişiye ilham vermiştir.
Aralık 1998'den 2010'a kadar sinir ağı kuluçka aşamasındaydı. Çoğu insan büyüme güçlerinin farkında değil, diğer araştırmacılar ise bunu yapmakta yavaştır. Cep telefonu kameralarının ve ucuz dijital kameraların ortaya çıkışı sayesinde, giderek daha fazla veri sömürülüyor. Ve hesaplama gücü de artıyor, CPU'lar hızlanıyor ve GPU'lar çoklu amaçlar için hesaplama araçları haline geliyor. Bu eğilimler, sinir ağlarının yavaş da olsa ilerlemesine olanak sağladı. Veri ve hesaplama gücü, sinir ağlarının başarabileceği görevleri giderek daha ilginç hale getirir. Bundan sonra her şey netleşti......
Dan Ciresan Ağı 2010 yılında Dan Claudiu Ciresan ve Jürgen Schmidhuber, en eski GPU sinir ağının bir uygulamasını yayımladılar. Bu uygulama, ileri ve geri yayılım dahil olmak üzere NVIDIA GTX 280 grafik işlemcisi üzerinde çalışan 9 katmanlı bir sinir ağıdır.
AlexNet 2012'de Alex Krizhevsky, LeNet'in daha derin ve geniş bir versiyonu olan Alexet'i yayımladı (bkz: Derin Konvolüsyon Sinir Ağları ile ImageNet Sınıflandırması), zorlu ImageNet yarışmasını önemli bir farkla kazandı.
AlexNet, LeNet'in fikirlerini çok daha karmaşık nesneleri ve nesne seviyelerini öğrenebilen daha büyük sinir ağlarına genişletir. Bu çalışmanın katkıları şunlardır:
Doğrusal olmayan bir özellik olarak değiştirilmiş bir doğrusal birim (ReLU) kullanın Modelin aşırı uyumunu önlemek için eğitim sırasında bireysel nöronları seçici olarak görmezden gelmek için Dropout tekniğini kullanın Ortalama havuzun ortalama etkisinden kaçınmak için büyük bir havuzu geçersiz kılın NVIDIA GTX 580 GPU ile eğitim süresini azaltın
Bu noktada, GPU'lar CPU'lardan daha fazla çekirdek sağlayabilir ve eğitim süresi 10 kat artırılabilir; bu da daha büyük veri setleri ve daha büyük görüntüler elde etmenize olanak tanır.
AlexNet'in başarısı küçük bir devrimle yol açtı. Konvolüsyon sinir ağları artık derin öğrenmenin bel kemiği olup, "artık faydalı görevleri çözebilen büyük sinir ağları" ile eşanlamlı hale geldiler.
Aşırı başarı Aralık 2013'te, New York Üniversitesi'ndeki Yann LeCun laboratuvarı, AlexNet'in Overfeat adlı bir türevini önerdi (bkz: OverFeat: Konvolüsyon Ağlar Kullanarak Entegre Tanıma, Yerelleştirme ve Tespit). Bu makale ayrıca bir öğrenme sınırlayıcı kutusu önerdi ve bu da aynı konuda birçok makaleye yol açtı. Bence nesneleri bölmeyi öğrenmek, yapay sınırlayıcı kutuları öğrenmektense daha iyi.
VGG Oxford Üniversitesi'nden VGG ağı (bkz: Büyük Ölçekli Görüntü Tanıma için Çok Derin Konvolüsyon Ağlar), her konvolüsyon katmanda daha küçük 3×3 filtre kullanan ve bunları birleştirerek konvolüsyonel bir dizi olarak işleyen ilk ağdır.
Bu, LeNet'in ilkesinin tam tersi gibi görünmektedir; burada büyük konvolüsyonlar kullanılarak bir görüntüde benzer özellikler elde edilir. AlexNet'in 9×9 veya 11×11 filtrelerinin aksine, filtreler küçülmeye başlıyor ve LeNet'in en azından ağın ilk katmanında kaçınmaya çalıştığı meşhur 1×1 konvolüsyon anomalisine yaklaşıyor. Ancak VGG, 5×5 ve 7×7 gibi daha büyük alıcı alanların etkilerini taklit etmek için ardışık olarak birden fazla 3×3 konvolüsyonunu kullanarak büyük ilerleme kaydetmiştir. Bu fikirler Inception ve ResNet gibi daha yeni ağ mimarilerinde de kullanılmıştır.
VGG ağları, karmaşık özellikleri karakterize etmek için birden fazla 3×3 konvolüsyon katman kullanır. VGG-E'nin 3., 4., 5. blokları: 256×256 ve 512×512 3×3 filtrelerinin sırayla daha karmaşık özellikleri ve bu özelliklerin kombinasyonlarını çıkarmak için birden fazla kez kullanıldığını unutmayın. Etki, 3 konvolüsyon katmanlı büyük bir 512×512 sınıflandırıcıya eşdeğerdir. Bu elbette birçok parametre ve öğrenme yeteneği olduğu anlamına geliyor. Ancak bu ağları eğitmek zordur ve daha küçük ağlara bölünüp katman katman biriktirilmelidir. Bunun nedeni, modeli düzenli hale getirmek için sağlam bir yolun olmaması veya çok sayıda parametre nedeniyle arama alanının büyük ölçüde kısıtlanmasıdır.
VGG, çıkarım çalışma zamanında zaman aldığı için birçok katmanda büyük özellik boyutları kullanır. Inception'ın darboğazında olduğu gibi, özellik sayısının azaltılması bazı hesaplama maliyetlerini tasarruf edecektir.
Ağ içinde ağ Network in Network (NiN, bkz. makale: Network In Network) fikri basit ve mükemmeldir: 1×1 konvolüsyonunun kullanımı, konvolüsyon katmanın özellikleri için daha fazla kompozisyon sağlanır.
NiN mimarisi, özellikleri diğer katmanlardan önce daha iyi birleştirmek için bireysel konvolüsyonlardan sonra mekansal MLP katmanlarını kullanır. Yine, 1×1 konvolüsyonların LeNet'in orijinal ilkesine aykırı olduğunu düşünebilirsiniz, ancak aslında daha fazla konvolüsyonel özelliklerin üst üste gelmesiyle mümkün olmayanlardan daha iyi şekilde konvolüsyon özellikleri birleştirebilirler. Bu, orijinal pikseli bir sonraki katman girişi olarak kullanmaktan farklıdır. 1×1 konvolüsyonları genellikle konvolüsyondan sonra özellik haritalarında özellikleri mekanik olarak birleştirmek için kullanılır, böylece aslında çok az parametre kullanıp bu özelliklerin tüm pikselleri arasında paylaşabilirler!
MLP'nin, bireysel konvolüsyon özelliklerin etkinliğini daha karmaşık gruplara birleştirerek büyük ölçüde artırma yeteneği. Bu fikir, ResNet, Inception ve türevleri gibi bazı son mimarilerde kullanılmıştır.
NiN ayrıca ortalama bir havuzlama katmanını nihai sınıflandırıcı olarak kullanır; bu da yaygın hale gelecek bir başka uygulamadır. Bu, sınıflandırmadan önce ağın birden fazla girdi görüntüye verdiği yanıtların ortalaması alınarak yapılır.
GoogLeNet ve Başlangıç Google'dan Christian Szegedy, derin sinir ağlarının hesaplama yükünü azaltma arayışına başladı ve ilk Inception mimarisi olan GoogLeNet'i tasarladı (bkz: Konvolutions'la Daha Derinleşme).
2014 sonbaharıydı ve derin öğrenme modelleri görüntü ile video karelerini sınıflandırmada faydalı hale geliyordu. Çoğu şüpheci, derin öğrenme ve sinir ağlarının bu sefer gerçekten geri döndüğünden ve gelişmeye devam edeceğinden artık şüphe duymuyor. Bu teknolojilerin faydalılığı göz önüne alındığında, Google gibi internet devleri bu mimarileri sunucularında verimli ve ölçekli olarak uygulamaya çok ilgi duyuyor.
Christian, derin sinir ağlarının ImageNet gibi yüksek performans seviyelerine ulaşabileceğini ve hesaplama yükünü azaltabileceğini çok düşündü. Ya da aynı hesaplama yükünü sağlarken performans iyileştirmeleri yapılabilir.
O ve ekibi Inception modülünü geliştirdi:
İlk bakışta, bu temelde 1×1, 3×3, 5×5 konvolüsyon filtrelerin paralel bir kombinasyonudur. Ancak Inception'ın harika fikri, 1×1 konvolüsyon bloklu (NiN) pahalı paralel modüllerden önce özellik sayısını azaltmaktır. Buna genellikle "darboğaz" denir. Bu bölüm aşağıdaki "darboğaz katmanı" bölümünde açıklanacaktır.
GoogLeNet, başlangıç modülü olmayan bir omurga kullanır, ardından ortalama bir havuzlama katmanı ve NiN'e benzer bir softmax sınıflandırıcı gelir. Bu sınıflandırıcı, AlexNet ve VGG'nin sınıflandırıcılarından çok daha az işlem sayısına sahiptir. Bu aynı zamanda çok etkili bir ağ tasarımına yol açtı, bkz. makale: Pratik Uygulamalar İçin Derin Sinir Ağı Modellerinin Analizi.
Darboğaz tabakası NiN'den esinlenen Inception'ın darboğaz katmanı, her katmandaki özellik sayısını ve dolayısıyla işlem sayısını azaltır; Böylece çıkarım süresi düşük tutulabilir. Özellik sayısı 4 kat azaltılır ve veri pahalı konvolüsyon modüllerden geçirilir. Bu, hesaplama maliyetleri açısından önemli bir tasarruf ve mimarinin başarısıdır.
Özellikle bunu doğrulayalım. Artık 256 özellik girişi ve 256 özellik çıktısı olduğuna göre, Başlanıjın katmanının sadece 3×3 konvolyution yapabildiğini varsayalım, yani toplamda 256×256×3×3 konvolüsyon (yaklaşık 589.000 çarpma ve birikim (MAC) işlemi). Bu, katmanı Google sunucularında 0.5 milisaniyede çalıştırmak için hesaplama bütçemizin ötesine geçebilir. Bunun yerine, karmaşıklaştırılması gereken özelliklerin sayısını azaltmaya karar verdik; bu sayı 64 oldu (yani 256/4). Bu durumda, 256 -> 64 1×1 konvolüsyonuyla başlarız, ardından Başlangıç'ın tüm dallarında 64 konvolüsyon ve ardından 64 -> 256 özelliğinden 1×1 konvolüsyonu gelir ve şimdi işlem şöyledir:
256×64 × 1×1 = 16.000s 64×64 × 3×3 = 36.000s 64×256 × 1×1 = 16.000s
Önceki 600.000 hacmle karşılaştırıldığında, şimdi toplamda 70.000 hesaplama hacmi var, bu neredeyse 10 kat daha az.
Ve daha iyi işlemler yapsak da, bu katmanda genelliğini kaybetmedik. Darboğaz katmanı, ImageNet gibi veri setlerinde üst düzey olduğunu kanıtladı ve ayrıca bir sonraki tanıtacağımız ResNet gibi mimarilerde de kullanılıyor.
Giriş özellikleri ilişkili olduğu için yedeklilik azaltılabilir; bu yüzden 1×1 konvolüsyonuyla doğru şekilde birleştirilerek yedeklik azaltılabilir. Daha sonra, az sayıda özellik karmaşıklaştıktan sonra, bir sonraki katmanda anlamlı kombinasyonlara tekrar genişletilebilir.
Inception V3 (ve V2) Christian ve ekibi çok üretken araştırmacılardır. Şubat 2015'te, Batch-normalize edilmiş Inception Inception V2 olarak tanıtıldı (bkz. makale: Batch Normalization: Accelerating Deep Network Training by Reduction Internal Covariate Shift). Toplu normalizasyon, bir katmanın çıktısındaki tüm özellik haritalarının ortalama ve standart sapmasını hesaplar ve bu değerleri onların yanıtlarını normalleştirmek için kullanır. Bu, veriyi "beyazlatmak" anlamına gelir; böylece tüm sinir haritaları aynı aralıkta yanıt verir ve sıfır ortalama olur. Bu, bir sonraki katmanın giriş verisinden ofset öğrenmesi gerektirmediğinde eğitimde yardımcı olur ve ayrıca bu özelliklerin nasıl daha iyi birleştirileceğine odaklanır.
Aralık 2015'te ekip, Inception modülünün yeni bir versiyonunu ve benzer mimariyi piyasaya sürdü (bkz. makale: Bilgisayar Görüşü İçin Inception Mimarisini Yeniden Düşünme). Makale, orijinal GoogLeNet mimarisini daha iyi açıklıyor ve tasarım tercihleri hakkında daha fazla detay veriyor. Orijinal fikir şöyledir:
Ağı dikkatlice inşa ederek, derinlik ve genişlik dengelenir ve böylece ağa bilgi akışı en üst düzeye çıkarılır. Her havuzlamadan önce özellik eşlemesi ekleyin. Derinlik arttıkça, ağ katmanının derinliği veya özelliklerinin sayısı da sistematik olarak artar. Her katman derinliği artışını kullanarak bir sonraki katmandan önce özelliklerin bağlanmasını artırın. Sadece 3×3 konvolüsyon kullanıldığında, verilen 5×5 ve 7×7 filtreler mümkün olduğunda birden fazla 3×3'e bölünebilir. Aşağıdaki görsele bak
Sonuç olarak, yeni Inception şu oldu:
Ayrıca konvolüsyonu daha karmaşık modüllere düzleştirerek filtreyi bölebilirsiniz:
Başlangıç hesaplamaları yapılırken, Başlangıç modülü havuzlama sağlayarak veri boyutunu da küçültebilir. Bu, temelde bir konvolüsyon çalıştırırken basit bir havuzlama katmanını paralel çalıştırmaya benzer:
Inception ayrıca bir havuzlama katmanı ve softmax'i son sınıflandırıcı olarak kullanıyor.
ResNet Aralık 2015'te Inception V3 ile aynı zamana denk gelen yeni bir değişiklik yaşandı. ResNet'in basit bir fikri var: iki ardışık konvolüsyonel katmanın çıktısını besleyip girdiyi sonraki katmana atlamak (bkz. makale: Deep Rezidual Learning for Image Recognition).
Bu, önceki bazı eski fikirlere benziyor. Ama ResNet'te iki katmanı ayırıp daha büyük ölçekte uygulanıyorlar. İki katmandan sonra ilerlemek önemli bir sezgidir çünkü bir katmanı bölmek daha fazla gelişme sağlamaz. Katman 2'den geçmek, küçük bir sınıflandırıcı veya ağ içinde bir ağ olarak düşünülebilir.
Bu, ağ katmanlarının sayısının 100'ü aştığı ilk kez, hatta 1000 katmanın bile eğitilebileceği bir durumdur.
Çok sayıda ağ katmanına sahip ResNet, Inception darboğaz katmanına benzer bir ağ katmanı kullanmaya başlıyor:
Bu katman, önce daha az sayıda özelliği 1×1 ile daha küçük bir çıktı (genellikle girdinin 1/4'ü kadar) birleştirerek, ardından 3×3 ve ardından 1×1 katman kullanarak daha az sayıda özelliği işler. Inception modülüne benzer şekilde, bu da düşük hesaplama yoğunluğunu sağlarken zengin özellik kombinasyonları sunar.
ResNet, girdiler üzerinde nispeten basit bir başlangıç katmanı kullanır: iki havuzlu 7×7 hacimli bir taban katman. Bunu daha karmaşık ve daha az sezgisel Inception V3 ve V4 ile karşılaştırın.
ResNet ayrıca son sınıflandırıcı olarak bir havuzlama katmanı ve softmax kullanıyor.
ResNet hakkında diğer bilgiler her gün ortaya çıkıyor:
ResNet hem paralel hem de bitişik olarak kabul edilebilir; birçok modülde giriş ve çıkışları (inout) paralel olarak ele alırken, her modülün çıkışları sürekli olarak bağlıdır. ResNet ayrıca paralel veya sürekli modüllerin bir kombinasyonu olarak da değerlendirilebilir (bkz. makale: Rezidual Networks is Exponential Ensembles of Relative Shallow Networks (Rezidual Networks) makalesi). ResNet'in genellikle 20-30 katmanlardaki ağ bloklarında paralel çalıştığı bulunmuştur. Ağın tüm uzunluğu boyunca sürekli akmak yerine. ResNet, bir RNN gibi çıktıyı girdiye geri bestiğinde, ağ biyolojik olarak daha güvenilir bir kortikal model olarak kabul edilebilir (bkz. makale: Bridging the Gaps Between Rezidual Learning, Recurrent Neural Networks and Visual Cortex).
Inception V4 İşte Christian ve ekibinden Inception'ın başka bir versiyonu, Inception V3'e benzer:
Inception V4 ayrıca Inception modülü ile ResNet modülünü birleştirir:
Bence mimari çok özlü değil, ama aynı zamanda daha az şeffaf sezgisel yöntemlerle de dolu. Seçimleri anlamak zordur ve yazarların açıklaması zordur.
Ağın basitliği ve kolayca anlaşılabilen ve düzeltilebilen göz önüne alındığında, ResNet daha iyi olabilir.
SqueezeNet SqueezeNet (bkz. makale: SqueezeNet: 50 kat daha az parametre ve <0.5MB model boyutu ile AlexNet seviyesinde doğruluk), ResNet ve Inception'daki kavramları yeniden işleyen yakın zamanda yayımlanmış bir mimaridir. Daha iyi bir mimari tasarım ağ modeli daha küçüktür ve parametreler henüz karmaşık sıkıştırma algoritmaları gerektirmez.
ENet Ekibimiz, yakın zamanda ortaya çıkan mimarinin tüm özelliklerini birleştirerek daha az parametre ve hesaplama kullanan, çok verimli, düşük ağırlıklı bir ağ oluşturmayı planlıyor. Bu ağ mimarisi ENet olarak adlandırılır ve Adam Paszke tarafından tasarlanmıştır. Zaten tek piksel işaretleme ve sahne çözünürlüğü için kullandık.
ENet hakkında daha fazla bilgi için ENet: Gerçek Zamanlı Semantik Segmentasyon İçin Derin Sinir Ağı Mimarisi makalesine bakınız. ENet, kodlama, ekleme ve çözme ağıdır. Kodlayıcı, sınıflandırılması gereken normal bir CNN tasarımıdır. Kod çözücü, sınıflandırmayı orijinal görüntüye geriye doğru segmentasyon için yayan bir yukarı örnekleme ağıdır. Bu sadece sinir ağları kullanır ve görüntü segmentasyonu için başka algoritmalar kullanmaz.
ENet, başlangıçta mümkün olan minimum miktarda kaynak kullanacak şekilde tasarlanmıştır. Bu yüzden bu kadar küçük bir betik, 0.7 MB alanda kodlayıcı ve kodlayıcı ağının 16 fp doğruluğu var. Böylesine küçük bir modele rağmen, ENet segmentasyon doğruluğu açısından diğer sinir ağı çözümlerine benzer veya daha yüksektir.
Modül analizi CNN modülünün analizi, makalede (ImageNet'te CNN ilerlemelerinin sistematik değerlendirmesi) çok faydalıdır:
Batchnorm olmadan ELU doğrusal olmayanlığı veya batchnorm ile ReLU kullanın. Öğrenilmiş RGB renk uzayı dönüşümü kullanın. Doğrusal öğrenme oranı düşüşü stratejisi kullanın. Ortalama ve daha büyük havuzlanmış katmanların toplamını kullanın. Yaklaşık 128 ila 256 arasında mini parti boyutu kullanın. Eğer GPU'n için çok büyükse, öğrenme hızını bu boyuta indir. Tam bağlı katmanı konvolüsyon olarak kullanın ve nihai tahmini yapmak için tüm tahminleri ortalayın. Çalışma, eğitim seti boyutunu artırdığında, ulaşılmamış bir plato olup olmadığını tespit eder Verinin temizliği, verinin boyutundan daha önemlidir. Giriş görüntüsünün boyutunu artıramazsanız, sonraki katmanlarda adımı küçültün, aynı etki yaratır. Ağınızda GoogLeNet gibi karmaşık ve son derece optimize edilmiş bir mimari varsa, bunu değiştirmeye dikkat etmelisiniz.
Dikkat edilmesi gereken diğer mimariler FractalNet (bkz. makale: FractalNet: Ultra-Deep Neural Networks without Residuals) ImageNet'te test edilmemiş bir özyinelemeli mimari kullanır. Bu mimari, ResNet'in veya daha genel olarak ResNet'in bir türevidir.
gelecek Bir sinir ağı mimarisi oluşturmanın derin öğrenmenin geliştirilmesi için en öncelikli bir şey olduğuna inanıyoruz. Ekibimiz, makalede bahsedilen makaleleri dikkatlice okumanızı ve anlamanızı şiddetle tavsiye eder.
Ama insan neden mimari yapmak için bu kadar zaman harcadığımızı merak edebilir? Neden bize veriyle ne kullanacağımızı söylemiyorsunuz? Modülleri nasıl birleştirirsiniz? Bu sorular iyi ama hâlâ araştırılıyor ve başvurabileceğiniz bir makale var: Türevlenebilir yapıya sahip sinir ağları.
Bu makalede bahsettiğimiz mimarilerin çoğunun bilgisayar görüşü ile ilgili olduğunu unutmayın. Benzer sinir ağı mimarileri başka alanlarda da geliştirilmiştir ve diğer tüm görevlerdeki mimari değişiklikleri öğrenmek çok ilginçtir.
Sinir ağı mimarisi ile hesaplama performansını karşılaştırmakla ilgileniyorsanız, şu makaleye bakabilirsiniz: Pratik Uygulamalar İçin Derin Sinir Ağı Modellerinin Analizi.
|