Можно ли запустить и обучить нейронную сеть на 8-битном микроконтроллере?

11

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

Это кажется идеальным для простых приложений, где обработка не является критичной по времени, а данные для обработки будут относительно редкими. Тем не менее, дальнейшие исследования показывают, что обучение нейронной сети в условиях ограниченных ресурсов является плохой идеей (см. Ответ на вопрос « Можно ли запустить нейронную сеть на микроконтроллере» ).

Применимо ли это к подходу Коттона, Виламовского и Дюндара, который я связал? Нужно ли обучать сеть, предназначенную для низкого использования ресурсов, на более мощном устройстве в моей сети IoT?

Для контекста, если бы у меня был датчик, передающий настройку тепла, я рассматриваю нейронную сеть, как описано в документе, чтобы предсказать желаемую настройку котла на основе этого, времени суток и т. Д. Обучение было бы полезно для изменения нейронной сети. вывод на основе большего количества данных, предоставленных пользователем. Этот вопрос Quora хорошо описывает подобный сценарий и обсуждает детали реализации нейронной сети, но мой вопрос больше сосредоточен на том, будет ли работать сеть на самом актуаторе.

Аврора0001
источник
Любопытно, вы намереваетесь запустить нейронную сеть на каждом узле датчика / исполнительного механизма или на каком-либо (полу) централизованном «мозге» (тогда, конечно, 8-битное ограничение не обязательно будет применяться)?
Ганима
@Ghanima, если это возможно, я хотел бы сделать это на узле привода, чтобы сохранить дополнительный уровень сложности, хотя я не уверен, будет ли это работать с ограниченными ограничениями.
Аврора0001
@ Aurora0001 Конкретный контроллер, который вы здесь размещаете, может не подходить для обучения вашего NN, но в мире встроенного компьютерного зрения предпринимаются согласованные усилия, чтобы сделать именно это. Если вы пытаетесь найти микроконтроллер с архитектурой, подходящей для таких задач, я предлагаю вам обратиться к компаниям, разрабатывающим такие виды оборудования для индустрии компьютерного зрения. Я уверен, что некоторые из них могут быть переназначены и адаптированы к вашим требованиям. Хорошее место для начала
grldsndrs
@grldsndrs фантастика, спасибо за ссылку. Не стесняйтесь опубликовать его в качестве дополнительного ответа, если вы чувствуете, что этого достаточно (я, безусловно, был бы счастлив с этим)
Aurora0001
1
8-битный процессор может делать все, что может более широкий текстовый процессор, только возможно (зависит от задачи) медленнее. Однако 8-разрядные процессоры, как правило, имеют ограниченное собственное адресное пространство, что означает, что они должны использовать косвенные средства для управления очень большими объемами памяти, а в случае микроконтроллеров, как правило, поставляются со сравнительно небольшими объемами встроенной памяти. Разница в затратах все меньше и меньше, чем у самого нижнего уровня - основной драйвер стоимости MCU - это, вероятно, память, а не ширина ALU.
Крис Страттон

Ответы:

9

Согласно первой статье , бег не является проблемой. Это была цель. Только есть ограничение по максимальному весу:

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


Что касается обучения, насколько я понимаю описанную реализацию, контроллер PIC получает параметры от внешнего источника.

Прямые вычисления нейронной сети записываются так, что каждый нейрон рассчитывается индивидуально в виде серии вложенных циклов. Количество вычислений для каждого цикла и значения для каждого узла хранятся в простом массиве в памяти.

[...]

Эти массивы содержат архитектуру и вес сети. В настоящее время в демонстрационных целях эти массивы предварительно загружаются во время программирования микросхемы, но в окончательной версии это не требуется. Микроконтроллер можно легко модифицировать, чтобы он содержал простой загрузчик, который использует встроенный последовательный порт RS232, который будет получать данные о весах и топографии из удаленного местоположения. Это позволило бы изменить вес или даже всю сеть, пока чип находится в поле.

Я подозреваю, что обучение проводится и внешне.

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

Теперь я посмотрел на первый, который описывает сетевые архитектуры и алгоритмы для использования с ними. Но используемое здесь программное обеспечение Neural Network Trainer реализовано в MATLAB.

В настоящее время существует очень мало доступного программного обеспечения для обучения нейронных сетей, которое будет обучать полностью подключенные сети. Таким образом, для этой цели в MATLAB был разработан пакет с графическим пользовательским интерфейсом. Это программное обеспечение позволяет пользователю легко вводить очень сложные архитектуры, а также начальные веса, параметры обучения, наборы данных и выбор нескольких мощных алгоритмов.

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

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


О запуске нейронной сети на микроконтроллере ST Microelectronics только что анонсировала набор инструментов STM32Cube.AI: преобразование нейронных сетей в оптимизированный код для STM32 для преобразования предварительно обученных нейронных сетей из популярных библиотек в большинство своих микроконтроллеров STM32.

Бенс Кауликс
источник