Leifeng.com AI teknolojisi inceleme notu: Bu makalenin yazarı David 9, ilk olarak yazarın kişisel blogunda yayınlandı. AI teknolojisi incelemesinin yeniden basılmasına izin verildi.
Sanallaştırma teknolojisi, yazılım işlevlerinin esnekliği karşılığında donanım ek yükünden ve performanstan ödün verir; derinlik modeli benzerdir, ağ yapısı parametrelendirilirse, ortaya çıkan model daha esnek ve kontrol edilmesi kolaydır, ancak hesaplama verimliliği yüksek değildir. - David 9
Son yıllarda, derin ağ yapısında sonsuz yenilikler olmuştur: artık ağ, Başlangıç serisi, Unet, vb ... Microsoft'un artık ağı ResNet, klasik bir atlama bağlantısıdır:
Gönderen: https://arxiv.org/pdf/1512.03385.pdf
Üst seviye Özellik haritası x Evrişimden hemen sonra F (x) hizalı toplam , Olur F (x) + x (Özellik haritalarının sayısı 0 özelliği doldurmak için yeterli değildir. Özellik haritalarının boyutu bir değilse, altörnekleme için adım evrişimi kullanabilirsiniz). Bu şekilde, önceki katmanın özellik bilgisinin her katmanın özellik haritasına eklenmesi ağı daha derin hale getirebilir ve geri bildirim ve yakınsamayı hızlandırabilir.
Ancak ResNet'in bariz eksiklikleri de vardır: her katmanın özellik haritasının Kablolu Bir sonraki katmana gitmek yararlıdır; ayrıca deneyler, ResNet'in " derin ", ResNet'i" olarak değiştirmek daha iyidir " Genişlik "Yani, belirli bir derinliğe kadar, ağı derinleştirmek artık ResNet'in doğruluğunu iyileştiremez (Ağ katmanını Inception gibi genişletmek kadar iyi değil).
Bu nedenle, DiracNets sabit katman atlama bağlantısını kaldırmaya çalıştı ve katman atlama bağlantısını parametreli bir yöntemle değiştirmeye çalıştı:
Öyleyse soru şu, nasıl yapıyoruz parametreleştirmek Bu katman atlama bağlantısı silindi mi? Yeni parametreyi şöyle yapın: Evrişim çekirdek pencere parametreleri Aynısı Eğitilebilir nın-nin?
Bir şey kesin, biliyoruz F (x) + x Hizalama ve toplama işlemi Doğrusal , Evrişim işlemi F Ayrıca Doğrusal Yani teoride F (x) + x tek bir evrişim işleminde birleştirilebilir (Veya bir Doğrusal dönüşüm ):
Burada x, giriş özelliği haritasıdır. onların arasında
Birleşmeden sonra Evrişim çekirdek pencere parametre matrisi (Bu parametre halihazırda Evrişim işlemi ile Katman atlama işlemi ).
onların arasında
Evrişim işlemini temsil eder.
Son olarak, yukarıdaki formülün parametrelerini bölelim:
onların arasında W, ResNet'teki evrişim işleminin parametrelerini temsil eder ve I, ResNet'teki katman atlama işleminin parametrelerini temsil eder. .
Kimlik matrisine benzediğimi mi düşünüyorsunuz? doğru tahmin ettiniz ! I, evrişim penceresinden türetilen birim parametre matrisidir, Dirac delta dönüşümü olarak da adlandırılır, herhangi bir x girdisi bu I matrisi tarafından dönüştürülür ve çıktı x'in kendisidir. .
Süre diag (a) Ayrıca bir Eğitilebilir vektör parametreleri , Katman atlama bağlantısının derecesini kontrol etmek için kullanılır (gerekli kimlik matrisinin derecesi).
Şimdi bu parametreli ResNet'in daha esnek olup olmadığını görelim.
Diag (a) vektörlerinin tümü 0'a yaklaşıyorsa, I kimlik matrisi temelde çalışmaz ve katman atlama bağlantısı zayıflatılır. Şu anda Orijinal evrişim işlemi W baskın olarak kabul edilir .
Diag (a) vektörlerinin tümü 1'e yakınsa ve W parametreleri çok küçükse, o zaman evrişim işlemi zayıflatılır, Çıktı ve giriş özelliği haritaları x çok benzer .
Diag (a) 'yı eğiterek, kontrol edebiliriz ResNet'te hem katman atlama işleminin hem de evrişim işleminin ağırlığı. Geleneksel ResNet gibi (kullanışlı veya yararsız) bir katman atlama bağlantısı eklemek ve eklemek zorunda kalmak yerine .
Kod uygulaması açısından PyTorch birçok esnek yöntem sağlar. Torch.nn. Fonksiyonel arayüz, her bir parametre matrisini manuel olarak belirlemenizi sağlar:
Torch.nn.F olarak işlevsel içe aktar
def dirac_conv2d (giriş, W, alfa, beta)
F.conv2d'ye dön (girdi, alfa * dirac (W) + beta * normalize (W))
Yukarıdaki kod, daha önce bahsedilen için parametre matrisini iki bölüme ayırır:
alfa * dirac (W) + beta * normalize (W)
Neyse ki, pytorch, dirac kimlik matrisini hesaplamak için hazır işlevler sağlar:
torch.nn.init.dirac (tensör)
Derinlemesine araştırma için kaynak kodunu kaçırmayın:
https://github.com/szagoruyko/diracnets
Son olarak deneysel sonuçlara bakıyoruz.
Aynı derinlikte, DiracNets genellikle Daha fazla parametre ResNet ile karşılaştırılabilir bir doğruluk elde etmek için:
Gönderen: https://arxiv.org/pdf/1706.00388.pdf
Gönderen: https://arxiv.org/pdf/1706.00388.pdf
Ve parametre sayısını dikkate almazsanız, DiracNets, ResNet'in çok derin bir derinlik gerektirdiği doğruluğu elde etmek için daha az derinliğe ihtiyaç duyar:
Gönderen: https://arxiv.org/pdf/1706.00388.pdf
Referanslar:
DiracNets: Atlama Bağlantıları Olmadan Çok Derin Sinir Ağlarını Eğitme
https://github.com/szagoruyko/diracnets
Görüntü Tanıma için Derin Artık Öğrenme
https://zh.wikipedia.org/wiki/%E7%8B%84%E6%8B%89%E5%85%8B%CE%B4%E5%87%BD%E6%95%B0
Bu makale, lisanslama için 3.0 Anakara Çin Lisans Anlaşmasının imza-ticari olmayan kullanım-yok yorumunu kullanır. Telif hakkı orijinal "David 9'un Blogu" na aittir, yeniden yazdırmanız gerekiyorsa lütfen WeChat: david9ml veya e-posta: yanchao727@gmail.com ile iletişime geçin.