El proyecto final de mi curso de microcontroladores en la Universidad fue un carrito capaz de manejarse sólo (autónomo) para lo que que tuve que usar visión artificial (muy burda) sobre un micro de 8bits.
Me interesa mucho el tema de los microcontroladores y la inteligencia artificial y tengo un poco de experiencia en ambos temas, por lo que me gustaría decir un par de cosas.
La primera es que tienen razón cuando mencionan que el mayor trabajo de una red neuronal está en la parte del entrenamiento, el resultado del entrenamiento son los pesos de la red, que son, por lo general, flotantes. Hay que tener en cuenta que según el problema se requiere una topología de red neuronal distinta y fácilmente se puede llegar a redes de miles/millones de pesos para problemas simples, teniendo en cuenta que, por regla general, entre más simple el problema a resolver menos neuronas/pesos se necesitan. Así que pensemoslo en términos de memoria, ¿cuántos flotantes me permite almacenar un micro?
Además, no pensemos sólo en redes neuronales, se puede hacer ML con distintos algoritmos según las necesidades y cada técnica tiene como objetivo encontrar parámetros distintos, como por ejemplo, los coeficientes de una regresión (operación que se puede calcular fácil en un micro), los coeficientes de una regresión logarítmica para clasificación (también se puede calcular fácil en un micro), el árbol cuando se intenta clasificar por árboles de decisión (dependiendo de la complejidad del árbol se podría o no implementar en un micro) y las fronteras de decisión que entregan varios métodos de clasificación, donde básicamente, una vez obtenidas las fronteras lo que hay que hacer cuando llega un dato nuevo es ver en qué región cae y según dicha región se clasifica ese dato. Por lo que dependiendo de la complejidad de la frontera se podría o no implementar en un micro.
Así que para saber si un modelo de ML se puede aplicar a un micro hay que tener un buen conocimiento del problema que se quiere solucionar, el método a usar para solucionarlo y las características del microcontrolador. Personalmente me parece que las redes neuronales deberían ser el último modelo a considerar.
Y lo segundo que me gustaría decir es que aunque podamos correr ML en un micro eso no significa que debamos hacerlo, especialmente ahora con el auge de los sistemas embebidos. Yo creo que se debe encontrar un equilibrio entre los sistemas, que la electrónica responda como es y en los tiempos que debería y que el modelo de ML responda bien al problema sin que una simplificación haga que se desempeñe burdamente.
Saludos.