Czy możesz zaimplementować prostą sieć neuronową w mikroprocesorze, takim jak Arduino Uno, do wykorzystania w uczeniu maszynowym?
Czy możesz zaimplementować prostą sieć neuronową w mikroprocesorze, takim jak Arduino Uno, do wykorzystania w uczeniu maszynowym?
Odpowiedzi:
Czy możesz trenować sieć neuronową na mikrokontrolerze? Może, ale proszę nie próbuj. Czy możesz użyć NN do klasyfikacji itp. Na mikrokontrolerze? Jasne, o ile można obliczyć wynik propagacji wartości węzłów i krawędzi oraz obsługi mnożenia.
Z pewnością można to zaimplementować na Arduino. Oto 3 takie biblioteki Arduino, które implementują sieci neuronowe:
Złożoność sieci, którą może obsłużyć Arduino, to osobne pytanie, zwłaszcza jeśli chodzi o szkolenie - dziesiątki tysięcy iteracji danych treningowych. Trening na szybkiej maszynie, a następnie kopiowanie ciężarów neuronów do Arduino będzie mądrzejszym sposobem na rozwinięcie implementacji.
Tak. Jeśli uruchomisz go tylko w trybie przekazywania do przodu i trenujesz offline w innym miejscu:
Zaprogramowałem 3-warstwowy (5-5-2) feedforward ANN na Arduino UNO. Działał na mobilnym robocie. Ilekroć robot uderzył w coś, ponownie trenował sieć. Przekazywana część sieci działała w czasie rzeczywistym; podczas gdy trening propagacji wstecznej trwał około ~ 5 do 20 sekund. Przypuszczam, że możesz przyciąć rozmiar sieci, a także zabawę z parametrami, aby działała ona nieco szybciej, ale jeśli planujesz zrobić wsteczną propagację na Arduino, myślę, że byłoby to zbyt wolno.
Oto kilka pomysłów na przyspieszenie:
Oto krótki write-up zrobiłem sieci.
Tak, rzeczywiście, możliwe jest osadzenie sieci neuronowej w mikrokontrolerach. Jest wiele takich przykładów w literaturze naukowej, ale mogę przytoczyć uderzający przykład tego, co można zrobić za pomocą bardzo prostego MCU, jeśli jesteś wystarczająco inteligentny. W Evolutionary Bits'n'Spikes autorzy opisują implementację sieci neuronowej wzbogacającej w czasie rzeczywistym ORAZ algorytm genetyczny do jej szkolenia w celu sterowania robotem różnicowym. Cały kod działa w niewielkim MCU PIC16F628 4MHz osadzonym w robocie Alice o przekątnej 1 cala sześciennego.