Sinir ağları neden daha derin hale geliyor, ama daha da genişlemiyor?


73

Son yıllarda, evrişimli sinir ağları (ya da genel olarak derin sinir ağları) , 4 uzayda 7 katmandan ( AlexNet ) 1000 katmana ( Artık Ağlar) kadar uzanan son teknoloji ağlarla daha da derinleşmiştir . yıl. Daha derin bir ağdan gelen performanstaki artışın arkasındaki neden, daha karmaşık, doğrusal olmayan bir fonksiyonun öğrenilebilmesidir. Yeterli eğitim verisi verildiğinde, bu ağların farklı sınıflar arasında daha kolay bir şekilde ayrım yapmasını sağlar.

Ancak, eğilim, her katmandaki parametre sayısını takip etmemiş gibi görünüyor. Örneğin, evrişimli katmanlardaki özellik haritalarının sayısı veya tamamen bağlı katmanlardaki düğümlerin sayısı kabaca aynı kalmıştır ve katman sayısındaki büyük artışa rağmen hala nispeten büyüktür. Sezgilerime göre, katman başına parametre sayısının arttırılmasının her katmana doğrusal olmayan işlevini öğrenmek için daha zengin bir veri kaynağı sağlayacağı görülüyor; ancak bu fikir, her biri az sayıda parametreye sahip daha fazla katman eklemek lehine gözden kaçırılmış görünüyor.

Böylece ağlar “daha ​​derinde” olurken, “geniş” olmadı. Bu neden?


1
+1 ancak adil olmak gerekirse, bu 1000'den fazla katmanlı ağın diğerlerinden daha iyi performans göstermesi anlamında "en son teknoloji" olduğu söylenemez. Bağladığınız arxiv makalesi, artık ağı NetworkNet’in şu anki kazananı olarak 152 katmandan oluşan raporlar.
amip,

3
Eğer geniş kalıntı ağlarını okudunuz arxiv.org/abs/1605.07146 sadece deneme yanılma :-) orada çok ... belki degrade kökenli olmayan bir dışbükey fonksiyon reason..optimising hayır hayır teorik temeli vardır ....
seanv507

@ seanv507 Çok ilginç, bu bağlantı için teşekkürler. Btw , işte çok ilgili bir konu: stats.stackexchange.com/questions/214360 ve orada bu reddit konusuna bir bağlantı var.
amip,


Yanıtlar:


87

Feragatname olarak, araştırmamda sinir ağları üzerinde çalışıyorum, ancak sorunuzu aktardığınız araştırmanın en derin ağları yerine genellikle nispeten küçük, sığ sinir ağları kullanıyorum. Çok derin ağların tuhaflıkları ve özellikleri konusunda uzman değilim ve olan birini erteleyeceğim.

İlk olarak, prensipte, derin sinir ağlarına ihtiyaç duymanız için hiçbir neden yoktur. Sadece tek bir gizli katmana sahip olan yeterince geniş bir sinir ağı, yeterli egzersiz verisi verilen herhangi bir (makul) fonksiyona yaklaşabilir. Bununla birlikte, oldukça geniş, sığ bir ağ kullanmanın bir kaç zorluğu vardır. Asıl mesele bu çok geniş, sığ ağların ezberlemede çok iyi olmaları, ancak genellemede çok iyi olmadıklarıdır . Bu nedenle, ağı mümkün olan her giriş değeriyle eğitirseniz, süper geniş bir ağ sonunda istediğiniz karşılık gelen çıkış değerini ezberleyebilir. Ancak bu kullanışlı değildir, çünkü herhangi bir pratik uygulama için, eğitmek için mümkün olan her giriş değerine sahip olmayacaksınız.

Çoklu katmanların avantajı, çeşitli soyutlama seviyelerindeki özellikleri öğrenebilmeleridir . Örneğin, görüntüleri sınıflandırmak için derin bir evriral sinir ağını eğitirseniz, ilk katmanın kenarlar gibi çok temel şeyleri tanımak için kendini eğiteceğini, bir sonraki katmanın da şekiller gibi kenar koleksiyonlarını tanımak için eğiteceğini göreceksiniz. katman, gözler veya burunlar gibi şekil koleksiyonlarını tanımak için kendini geliştirir ve bir sonraki katman, yüzler gibi daha üst düzey özellikleri öğrenir. Çoklu tabakalar genelleme konusunda çok daha iyidir çünkü ham veriler ve üst seviye sınıflandırma arasındaki tüm ara özellikleri öğrenirler .

Bu da neden çok geniş ama sığ bir ağ yerine derin bir ağ kullanabileceğinizi açıklar. Peki neden çok derin, çok geniş bir ağ değil? Bence cevabınız, iyi sonuçlar elde etmek için ağınızın mümkün olduğunca küçük olmasını istediğinizdir. Ağın boyutunu artırırken, gerçekten ağınızın öğrenmesi gereken daha fazla parametre tanıtıyorsunuz ve bu nedenle fazladan kullanma şansını arttırıyorsunuz. Çok geniş, çok derin bir ağ kurarsanız, her katmanın sadece çıktının ne olmasını istediğini ezberleme şansını elde edersiniz ve sonuçta yeni verilere genelleştirilemeyen bir sinir ağına sahip olursunuz .

Aşırı uyarma hayaletinin yanı sıra, ağınız ne kadar genişse, tren o kadar uzun sürer . Derin ağlar eğitmek için zaten çok hesaplamalı olarak pahalı olabilir, bu yüzden onları iyi çalışacak kadar geniş yapmak için güçlü bir teşvik var, ancak daha geniş değil.


+1. Arxiv.org/abs/1605.07146 hakkında bir yorumunuz var ?
amip,

2
Ben sadece yağsız, bu yüzden yetkili bir şey söyleyemem, ama yazarlar en azından artık ağlar durumunda geniş (ama yine de 16 kat derinliğinde!) Net, dar, son derece derin (1000 kattan daha iyi) olduğunu bulmuş gibi görünüyor ) ağ. Artık ağlar hakkında fazla bir şey bilmiyorum, ama girişime göre, onları eğitmek için bir zorluk olduğu, katmanların hiçbir şey öğrenemediği ve dolayısıyla sonuca katkıda bulunamayacağı yönünde bir eğilim olduğu görünüyor. Daha az sayıda fakat daha güçlü katmanlara sahip olmak, bundan kaçınıyor gibi görünüyor. Bunun, bilmediğim diğer NN tipleri için geçerli olup olmadığı.
J. O'Brien Antognini,

Net ve özlü cevap, aferin. @J
ctwardy

21

Sorularınıza kesin bir cevap olduğunu sanmıyorum. Ancak geleneksel bilgeliğin şu şekilde gittiğini düşünüyorum:

Temel olarak, bir öğrenme algoritmasının hipotez alanı büyüdükçe, algoritma daha zengin ve daha zengin yapıları öğrenebilir. Ancak, aynı zamanda, algoritma gereğinden fazla uydurma eğilimindedir ve genelleme hatasının artması muhtemeldir.

Sonuç olarak, herhangi bir veri seti için, verilerin gerçek yapısını öğrenmek için yeterli kapasiteye sahip minimal modelle birlikte çalışmanız önerilir. Ancak bu çok el dalgalı bir tavsiyedir, çünkü genellikle "verinin gerçek yapısı" bilinmemektedir ve çoğu zaman aday modellerin kapasiteleri bile yalnızca belirsiz bir şekilde anlaşılmaktadır.

Yapay sinir ağlarına gelince, hipotez boşluğunun büyüklüğü parametre sayısı ile kontrol edilir. Ve görünen o ki, sabit sayıda parametre (ya da sabit bir büyüklük sırası) için, daha derine inmek, modellerin daha zengin yapıları (örn. Bu kağıt ) yakalamasına izin veriyor .

Bu, daha az parametreli daha derin modellerin başarısını kısmen açıklayabilir: VGGNet (2014'ten itibaren) ~ 140M parametresiyle 16 katmana sahipken, ResNet (2015'ten itibaren) 152 katmanla ancak sadece ~ 2M parametrelerini geçti

(Bir taraf olarak, daha küçük modellerin eğitilmesi hesaplamalı olarak daha kolay olabilir - ancak bunun kendi başına büyük bir faktör olduğunu sanmıyorum - çünkü derinlik gerçekten eğitimi zorlaştırıyor)

Bu eğilimin (daha fazla derinlik, daha az parametre) çoğunlukla vizyonla ilgili görevlerde ve evrişimli ağlarda bulunduğunu ve bunun da alana özel bir açıklama gerektirdiğini unutmayın. İşte başka bir bakış açısı:

Evrişimli bir tabakadaki her "nöron", her çıktıyı etkileyen girdilerin boyutu ve şekli olan bir "alıcı alana" sahiptir. Sezgisel olarak, her bir çekirdek yakındaki girdiler arasında bir tür ilişki yakalar. Ve küçük taneler (yaygın olan ve tercih edilen) küçük bir alıcı alana sahiptir, bu yüzden sadece yerel ilişkiler hakkında bilgi sağlayabilirler.

Fakat daha derine indikçe, her nöronun önceki bazı katmanlara göre algılayıcı alanı büyür. Bu nedenle, derin katmanlar küresel anlamsal anlam ve soyut detaylar (nesneler arasındaki ilişkilerin ilişkileri ... nesneler arasındaki ilişkilerin) özelliklerini sunarken, sadece küçük çekirdeği kullanırken (ağın öğrendiği ilişkileri düzenler, bütünleşmesine ve genelleşmesine yardımcı olur).

Bu nedenle, derin evrimsel ağların bilgisayar vizyonundaki kullanışlılığı kısmen görüntülerin ve videoların mekansal yapısıyla açıklanabilir. Farklı türden problemler için veya evrimsel olmayan mimariler için derinliğin gerçekten işe yaramadığını zamanın söylemesi mümkündür.


Sınırlı Boltzmann Makine derin ağların birleşme süresi üzerinde büyük bir çarpandır. (açık)
EngrStudent

4
RBM'ler derin öğrenmeye özgü değildir. Birçok (günümüzde en çok?) Başarılı derin ağ RBM kullanmaz.
Borbei,

3
Bu makaleye bağlantı verdiğiniz için teşekkür ederim, daha önce görmedim ve çok alakalı görünüyor.
J. O'Brien Antognini,

@Borbei - RBM olmadan özelliklerin ayrılmasını nasıl sağlarlar?
EngrStudent

1
+1. Arxiv.org/abs/1605.07146 hakkında bir yorumunuz var ?
amip,

10

Daha fazla özellik eklemek yardımcı olur, ancak birçok özellik eklendikten sonra fayda hızla marjinal hale gelir. PCA gibi araçların çalışmasının sebeplerinden biri de bu : Birkaç bileşen, özelliklerde en fazla farkı tespit ediyor. Bu nedenle, bir noktadan sonra daha fazla özellik eklemek neredeyse işe yaramaz.

Öte yandan, bu özellik için ma için doğru işlevselliği bulmak her zaman iyi bir fikirdir. Ancak, eğer iyi bir teoriye sahip değilseniz, elbette doğru bir fonksiyon bulmak zor. Bu nedenle, katmanları eklemek kaba kuvvet yaklaşımının bir şeklidir.

fCρAv2/2
Aρv

fiβixi

Bununla birlikte, ağı daha da derinleştirmek, yalnızca iki katmanla yukarıdaki denklemde kolayca bulunmanızı sağlar. Daha karmaşık fonksiyonlar daha fazla katmana ihtiyaç duyacağından, katman sayısını derinleştirmek birçok soruna yol açabilir.


5
Doğrusal transfer fonksiyonlarını üstlenirsiniz. Fakat birçok başka (ortak) seçenek var ve YSA'ların evrensel yaklaşım teoremine göre , tek bir gizli doğrusal olmayan katman bile (eğer yeterince genişse) herhangi bir hoş işlevi yerine getirebilir. Dolayısıyla temsil edilebilirlik, derin ağların başarısını gerçekten açıklayamaz.
Borbei

2
Benim örneğim doğrusaldı ancak daha geniş bir dava kümesine uygulandı. "Güzel" işlevini kabul ettiniz, ancak çoğu o kadar iyi değil. Mesela satın almak için bir araba seçtiğimde neden karar algoritmamın iyi bir fonksiyon olsun?
Aksakal

2

dwO(dw2)

Neden parametre sayısını sınırlandırmaya çalışıyorsunuz? Bir dizi neden:

  • Fazla giymekten kaçınmaya çalışıyorsun. (Parametre sayısını sınırlandırmasına rağmen, bunu başarmak için çok kör bir araçtır.)
  • Aynı sayıda parametre kullanarak başkasının modelinden daha iyi bir performans elde ederseniz, araştırmanız daha etkileyici olacaktır.
  • Modelinizi eğitmek çok daha kolaydır, eğer model (artı Adam kullanıyorsanız params) tek bir GPU'nun hafızasına sığabilir.
  • Gerçek hayattaki uygulamalarda, RAM modelleri sunarken genellikle pahalıdır. Bu, örneğin bir cep telefonunda model çalıştırmak için geçerlidir, ancak bazen buluttan servis yapmak için bile geçerli olabilir.

O(dw2)w1,w2w1×w2(d2)w

(d2)w2+w(input layer width)+w(output layer width)=O(dw2).
1/wO(dw)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.