Bir sinir ağını 8 bitlik bir mikrodenetleyici üzerinde çalıştırmak ve eğitmek mümkün müdür?


11

Son zamanlarda kısıtlı ortamlardaki sinir ağları (özellikle, Ucuz Bir Sekiz Bit Mikrodenetleyicide Sinir Ağı Uygulaması ) ve bunların IoT cihazlarına uygulamaları (örn. Sensör girişlerine dayalı şeyleri tahmin etmek için regresyon vb.)

Bu, işlemenin zaman açısından kritik olmadığı ve işlenecek verilerin nispeten seyrek olacağı basit uygulamalar için ideal görünmektedir. Bununla birlikte, daha fazla araştırma, kaynak kısıtlı bir ortamda bir sinir ağını eğitmenin kötü bir fikir olduğunu ileri sürmektedir ( bir mikrodenetleyici üzerinde bir sinir ağı çalıştırmak mümkün mü? Cevabına bakınız ).

Pamuk, Wilamowski ve Dündar'ın bağladığım yaklaşımı için bu hala geçerli mi? IoT ağımdaki daha güçlü bir cihazda düşük kaynak kullanımı için tasarlanmış bir ağı eğitmek gerekli midir?

Bağlam için, ısı ayarını ileten bir sensöre sahip olsaydım, buna ve günün saatine dayalı olarak istenen kazan ayarını tahmin etmek için kağıtta açıklandığı gibi bir sinir ağı düşünürüm. Eğitim, sinir ağının kullanıcı tarafından sağlanan daha fazla veriye dayalı çıktılar. Bu Quora sorusu benzer bir senaryoyu iyi açıklıyor ve bir sinir ağı için uygulama ayrıntılarını tartışıyor, ancak sorum daha çok ağın aktüatörün kendisinde çalışıp çalışmayacağına odaklanıyor.


Merak ediyorum, her sensör / aktüatör düğümünde veya bazı (yarı) merkezileştirilmiş "beyin" de sinir ağları kurmayı mı düşünüyorsunuz (o zaman tabii ki 8 bitlik kısıtlama geçerli değildir)?
Ghanima

@Ganima mümkünse, ekstra karmaşıklık katmanını kaydetmek için aktüatör düğümünde yapmak istiyorum, ancak bunun sınırlı kısıtlamalarla çalışıp çalışmayacağından emin değilim.
Aurora0001

@ Aurora0001 Buraya yerleştirdiğiniz özel denetleyici NN'nizi eğitmek için uygun olmayabilir, ancak gömülü bilgisayar görme dünyasında tam olarak bunu yapmak için uyumlu çabalar vardır. Bu tür görevler için uygun bir mimariye sahip bir mikro denetleyici bulmaya çalışıyorsanız, bilgisayar görme endüstrisi için bu tür donanımları geliştiren şirketlere bakmanızı öneririm. Eminim ki bunların bazıları gereksinimlerinize göre yeniden şekillendirilebilir ve uyarlanabilir. Başlamak için iyi bir yer
grldsndrs

@grldsndrs harika, referans için teşekkürler. Yeterli olduğunu düşünüyorsanız ek bir cevap olarak göndermekten çekinmeyin (kesinlikle bundan memnun olurum)
Aurora0001

1
8 bit işlemci, daha geniş bir sözcük işlemcisinin yapabileceği her şeyi yapabilir, ancak belki de (göreve bağlıdır) daha yavaş. Bununla birlikte, 8 bit işlemciler sınırlı yerel adres alanına sahip olma eğilimindedir, bu da çok büyük anıları yönetmek için dolaylı araçlar kullanmaları gerektiği anlamına gelir ve mikrodenetleyiciler, nispeten küçük miktarlarda yonga bellekle gönderilme eğilimindedir. En düşük ucun ötesinde giderek daha az maliyet farkı var - MCU maliyetinin birincil itici gücü, ALU genişliği değil, muhtemelen anılardır.
Chris Stratton

Yanıtlar:


9

İlk makaleye göre koşmak sorun değil. Amaç buydu. Maksimum ağırlıklarda sadece bir sınırlama vardır:

Şu anda bu mikrodenetleyiciye yerleştirilmiş mimari üzerindeki sınırlama sadece gereken ağırlık sayısı ile sınırlıdır. Sinir ağı şu anda 256 ağırlık ile sınırlıdır. Ancak çoğu gömülü uygulama için bu 256 ağırlık sistemi sınırlamamalıdır.


Eğitime gelince, açıklanan uygulamayı anladığım kadarıyla, PIC kontrolörü harici bir kaynaktan parametreler alır.

Sinir ağı ileri hesaplamaları, her bir nöronun bir dizi iç içe döngüde ayrı ayrı hesaplanacağı şekilde yazılır. Her döngü için hesaplama sayısı ve her düğüm için değerlerin tümü bellekte basit bir dizide saklanır.

[...]

Bu diziler ağın mimarisini ve ağırlıklarını içerir. Şu anda, gösterim amacıyla, bu diziler çip programlandığında önceden yüklenmiştir, ancak son versiyonda bu gerekli olmayacaktır. Mikrodenetleyici, ağırlıklar ve topografya için verileri uzak bir konumdan alacak olan yerleşik RS232 seri portunu kullanan basit bir önyükleme yükleyicisini içerecek şekilde kolayca değiştirilebilir. Bu, yonga tarladayken ağırlıkların ve hatta tüm ağın değiştirilmesine izin verecektir.

Eğitimin dışarıdan da gerçekleştirildiğinden şüpheleniyorum.

Bu makale aynı zamanda muhtemelen PIC'nin belleğine önceden programlanmış değerleri belirlemek için kullanılan Sinir Ağı Eğitimcileri için referanslar vermektedir.

Şimdi, ağ mimarilerini ve onlarla kullanılacak algoritmaları tanımlayan ilkine baktım. Ancak burada kullanılan Neural Network Trainer yazılımı MATLAB'de uygulanmaktadır.

Şu anda, tamamen bağlı ağları eğitecek çok az sinir ağı eğitim yazılımı bulunmaktadır. Böylece MATLAB'da bu amaçla grafik kullanıcı arayüzlü bir paket geliştirilmiştir. Bu yazılım, kullanıcının başlangıçtaki ağırlıkları, eğitim parametrelerini, veri setlerini ve çeşitli güçlü algoritmaların seçiminin yanı sıra çok karmaşık mimarileri kolayca girmesini sağlar.

Tam olarak bağlı ağların, aynı görev için katman katman katman mimarisinden daha düşük ağırlık sayısına sahip olduğunu belirtmeliyim. Bu mikrodenetleyiciler için daha uygun hale getirir.

Sinir ağı uzmanı değilim ve oldukça karmaşık, bu yüzden yanlış olabilirim, ancak bu belgelere dayanarak Cotton, Wilamowski ve Dündar'ın yaklaşımının eğitimi gerçekleştirmek için harici, daha güçlü bir platform gerektirdiğini söyleyebilirim.


Bir mikrodenetleyici üzerinde bir sinir ağı çalıştırmak hakkında, ST Microelectronics az önce STM32Cube.AI: Sinir Ağları önceden eğitilmiş sinir ağları STM32 MCU'ların çoğuna dönüştürmek için Sinir Ağları STM32 için Optimize Kod dönüştürün duyurdu .

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.