Bir mikrodenetleyicide bir sinir ağı çalıştırmak mümkün mü


23

Makine öğreniminde kullanılacak Arduino Uno gibi bir mikroişlemciye basit bir sinir ağı kurabilir misiniz?


2
Meraktan, neden istemesin ki?
Josh Vander Hook

1
Bu alanda uzman değilim, ama en son duyduğumda NN'nin eğitimi simülasyonda yapıldı ve NN bir şasiye uygulandı ve muhtemelen Arduino'dan daha yüksek denetleyiciye sahipti.
Josh Vander Hook

1
Bağlamak zorunda değilsiniz, NN'yi simülasyonda eğitiyorsunuz, ardından kenar ağırlıkları ve düğüm bağlantıları da dahil olmak üzere NN'nin topolojisini çıkartıyorsunuz. Sonra NN'yi programlayın (çözmeniz gereken bir denklem). Bu projeye başlamadan önce biraz daha araştırmaya ihtiyaç duyulduğunu düşünüyorum.
Josh Vander Hook

1
Muhtemelen 16 yaşıyorum ve bu benim lise için elektronik çalışmalarım.
Ürdün

1
Bu durumda, bunu uygulama girişiminde görev çağrısı yukarıda ve öteye gideceğinizi farz ediyorum?
Joe Baker,

Yanıtlar:


10

Bir mikrodenetleyicide bir sinir ağı eğitebilir misin ? Belki, ama lütfen deneme. Bir mikrodenetleyicide sınıflandırma için NN kullanabilir misiniz? Elbette, düğüm ve kenar değerlerini yaymanın sonucunu hesaplayabildiğiniz ve çarpımları işleyebildiğiniz sürece.


1
Aynı fikirdeyim Arduino'da antrenman yapmak için gereken karmaşıklıktan oluşan bir sinir ağı alabileceğinizi varsayarsanız, hala çılgınca bir eğitim süresi için hazır olursunuz. NN'nin off-board eğitimi, gitmenin mantıklı yoludur.
fgb

23

Bunu bir Arduino'da uygulamak kesinlikle mümkün. İşte sinir ağlarını uygulayan 3 Arduino kütüphanesi:

Arduino'nun üstesinden gelebilecek olan ağın karmaşıklığı, özellikle eğitim söz konusu olduğunda - eğitim verileriyle ilgili onbinlerce yineleme söz konusu olduğunda ayrı bir sorudur. Hızlı bir makinede eğitim ve ardından nöron ağırlıklarını Arduino'ya kopyalamak, uygulamanızı geliştirmenin daha akıllıca bir yolu olacaktır.


5

Evet. Yalnızca ileri besleme modunda çalıştırıyorsanız ve eğitiminizi çevrimdışı başka bir yerde yapıyorsanız:

Bir Arduino UNO'da 3 katmanlı (5-5-2) feedforward ANN programladım. Bir mobil robot üzerinde koştu. Robot ne zaman bir şeye çarpsa, ağı yeniden eğitirdi. Ağın feedforward kısmı gerçek zamanlı olarak çalıştı; geri yayılma eğitimi ise ~ 5 ila 20 saniye arasında gerçekleştirildi. Sanırım biraz daha hızlı çalışmasını sağlamak için ağın boyutunu ve parametrelerle oynayabileceğinizi azaltabilirsiniz, ancak Arduino'da geri yayılım yapmayı planlıyorsanız, bunun çok yavaş olacağını düşünüyorum.

İşleri hızlandırmak için bazı düşünceler şunlardır:

  • Sabit vs kayan nokta kullanın (MCU'lar için bir FPU hariç)
  • FPU olan bir MCU kullanın
  • tanh
  • Eğitim aşamasının bir bilgisayarda çevrimdışı olması

İşte ağ ile ilgili yaptığım kısa bir yazı .


3

Evet, aslında sinir ağını mikrodenetleyicilere yerleştirmek mümkün. Bilimsel literatürde bunun gibi pek çok örnek var ama yeterince zekiysen çok basit bir MCU ile neler yapılabileceğine dair çarpıcı bir örnek vereceğim. In Evrimsel Bits'n'Spikes , yazarlar sinir ağı VE diferansiyel tekerlek robotu kontrol etmek için, onu eğitmek için genetik algoritma yükseliyor gerçek zamanlı uygulanmasını açıklar. Kodun tamamı, 1 inçlik Alice robotuna yerleştirilmiş küçük bir PIC16F628 4MHz MCU'da çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.