RNN vs CNN yüksek seviyede


53

Tekrarlayan Sinir Ağları (RNN) ve çeşitleri ve Konvolüsyonel Sinir Ağları (CNN) ve çeşitleri hakkında düşünüyordum.

Bu iki noktanın söylemesi adil olur mu:

  • Bir bileşeni (görüntü gibi) alt bileşenlere (görüntüdeki nesnenin, örneğin görüntüdeki nesnenin anahatları gibi) parçalamak için CNN'leri kullanın.
  • Alt bileşenlerin birleşimini oluşturmak için RNN'leri kullanın (resim yazısı, metin oluşturma, dil çevirisi vb.)

Birisi bu açıklamalardaki herhangi bir yanlışlığı işaret etmek isterse memnun olurum. Buradaki amacım, CNN ve RNN'lerin kullanımlarına daha açık bir temel sağlamaktır.

Yanıtlar:


42

Bir CNN uzaydaki kalıpları tanımayı öğrenir. Yani, söylediğiniz gibi, bir CNN bir görüntünün bileşenlerini (örneğin, çizgiler, eğriler vb.) Tanımayı öğrenecek ve daha sonra daha büyük yapıları (örneğin yüzler, nesneler vb.) Tanımak için bu bileşenleri birleştirmeyi öğrenecektir.

Genel olarak, bir RNN'in zaman içindeki kalıpları tanımayı benzer şekilde öğreneceğini söyleyebilirsiniz. Bu yüzden, metni çevirmek için eğitilmiş bir RNN, "sıcak" kelimesinden önce gelirse "köpeğin" farklı şekilde çevrilmesi gerektiğini öğrenebilir.

Bununla birlikte, iki tür NN'nin bu kalıpları temsil ettiği mekanizma farklıdır. Bir CNN durumunda , görüntünün tüm farklı alt alanlarında aynı kalıpları arıyorsunuz . Bir RNN durumunda (en basit durumda), gizli katmanları önceki adımdan sonraki adıma ilave bir girdi olarak besliyorsunuz. RNN bu süreçte bellek oluştururken, farklı zaman dilimlerinde aynı kalıpları aramaz, aynı şekilde bir CNN aynı alanın farklı bölgelerinde aynı kalıpları arar.

Ayrıca burada "zaman" ve "boşluk" derken, kelimenin tam anlamıyla alınmaması gerektiğini de unutmam gerekir. Örneğin, resim yazısı için tek bir resim üzerinde bir RNN çalıştırabilirsiniz ve "zamanın" anlamı, görüntünün farklı kısımlarının işlendiği sırada olacaktır. Bu nedenle başlangıçta işlenen nesneler daha sonra işlenen nesnelerin başlığını bildirir.


3
Çok kopyalanan bir grafik olan karpathy.github.io/assets/rnn/diags.jpeg adresinden RNN modelinin farklılıkları için iyi bir sezgiye sahip olabilirsiniz . CNN'ler, yalnızca bire bir model vakasını uygulayan MLP'ler ve özyinelemeli olmayan diğer modellerle birliktedir.
Neil Slater

@NeilSlater Bu görüntünün orijinal makalesini bile biliyorum , ancak bundan hiçbir zaman faydalı bir şey çıkaramadım . Lütfen, görüntüden öğrendiklerinizden bahseder misiniz?
Hi-Angel,

2
@ Hi-Angel: Görüntü, bir model tarafından eşlenebilen diziler ve tek varlıklar arasındaki olası ilişkileri görselleştirir. Permütasyonları zaten iyi anlıyorsanız, ondan hiçbir şey alamayabilirsiniz. Görüntünün makalede görünmesinin nedeni, RNN'lerin göreceli esnekliğini göstermesidir: Bir RNN gösterilen tüm farklı sorun türlerine uygulanabilir (örneğin, 4. maddeyle eşleşen dil çeviri sorunlarında kullanılabilir). ileri beslemeli ağ yalnızca ilk görüntüyle eşleşen sorunlara uygulanır.
Neil Slater


23

CNN ve RNN arasındaki fark aşağıdaki gibidir:

CNN:

  1. CNN sabit boyutlu bir girdi alır ve sabit boyutlu çıktılar üretir.

  2. CNN ileri beslemeli bir yapay sinir ağı türüdür - en az miktarda ön işleme kullanmak için tasarlanmış çok katmanlı algılayıcıların varyasyonlarıdır.

  3. CNN'ler, nöronları arasındaki bağlantı düzenini kullanır, bireysel nöronları, görsel alanı döşeyen örtüşen bölgelere cevap verecek şekilde düzenlenmiş hayvan görsel korteksinin organizasyonundan ilham alır.

  4. CNN'ler görüntü ve video işleme için idealdir.

RNN:

  1. RNN isteğe bağlı giriş / çıkış uzunluklarını idare edebilir.

  2. RNN, ileri beslemeli sinir ağlarından farklı olarak, girdilerin rastgele dizilerini işlemek için dahili hafızalarını kullanabilir.

  3. Tekrarlayan sinir ağları, zaman serisi bilgilerini kullanır (yani, en son konuştuğum konu, bir sonraki konuşmamı etkiler.)

  4. RNN'ler metin ve konuşma analizi için idealdir.



Yoğun katmanlara sahip olmayan CNN'ler isteğe bağlı boyutlu girdiler alabilir.
Mikael Rousson

1

İki ifadenin doğru olmadığını düşünüyorum çünkü CNN bileşeni alt bileşenlere ayırmıyor, aksine aynı modeli bulmak için üst üste binen alt bileşenlerin (tekrarlanan alanlar) paylaşılan ağırlıklarını kullanıyor. Bu bir bölme ve fethetme algoritması değildir.

Genel olarak, CNN'ler yerel ve konum değişmez (konumlarından bağımsız olarak) özellikler çıkarma eğilimindedir ve RNN'ler, çok uzak olsalar bile, zaman içinde farklı kalıpları bulma eğilimindedir.

Örneğin, her ikisinin de doğal dile uygulanması durumunda, CNN'ler yerel ve konum değişmeyen özelliklerin çıkarılmasında iyidir, ancak uzun vadeli anlamsal bağımlılıkları yakalamaz. Sadece yerel anahtar sözcükleri düşünün.

Sonuç, cümlenin tamamı veya uzun vadeli bir anlamsal bağımlılık tarafından belirlendiğinde, CNN, yazarların NLP üzerindeki her iki mimariyi karşılaştırdığı bu yazıda gösterildiği gibi etkili değildir .

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.