Чи можливо запустити і тренувати нейронну мережу на 8-бітовому мікроконтролері?


11

Нещодавно я читав про нейронні мережі в обмежених середовищах (зокрема, реалізація нейронної мережі на недорогому восьмибітовому мікроконтролері ) та їх застосуваннях до пристроїв IoT (наприклад, регресія для прогнозування речей на основі вхідних датчиків тощо).

Це здається ідеальним для простих програм, де обробка не є критичною за часом, а дані, які обробляються, будуть відносно рідкісними. Однак подальші дослідження говорять про те, що навчання нейронної мережі в обмеженому ресурсом середовищі є поганою ідеєю (див. Відповідь на те, чи можливо запустити нейронну мережу на мікроконтролері ).

Чи все ще це стосується підходу Коттона, Віламовського та Дюндара, який я пов'язав? Чи потрібно буде тренувати мережу, розроблену для низького використання ресурсів, на більш потужному пристрої в моїй мережі IoT?

У контексті, якби у мене був датчик, що передає теплову настройку, я розглядаю нейронну мережу, як описано в статті, щоб передбачити бажане налаштування котла, виходячи з цього і часу доби, і т. Д. Тренінг буде корисний для зміни нейронної мережі виходи на основі більшої кількості даних, наданих користувачем. Це питання Quora добре описує подібний сценарій та обговорює деталі реалізації нейронної мережі, але моє запитання більш зосереджене на тому, чи працюватиме мережа на самому приводі.


Цікаво, ви маєте намір запустити нейронну мережу на кожному вузлі датчика / виконавчого механізму або на якомусь (напів-) централізованому "мозку" (тоді, звичайно, 8-бітове обмеження не обов'язково застосовується)?
Ганіма

@Ghanima, якщо можливо, я хотів би зробити це на вузлі виконавчого механізму, щоб зберегти зайвий рівень складності, хоча я не впевнений, чи не спрацює це з обмеженими обмеженнями.
Aurora0001

@ Aurora0001 Конкретний контролер, який ви тут розміщуєте, може не підходити для навчання вашої мережі, але у вбудованому світі комп'ютерного зору є узгоджені зусилля, щоб зробити саме це. Якщо ви намагаєтеся знайти мікроконтролер з архітектурою, яка підходить для таких завдань, я пропоную звернутися до компаній, що розробляють такі види обладнання для галузі комп'ютерного зору. Я впевнений, що деякі з них можуть бути перероблені та адаптовані до ваших потреб. Гарне місце для початку
grldsndrs

@grldsndrs фантастичний, дякую за довідку. Не соромтеся опублікувати його як додаткову відповідь, якщо відчуваєте, що цього достатньо (я, безумовно, буду задоволений цим)
Aurora0001

1
8-розрядний процесор може робити все, що може бути більш широким текстовим процесором, лише можливо (залежить від завдання) повільніше. Однак 8-бітові процесори, як правило, мають обмежений нативний адресний простір, а це означає, що вони повинні використовувати непрямі засоби для управління дуже великими пам'ятьми, а у випадку мікроконтролерів, як правило, постачаються з порівняно невеликими обсягами оперативної пам'яті. Більш низька різниця у витратах, що перевищує найнижчий рівень - основний драйвер вартості MCU - це, мабуть, пам'ять, а не ширина ALU.
Кріс Страттон

Відповіді:


9

За першим документом , біг не є проблемою. Це і було метою. Тільки існує обмеження щодо максимальної ваги:

В даний час обмеження на архітектуру, вбудовану в цей мікроконтролер, обмежується лише кількістю необхідних ваг. На даний момент нейронна мережа обмежена 256 вагами. Однак для більшості вбудованих додатків ця вага 256 не повинна обмежувати систему.


Що стосується навчання, наскільки я розумію описану реалізацію, контролер PIC отримує параметри від зовнішнього джерела.

Обчислення прямої передачі нейронної мережі записуються таким чином, що кожен нейрон обчислюється індивідуально в серії вкладених петель. Кількість обчислень для кожного циклу та значення для кожного вузла зберігаються у простому масиві пам'яті.

[...]

Ці масиви містять архітектуру та ваги мережі. Наразі, для демонстраційних цілей, ці масиви попередньо завантажуються під час програмування чіпа, але в остаточній версії це не буде необхідним. Мікроконтролер може бути легко модифікований, щоб містити простий завантажувач, який використовує бортовий послідовний порт RS232, який би отримував дані для ваг і топографії з віддаленого місця. Це дозволить змінити ваги або навіть всю мережу, поки чіп знаходиться в полі.

Я підозрюю, що навчання проводиться і зовні.

У статті також наведено посилання на тренери нейронної мережі, які, ймовірно, використовувались для визначення значень, попередньо запрограмованих у пам'ять PIC.

Тепер я розглянув перший, який описує мережеві архітектури та алгоритми для використання з ними. Але програмне забезпечення Neural Network Trainer, що використовується тут, реалізовано в MATLAB.

В даний час існує дуже мало програмного забезпечення для навчання нейронних мереж, яке буде тренувати повністю пов'язані мережі. Таким чином для цієї мети був розроблений пакет з графічним інтерфейсом користувача в MATLAB. Це програмне забезпечення дозволяє користувачеві легко вводити дуже складні архітектури, а також початкові ваги, параметри тренувань, набори даних та вибір декількох потужних алгоритмів.

Я мушу зазначити, що повністю підключені мережі мають меншу кількість ваг для тієї ж задачі, ніж архітектура пошарово. Це робить його більш придатним для мікроконтролерів.

Я не є експертом з нейронних мереж, і це досить складно, тому я можу помилитися, але виходячи з цих робіт, я б сказав, що підхід Коттона, Віламовського та Дюндара вимагає зовнішньої, більш потужної платформи для навчання.


Щодо запуску нейронної мережі на мікроконтролері, ST Microelectronics щойно оголосила інструментарій STM32Cube.AI: Перетворити нейронні мережі в оптимізований код для STM32 для перетворення заздалегідь підготовлених нейронних мереж з популярних бібліотек до більшості своїх MCU STM32.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.