¿Podría implementar una red neuronal simple en un microprocesador como el Arduino Uno para usar en el aprendizaje automático?
¿Podría implementar una red neuronal simple en un microprocesador como el Arduino Uno para usar en el aprendizaje automático?
Respuestas:
¿Podría entrenar una red neuronal en un microcontrolador? Quizás, pero por favor no lo intentes. ¿Podría usar un NN para clasificación, etc. en un microcontrolador? Claro, siempre que pueda calcular el resultado de propagar los valores de nodo y borde y manejar las multiplicaciones.
Ciertamente es posible implementar esto en un Arduino. Aquí hay 3 bibliotecas Arduino que implementan redes neuronales:
La complejidad de la red que el Arduino puede manejar es una pregunta separada, especialmente cuando se trata de capacitación: decenas de miles de iteraciones sobre datos de capacitación. El entrenamiento en una máquina rápida y luego copiar los pesos de las neuronas al Arduino será una forma más inteligente de desarrollar su implementación.
Sí. Si solo lo ejecuta en modo de avance y realiza su entrenamiento fuera de línea en otro lugar:
Programé un ANN de avance de 3 capas (5-5-2) en un Arduino UNO. Funcionó con un robot móvil. Cada vez que el robot golpeara algo, volvería a entrenar la red. La porción de alimentación de la red se ejecutó en tiempo real; mientras que el entrenamiento de propagación hacia atrás tomó del orden de ~ 5 a 20 segundos. Supongo que podría recortar el tamaño de la red, así como el juego con los parámetros para que se ejecute un poco más rápido, pero si planea hacer propagación hacia atrás en un Arduino, creo que sería demasiado lento.
Algunas ideas para acelerar las cosas incluyen:
He aquí una rápida escritura hasta que hice de la red.
Sí, de hecho, es posible incrustar redes neuronales en microcontroladores. Hay muchos ejemplos de esto en la literatura científica, pero puedo citar un ejemplo sorprendente de lo que se puede hacer con un MCU muy simple si eres lo suficientemente inteligente. En Evolutionary Bits'n'Spikes , los autores describen la implementación de una red neuronal con picos en tiempo real Y un algoritmo genético para entrenarlo, a fin de controlar un robot de rueda diferencial. Todo el código se ejecuta en una pequeña MCU PIC16F628 de 4MHz integrada en el robot Alice de 1 pulgada cúbica.