De acordo com o primeiro artigo , correr não é um problema. Esse era o objetivo. Somente há uma limitação nos pesos máximos:
Atualmente, a limitação na arquitetura incorporada neste microcontrolador é limitada apenas pelo número de pesos necessários. A rede neural está atualmente limitada a 256 pesos. No entanto, para a maioria dos aplicativos incorporados, esse peso de 256 não deve limitar o sistema.
Quanto ao treinamento, tanto quanto eu entendo a implementação descrita, o controlador PIC recebe parâmetros de uma fonte externa.
Os cálculos de encaminhamento da rede neural são escritos para que cada neurônio seja calculado individualmente em uma série de ciclos aninhados. O número de cálculos para cada loop e os valores para cada nó são todos armazenados em uma matriz simples na memória.
[...]
Essas matrizes contêm a arquitetura e os pesos da rede. Atualmente, para fins de demonstração, essas matrizes são pré-carregadas no momento em que o chip é programado, mas na versão final isso não seria necessário. O microcontrolador pode ser facilmente modificado para conter um carregador de inicialização simples que faça uso da porta serial RS232 integrada que receberia os dados dos pesos e da topografia de um local remoto. Isso permitiria que os pesos ou mesmo toda a rede fossem modificados enquanto o chip estivesse em campo.
Suspeito que o treinamento também seja realizado externamente.
O artigo também fornece referências para instrutores de redes neurais que provavelmente foram usados para determinar os valores pré-programados na memória do PIC.
- Wilamowski, BM; Algodão, N .; Hewlett, J .; Kaynak, O., "Treinador de redes neurais com algoritmos de aprendizado de segunda ordem"
- Wilamowski, BM; Cotton, NJ; Kaynak, O .; Dundar, G.,
"Método de computação de vetor gradiente e matriz jacobiana em redes neurais arbitrariamente conectadas"
Agora, examinei o primeiro, que descreve arquiteturas e algoritmos de rede para usar com eles. Mas o software Neural Network Trainer usado aqui é implementado no MATLAB.
Atualmente, há muito pouco software de treinamento de rede neural disponível que treinará redes totalmente conectadas. Assim, um pacote com uma interface gráfica do usuário foi desenvolvido no MATLAB para esse fim. Este software permite ao usuário inserir facilmente arquiteturas muito complexas, além de pesos iniciais, parâmetros de treinamento, conjuntos de dados e a escolha de vários algoritmos poderosos.
Devo mencionar que as redes totalmente conectadas têm um número menor de pesos para uma mesma tarefa que uma arquitetura camada por camada. Isso o torna mais adequado para microcontroladores.
Não sou especialista em redes neurais e é bastante complexo, pois posso estar errado, mas com base nesses documentos, diria que a abordagem de Cotton, Wilamowski e Dündar requer uma plataforma externa mais poderosa para realizar o treinamento.
Sobre a execução de uma rede neural em um microcontrolador, a ST Microelectronics acaba de anunciar um kit de ferramentas STM32Cube.AI: Converter redes neurais em código otimizado para STM32 para converter redes neurais pré-treinadas de bibliotecas populares para a maioria de seus MCUs STM32.