Recentemente, li sobre redes neurais em ambientes restritos (em particular, Uma implementação de rede neural em um microcontrolador barato de oito bits ) e suas aplicações em dispositivos IoT (por exemplo, regressão para prever coisas baseadas em entradas de sensores, etc.).
Isso parece ideal para aplicativos simples em que o processamento não é de tempo crítico e os dados a serem processados serão relativamente pouco frequentes. No entanto, pesquisas adicionais sugerem que o treinamento de uma rede neural em um ambiente com recursos limitados é uma péssima idéia (consulte a resposta para É possível executar uma rede neural em um microcontrolador ).
Isso ainda se aplica à abordagem de Cotton, Wilamowski e Dündar que eu vinculei? Seria necessário treinar uma rede projetada para baixo uso de recursos em um dispositivo mais poderoso na minha rede IoT?
Por um contexto, se eu tivesse um sensor transmitindo a configuração de calor, estou considerando uma rede neural, conforme descrito no artigo, para prever a configuração desejada da caldeira com base nisso e na hora do dia, etc. O treinamento seria útil para alterar as configurações da rede neural. saídas com base em mais dados fornecidos pelo usuário. Essa pergunta do Quora descreve bem um cenário semelhante e discute os detalhes de implementação de uma rede neural, mas minha pergunta é mais focada em saber se a operação da rede no próprio atuador funcionaria.
fonte
Respostas:
De acordo com o primeiro artigo , correr não é um problema. Esse era o objetivo. Somente há uma limitação nos pesos máximos:
Quanto ao treinamento, tanto quanto eu entendo a implementação descrita, o controlador PIC recebe parâmetros de uma fonte externa.
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.
"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.
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.
fonte