Mengapa bobot jaringan RNN / LSTM dibagikan sepanjang waktu?

20

Saya baru-baru ini menjadi tertarik pada LSTM dan saya terkejut mengetahui bahwa bobot dibagi bersama waktu.

  • Saya tahu bahwa jika Anda berbagi bobot lintas waktu, maka urutan waktu input Anda dapat menjadi panjang variabel.

  • Dengan bobot bersama, Anda memiliki lebih sedikit parameter untuk dilatih.

Dari pemahaman saya, alasan seseorang akan beralih ke LSTM vs beberapa metode pembelajaran lainnya adalah karena Anda percaya ada semacam struktur temporal / sekuensial / ketergantungan pada data Anda yang ingin Anda pelajari. Jika Anda mengorbankan 'mewah' panjang variabel, dan menerima waktu perhitungan yang lama, bukankah RNN / LSTM tanpa bobot bersama (yaitu untuk setiap langkah saat Anda memiliki bobot berbeda) berkinerja lebih baik atau ada sesuatu yang saya lewatkan?

beeCwright
sumber

Jawaban:

17

Jawaban yang diterima berfokus pada sisi praktis dari pertanyaan: itu akan membutuhkan banyak sumber daya, jika ada parameter yang tidak dibagikan. Namun, keputusan untuk berbagi parameter dalam RNN telah dibuat ketika ada perhitungan serius yang menjadi masalah (1980-an menurut wiki ), jadi saya percaya itu bukan argumen utama (meskipun masih valid).

Ada alasan teoritis murni untuk berbagi parameter:

  • Ini membantu dalam menerapkan model pada contoh dengan panjang yang berbeda. Saat membaca urutan, jika model RNN menggunakan parameter yang berbeda untuk setiap langkah selama pelatihan, itu tidak akan digeneralisasi untuk melihat urutan panjang yang berbeda.

  • Seringkali, urutan beroperasi sesuai dengan aturan yang sama di seluruh urutan. Misalnya, dalam NLP:

                                                     "Pada hari Senin salju turun"

                                                     "Salju turun pada hari Senin"

... dua kalimat ini memiliki arti yang sama, meskipun detailnya ada di bagian urutan yang berbeda. Pembagian parameter mencerminkan fakta bahwa kami melakukan tugas yang sama pada setiap langkah, akibatnya, kami tidak harus mempelajari kembali aturan di setiap titik dalam kalimat.

LSTM tidak berbeda dalam hal ini, karena itu menggunakan parameter bersama juga.

Pepatah
sumber
4
Ini adalah alasan yang jauh lebih penting daripada jawaban yang diterima!
jlh
Saya yakin jawaban saya salah dikarakterisasi di sini. Saya memang mengatakan bahwa lebih banyak sumber daya komputasi akan dibutuhkan tanpa pembagian berat, tetapi ini tidak dimaksudkan sebagai poin utama. Secara khusus, saya juga menulis bahwa model tanpa bobot bersama akan jauh lebih fleksibel dan dengan demikian lebih rentan terhadap overfitting. Berbagi bobot dari waktu ke waktu adalah cara untuk mengatasi hal ini. Seperti yang ditunjukkan dengan tepat di sini, strategi ini sesuai dengan 'sebelum' yang berlaku aturan yang sama di setiap catatan waktu. Jadi, kedua jawaban itu tidak bertentangan.
user20160
12

Perspektif 'bobot bersama' berasal dari pemikiran tentang RNNs sebagai jaringan feedforward yang terbuka dari waktu ke waktu. Jika bobotnya berbeda pada setiap saat, ini hanya akan menjadi jaringan feedforward. Tapi, saya kira cara lain untuk memikirkannya adalah sebagai RNN yang bobotnya adalah fungsi yang bervariasi waktu (dan itu bisa membuat Anda menjaga kemampuan untuk memproses urutan panjang variabel).

Jika Anda melakukan ini, jumlah parameter akan tumbuh secara linear dengan jumlah langkah waktu. Itu akan menjadi ledakan besar parameter untuk urutan dengan panjang yang cukup. Memang akan membuat jaringan lebih kuat, jika Anda memiliki sumber daya komputasi yang besar untuk menjalankannya dan data yang besar untuk membatasi itu. Untuk sekuens panjang, itu mungkin tidak layak secara komputasi dan Anda akan mendapatkan overfitting. Bahkan, orang biasanya pergi ke arah yang berlawanan dengan menjalankan backpropagation terpotong melalui waktu, yang hanya membuka gulungan jaringan untuk beberapa waktu singkat, daripada seluruh urutan. Ini dilakukan untuk kelayakan komputasi. Menariknya, RNN masih dapat mempelajari struktur temporal yang melampaui panjang pemotongan, karena unit berulang dapat menyimpan memori dari sebelumnya.

pengguna20160
sumber
Jika Anda tidak berbagi bobot, Anda masih memiliki status sel yang bertahan sepanjang waktu. LSTM yang tidak dikontrol dengan bobot waktu yang unik akan terlihat seperti jaring umpan ke depan di mana setiap 'lapisan' akan mewakili irisan waktu, tetapi setiap 'lapisan' akan memiliki informasi status sel yang masuk. Itu akan menyerupai feedforward, tetapi dengan penambahan keadaan sel.
beeCwright
0

Saya pikir karena RNN dengan perulangan tersembunyi ke tersembunyi (dan bobot waktu dibagi) setara dengan Mesin Universal Turing, membiarkan mereka memiliki bobot berbeda untuk langkah waktu yang berbeda tidak membuat mereka lebih kuat.

Hossein
sumber
Bisakah Anda menguraikan apa yang Anda maksud dengan "kuat"? Referensi ke Mesin Turing menunjukkan apa yang ada dalam pikiran Anda mungkin benar-benar berbeda dari apa yang dimaksud dalam statistik.
whuber
RNN digunakan untuk memproses urutan data. Salah satu tipe paling umum mereka mendapatkan urutan sebagai input dan menghasilkan urutan lain sebagai output (seperti sistem terjemahan bahasa). Saya mengatakan bahwa keluarga model RNN M1 lebih kuat daripada keluarga model RNN lain M2, jika untuk suatu masalah (seperti memetakan serangkaian urutan input ke serangkaian urutan output) ada beberapa model m1 dalam M1 di mana dapat menyelesaikan masalah ini tetapi tidak ada model dalam M2 di mana dapat menyelesaikan masalah itu.
Hossein