Cara yang tepat menggunakan jaringan saraf berulang untuk analisis deret waktu

67

Jaringan saraf berulang berbeda dari yang "biasa" dengan fakta bahwa mereka memiliki lapisan "memori". Karena lapisan ini, NN berulang seharusnya berguna dalam pemodelan deret waktu. Namun, saya tidak yakin saya mengerti benar cara menggunakannya.

Katakanlah saya memiliki deret waktu berikut (dari kiri ke kanan) :, [0, 1, 2, 3, 4, 5, 6, 7]tujuan saya adalah untuk memprediksi ititik-ke-10 menggunakan poin i-1dan i-2sebagai input (untuk masing-masing i>2). Dalam JST "reguler", non-berulang, saya akan memproses data sebagai berikut:

 target| input
      2| 1 0
      3| 2 1
      4| 3 2
      5| 4 3
      6| 5 4
      7| 6 5 

Saya kemudian akan membuat jaring dengan dua input dan satu node output dan melatihnya dengan data di atas.

Bagaimana seseorang perlu mengubah proses ini (jika sama sekali) dalam kasus jaringan berulang?

Boris Gorelik
sumber
Sudahkah Anda menemukan cara menyusun data untuk RNN ​​(misalnya LSTM)? terima kasih
mik1904

Jawaban:

49

Apa yang Anda jelaskan sebenarnya adalah pendekatan "sliding time window" dan berbeda dengan jaringan berulang. Anda dapat menggunakan teknik ini dengan algoritma regresi apa pun. Ada batasan yang sangat besar untuk pendekatan ini: peristiwa dalam input hanya dapat dikorelasikan dengan input / output lain yang terletak paling t terpisah, di mana t adalah ukuran jendela.

Misalnya, Anda dapat memikirkan rantai pesanan Markov t. RNN tidak menderita dari ini secara teori, namun dalam praktiknya belajar itu sulit.

Cara terbaik untuk menggambarkan RNN berbeda dengan jaringan feedfoward. Pertimbangkan jaringan feedforward (sangat) sederhana mana adalah output, adalah matriks bobot, dan adalah input.y=WxyWx

Sekarang, kami menggunakan jaringan berulang. Sekarang kita memiliki urutan input, jadi kita akan menunjukkan input dengan untuk input ke-i. Output ith yang sesuai kemudian dihitung melalui .xiyi=Wxi+Wryi1

Jadi, kita memiliki matriks bobot yang menggabungkan output pada langkah sebelumnya secara linear ke dalam output saat ini.Wr

Ini tentu saja arsitektur yang sederhana. Paling umum adalah arsitektur di mana Anda memiliki lapisan tersembunyi yang terhubung berulang ke dirinya sendiri. Mari menunjukkan lapisan tersembunyi di timestep i. Rumusnya adalah:hi

h0=0
hi=σ(W1xi+Wrhi1)
yi=W2hi

Di mana adalah fungsi non-linearitas / transfer yang cocok seperti sigmoid. dan adalah bobot penghubung antara input dan hidden dan hidden serta output layer. mewakili bobot berulang.W 1 W 2 W rσW1W2Wr

Berikut adalah diagram struktur:

skema

bayerj
sumber
2
Saya salah melihat beberapa kesamaan jaringan berulang dengan filter Kalman? Saya melihat ini karena output sebelumnya mempengaruhi output sekarang. Apa manfaat praktis dari jaringan Berulang?
Vass
10
Anda menulis dalam arti bahwa keduanya adalah model ruang keadaan. Namun, ada banyak perbedaan: KF sepenuhnya probabilistik, dalam arti bahwa negara-negara tersembunyi memiliki makna probabilistik yang tepat. RNN di sisi lain bersifat deterministik dan hanya keluaran yang dapat digunakan untuk memodelkan distribusi dengan cara diskriminatif. Juga, KF biasanya diperkirakan dengan EM, sedangkan RNN diperkirakan dengan metode berbasis gradien. Jika Anda ingin detail lebih lanjut, jangan ragu untuk mengirim pertanyaan dan kirimi saya tautannya, tetapi komentarnya terlalu terbatas untuk ini.
bayerj
1
Tidak, jendela geser waktu tidak berpura-pura pada output bersih, hanya pada input.
bayerj
2
@bayerj informasi bagus, tapi saya rasa Anda tidak menjawab pertanyaan itu. Bagaimana Anda menyusun vektor output input tidak dalam jendela waktu geser untuk RNN? Bisakah Anda memberikan beberapa sampel dengan dataset OP?
Levitikon
1
Ini adalah deskripsi yang sangat informatif tentang RNN tetapi saya gagal menemukan jawaban untuk pertanyaan OP: Bagaimana seseorang perlu mengubah [pelatihan] dalam kasus jaringan berulang?
wehnsdaefflae
9

Anda juga dapat mempertimbangkan hanya menggunakan sejumlah transformasi deret waktu untuk input data. Sebagai contoh, inputnya bisa:

  1. nilai interval terbaru (7)
  2. nilai interval terbaru berikutnya (6)
  3. delta antara terbaru dan terbaru terbaru (7-6 = 1)
  4. nilai interval terbaru ketiga (5)
  5. delta antara terbaru dan ketiga terbaru (6-5 = 1)
  6. rata-rata dari tiga interval terakhir ((7 + 6 + 5) / 3 = 6)

Jadi, jika input Anda ke jaringan saraf konvensional adalah enam bagian dari data yang diubah ini, itu tidak akan menjadi tugas yang sulit bagi algoritma backpropagation biasa untuk mempelajari pola. Anda harus mengkode transformasi yang mengambil data mentah dan mengubahnya menjadi 6 input di atas untuk jaringan saraf Anda.

rossdavidh
sumber
1
Anda memasukkan banyak pengetahuan domain ke dalam ini. Bagaimana jika Anda tidak mengenali pola deret waktu itu sendiri? Bagaimana Anda membangun model yang bisa, terutama jika itu tergantung pada input yang jauh di masa lalu?
bayerj
Infinite pastinya akan rumit. Namun, jika Anda memasukkan transformasi data yang tidak relevan dengan domain ini, algoritma pembelajaran akan dengan mudah dapat mengetahui hal itu dan menyesuaikan bobotnya, jadi itu bukan masalah besar selama Anda DO memiliki transformasi dari data yang relevan. Jadi, memiliki banyak transformasi yang berbeda meningkatkan peluang keberhasilan Anda.
rossdavidh
Bayangkan tugas berikut: Input pertama ke internet adalah atau . Kemudian, jaring menerima noise dari interval untuk nomor berapa pun (10, 1000, 100000) dari catatan waktu. Segera setelah menerima lagi ia harus mengeluarkan atau , tergantung pada apa yang telah dilihat sebelumnya. Ini disebut "Latching benchmark". Ini adalah pengaturan yang cukup khas dalam masalah pembelajaran berurutan. Manfaat besar dari jaringan berulang adalah, bahwa seluruh transformasi input itu sendiri dipelajari dan TIDAK diberikan oleh pakar manusia atau fitur yang direkayasa. 1 [ - 0,1 , 0,1 ] 1 0 101[0.1,0.1]101
bayerj
2
Saya tidak ingin mengatakan Anda tidak boleh menggunakan jaringan saraf berulang; justru sebaliknya. Namun, jika tugas (sebagaimana dinyatakan dalam pertanyaan) adalah untuk memprediksi ke-i dari poin (i-1) dan (i-2), maka Anda bisa mendapatkan hasil yang lebih baik lebih cepat dengan memanfaatkan pengetahuan itu. Saya tidak bermaksud menyarankan bahwa RNN bukan ide yang bagus, tapi boleh saja menggunakan pengetahuan domain apa pun yang Anda miliki untuk mempercepat proses pelatihan (dan mengurangi kemungkinan pelatihan terperangkap dalam minimum lokal, dll.) .
rossdavidh
4

Kemungkinan lain adalah Historis Neural Networks (HCNN) . Arsitektur ini mungkin lebih sesuai untuk pengaturan yang disebutkan di atas karena mereka menghilangkan perbedaan yang sering sewenang-wenang antara variabel input dan output dan bukannya mencoba untuk mereplikasi dinamika yang mendasari seluruh sistem melalui pelatihan dengan semua yang bisa diamati.

Ketika saya bekerja untuk Siemens, saya menerbitkan sebuah makalah tentang arsitektur ini dalam sebuah buku karya Springer Verlag: Zimmermann, Grothmann, Tietz, von Jouanne-Diedrich: Pemodelan Pasar, Peramalan dan Analisis Risiko dengan Historis Neural Networks yang Konsisten

Hanya untuk memberikan gambaran tentang paradigma di sini adalah kutipan singkat:

Dalam artikel ini, kami menyajikan tipe baru NN berulang, yang disebut histori jaringan saraf konsisten (HCNN). HCNN memungkinkan pemodelan sistem dinamika non-linear yang sangat berinteraksi di berbagai skala waktu. HCNN tidak menarik perbedaan antara input dan output, tetapi model yang dapat diamati tertanam dalam dinamika ruang keadaan besar.

[...]

RNN digunakan untuk memodelkan dan meramalkan sistem dinamik terbuka menggunakan pendekatan regresi non-linear. Namun banyak aplikasi teknis dan ekonomi dunia nyata harus dilihat dalam konteks sistem besar di mana berbagai dinamika (non-linear) berinteraksi satu sama lain dalam waktu. Diproyeksikan pada model, ini berarti bahwa kita tidak membedakan antara input dan output tetapi berbicara tentang yang bisa diamati. Karena kemampuan pengamatan parsial sistem besar, kita perlu kondisi tersembunyi untuk dapat menjelaskan dinamika yang dapat diamati. Observable dan variabel tersembunyi harus diperlakukan oleh model dengan cara yang sama. Istilah yang dapat diamati mencakup variabel input dan output (yaituYτ:=(yτ,uτ)). Jika kita dapat menerapkan model di mana dinamika semua yang dapat diamati dapat dijelaskan, kita akan berada dalam posisi untuk menutup sistem terbuka.

... dan dari kesimpulan:

Pemodelan bersama variabel tersembunyi dan yang diamati dalam jaringan saraf berulang besar memberikan prospek baru untuk perencanaan dan manajemen risiko. Pendekatan ensemble berdasarkan HCNN menawarkan pendekatan alternatif untuk peramalan distribusi probabilitas di masa depan. HCNN memberikan deskripsi yang sempurna tentang dinamika yang dapat diamati di masa lalu. Namun, sebagian pengamatan dunia menghasilkan rekonstruksi variabel tersembunyi yang tidak unik dan dengan demikian, skenario masa depan yang berbeda. Karena pengembangan asli dari dinamika tidak diketahui dan semua jalur memiliki probabilitas yang sama, rata-rata ansambel dapat dianggap sebagai perkiraan terbaik, sedangkan bandwidth distribusi menggambarkan risiko pasar. Hari ini, kami menggunakan prakiraan HCNN untuk memprediksi harga energi dan logam mulia untuk mengoptimalkan waktu keputusan pengadaan. Pekerjaan yang sedang berlangsung saat ini menyangkut analisis properti ansambel dan penerapan konsep-konsep ini dalam manajemen risiko praktis dan aplikasi pasar keuangan.

Bagian dari makalah dapat dilihat secara publik: Di sini

vonjd
sumber
Apakah Anda memiliki implementasi yang dapat diunduh dan diuji?
Julien L
@JulienL: Sayangnya bukan karena ini adalah pekerjaan berpemilik untuk Siemens.
vonjd
Sayang sekali, itu tampak menjanjikan.
Julien L
@ JulienL: Saya mendorong Anda untuk menghubungi Georg, rekan penulis saya. Emailnya ada di halaman pertama makalah (lihat tautan di atas).
vonjd