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