Yapay sinir ağları çeşitli girdi boyutlarıyla nasıl başa çıkabilir?


42

Söyleyebileceğim kadarıyla, sinir ağları girdi katmanında sabit sayıda nöron var .

Yapay sinir ağları NLP gibi bir bağlamda kullanılıyorsa, farklı boyutlardaki metinlerin cümleleri veya blokları bir ağa beslenir. Değişken giriş boyutu , ağın giriş katmanının sabit boyutuyla nasıl bağdaşır ? Başka bir deyişle, böyle bir ağ bir kelimeden birden çok metne kadar herhangi bir yerde olabilecek bir girdiyle başa çıkmak için yeterince esnek hale getirilir mi?

Sabit sayıda giriş nöronu varsayımım yanlışsa ve giriş boyutuna uyacak şekilde ağa yeni giriş nöronları eklenir / çıkarılırsa bunların nasıl eğitilebileceğini anlamıyorum.

NLP örneğini verdim, ancak birçok sorunun doğası gereği öngörülemeyen bir girdi boyutu var. Bununla baş etmek için genel yaklaşımla ilgileniyorum.

Görüntüler için, sabit bir boyuta yukarı / aşağı örnek alabileceğiniz açıktır, ancak metin için, metin eklemek / kaldırmak orijinal girişin anlamını değiştirdiği için bu imkansız bir yaklaşım gibi görünmektedir.


Sabit bir boyuta alçaltarak ne demek istediğinizi netleştirebilir misiniz? Alt örnekleme nasıl yapılır?
Charlie Parker,

Yanıtlar:


36

Üç olasılık akla geliyor.

En kolay sıfır doldurmadır . Temel olarak, oldukça büyük bir giriş boyutu alıyorsunuz ve somut girişiniz çok küçükse, yalnızca sıfır ekleyin. Tabii ki, bu oldukça sınırlıdır ve girişiniz birkaç kelimeden tam metinlere değişiyorsa kesinlikle kullanışsızdır.

Tekrarlayan NN'ler (RNN), girdi olarak değişken boyutta metinlerin olup olmadığını seçmek için çok doğal bir NN'dir . Kelimeleri birbiri ardına kelime vektörleri (veya gömme) olarak girersiniz ve RNN'nin iç durumunun, tam sözcük dizisinin anlamını kodlaması beklenir. Bu önceki evraklardan biridir.

Diğer bir olasılık, özyinelemeli NN'leri kullanmaktır . Bu, temel olarak, bir metnin tekrarlanan bir şekilde, yalnızca bir tanesi kalana kadar daha az sayıda kelime vektörüne indirgenen bir ön işleme şeklidir - girişiniz, tüm metni kodlaması gerekiyordu. Bu, eğer girişiniz cümlelerden (eğer büyüklük olarak değişebilir) oluşursa, cümleler tekrarlı bir şekilde yapılandırıldığından dilbilimsel açıdan çok mantıklı geliyor. Örneğin, "adam" kelimesi vektörü, "karısını bir şapka için yanlış anlayan adam" kelimesiyle aynı olmalıdır, çünkü isim cümleleri isim gibi hareket eder. Genellikle, rehberlik için dil bilgisini kullanabilirsiniz. cümle üzerinde özyineleme. Vikipedi makalesinin ötesine geçmek istiyorsanız, bu muhtemelen iyi bir başlangıçtır .


1
"Özyinelemeli NN'ler" ile RNN'ler arasındaki fark nedir? R özyinelemeli ... Ayrıca, birkaç alıntı ve işaretçi faydalı olacaktır.
Eric Platon

3
R tekrarlayan içindir. Tekrarlayan aynı girişi tekrar tekrar aynı NN'ye doğrusal olarak eklemek anlamına gelir. Özyinelemeli bir ağaç yapısı boyunca veri girişi anlamına gelir.
BlindKungFuMaster

@BlindKungFuMaster 0 MLP'ler için maske ile doldurma iyidir ve doğruluğunu kötü şekilde etkilemez mi?
DINA TAKLIT

12

Diğerleri daha önce bahsetti:

  • sıfır doldurma
  • RNN
  • özyinelemeli NN

bu yüzden başka bir olasılık daha ekleyeceğim: konvolüsyonları girişin büyüklüğüne bağlı olarak farklı sayıda kullanma İşte bu yaklaşımı destekleyen mükemmel bir kitap :

Her görüntünün farklı bir genişliğe ve yüksekliğe sahip olduğu bir resim koleksiyonu düşünün. Bu tür girdilerin sabit büyüklükte bir ağırlık matrisiyle nasıl modelleneceği açık değildir. Evrişim uygulamak kolaydır; Çekirdek, girişin boyutuna bağlı olarak basit bir şekilde farklı sayılarda uygulanır ve evrişim işleminin çıktısı buna göre ölçeklenir.

Sayfa 360'dan alınmıştır. Başka yaklaşımlar görmek için daha fazla okuyabilirsiniz.


1
Bu yaklaşımın ancak 1) tüm giriş görüntülerinin en boy oranı (AR) aynı olması durumunda işe yaraması, 2) tüm görüntüleri belirli bir AR'ye yeniden ölçeklendirmek veya 3) bir zorla zorlamak AR verilen.
Matt Wenham

@Salvador Dali maske ile "0" dolgusu MLP'ler için iyi bir çözüm olabilir mi?
DINA TAKLIT

Cevabınızda belirttiğiniz metni kitapta bulamıyorum. Belki de başlangıçta mevcuttu ve daha sonra kaldırıldı? Sayfa 354, halihazırda benzer şekilde başlayan, ancak değişken sayıdaki katmanlar (ancak bunun yerine değişken çıktı boyutu) kullanan bir paragrafa sahiptir.
jochen

7

NLP'de girdilerin içsel bir sıralaması vardır, bu nedenle RNN'ler doğal bir seçimdir.

Girişler arasında belirli bir sıralamanın bulunmadığı değişken boyutlu girişler için, aşağıdakileri yapan ağlar tasarlanabilir:

  1. Her giriş grubu için aynı alt ağın tekrarını kullanın (örn. paylaşılan ağırlıklarla). Bu tekrarlanan alt ağ (grup) girişlerinin bir gösterimini öğrenir.
  2. girişlerle aynı simetriye sahip girişlerin gösterimi için bir işlem kullanın. Değişken olmayan siparişler için, giriş ağlarından gelen temsillerin ortalaması alınabilir.
  3. Girdi gösterimlerinin kombinasyonuna dayanarak çıktıdaki kayıp fonksiyonunu en aza indirmek için bir çıktı ağı kullanın.

Yapı aşağıdaki gibi görünüyor:

ağ yapısı

Nesneler arasındaki ilişkileri öğrenmek için benzer ağlar kullanılmıştır ( arxiv: 1702.05068 ).

Değişken büyüklükteki bir değer kümesinin örnek varyansını öğrenmenin basit bir örneği burada verilmiştir (feragatname: bağlantılı makalenin yazarıyım).

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.