LeNet, AlexNet ve VGGNet gibi birkaç klasik evrişimli sinir ağı yapısından bahsedeyim. O zaman evrişim çekirdeğinden detaylı olarak bahsedelim ...
LeNet-5:
LeNet-5 temel olarak gri tonlama için tasarlanmıştır, bu nedenle girişi küçüktür, 32 * 32 * 1 ve yapısı aşağıdaki gibidir:
LetNet'te klasik modlar vardır:
AlexNet:
AlexNet, büyük renkli resimleri doğrudan işler ve yapısı aşağıdaki gibidir:
AlexNet, derin öğrenmenin bilgisayarla görmede büyük ilgi görmesini sağlar.
VGG-16:
2. ResNet
ResNet artık bloklar tarafından oluşturulur. Artık blok, aşağıdaki sıradan bir sinir ağı bloğunun aktarımıdır:
İleriye doğru yayılmanın hesaplama adımları şunlardır:
ResNet bloğu, yayılma sürecinde, "kısa yol" veya "bağlantı atlama" olarak adlandırılan, a'dan a'ya doğrudan bir bağlantı ekler:
Yani, ileri yayılma formülünün son adımı şu olur:
"Kısa yol" eklendikten sonra, artık bloğun ağ yapısı olur:
Bunun Relu aktivasyon işlevinden önce bağlandığını unutmayın.
Artık Ağ:
Aşağıdaki gibi yapılandırılan bir ResNet ağ yapısı oluşturmak için birden fazla artık blok yığınlanır:
"Kısa yol" ve ResNet içermeyen sıradan sinir ağının hata eğrisi:
Ara aktivasyon işlevi için ResNet, daha derin bir ağ elde etmeye ve gradyan kaybolması ve gradyan patlaması sorunlarını çözmeye yardımcı olur.
3. ResNet'in iyi performansının nedenleri
X girişi ve a çıkışı olan nispeten büyük bir sinir ağı olduğunu varsayalım. Ağın derinliğini artırmak istiyorsak, işte ağa başka bir artık blok:
Dolayısıyla, yukarıdaki sonuçlardan, kalıntı blok için yukarıdaki kimlik işlevini öğrenmenin çok kolay olduğunu görebiliriz. Bu nedenle, artık bloğu ekledikten sonra daha derin ağın performansı, artık bloğu eklemeden basit ağdan daha düşük değildir. Dolayısıyla ağın derinliği artırılsa da ağın performansını etkilemeyecektir. Aynı zamanda, artan ağ yapısı bazı faydalı bilgileri öğrenebilirse, ağın performansı iyileştirilecektir.
Boyutlar aynı.
Sıradan derin sinir ağını ResNet'e dönüştürün:
İki özdeş evrişimli katman arasına "bağlantıyı atla" ekleyin.
4. 1x1 evrişim
İki boyutta evrişim, resmin her bir elemanını bir evrişim çekirdek numarasıyla çarpmaya eşdeğerdir.
Ancak üç boyutta, 1 * 1 * nc evrişim çekirdeği ile evrişim, üç boyutlu görüntüdeki 1 * 1 * nc dilimlere eşdeğerdir, yani, nc noktaları, Relu fonksiyonunu geçtikten sonra, çıkış Karşılık gelen sonuç. Farklı evrişim çekirdekleri, farklı gizli katman nöron düğümlerini dilim üzerindeki noktalara tek tek bağlamaya eşdeğerdir.
Yani temelde 1 * 1 evrişim çekirdeği, bir dilim üzerindeki nc birimlerine tam olarak bağlı bir sinir ağı uygulamaya eşdeğerdir.
Son 3B grafiklerde, aynı uzunluk ve genişliğe sahip bir resim elde etmek için 1 * 1 evrişimli çekirdek kullanılır, ancak üçüncü boyut, evrişim çekirdeklerinin sayısı olur.
1x1 evrişim uygulaması:
5. Başlangıç Ağı
Başlangıç Ağının rolü, bir evrişim çekirdeğinin ne kadar büyük kullanılacağı ve derin bir evrişimli sinir ağı oluştururken bir havuz katmanı eklenip eklenmeyeceği gibi konuları dikkate alma ihtiyacını ortadan kaldırmaktır.
Inception'ın ana yapısı:
Yukarıdaki Başlangıç yapısında, farklı evrişim çekirdekleri ve dolgulu bir havuzlama katmanı uygulanır. Girdi görüntüsünün boyutu değişmeden tutulurken, farklı hesaplama sonuçlarının üst üste konulmasıyla kanal sayısı artırılır.
Maliyet hesaplama problemi:
Yukarıdaki 5 * 5 boyutlu evrişim çekirdeğinin hesaplama maliyeti için:
Geçiş olarak 1 * 1 boyutlu evrişim çekirdeğinin hesaplama maliyeti için, aşağıdaki orta katman "darboğaz katmanı" olarak da adlandırılır:
Bu nedenle, "darboğaz katmanının" geçiş katmanı olarak 1 * 1 evrişim çekirdeği, evrişimli sinir ağının hesaplama maliyetini etkili bir şekilde azaltabilir. Gerçekler, "darboğaz katmanı" makul bir şekilde ayarlandığı sürece, üst katmanın ölçeğinin önemli ölçüde azaltılabileceğini ve aynı zamanda hesaplama maliyetinin ağın performansını etkilemeyecek şekilde azaltılabileceğini kanıtlamıştır.
Başlangıç modülü:
Başlangıç modülünü oluşturmak için yukarıda sunulan iki ana fikri ve modeli aşağıdaki gibi birleştirin:
Başlangıç Ağı:
Birden çok Başlangıç modülünün yığınlanması, Başlangıç Ağını oluşturur. Aşağıdaki, GoogleNet'in yapısıdır:
6. Öğrenimi aktarın
Küçük veri kümesi:
Şimdi derin öğrenme alanında birçok araştırmacı çalışmalarını internette paylaşacak. Belirli bir nesnenin tanınması ve sınıflandırılması gibi kendi çalışmamızı uyguladığımızda, ancak yalnızca küçük miktarda veri kümesini uyguladığımızda, derin bir ağ yapısını sıfırdan eğitmek yeterli olmaktan uzaktır.
Ancak, transfer öğrenmeyi uygulayabilir, diğer araştırmacılar tarafından oluşturulan modelleri ve parametreleri uygulayabilir ve sadece son özel softmax ağını az miktarda veriyle eğitebiliriz. Böylece küçük veri setlerinde iyi sonuçlar elde edebilir.
Büyük veri seti:
Ayrıca kendi problemlerimizle ilgili çok sayıda veri kümemiz varsa, sonraki birkaç katmanı eğitebiliriz. Kısaca, veri seti arttıkça "dondurmamız" gereken katman sayısı gittikçe azalmaktadır. Son olarak, çok büyük bir veri setimiz varsa, modelimizin eğitimini hızlandırmak için rastgele başlatma yerine parametre başlatma olarak diğer araştırmacılar tarafından eğitilen model parametrelerini kullanarak ağ modelinin tüm parametrelerini eğitebiliriz.
7. Veri genişletme
Diğer makine öğrenimi problemleriyle karşılaştırıldığında, bilgisayarla görme alanındaki temel sorun, yeterli veriyi elde etmenin bir yolu olmamasıdır. Dolayısıyla, bilgisayar veri modellerini eğittiğimizde, veri genişletme çok kullanışlıdır.
Veri genişletme yöntemi:
Resmin üç RGB renk kanalı için değerleri artırın veya azaltın, örneğin (R: +20, G: -20, B: +20); PCA renk geliştirme: resmin ana rengi büyük ölçüde değişir ve resmin ikincil rengi değişir Genel rengi tutarlı tutmak için daha küçük.
Eğitim sırasında veri genişletme:
Zamandan tasarruf etmek için, veri genişletme süreci ve eğitim süreci birden fazla CPU ve iş parçacığı ile paralel olarak uygulanabilir.
8. Bilgisayarla Görmenin Durumu
Veri ve manuel mühendislik:
Farklı problemler için mevcut veri seti boyutu:
Çok fazla veri olduğunda, basit algoritmalar ve daha az manuel mühendislik kullanma eğilimindeyiz. Şu anda büyük miktarda veri olduğu için, bu problem için özellikleri ayrıntılandırmamıza gerek yok, büyük bir ağ sonucu veya daha basit bir model kullanarak çözebiliriz.
Aksine, az miktarda veri olduğunda, daha çok manuel mühendislik yapıyoruz. Veri miktarı çok küçük olduğu için, daha büyük ağ yapılarının veya modellerinin bu küçük miktardaki verilerden yeterli özellikleri elde etmesi zordur ve el ile mühendislik aslında iyi performans elde etmenin en iyi yoludur.
Makine öğrenimi uygulamaları için:
İyi yapmak için ipuçları:
Kıyaslama çalışmalarında ve yarışmalarda aşağıdaki ipuçları daha iyi performans gösterebilir: