Recientemente leí sobre redes neuronales en entornos restringidos (en particular, Implementación de una red neuronal en un microcontrolador económico de ocho bits ) y sus aplicaciones a dispositivos IoT (por ejemplo, regresión para predecir cosas basadas en entradas de sensores, etc.).
Esto parece ideal para aplicaciones simples donde el procesamiento no es crítico con el tiempo, y los datos a procesar serán relativamente poco frecuentes. Sin embargo, investigaciones adicionales sugieren que entrenar una red neuronal en un entorno con recursos limitados es una mala idea (vea la respuesta a ¿Es posible ejecutar una red neuronal en un microcontrolador? ).
¿Esto todavía se aplica al enfoque de Cotton, Wilamowski y Dündar que relacioné? ¿Sería necesario entrenar una red diseñada para un uso bajo de recursos en un dispositivo más potente en mi red IoT?
Por contexto, si tuviera un sensor que transmite la configuración de calor, estoy considerando una red neuronal como se describe en el documento para predecir la configuración deseada de la caldera en función de eso y la hora del día, etc. La capacitación sería útil para cambiar la red neuronal salidas basadas en más datos proporcionados por el usuario. Esta pregunta de Quora describe bien un escenario similar y discute los detalles de implementación para una red neuronal, pero mi pregunta se centra más en si funcionaría la red en el actuador.
fuente
Respuestas:
Según el primer artículo , correr no es un problema. Ese era el propósito. Solo hay una limitación en los pesos máximos:
En cuanto a la capacitación, hasta donde entiendo la implementación descrita, el controlador PIC recibe parámetros de una fuente externa.
Sospecho que el entrenamiento también se realiza externamente.
El documento también proporciona referencias para los entrenadores de redes neuronales que probablemente se usaron para determinar los valores preprogramados en la memoria del PIC.
"Método para calcular el vector gradiente y la matriz jacobea en redes neuronales conectadas arbitrariamente"
Ahora, he examinado el primero que describe arquitecturas de red y algoritmos para usar con ellos. Pero el software Neural Network Trainer utilizado aquí está implementado en MATLAB.
Tengo que mencionar que las redes completamente conectadas tienen un número de pesos más bajo para una misma tarea que una arquitectura capa por capa. Eso lo hace más adecuado para microcontroladores.
No soy un experto en redes neuronales y es bastante complejo, así que puedo estar equivocado, pero según estos documentos, diría que el enfoque de Cotton, Wilamowski y Dündar requiere una plataforma externa y más poderosa para realizar la capacitación.
Acerca de ejecutar una red neuronal en un microcontrolador, ST Microelectronics acaba de anunciar un kit de herramientas STM32Cube.AI: Convierta redes neuronales en código optimizado para STM32 para convertir redes neuronales pre-entrenadas de bibliotecas populares a la mayoría de sus MCU STM32.
fuente