Topologi Jaringan Berulang (RNN): mengapa selalu terhubung sepenuhnya?

8

Saya sudah mulai membaca tentang Jaringan Syaraf Berulang (RNNs) dan Memori Jangka Pendek (LSTM) ... (... oh, tidak cukup poin rep di sini untuk daftar referensi ...)

Satu hal yang tidak saya dapatkan: Tampaknya selalu ada neuron di setiap instance dari lapisan tersembunyi yang "sepenuhnya terhubung" dengan setiap neuron pada instance sebelumnya dari lapisan tersembunyi, daripada hanya terhubung ke instance dari diri mereka sebelumnya / diri sendiri (dan mungkin pasangan lain).

Apakah keterhubungan sepenuhnya benar-benar diperlukan? Sepertinya Anda bisa menghemat banyak penyimpanan & waktu eksekusi, dan 'lihat ke belakang' lebih jauh dalam waktu, jika tidak perlu.

Ini diagram pertanyaan saya ...

rnn image: sepenuhnya terhubung vs sebagian terkoneksi

Saya pikir ini sama dengan menanyakan apakah boleh menyimpan elemen diagonal (atau hampir diagonal) dalam matriks "W ^ hh" dari sinapsis antara lapisan tersembunyi yang berulang. Saya mencoba menjalankan ini menggunakan kode RNN yang berfungsi (berdasarkan demo Andrew Trask tentang penambahan biner ) - yaitu, setel semua istilah non-diagonal ke nol - dan kinerjanya sangat buruk, tetapi menjaga istilah di dekat diagonal, yaitu linear bergaris sistem 3 elemen lebar - sepertinya berfungsi sebaik versi yang sepenuhnya terhubung. Bahkan ketika saya meningkatkan ukuran input & lapisan tersembunyi .... Jadi ... apakah saya beruntung?

Saya menemukan sebuah makalah oleh Lai Wan Chan di mana ia menunjukkan bahwa untuk fungsi aktivasi linier , selalu mungkin untuk mengurangi jaringan menjadi "bentuk kanonik Jordan" (yaitu elemen diagonal dan terdekat). Tapi sepertinya tidak ada bukti seperti itu tersedia untuk sigmoids & aktivasi nonlinier lainnya.

Saya juga memperhatikan bahwa referensi untuk RNN ​​yang "terhubung sebagian" sepertinya sebagian besar akan hilang setelah sekitar tahun 2003, dan perawatan yang saya baca dari beberapa tahun terakhir semuanya tampaknya memiliki keterkaitan sepenuhnya. Jadi ... kenapa begitu?

sh37211
sumber
1
Berikan saya referensi dan saya akan mempostingnya untuk Anda jika Anda mau.
Antoni Parellada
Anda dapat mengomentari posting Anda sendiri, dan saya pikir menempatkan (setidaknya) satu tautan per komentar.
Mark L. Stone
@AntoniParellada Terima kasih! Tidak dapat menemukan cara
mengirim
Karpathy memposting di RNNs: karpathy.github.io/2015
2015
Andrew Trask post / tutorial: iamtrask.github.io/2015/11/15/anyone-can-code-lstm
sh37211

Jawaban:

2

Salah satu alasan mungkin karena kenyamanan matematis. Jaringan saraf berulang vanila ( tipe Elman ) dapat dirumuskan sebagai:

ht=f(xt,ht1) , di mana dapat ditulis sebagai .f()σ(Wxt+Uht1)

Persamaan di atas sesuai dengan gambar pertama Anda. Tentu saja Anda dapat membuat matriks berulang jarang untuk membatasi koneksi, tetapi itu tidak mempengaruhi ide inti dari RNN.U

BTW: Ada dua jenis memori dalam RNN. Salah satunya adalah bobot input-ke-tersembunyi , yang terutama menyimpan informasi dari input. Yang lainnya adalah matriks tersembunyi-ke-tersembunyi , yang digunakan untuk menyimpan sejarah. Karena kita tidak tahu bagian mana dari sejarah yang akan memengaruhi prediksi kita saat ini, cara yang paling masuk akal adalah mengizinkan semua koneksi yang memungkinkan dan membiarkan jaringan belajar sendiri.WU

fishiwhj
sumber
0

Anda dapat menggunakan 2 input neuron jika Anda mengaturnya dengan cara yang mirip dengan transformasi Walsh Hadamard yang cepat. Jadi algoritma out of place akan melangkah melalui vektor input secara berurutan 2 elemen sekaligus. Minta 2 neuron 2-input bekerja pada setiap pasangan elemen. Letakkan output neuron pertama secara berurutan di bagian bawah array vektor baru, output dari neuron kedua secara berurutan di bagian atas array vektor baru. Ulangi menggunakan array vektor baru sebagai input. Setelah log_base_2 (n) mengulangi perubahan dalam satu elemen input yang berpotensi dapat mengubah semua output. Mana yang terbaik yang bisa Anda lakukan. n harus bilangan bulat positif 2.

Sean O'Connor
sumber