Apakah saya akan mengenakan LSTM saya jika saya melatihnya melalui pendekatan sliding-window? Mengapa orang tampaknya tidak menggunakannya untuk LSTM?
Untuk contoh yang disederhanakan, asumsikan bahwa kita harus memprediksi urutan karakter:
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
Apakah buruk (atau lebih baik?) Jika saya terus melatih LSTM saya dengan minibatch berikut:
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?
Sebelumnya, saya selalu melatihnya sebagai:
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
Alih-alih menggeser satu, lebih baik menggeser jendela dengan 2 entri, dll? Apa artinya itu (dalam hal presisi / overfitting)?
Juga, jika saya melakukan pendekatan sliding-window dalam jaringan umpan-maju, apakah itu akan menghasilkan overfitting? Saya berasumsi ya, karena jaringan terpapar ke wilayah informasi yang sama untuk waktu yang sangat lama. Misalnya, terpapar E F G H I J K
untuk waktu yang lama.
Edit:
Harap ingat bahwa status sel terhapus di antara kumpulan pelatihan, sehingga LSTM akan memiliki "palu untuk menuju" pada saat-saat ini. Tidak dapat mengingat apa yang sebelumnya OPQRSTUVWXYZ. Ini berarti bahwa LSTM tidak dapat mengetahui bahwa "O" mengikuti "M".
Jadi, saya pikir (jadi seluruh pertanyaan saya), mengapa tidak memberikannya bets menengah (tumpang tindih) di antara ... dan dalam hal itu mengapa tidak menggunakan beberapa minibatch yang tumpang tindih - bagi saya ini akan memberikan pelatihan yang lebih lancar? Pada akhirnya, itu berarti jendela geser untuk LSTM.
Beberapa info berguna yang saya temukan setelah jawaban diterima:
Kata pertama dari terjemahan bahasa Inggris mungkin sangat berkorelasi dengan kata pertama dari kalimat sumber. Tapi itu berarti decoder harus mempertimbangkan informasi dari 50 langkah yang lalu, dan informasi itu perlu entah bagaimana dikodekan dalam vektor. Jaringan Syaraf Berulang dikenal memiliki masalah dalam menangani ketergantungan jangka panjang tersebut. Secara teori, arsitektur seperti LSTM harus dapat menangani ini, tetapi dalam praktiknya ketergantungan jangka panjang masih bermasalah.
Sebagai contoh, para peneliti telah menemukan bahwa membalik urutan sumber (memasukkannya kembali ke encoder) menghasilkan hasil yang jauh lebih baik karena mempersingkat jalur dari decoder ke bagian-bagian yang relevan dari encoder. Demikian pula, memberi makan urutan input dua kali juga tampaknya membantu jaringan untuk menghafal sesuatu dengan lebih baik. Misalnya, jika salah satu contoh pelatihan adalah "John pulang", Anda akan memberikan "John pulang John pulang" ke jaringan sebagai satu input.
Edit setelah menerima jawabannya:
Beberapa bulan kemudian, saya lebih cenderung menggunakan pendekatan sliding window, karena menggunakan data yang lebih baik. Tetapi dalam hal ini Anda mungkin tidak ingin melatih BCDEFGHIJKLMNO tepat setelah ABCDEFGHIJKLMNO. Alih-alih, kocok contoh Anda, untuk secara bertahap dan seragam " sisipkan " semua informasi ke dalam LSTM Anda. Berikan HIJKLMNOPQRSTU setelah ABCDEFGHIJKLMNO dll. Itu terkait langsung dengan Catastrophic Forgetting. Seperti biasa, pantau Validasi dan Tes dengan cermat, dan hentikan segera setelah Anda melihat kesalahannya semakin meningkat
Juga, masalah "palu ke kepala" dapat diperbaiki, dengan menggunakan Gradien Sintetis. Lihat manfaatnya di sini: (jawaban tertaut membahas manfaat rangkaian panjang) /datascience//a/32425/43077
LSTM tidak memerlukan jendela geser input. Mereka dapat mengingat apa yang telah mereka lihat di masa lalu, dan jika Anda memberi contoh pelatihan satu per satu, mereka akan memilih jendela input ukuran yang tepat untuk diingat sendiri.
LSTM sudah cenderung overfitting, dan jika Anda memberi banyak data yang berlebihan dengan jendela geser maka ya, mereka cenderung overfit.
Di sisi lain, jendela geser diperlukan untuk perkiraan deret waktu dengan Feedforward Neural Networks, karena FNN memerlukan input ukuran tetap dan tidak memiliki memori, jadi ini adalah cara paling alami untuk memberi mereka data deret waktu.
Apakah FNN akan sesuai atau tidak tergantung pada arsitektur dan data Anda, tetapi semua teknik regularisasi standar akan berlaku jika ya. Misalnya Anda dapat mencoba memilih jaringan yang lebih kecil, regularisasi L2, Dropout, dll.
sumber