Autor Tema: IoT, IA & Machine Learning  (Leído 862 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5200

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5200
Re:IoT, IA & Machine Learning
« Respuesta #16 en: 14 de Agosto de 2019, 14:03:39 »
Cuales son las dudas que tienes xocas, a ver si podemos entre todos investigar y responderlas.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5200
Re:IoT, IA & Machine Learning
« Respuesta #17 en: 14 de Agosto de 2019, 14:19:43 »
En cuanto a la capacidad de los microcontroladores, la principal operación que hacer para ejecutar una red neuronal es la multiplicación y suma (se multiplican los valores de entrada por su peso y se suman todos los resultados).
Por eso conviene que el micro tenga multiplicación por hardware, aunque sea de tipo byte.
La función de salida se puede codificar con una tabla LUT.
El tiempo de ejecución de la red neuronal será el de realizar todos los cálculos de cada neurona.

Una red de dos capas ocultas con 16 neuronas y 100 pesos en un PIC puede tardar de 400  a 1000 ciclos de instrucción en calcularse. Es bastante rápido.

Un saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5200
Re:IoT, IA & Machine Learning
« Respuesta #18 en: 14 de Agosto de 2019, 15:56:12 »
Otra forma más lenta (sin ensamblador) y mas sencilla de implementar. Redes neuronales en microcontroladores con uTensor.


Simple Neural Network on MCUs
https://blog.hackster.io/simple-neural-network-on-mcus-a7cbd3dc108c

Desconectado Neutrino

  • PIC10
  • *
  • Mensajes: 28
Re:IoT, IA & Machine Learning
« Respuesta #19 en: 15 de Agosto de 2019, 06:30:37 »
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.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5200
Re:IoT, IA & Machine Learning
« Respuesta #20 en: 15 de Agosto de 2019, 17:16:14 »
Una duda que tengo es para qué puede ser ventajoso utilizar redes neuronales en microcontroladores.

En los casos en los que se conocen bien las reglas a aplicar, lo mejor es codificar esas reglas con ecuaciones o con lógica y aplicarlas. No merece la pena meter redes neuronales.


Las redes parecen una buena solución cuando se dan las siguientes condiciones:
  1. Se conocen muchos ejemplos de cómo queremos que se comporte la red
  2. Sin embargo no se conocen bien las reglas que hay que seguir
      (no se puede expresar la lógica ni las ecuaciones porque se desconocen)
Por ejemplo, reconocimiento de caracteres escritos


Las ventajas de las redes neuronales frente a la lógica tradicional:
  1. Pueden manejar muchísimas entradas de datos a la vez para extraer información de ellas.
     (Por ejemplo sonidos sampleados o imágenes)
  2. No es necesario conocer exactamente cómo funciona por dentro el proceso a manejar


Las desventajas de las redes neuronales:
   1. Hacen falta muchos datos de entrada para entrenar la red neuronal
       y hay que conocer el resultado de salida para cada una de las entradas
   2. Son lentas de entrenar y lentas para ejecutarlas en un microcontrolador
       comparadas con la lógica o con las ecuaciones.

Un saludo.
« Última modificación: 15 de Agosto de 2019, 17:45:24 por Picuino »