Berapa panjang urutan yang layak untuk model RNN?

15

Saya melihat ke dalam menggunakan versi LSTM ( memori jangka pendek ) dari jaringan saraf berulang (RNN) untuk memodelkan data deret waktu. Ketika panjang urutan data meningkat, kompleksitas jaringan meningkat. Karena itu saya ingin tahu berapa panjang urutan yang layak untuk model dengan akurasi yang baik?

Saya ingin menggunakan versi LSTM yang relatif sederhana tanpa kesulitan untuk menerapkan pendekatan yang canggih. Setiap pengamatan dalam deret waktu saya kemungkinan memiliki 4 variabel numerik dan jumlah pengamatan sekitar 100.000 hingga 1.000.000.

pir
sumber

Jawaban:

8

Ini benar-benar tergantung pada sifat data Anda dan korelasi batin, tidak ada aturan praktis. Namun, mengingat Anda memiliki sejumlah besar data, LSTM 2-layer dapat memodelkan sejumlah besar masalah / benchmark seri waktu.

Selain itu, Anda tidak melakukan backpropagate-through-time ke seluruh seri tetapi biasanya untuk (200-300) langkah terakhir. Untuk menemukan nilai optimal Anda dapat melakukan validasi silang menggunakan pencarian grid atau optimisasi bayesian. Selanjutnya, Anda dapat melihat parameter di sini: https://github.com/wojzaremba/lstm/blob/master/main.lua .

Jadi, panjang urutan tidak benar-benar memengaruhi pelatihan model Anda, tetapi itu seperti memiliki lebih banyak contoh pelatihan, bahwa Anda hanya mempertahankan status sebelumnya alih-alih mengatur ulang.

Yannis Assael
sumber
Katakan bahwa saya perlu melakukan analisis sentimen, yang merupakan pendekatan banyak-ke-satu (lihat karpathy.github.io/2015/2015/05/21/rnn-efektivitas ). Masing-masing senteces ini sangat panjang (> 200 kata). Jika saya hanya melakukan backpropagate melalui waktu 35 langkah biasa, bukankah itu akan menjadi masalah? Sejak itu diawasi belajar saya menganggap bahwa itu hanya dapat backpropagate ketika "hits" target klasifikasi biner, y. Dengan cara ini bagaimana RNN akan menyesuaikan bobot berdasarkan apa pun sebelum 35 langkah yang dipilih untuk BPTT?
pir
1
Yah, itu tidak akan menjadi masalah karena bobot yang sama digunakan kembali pada langkah pelatihan berikutnya. Selanjutnya, jika Anda melihat kode sumber pada langkah 36 (katakanlah) vektor inisialisasi bukan nol, tetapi status langkah 35. Jadi, dengan melakukan langkah-langkah kecil Anda mengoptimalkan fungsi biaya Anda menggunakan BPTT.
Yannis Assael
1
Hanya untuk mengklarifikasi: Apakah BPTT dijalankan satu kali atau beberapa kali untuk satu kalimat? Jika dijalankan satu kali, maka pola yang hanya memengaruhi pasangan kata pertama dalam kalimat hanya akan memengaruhi status tersembunyi, bukan? Maksudku .. gradien tidak akan pernah dihitung sehubungan dengan bagian dari input.
pir
1
Saya telah mengajukan ini sebagai pertanyaan terpisah yang saya harap Anda akan melihat :) stats.stackexchange.com/questions/167482/…
pir
2
"Mengingat bahwa Anda memiliki sejumlah besar data, LSTM 2-layer dapat memodelkan hampir semua rangkaian waktu." mana buktinya?
nbro