Apakah mungkin untuk menjalankan dan melatih jaringan saraf pada mikrokontroler 8-bit?

11

Saya baru-baru ini membaca tentang jaringan saraf di lingkungan terbatas (khususnya, Implementasi Jaringan Saraf Tiruan pada Mikrokontroler Delapan Bit Murah ) dan aplikasinya ke perangkat IoT (misalnya regresi untuk memprediksi berbagai hal berdasarkan input sensor, dll).

Ini tampaknya ideal untuk aplikasi sederhana di mana pemrosesan tidak kritis terhadap waktu, dan data untuk diproses akan relatif jarang. Namun, penelitian lebih lanjut menunjukkan bahwa pelatihan jaringan saraf dalam lingkungan yang terbatas sumber daya adalah ide yang buruk (lihat jawaban untuk Apakah mungkin untuk menjalankan jaringan saraf pada mikrokontroler ).

Apakah ini masih berlaku untuk pendekatan Cotton, Wilamowski dan Dündar yang saya tautkan? Apakah perlu untuk melatih jaringan yang dirancang untuk penggunaan sumber daya rendah pada perangkat yang lebih kuat di jaringan IoT saya?

Untuk konteks, jika saya memiliki sensor yang mentransmisikan pengaturan panas, saya sedang mempertimbangkan jaringan saraf seperti yang dijelaskan dalam makalah untuk memprediksi pengaturan boiler yang diinginkan berdasarkan itu dan waktu hari, dll. Pelatihan akan berguna untuk mengubah jaringan saraf output berdasarkan pada lebih banyak data yang disediakan oleh pengguna. Pertanyaan Quora ini menggambarkan skenario yang sama dengan baik, dan membahas detail implementasi untuk jaringan saraf, tetapi pertanyaan saya lebih fokus pada apakah menjalankan jaringan pada aktuator itu sendiri akan berhasil.

Aurora0001
sumber
Curios, apakah Anda berniat untuk menjalankan jaringan saraf pada setiap sensor / aktuator node atau pada beberapa "otak" terpusat (semi-) "maka tentu saja pembatasan 8-bit tidak selalu berlaku)?
Ghanima
@ Ghima jika mungkin, saya ingin melakukannya di simpul aktuator untuk menyelamatkan lapisan kompleksitas tambahan, meskipun saya tidak yakin apakah itu akan bekerja dengan kendala terbatas.
Aurora0001
@ Aurora0001 Pengontrol khusus yang Anda buat di sini mungkin tidak cocok untuk melatih NN Anda, tetapi, ada upaya bersama di dunia visi komputer tertanam untuk melakukan hal itu. Jika Anda mencoba untuk menemukan mikrokontroler dengan arsitektur yang cocok untuk tugas-tugas seperti itu, saya sarankan Anda melihat ke perusahaan yang mengembangkan jenis perangkat keras ini untuk industri visi komputer. Saya yakin beberapa di antaranya dapat digunakan kembali dan disesuaikan dengan kebutuhan Anda. Tempat yang bagus untuk memulai
grldsndrs
@ grldsndrs fantastis, terima kasih untuk referensi. Jangan ragu untuk mempostingnya sebagai jawaban tambahan jika Anda merasa sudah cukup (saya pasti akan senang dengan itu)
Aurora0001
1
Prosesor 8 bit dapat melakukan apa saja yang dapat dilakukan oleh pengolah kata yang lebih luas, hanya saja (tergantung pada tugasnya) lebih lambat. Namun, prosesor 8 bit cenderung memiliki ruang alamat asli yang terbatas, yang berarti mereka harus menggunakan cara tidak langsung untuk mengelola memori yang sangat besar, dan dalam kasus mikrokontroler cenderung untuk mengirim dengan memori on-chip yang jumlahnya relatif kecil. Semakin sedikit perbedaan biaya di luar yang terendah - pendorong utama biaya MCU bisa dibilang kenangan, bukan lebar ALU.
Chris Stratton

Jawaban:

9

Menurut makalah pertama , berlari bukanlah masalah. Itulah tujuannya. Hanya ada batasan berat maksimum:

Saat ini keterbatasan arsitektur yang tertanam dalam mikrokontroler ini hanya dibatasi oleh jumlah bobot yang dibutuhkan. Jaringan saraf saat ini terbatas pada 256 bobot. Namun untuk sebagian besar aplikasi embedded, bobot 256 ini seharusnya tidak membatasi sistem.


Adapun pelatihan, sejauh yang saya mengerti implementasi yang dijelaskan, pengontrol PIC menerima parameter dari sumber eksternal.

Perhitungan forward jaringan saraf ditulis sehingga setiap neuron dihitung secara individual dalam serangkaian loop bersarang. Jumlah perhitungan untuk setiap loop dan nilai untuk setiap node semua disimpan dalam larik sederhana dalam memori.

[...]

Array ini berisi arsitektur dan bobot jaringan. Saat ini, untuk tujuan demonstrasi, array ini sudah dimuat pada saat chip diprogram, tetapi dalam versi final ini tidak perlu. Mikrokontroler dapat dengan mudah dimodifikasi untuk memuat boot loader sederhana yang memanfaatkan port serial RS232 onboard yang akan menerima data untuk bobot dan topografi dari lokasi yang jauh. Ini akan memungkinkan bobot atau bahkan seluruh jaringan untuk dimodifikasi saat chip berada di lapangan.

Saya menduga bahwa pelatihan dilakukan secara eksternal juga.

Makalah ini juga memberikan referensi untuk Pelatih Jaringan Saraf yang mungkin digunakan untuk menentukan nilai-nilai yang diprogram ke dalam memori PIC.

Sekarang, saya telah melihat yang pertama yang menggambarkan arsitektur dan algoritma jaringan untuk digunakan dengannya. Tetapi perangkat lunak Neural Network Trainer yang digunakan di sini diimplementasikan dalam MATLAB.

Saat ini, ada sangat sedikit perangkat lunak pelatihan jaringan saraf yang tersedia yang akan melatih jaringan yang sepenuhnya terhubung. Jadi paket dengan antarmuka pengguna grafis telah dikembangkan di MATLAB untuk tujuan itu. Perangkat lunak ini memungkinkan pengguna untuk dengan mudah memasuki arsitektur yang sangat kompleks serta bobot awal, parameter pelatihan, set data, dan pilihan beberapa algoritma yang kuat.

Saya harus menyebutkan bahwa jaringan yang sepenuhnya terhubung memiliki angka bobot yang lebih rendah untuk tugas yang sama daripada arsitektur lapis demi lapis. Itu membuatnya lebih cocok untuk mikrokontroler.

Saya bukan ahli jaringan saraf dan ini cukup kompleks sehingga saya bisa salah, tetapi berdasarkan makalah ini saya akan mengatakan bahwa pendekatan Cotton, Wilamowski, dan Durndar membutuhkan platform eksternal yang lebih kuat untuk melakukan pelatihan.


Tentang menjalankan jaringan saraf pada mikrokontroler, ST Mikroelektronika baru saja mengumumkan toolkit STM32Cube.AI: Mengubah Jaringan Saraf menjadi Kode Dioptimalkan untuk STM32 untuk mengubah jaringan saraf pra-pelatihan dari perpustakaan populer ke sebagian besar MCU STM32 mereka.

Bence Kaulics
sumber