Memperjelas jaringan saraf berulang

Sep 20 2020

Saya pada awalnya mempelajari dan memahami jaringan saraf berulang. Sejauh yang dapat saya bayangkan, beberapa jaringan saraf feed-forward dengan satu neuron di setiap lapisan diletakkan di samping satu sama lain, dan terhubung dari kiri ke kanan, di mana setiap neuron terhubung tidak hanya dengan neuron di bawahnya, tetapi juga di kiri dari waktu sebelumnya. Tidak yakin apakah itu cara yang tepat untuk memikirkannya, tapi sejauh ini kesan pertama saya.

Beberapa hal tidak jelas.

  1. Sejauh yang saya mengerti, hasil akhir dari setiap langkah waktu seharusnya memprediksi input langkah waktu berikutnya. Apakah ini benar? Bagaimana jika saya hanya ingin menunjukkan jaringan dua gambar, misalnya seekor kuda, dan bergantung padanya, prediksi jarak berapa ia pergi, dan ke arah mana? Apakah ini mungkin?

  1. Dalam ilustrasi di atas ada $A_0$. Dari mana? Saya akan berasumsi setidaknya diperlukan dua langkah waktu untuk membuat prediksi, jadi dalam pemahaman saya an$x_0$hilang dari sisi kiri diagram. Apakah saya benar?

  2. Saya telah membaca artikel yang mengatakan "Lets train a 2-layer LSTM with 512 hidden node". Apakah ini berarti dua lapisan aktivasi, dan 512 langkah waktu?

Jawaban

1 YuseqYaseq Sep 22 2020 at 22:09

Sejauh yang dapat saya bayangkan, beberapa jaringan saraf feed-forward dengan satu neuron di setiap lapisan diletakkan di samping satu sama lain, dan terhubung dari kiri ke kanan, di mana setiap neuron terhubung tidak hanya dengan neuron di bawahnya, tetapi juga di kiri dari waktu sebelumnya.

Tidak juga. Setiap kotak cyan di gambar Anda mewakili sel yang sama persis. Sekarang sel ini bisa menjadi banyak hal, lihat saja sel LSTM (h dan c mewakili A Anda) tetapi juga bisa menjadi jaringan yang membutuhkan$A_i$ dan $X_{i+1}$ sebagai masukan dan pengembalian $A_{i+1}$ dan $Y_{i+1}$ sebagai keluaran.

  1. Mungkin benar jika RNN mencoba memprediksi, misalnya deret waktu. Untuk melatih jaring seperti itu, Anda akan memberikan rangkaian sebagai masukan pelatihan dan rangkaian waktu yang sama tetapi di langkah berikutnya sebagai keluaran (sehingga akan mencoba untuk memprediksi$X_{i+1}$ berdasarkan $\forall_{j \in [1;i)} X_{j}$. Tapi secara umum itu tidak benar. Outputnya mungkin dalam format yang sama sekali berbeda dan mewakili hal yang sama sekali berbeda persis seperti dalam contoh Anda. Dalam contoh Anda$X_i$ adalah bingkai ke-i yang dikodekan dan $Y_i$ adalah apa yang jaringan pikir jarak tempuh kuda sampai frame ke-i.
  2. $A_0$adalah status awal RNN. Apa itu sebenarnya tergantung pada arsitektur yang digunakan tetapi biasanya hanya mengatur semuanya ke nol. Kita memerlukan status awal ini karena seperti yang saya sebutkan, sel yang sama digunakan pada setiap langkah berulang sehingga harus ada sesuatu yang harus disediakan sebagai status jaringan di awal. Tidak ada$X_0$hilang. Juga tidak ada yang menghentikan Anda untuk membuat prediksi berdasarkan urutan panjang 1. Hanya saja tidak berguna menggunakan RNN dalam situasi seperti itu.
  3. Jumlah langkah yang diambil bergantung pada data - bukan jaringan. Anda dapat menggunakan jaringan yang sama pada urutan panjang 512, 2, dan 2 juta. Itulah mengapa mereka biasanya digunakan untuk memecahkan masalah dengan durasi yang bervariasi seperti pengenalan suara. LSTM memiliki bobot seperti jaringan neural normal. Anda dapat menganggap 512 node tersembunyi ini sebagai ukuran lapisan tersembunyi di dalam sel. Menggunakan dua lapis LSTM berarti menggunakan dua LSTM dengan 512 node, dan menggunakan keluaran pertama sebagai masukan dari yang kedua. Keluaran LSTM kedua adalah keluaran LSTM 2 lapis.