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:
Actualmente, la limitación de la arquitectura integrada en este microcontrolador está limitada solo por el número de pesos necesarios. La red neuronal está actualmente limitada a 256 pesos. Sin embargo, para la mayoría de las aplicaciones integradas, este peso de 256 no debería limitar el sistema.
En cuanto a la capacitación, hasta donde entiendo la implementación descrita, el controlador PIC recibe parámetros de una fuente externa.
Los cálculos hacia adelante de la red neuronal se escriben de manera que cada neurona se calcule individualmente en una serie de bucles anidados. El número de cálculos para cada bucle y los valores para cada nodo se almacenan en una matriz simple en la memoria.
[...]
Estas matrices contienen la arquitectura y los pesos de la red. Actualmente, para fines de demostración, estas matrices están precargadas en el momento en que se programa el chip, pero en la versión final esto no sería necesario. El microcontrolador podría modificarse fácilmente para que contenga un cargador de arranque simple que haga uso del puerto serie RS232 integrado que recibiría los datos de los pesos y la topografía desde una ubicación remota. Esto permitiría modificar los pesos o incluso toda la red mientras el chip está en el campo.
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.
- Wilamowski, BM; Algodón, N .; Hewlett, J .; Kaynak, O., "Entrenador de redes neuronales con algoritmos de aprendizaje de segundo orden"
- Wilamowski, BM; Algodón, NJ; Kaynak, O .; Dundar, G.,
"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.
Actualmente, hay muy poco software de entrenamiento de redes neuronales disponible que capacitará a las redes completamente conectadas. Por lo tanto, se ha desarrollado un paquete con una interfaz gráfica de usuario en MATLAB para ese propósito. Este software permite al usuario ingresar fácilmente arquitecturas muy complejas, así como pesos iniciales, parámetros de entrenamiento, conjuntos de datos y la elección de varios algoritmos potentes.
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.