Apakah mungkin untuk menjalankan jaringan saraf pada mikrokontroler

23

Bisakah Anda menerapkan jaringan saraf sederhana pada mikroprosesor seperti Arduino Uno untuk digunakan dalam pembelajaran mesin?

Jordan
sumber
2
Karena penasaran, mengapa Anda mau?
Josh Vander Hook
1
Saya bukan ahli dalam bidang ini, tetapi yang terakhir saya dengar, pelatihan NN dilakukan dalam simulasi, dan NN diimplementasikan pada sasis, dan mungkin satu dengan pengontrol tingkat yang lebih tinggi daripada Arduino.
Josh Vander Hook
1
Nah, Anda tidak harus menautkannya, Anda hanya melatih NN dalam simulasi, lalu mengekstrak topologi NN, termasuk bobot tepi dan tautan simpul. Kemudian Anda memprogram NN (itu hanya persamaan yang harus Anda pecahkan). Saya pikir ini kedengarannya seperti penelitian lebih sedikit diperlukan sebelum Anda mengambil proyek ini.
Josh Vander Hook
1
Mungkin layak disebut saya 16 dan ini adalah pekerjaan utama elektronik saya untuk sekolah menengah.
Jordan
1
Dalam hal itu, saya kira Anda akan melampaui dan melampaui panggilan tugas dalam mencoba menerapkan ini?
Joe Baker

Jawaban:

10

Bisakah Anda melatih jaringan saraf pada mikrokontroler? Mungkin, tapi tolong jangan coba-coba. Bisakah Anda menggunakan NN untuk klasifikasi, dll pada mikrokontroler? Tentu, selama Anda dapat menghitung hasil dari penyebaran nilai node dan edge dan menangani perkalian.

Josh Vander Hook
sumber
1
Saya setuju. Dengan asumsi Anda bisa mendapatkan jaringan saraf dari kompleksitas yang diperlukan untuk melatih Arduino, Anda masih akan siap untuk waktu pelatihan yang gila. Pelatihan di luar papan NN adalah cara logis untuk maju.
fgb
23

Tentunya mungkin untuk mengimplementasikan ini pada Arduino. Berikut adalah 3 perpustakaan Arduino yang mengimplementasikan jaringan saraf:

Kompleksitas jaringan yang dapat ditangani oleh Arduino adalah pertanyaan yang terpisah, terutama dalam hal pelatihan - puluhan ribu iterasi pada data pelatihan. Pelatihan pada mesin yang cepat dan kemudian menyalin bobot neuron ke Arduino akan menjadi cara yang lebih cerdas untuk mengembangkan implementasi Anda.

Ian
sumber
5

Iya nih. Jika Anda hanya menjalankannya dalam mode umpan-maju dan melakukan latihan off-line di tempat lain:

Saya memprogram 3-layer (5-5-2) feedforward JST pada Arduino UNO. Itu berlari pada robot seluler. Setiap kali robot menabrak sesuatu, itu akan melatih kembali jaringan. Bagian umpan ke depan dari jaring berlari dalam waktu nyata; sementara pelatihan back-propagasi mengambil urutan ~ 5 hingga 20 detik. Saya kira Anda bisa memotong ukuran jaringan serta permainan dengan parameter untuk membuatnya berjalan sedikit lebih cepat, tetapi jika Anda berencana melakukan backpropagation pada Arduino, saya pikir itu akan terlalu lambat.

Beberapa pemikiran untuk mempercepat termasuk:

  • Gunakan fixed vs floating point (untuk MCU tanpa FPU)
  • Gunakan MCU yang memiliki FPU
  • tanh
  • Apakah fase pelatihan terjadi offline pada PC

Berikut cepat write-up yang saya lakukan dari jaringan.

Yahma
sumber
3

Ya memang, mungkin untuk menanamkan jaringan saraf pada mikrokontroler. Ada banyak contoh seperti ini dalam literatur ilmiah tetapi saya dapat mengutip contoh yang mencolok tentang apa yang dapat dilakukan dengan MCU yang sangat sederhana jika Anda cukup pintar. Dalam Bits'n'Spikes Evolutionary , penulis menggambarkan implementasi jaringan saraf spiking waktu nyata DAN algoritma genetika untuk melatihnya, untuk mengendalikan robot roda diferensial. Seluruh kode berjalan dalam PIC16F628 4MHz MCU kecil yang tertanam pada robot Alice 1-kubik-inci.

abey
sumber