Sürgülü pencere yaklaşımı ile eğitirsem LSTM'mi geçecek miyim? Neden insanlar bunu LSTM'ler için kullanmıyor?
Basitleştirilmiş bir örnek için, karakter sırasını tahmin etmemiz gerektiğini varsayın:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
LSTM'mi aşağıdaki minibatchlarla eğitmeye devam edersem kötü mü (yoksa daha iyi mi?):
A B C D E F G H I J K L M N, backprop, erase the cell
B C D E F G H I J K L M N O, backprop, erase the cell
.... and so on, shifting by 1 every time?
Önceden, her zaman şu şekilde eğitildim:
A B C D E F G H I J K L M N, backprop, erase the cell
O P Q R S T U V W X Y Z, backprop, erase the cell
Birer birer kaydırmak yerine, pencereyi 2 girişle kaydırmak daha iyi olur, vb. Bu ne anlama gelir (hassasiyet / fazla takma açısından)?
Ayrıca, İleri besleme ağında kayan pencere yaklaşımını yapsaydım, aşırı sığmaya neden olur muydu? Evet, varsayıyorum, çünkü ağ aynı bilgi bölgelerine çok uzun bir süre maruz kalıyor. Örneğin, E F G H I J K
uzun süre maruz kalır .
Düzenle:
Lütfen, eğitim durumları arasında hücre durumunun silindiğini unutmayın, bu nedenle LSTM'nin bu zamanlarda bir "başa çekiç" olacaktır. OPQRSTUVWXYZ'den önce ne olduğunu hatırlayamıyor . Bu, LSTM'nin "O" nun "M" yi takip ettiğini öğrenemeyeceği anlamına gelir.
Bu yüzden, (böylece tüm sorum) aralarında neden ara (üst üste binen) parti vermemeliyim diye düşündüm ... ve bu durumda neden birden fazla üst üste binen minibatch kullanmıyorsunuz - bana bu daha pürüzsüz bir eğitim sağlayacaktır? Sonuçta, bu bir LSTM için kayan bir pencere anlamına gelir.
Yanıttan sonra bulduğum bazı yararlı bilgiler kabul edildi:
İngilizce çevirinin ilk sözcüğü muhtemelen kaynak cümlenin ilk kelimesi ile büyük ölçüde ilişkilidir. Ancak bu, kod çözücünün 50 adım önceki bilgileri dikkate alması gerektiği ve bilginin vektörde bir şekilde kodlanması gerektiği anlamına gelir. Tekrarlayan Sinir Ağlarının bu tür uzun menzilli bağımlılıklarla ilgili problemleri olduğu bilinmektedir. Teoride, LSTM'ler gibi mimariler bununla başa çıkabilmelidir, ancak pratikte uzun mesafeli bağımlılıklar hala sorunludur.
Örneğin, araştırmacılar, kaynak dizisini tersine çevirmenin (kodlayıcıya geri beslenmesi), kod çözücüden kodlayıcının ilgili parçalarına giden yolu kısalttığı için önemli ölçüde daha iyi sonuçlar verdiğini bulmuşlardır. Benzer şekilde, bir giriş dizisini iki kez beslemek de bir ağın işleri daha iyi ezberlemesine yardımcı olur. Örneğin, bir eğitim örneği "John eve gitti" ise, "John eve gitti John" eve girdi.
Cevabı kabul ettikten sonra düzenleyin:
Birkaç ay sonra, verileri daha iyi kullandığından kayar pencere yaklaşımını kullanmaya daha meyilliyim. Ancak bu durumda ABCDEFGHIJKLMNO'dan hemen sonra BCDEFGHIJKLMNO'yu eğitmek istemezsiniz. Bunun yerine, tüm bilgileri yavaş yavaş ve eşit bir şekilde LSTM'nize "fırçalamak" için örneklerinizi karıştırın . ABCDEFGHIJKLMNO vs.'den sonra HIJKLMNOPQRSTU verin. Bu doğrudan Felaket Unutma ile ilgilidir. Her zaman olduğu gibi, Doğrulama ve Test setini yakından izleyin ve hatalarının sürekli arttığını görür görmez durun
Ayrıca, Sentetik Eğimler kullanılarak "başa çekiç" sorunu iyileştirilebilir. Avantajını buradan görebilirsiniz: (bağlantılı cevap uzun dizilerin faydalarını tartışır) /datascience//a/32425/43077