Bisakah Memberi Memori ke Seluruh Jaringan Neural Menjadi Revolusioner? – Menuju AI – Teknologi, Sains, dan Teknik Terbaik

Penulis: Joy Lunkad

Apa itu?

Hal ini paling baik dijelaskan dengan contoh yang sangat lugas dan sederhana.

Bayangkan jika AI adalah siswa yang sedang membaca buku (dataset) dan mempersiapkan ujian. Yang saya lakukan di sini adalah mencoba memberinya buku catatan untuk menuliskan apa pun yang menurutnya penting.

Sebuah pertanyaan yang mengganggu saya saat belajar tentang AI adalah apa yang akan terjadi jika seseorang memberikan memori ke seluruh Neural Net? Kedengarannya cukup jelas bahwa itu akan berhasil, bukan? Saya melakukan itu dan saya akan berbagi dengan Anda, secara rinci, bagaimana saya melakukannya, bagaimana cara kerjanya dan pertanyaan terpenting dari semuanya, Apakah itu berhasil?

Apakah itu bekerja?

Jawaban singkatnya: YA

Saya memutuskan untuk melatih ResNet50 standar sebagai basis saya pada kumpulan data Stanford Dogs dan kemudian menambahkan beberapa memori ke arsitektur yang sama persis, dan melatihnya persis dengan cara yang sama seperti ResNet50.

Beginilah kinerja Standar ResNet50, yang dicapai model tertinggi adalah akurasi 15,14% pada data uji. Pelatihan dihentikan pada epoch ke-40 karena keakuratan validasi tidak meningkat dalam 7 epoch.

Dan ini adalah cara kerja AiM ResNet50 yang sama (AiM berasal dari Memori untuk Kecerdasan Buatan). Saya hanya membiarkannya berjalan sampai zaman ke-50. Pada epoch kelima puluh, itu mencetak akurasi 20,06% pada data pengujian dan masih berpotensi untuk melangkah lebih jauh.

Ini hanya tebakan tetapi melihat bagaimana keakuratan validasi AiM ResNet50 tidak berfluktuasi sebanyak itu dan terus meningkat, bukankah sepertinya tidak hanya dapat mempelajari lebih lanjut, tetapi juga tidak membuat banyak kesalahan dalam pembelajaran hal-hal dari dataset.

ResNet50 memiliki sekitar 23,8 juta parameter.

Tujuan-ResNet50 dengan ukuran memori sekitar 50.000 pelampung (yang digunakan dalam percobaan di atas), memiliki sekitar 24,1 juta parameter.

Bagaimana itu bekerja?

Apa tujuan saya saat membuat AiM adalah –

Setiap Layer / Neuron / Unit harus memiliki cara untuk mengakses memori. Jaringan Neural harus memiliki cara untuk memperbarui memori. Memori baru yang diperbarui harus diteruskan ke batch berikutnya.

Cara saya menerapkan ini adalah saya memutuskan untuk memiliki lapisan ‘memori’ dan meneruskan lapisan itu, bersama dengan keluaran dari lapisan sebelumnya, ke lapisan berikutnya, untuk setiap lapisan dalam model. Saya juga membuat blok pembaruan untuk “lapisan memori” sehingga kondisi kedua terpenuhi. Bobot dan bias lapisan ini memberi saya cara untuk menyebarkannya.

Bagaimana saya melakukannya?

Untuk CNN, saya menggunakan lapisan konv2D untuk memori saya. Dengan melewatkan larik 1 sebagai masukan ke lapisan ini dengan aktivasi linier, nilai yang diteruskan ke depan hanya akan menjadi bobot dan bias. Oleh karena itu, ini dapat berfungsi sebagai lapisan memori.

Jika lapisan memori ini memiliki jumlah baris dan kolom yang sama dengan lapisan konvolusional terkecil dalam arsitektur, ia dapat dibentuk ulang dan digabungkan ke lapisan Input dan juga keluaran dari lapisan lain tanpa masalah.

Ketika n_rows * n_columns dari lapisan konvolusional lainnya melebihi total memori dari lapisan memori (n_rows * n_columns * jumlah saluran) memori dapat dibentuk ulang dan diisi dengan nol ke dalam satu saluran dan kemudian, dapat digabungkan ke input lapisan itu sudah menerima.

Dan seperti itu dengan pembentukan kembali dan padding, lapisan memori ini dapat digabungkan ke hampir semua input.

Melewati lapisan memori ini melalui blok konvolusional bersama dengan beberapa data / fitur lain dapat memperbarui lapisan memori.

Untuk jaringan neural yang terhubung sepenuhnya, hal ini lebih mudah dilakukan, karena kita hanya menggunakan lapisan padat untuk lapisan memori. Sekali lagi, dengan melewatkannya, array 1s sebagai input dan menggunakan aktivasi linier, kita dapat menggunakan bobot + bias sebagai unit memori. Lapisan memori ini kemudian dapat digabungkan dengan masukan untuk setiap lapisan untuk mendapatkan jaringan saraf dengan memori.

Seberapa serbaguna itu?

Hanya dengan melihat metode penerapannya, mudah untuk menyimpulkan bahwa, memori dapat ditambahkan ke sebagian besar arsitektur CNN dan Jaringan Neural Terhubung Penuh dengan perubahan minimal. Saya telah menguji menambahkan memori ke ResNet50 dan VGG16 dan jika itu meningkatkan kinerja mereka, ada kemungkinan bagus bahwa ini mungkin benar-benar meningkatkan hampir setiap arsitektur jaringan saraf dalam di luar sana.

Kesimpulan

Saya memiliki harapan besar untuk ide yang tampaknya sederhana namun efektif ini. Meskipun percobaan ini kasar dan memiliki ruang untuk banyak perbaikan, saya ingin, dengan posting ini, untuk menarik perhatian Anda pada bukti konsep ini.

Saya suka bagaimana komunitas deep learning sangat mendukung dan membantu. Begitu banyak makalah dan kode serta posting blog dan buku catatan yang bermanfaat ada di sini secara gratis, saya pikir cara terbaik untuk memberi kembali, adalah dengan mempublikasikannya.

Saya ingin mendengar pendapat Anda tentang pekerjaan saya dan saya tidak sabar untuk melihat bagaimana komunitas deep learning mengembangkan ide ini lebih jauh.

Untuk mengetahui lebih banyak tentang saya dan hubungi saya

Terobosan: Bisakah Memberi Memori ke Seluruh Jaringan Neural Menjadi Revolusioner? awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Towards AI