RNN / LSTM ağlarının ağırlıkları neden zaman içinde paylaşılıyor?


20

Son zamanlarda LSTM'lerle ilgilenmeye başladım ve ağırlıkların zaman içinde paylaşıldığını öğrenmek beni şaşırttı.

  • Ağırlıkları zaman içinde paylaşırsanız, giriş zamanı dizilerinizin değişken bir uzunluk olabileceğini biliyorum.

  • Paylaşılan ağırlıklarla antrenman yapmak için daha az parametreye sahipsiniz.

Anladığım kadarıyla, bir başka öğrenme yöntemine karşı bir LSTM'ye dönüşmesinin nedeni, verilerinizde öğrenmek istediğiniz bir tür zamansal / sıralı yapı / bağımlılık olduğuna inanmanızdır. Değişken uzunlukta 'lüks'ü feda ederseniz ve uzun hesaplama süresini kabul ederseniz, paylaşılan ağırlıkları olmayan bir RNN / LSTM (yani farklı ağırlıklara sahip olduğunuz her adımda) yol daha iyi performans göstermez mi yoksa eksik olduğum bir şey var mı?

Yanıtlar:


17

Kabul edilen cevap sorunun pratik kısmına odaklanır: eğer parametreler paylaşılmazsa çok fazla kaynak gerektirir. Ancak, bir RNN'de parametreleri paylaşma kararı, herhangi bir ciddi hesaplama bir problem olduğunda ( wiki'ye göre 1980'ler ) verildi, bu yüzden (hala geçerli olsa da) ana argüman olmadığına inanıyorum.

Parametre paylaşmanın saf teorik nedenleri vardır:

  • Modelin farklı uzunluklardaki örneklere uygulanmasına yardımcı olur. Bir sekansı okurken, RNN modeli eğitim sırasında her adım için farklı parametreler kullanıyorsa, farklı uzunluklarda görünmeyen sekanslara genelleme yapmaz.

  • Çoğu zaman, sekanslar sekans boyunca aynı kurallara göre çalışır. Örneğin, NLP'de:

                                                     "Pazartesi günü kar yağıyordu"

                                                     "Pazartesi günü kar yağıyordu"

... ayrıntılar dizinin farklı kısımlarında olsa da, bu iki cümle aynı anlama geliyor. Parametre paylaşımı, her adımda aynı görevi yerine getirdiğimiz gerçeğini yansıtır, sonuç olarak, cümlenin her bir noktasında kuralları yeniden öğrenmemiz gerekmez.

LSTM bu anlamda farklı değildir, dolayısıyla paylaşılan parametreleri de kullanır.


4
Bu, kabul edilen cevaptan çok daha önemli bir nedendir!
JLH

Cevabımın burada yanlış karakterize edildiğine inanıyorum. Ağırlık paylaşımı olmadan daha fazla hesaplama kaynağının gerekli olacağını söyledim, ancak bu ana nokta olarak tasarlanmamıştı. Özellikle, paylaşılan ağırlıkları olmayan bir modelin çok daha esnek ve dolayısıyla aşırı sığmaya daha eğilimli olacağını da yazdım. Zaman içinde ağırlık paylaşmak bunun üstesinden gelmenin bir yoludur. Burada haklı olarak belirtildiği gibi, bu strateji her kuralda aynı kuralların uygulandığı 'öncekine' karşılık gelir. Yani, iki cevap anlaşmazlık içinde değil.
user20160

12

'Paylaşılan ağırlıklar' perspektifi, RNN'leri zamanla ilerleyen ileri beslemeli ağlar olarak düşünmekten gelir. Ağırlıklar zamanın her anında farklı olsaydı, bu sadece ileriye dönük bir ağ olurdu. Ancak, düşünmek için başka bir yol, ağırlıkları zamanla değişen bir işlev olan ve bu da değişken uzunluklu dizileri işleme yeteneğini korumanıza izin veren bir RNN olarak düşünülebilir.

Bunu yaparsanız, parametre sayısı zaman adımı sayısı ile doğrusal olarak artacaktır. Bu, kayda değer herhangi bir uzunlukta diziler için büyük bir parametre patlaması olacaktır. Onu çalıştırmak için büyük hesaplama kaynaklarına ve onu sınırlamak için büyük veriye sahip olsaydınız, ağı daha güçlü hale getirirdi. Uzun sekanslar için, muhtemelen hesaplama açısından mümkün değildir ve fazla takılırsınız. Aslında, insanlar genellikle zaman içinde kesilmiş geri yayılım çalıştırarak ters yöne giderler, bu da ağı tüm dizilim yerine yalnızca kısa bir süre için açar. Bu hesaplamalı fizibilite için yapılır. İlginç bir şekilde, RNN'ler yine de kesilme uzunluğunun ötesine uzanan zamansal yapıyı öğrenebilir, çünkü tekrarlayan birimler hafızayı önceden kaydedebilir.


Ağırlıkları paylaşmazsanız, zaman içinde devam eden hücre durumunuz olur. Eşsiz zaman ağırlıklarına sahip, açılmamış bir LSTM, her 'katmanın' bir zaman dilimini temsil edeceği, ancak her 'katmanın' gelen hücre durumu bilgisine sahip olacağı bir ileri beslemeli ağ gibi görünecektir. Bir ileri beslemeye benzeyecek, ancak hücre durumunun eklenmesiyle.
beeCwright

0

Gizli-gizli yinelemelere (ve zaman paylaşımlı ağırlığa) sahip RNN'ler Evrensel Turing Makinelerine eşdeğer olduğundan, farklı zaman adımları için farklı ağırlıklara sahip olmalarını sağlamak onları daha güçlü yapmaz.


Ne demek istediğini "güçlü" olarak açıklayabilir misin? Turing Machines'e yapılan atıf, aklınızdakilerin istatistiklerde kastedilenlerden tamamen farklı olabileceğini düşündürmektedir.
whuber

RNN'ler veri dizisini işlemek için kullanılır. En yaygın türlerinden biri girdi olarak bir dizi alır ve çıktı olarak başka bir dizi üretir (dil çeviri sistemleri gibi). Bir RNN model ailesi M1'in başka bir RNN model ailesi M2'den daha güçlü olduğunu söylüyorum, eğer bir sorun için (bir dizi giriş dizisini bir dizi çıkış dizisine eşlemek gibi) M1'de bu sorunu çözebilecek bazı model m1 var ancak M2'de bu sorunu çözebilecek bir model yoktur.
Hossein
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.