TODOPIC

Misceláneas - Interés General => Off Topic => Mensaje iniciado por: xocas en 08 de Agosto de 2019, 13:48:22

Título: IoT, IA & Machine Learning
Publicado por: xocas en 08 de Agosto de 2019, 13:48:22
Partiendo de algunos comentarios en otro tema...

Otro campo delicado donde se va a aplicar la inteligencia artificial para asistir a las personas es en el diagnóstico médico, con los problemas de falsos positivos o falsos negativos debidos a decisiones de máquinas que «ayudan» a los médicos.

Una de las cosas que me cuestiono, para aprender, es redes neuronales (a.k.a. AI). ¿Será necesario para nuestra rama en electrónica? Por que la mayoría hasta ahora usa librerias como TensorFlow entre otras, pero para electrónica (obviamente algo simple se realiza directamente) será necesario aplicarlo?, lo que mas me cuesta de esta pregunta es.. ¿En donde lo aplicarías?, o re fraseando la pregunta: ¿En donde es necesario y que supere a una simple lógica?.
Nuevamente estamos hablando de cuando programas un micro barebone, y no un microprocesador con un OS, que permitiría el uso de esas librerías. Sino el de generar nuestras redes neuronales.

Eso daría tema para un nuevo hilo. IA y redes neuronales en microcontroladores.

Y con razón... He visto hace poco sobre este tema, a ver si consigo sacar algún finde libre que se me acumula todo y veo algo  :mrgreen:
Si alguien se dedica al tema no estaría mal abrir un hilo e ir poniendo sobre todo ello

Bueno, pues ya que llevo un tiempo viendo cosas sobre IoT & BigData y estoy justamente ahora empezando a tocar la IA y Machine Learning me animo a ser yo quien abra el tema.

Para abrir boca os comento las fuentes que estoy usando y a partir de ahí podemos ir añadiendo contenido:

En stacksocial.com podemos encontrar ofertas de cursos muy económicos y extensos sobre el tema, tanto en formato pdf como vídeo. Ojo, porque todo el material está en inglés y no todos los vídeos disponen de subtítulos, de manera que puede ser muy complicado seguir el curso sin un buen conocimiento del idioma.
Mi experiencia: Un curso sobre Ethical Hacking en vídeo, que me gustó bastante (Pay what you want: a partir de $1) y un paquete (Bundle) sobre IoT, con pdf's y vídeos ($15), que considero penoso (demasiado básico y desactualizado).
Un ejemplo: https://stacksocial.com/search?utf8=%E2%9C%93&query=machine+learning

En udemy.com también hay bastante material sobre el tema. En castellano.
Mi experiencia: A medias con el curso IoT Masterclass & 5G y en la introducción de otro sobre Machine Learning (https://www.udemy.com/mlmasterclass/) (11€ c/uno), y de momento muy satisfecho.
Un ejemplo: https://www.udemy.com/courses/search/?q=machine%20learning

En la web de LUCA (Telefónica) tenemos artículos, tutoriales, recursos, etc: https://empresas.blogthinkbig.com/luca/
Y en su canal de Youtube, una lista de Video Post explicando algunos de los conceptos básicos: https://tinyurl.com/y3qo5aba

un saludo
Título: Re:IoT, IA & Machine Learning
Publicado por: KILLERJC en 08 de Agosto de 2019, 14:46:14
Gracias por compartir xocas y por abrir el tema..

Yo no pase una época de búsqueda de información sobre los temas en cuestión. Mi problema fue encontrar una aplicación. No del punto de vista de la potencia de una PC, sino del punto de vista de la potencia de un microcontrolador y su aplicación.

Y me explico porque....

La mayoría de las aplicaciones que encuentro son por ejemplo sortear elementos por color, lo cual lo hace valido pero requiere tener hardware que no todos tienen (sensores de color) seran baratos pero no los poseo.
Si voy a un manejo de un video y reconocimiento de formas, tengo que irme a la potencia de una PC, es cierto que puedo hacerlo con un hardware dedicado, pero en que cabeza cabe hacer algo dedicado cuando una PC, que es facilmente reemplazable si falla, lo puede realizar tambien.

¿Entonces en que puntos de aplicacion yo me podria a pensar en usar una red neuronal/IA?
Lo que veo que le presentan utilidad es para sortear o diferenciar casos según los datos de los sensores. Datos que de otra forma serian un poco "complicado" de generar una separación simple.

----------------

Por supuesto que mis ganas de aprender no se quedan unicamente en lo necesario para el microcontrolador.
Título: Re:IoT, IA & Machine Learning
Publicado por: Picuino en 08 de Agosto de 2019, 14:54:26
Deep learning

https://es.wikipedia.org/wiki/Aprendizaje_profundo

https://rubenlopezg.wordpress.com/2014/05/07/que-es-y-como-funciona-deep-learning/

https://towardsdatascience.com/deep-learning-for-beginners-practical-guide-with-python-and-keras-d295bfca4487

Saludos.
Título: Re:IoT, IA & Machine Learning
Publicado por: Picuino en 08 de Agosto de 2019, 17:06:57
Bringing machine learning to embedded systems
http://www.ti.com/lit/wp/sway020a/sway020a.pdf
Título: Re:IoT, IA & Machine Learning
Publicado por: tsk en 09 de Agosto de 2019, 01:48:40
Gracias por compartir xocas y por abrir el tema..

Yo no pase una época de búsqueda de información sobre los temas en cuestión. Mi problema fue encontrar una aplicación. No del punto de vista de la potencia de una PC, sino del punto de vista de la potencia de un microcontrolador y su aplicación.

Y me explico porque....

La mayoría de las aplicaciones que encuentro son por ejemplo sortear elementos por color, lo cual lo hace valido pero requiere tener hardware que no todos tienen (sensores de color) seran baratos pero no los poseo.
Si voy a un manejo de un video y reconocimiento de formas, tengo que irme a la potencia de una PC, es cierto que puedo hacerlo con un hardware dedicado, pero en que cabeza cabe hacer algo dedicado cuando una PC, que es facilmente reemplazable si falla, lo puede realizar tambien.

¿Entonces en que puntos de aplicacion yo me podria a pensar en usar una red neuronal/IA?
Lo que veo que le presentan utilidad es para sortear o diferenciar casos según los datos de los sensores. Datos que de otra forma serian un poco "complicado" de generar una separación simple.

----------------

Por supuesto que mis ganas de aprender no se quedan unicamente en lo necesario para el microcontrolador.

No requieres de una máquina muy potente cuando ya entrenaste los modelos. Un clasificador puede ser tan simple como y = m*x+b, por lo tanto lo único que requieres obtener las constantes m y b usando datos de entrenamiento.

Pero un caso práctico, el cual podrías pensar para el uso en un sistema embebido es la localización.

Imagina que quieres realizar un sistema que sea económico en cuanto al hardware para saber en todo momento donde se encuentra una persona mayor dentro de un edificio e incluso determinar que tipo de actividades está realizando. Recordemos que los GPS tienen bastantes limitaciones como para ser empleados en este tipo de casos y pues no le vas a montar una raspberry pi a una persona mayor para saber donde está.

Entonces se puede optar por alternativas como el uso del BLE. Para lo único que necesitarías un sistema potente sería para obtener el modelo y los parámetros del modelo para que el sistema pueda estimar la posición del individuo en base a la potencia que recibe cada uno de los, por así decirlo, sensores BLE colocados en el edificio. Hay muchas fuentes de interferencia, que de manera normal seríamos incapaces de modelar y suprimirlas todas por métodos convencionales, por lo que el Aprendizaje automático es de las mejores opciones.

Ahora imagina que tiene problemas de movilidad, y se quiere desplazar de un lugar del edificio a otro. Conociendo su posición actual, el mismo sistema podría calcular la mejor ruta para llegar al destino, aquí entra la parte de la Inteligencia Artificial.

También llevo algo de rato viendo también lo de la AI y Aprendizaje Automático. Las fuentes de cursos que inicialmente usé se encuentran en edx, cursera y Udacity, cuando todo era gratuito.

Mi experiencia con cursos en estas plataformas, en el lado del la AI y Aprendizaje Automático

EDX: Todo muy bien integrado, recientemente cambiaron sus políticas de acceso a los cursos, pero los cursos siguientes tiene una buena relación entre teoría y práctica, con excepción del primero, que es principalmente pura teoría. Son por así copias casi exactas de lo que las Instituciones ofrecen en sus cursos.

Learning From Data (Machine Learning)(CaltechX)
Artificial Intelligence (BerkeleyX)
Machine Learing for Data Science and Analytics (ColumbiaX)
Introducción a la visión por Computador: desarrollo de aplicaciones con OpenCV
Artificial Intelligence (ColumbiaX)
Machine Learning (ColumbiaX)

Coursera: Al igual que EDX hay un balance entre teoría y práctica, con excepción de Probabilistic Graphical Models y Game Theory

Machine Learning for Data Analysis
Paractical Machine Learing
Machine Learning
Introduction to Data Science
Probabilistic Graphical Models
Game Theory

Udacity: Va más a la parte práctica que teórica.

Intro to Artificial Intelligence
Artificial Intelligence for Robotics
Machine Learning: Supervised Learning
Deep Learning
Intro to Machine Learning
Natural Language Processing.

PD: Si no quieres obtener algún certificado, no hay necesidad de pagar para obtener acceso a los vídeos.

En otra plataformas lo que he visto es que van más por el uso de frameworks y librerías, más que tocar la parte teórica, por lo que pueden crear una idea falsa de su aplicabilidad. Igual no me imagino usando TensorFlow, numpy, sckilearn o pandas en un microcontrolador, pero si puedo pensar en implementar un control difuso, un clasificador o una red neuronal usando valores de los parámetros precalculados, pero que puedan ser actualizados.
Título: Re:IoT, IA & Machine Learning
Publicado por: Picuino en 09 de Agosto de 2019, 02:21:15
Una red neuronal también puede servir para controlar un proceso como un calentador, un péndulo invertido (segway), un ascensor al parar en el piso, un proceso químico, etc.

Además de idestificar estados pueden generar patrones de control.
Título: Re:IoT, IA & Machine Learning
Publicado por: AccioRw en 09 de Agosto de 2019, 04:34:47
Antes de nada, muchas gracias xocas por abrir el tema.

¿Entonces en que puntos de aplicacion yo me podria a pensar en usar una red neuronal/IA?
Lo que veo que le presentan utilidad es para sortear o diferenciar casos según los datos de los sensores. Datos que de otra forma serian un poco "complicado" de generar una separación simple.
Mira, hace poco se me dio un ejemplo con mi móvil, un S8, al activar la opción de regular el brillo automático me salió una advertencia sobre que usaría mis patrones para aprender y adecuar el brillo según mis formas habituales de hacerlo (algo así fue el texto), los primeros días apenas regulaba el brillo, era algo torpe y ahora suele acertar en muchos casos aunque desde mi punto de vista no estaría mal que pudiera aprender también sobre el brillo que uso entre semana o el que uso los fines de semana que normalmente estoy más al aire libre  o necesito más brillo, pero bueno, aquí tienes un breve ejemplo sobre un uso de ello.
Hay teléfonos que ya lo usan tambien para adecuar los parametros de una foto, no se de que manera por que solo lo he visto brevemente y no lo hace mi teléfono...
Título: Re:IoT, IA & Machine Learning
Publicado por: xocas en 09 de Agosto de 2019, 12:16:37
La verdad es que no me había planteado en ningún momento que fuera posible integrar una solución IA en un entorno de microcontrolador. Lo poco que he visto o leído sobre el tema me llevó a concluir que se necesita una gran capacidad de proceso, más aún en las fases de aprendizaje en las que se habla directamente de procesamiento paralelo para las redes neuronales, y eso descarta sistemas de bajo rendimiento. Nvidia parece ser un referente IA en estos momentos.

La mayoría de las aplicaciones que encuentro son por ejemplo sortear elementos por color

Lo que veo que le presentan utilidad es para sortear o diferenciar casos según los datos de los sensores. Datos que de otra forma serian un poco "complicado" de generar una separación simple.

No requieres de una máquina muy potente cuando ya entrenaste los modelos.

En otra plataformas lo que he visto es que van más por el uso de frameworks y librerías, más que tocar la parte teórica, por lo que pueden crear una idea falsa de su aplicabilidad. Igual no me imagino usando TensorFlow, numpy, sckilearn o pandas en un microcontrolador, pero si puedo pensar en implementar un control difuso, un clasificador o una red neuronal usando valores de los parámetros precalculados, pero que puedan ser actualizados.

Es posible que hayas visto este documento en pdf (https://tinyurl.com/y3lo2gwn) u otro similar. Yo encontré algunos del estilo y en todos los casos el procesamiento se hace de manera externa al microcontrolador. Se busca reducir al mínimo la posibilidad de error a la vez que se mejora el tiempo de respuesta. No deja de parecerme curioso que se den respuestas en términos de probabilidad, no se dice que un objeto sea de color verde sinó que haya un x% de probabilidades de que lo sea.

No podría decirlo mejor: "No requieres de una máquina muy potente cuando ya entrenaste los modelos"

En el curso que acabo de empezar la preparación del entorno de trabajo empieza instalando Anaconda y, por lo que veo en el índice, seguiremos con Jupyter, Numpy y Pandas. Supongo que es normal en un curso más o menos genérico tratar de buscar un entorno 'amigable' para no espantar a los primerizos.

También me llamó la atención en el par de cursos que sigo sobre IoT que un entorno doméstico o a muy pequeña escala ni se contemplan. Directamente te dan las pautas para gestionarlo vía servicios como Microsoft Azure, Amazon AWS o Google Cloud en sus opciones gratuitas.

Estos tres servicios disponen también de opciones gratuitas básicas para IA (por ej: Reconocimiento de imágenes) y podemos añadir a IBM Watson en la lista ( https://www.ibm.com/watson/services/visual-recognition/ ).

un saludo



Título: Re:IoT, IA & Machine Learning
Publicado por: Picuino en 09 de Agosto de 2019, 13:16:00
Esos entornos ofrecen mucha potencia, pero se pueden hacer muchas cosas en un ordenador de casa. Por ejemplo entrenar un ocr para leer texto impreso por una impresora es un caso sencillo de reconocimiento de imágenes, lo puedes entrenar en casa sin problema.
Título: Re:IoT, IA & Machine Learning
Publicado por: Picuino en 09 de Agosto de 2019, 13:21:01
Un artículo de nivel básico muy interesante para comprender las redes neuronales:


https://www.xataka.com/robotica-e-ia/las-redes-neuronales-que-son-y-por-que-estan-volviendo
Título: Re:IoT, IA & Machine Learning
Publicado por: Nocturno en 10 de Agosto de 2019, 01:58:06
Suscribome
Título: Re:IoT, IA & Machine Learning
Publicado por: juaperser1 en 10 de Agosto de 2019, 13:32:31
Como anécdota os contaré que hace ya mucho realicé un seguidor de lineas mediante redes neuronales, una red neuronal muy simple de 3 neuronas y 3 capas creo recordar, era de tipo perceptrón, muy simple.
Entrene el sistema con matlab simulink, con el paquete neural network toolbox, lo ideal para implementar una red neuronal es una FPGA, y sintetizas las neuronas, y obviamente, no se realizan todas las capas neuronales, solo se realiza el vector con el mayor numero de neuronas, que suele ser la primera capa, y los resultados de las capas se van realiamentando y modificando los pesos.

yo no tenia dinero por aquel entonces, así que lo hice todo a mano, y como los PIC los regalaban por aquella época los utilice 3 para crear las neuronas (y que trabajaran en paralelo).

Aquí tenéis los pesos del entrenamiento y algunas fotos del circuito, no he podido rescatar gran cosa del proyecto, no se donde narices lo tengo, lo perdería con los cambios de ordenador:

  - Tienes que ingresar para ver archivos adjuntos -  

Estos son los resultados del entrenamiento de la red:

Código: [Seleccionar]
input: sensores

[1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1;
 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0;
 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 0 0;
 1 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0;
 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0;
 1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 1 0;
 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0;
 1 1 1 1 1 1 0 1 1 0 1 0 0 1 0 0 1 1;]


targets: salidas

[0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1;
 0 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1;
 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 1 1;]



prueba1 000
prueba2 010
prueba3 100


pesos:

     0     0     0    -1    -1    -1    -1     0
     0    -3    -2     6    -4    -2     1     2
     0    -5    -4    -3     2     2     1     0

bias:

     0
     0
     1

También os dejo algún enlace:

Pagina que muestra, mediante computación evolutiva el avance de una invasión de zombis.

http://Kevan.org/proce55ing/zombies/

También tengo algún programita de lógica difusa y eso, por si alguien le interesa.

un saludo
Título: Re:IoT, IA & Machine Learning
Publicado por: xocas en 14 de Agosto de 2019, 11:44:14
Interesante.

Entiendo que Matlab te proporciona una función como resultado de la fase de entrenamiento y que dicha función puedes aplicarla posteriormente al código en tu dispositivo. La capacidad del dispositivo (microcontrolador, memoria, etc) marcaría el límite en cuanto a posibilidades de uso de la función en tal o cual proyecto... ¿Esto es así?

Vale que acabo de empezar con este tema y hay mucho camino que recorrer, pero hasta ahora la impresión que tengo es que hace falta también una cierta capacidad de abstracción y una buena dosis de intuición para llegar a alguna parte, que hay cosas que encajan bastante bien con mi lógica y otras en las que directamente tengo miedo, miedo de que me explote la pxxa cabeza. WTF!

un saludo

Un par de canales de Youtube que considero interesantes:
Dot CSV: https://www.youtube.com/channel/UCy5znSnfMsDwaLlROnZ7Qbg
Xpikuos: https://www.youtube.com/channel/UCCmHFfUhcgZHenBWRzSEB0w

Jugando con Redes Neuronales en el navegador:
https://playground.tensorflow.org/
Título: Re:IoT, IA & Machine Learning
Publicado por: AccioRw en 14 de Agosto de 2019, 12:18:44
Para aportar algo al tema, os dejo una lista de reproducción en YouTube, creo que no se ha mencionado nada sobre estos videos aun, los tenia localizados por un chico que me pidió ayuda sobre el tema hace unos meses, como desconozco gran mayoría de esto,  se la envié así que la tengo guardada desde entonces y el otro día dando vueltas conseguí encontrarla de nuevo:
list=PLAnA8FVrBl8AWkZmbswwWiF8a_52dQ3JQ
Para el que esté algo perdido quizá le pueda venir bien ver una explicación en video, no tengo relación alguna con el Youtuber que ha creado los videos por lo tanto solo quiero hacer mención a su trabajo además de otras listas curiosas que tiene.
Título: Re:IoT, IA & Machine Learning
Publicado por: juaperser1 en 14 de Agosto de 2019, 13:36:35
Citar
Entiendo que Matlab te proporciona una función como resultado de la fase de entrenamiento y que dicha función puedes aplicarla posteriormente al código en tu dispositivo. La capacidad del dispositivo (microcontrolador, memoria, etc) marcaría el límite en cuanto a posibilidades de uso de la función en tal o cual proyecto... ¿Esto es así?

Bueno matlab te puede generar el código en C, pero no es así como yo lo uso (o usé), con la toolbox puedes generar muchos tipos de redes neuronales, yo use el perceptron que es de los mas sencillos. Despues de definir la red y entrenarla, matlab te da los pesos de las neuronas, este peso es el número que se multiplica por las variables de entrada cada vez que pasa por una neurona y cada neurona tiene un peso.

Las operaciones que debe ejecutar un perceptrón (o la mayoria de redes neuronales) son sumas y multiplicaciones y cada capa de neuronas debe ejecutarse en paralelo y dar las variables a la siguiente capa de neuronas.
Lo mejor para implementar una red neuronal, seria un DSP(que no tiene procesamiento paralelo) o tener cada neurona sintetizada en una FPGA o en un nucleo del procesador y luego ya, tal y como dices la capacidad del sistema, por ejemplo, ¿cuantas neuronas puedo sintetizar en una FPGA? Por esto nvidia es tan buena, sus gpus tiene un montón de "núcleos" en paralelo.

Después hay técnicas de optimización, en la practica, no se suelen implementar todas las capas neuronales, se implementa la de mayor numero y los resultados de la capa n se pasan a la n+1, cambiando los pesos de las neuronas para que así actuen de la siguiente capa.

Lo bueno de una red neuronal, perceptrón en este caso, es que siempre te ofrecerá una solución a una entrada, y esta sera mas precisa mientras mejor entrenada este la red.
Si a un sistema secuencial de programación estandar le entra una entrada que no tenia prevista pues ocurre un "pantallazo azul", si a una red neuronal le entra una señal desconocida te ofrecerá una respuesta que se ajustará a lo que ella este entrenada.

Por poner un ejemplo, programas un robot para girar a la izquierda y derecha con programación estandar, si le das la orden a este robot de que vaya en diagonal no responderá. Si entrenas una red neuronal para que el robot gire a la izquierda o la derecha y le introduces la orden de ir en diagonal, este ira en diagonal, acercándose a 45 grados conforme mejor entrenada este la red.

Es un ejemplo un poco malo(malísimo) por que hay mil variables mas, pero creo que así se puede entender la diferencia.

Te paso un documento que hice para crear un perceptrón, es una introducción muy sencilla, pero que te puede servir para empezar con la toolbox.

https://www.dropbox.com/s/cw2ib3oweujbdo7/CREAR%20UN%20PERCEPTRON.pdf?dl=0

Aquí se crea un perceptron con la gui de matlab, que siempre es mas amigable y fácil para aprender que tirar de código.

Luego en inteligencia artificial existen otras tecnologías a parte de las redes neuronales, como la lógica difusa, computación evolutiva, etc. y algunas que las han sacado de la inteligencia artificial como los sistemas expertos, donde esto se asemeja mas a una base de datos.

Un ejemplo de un sistema experto que simula inteligencia es el famoso juego de akinator:

https://es.akinator.com/ (https://es.akinator.com/)

Título: Re:IoT, IA & Machine Learning
Publicado por: Picuino en 14 de Agosto de 2019, 13:50:42
Jugando con Redes Neuronales en el navegador:
https://playground.tensorflow.org/

Aquí la solución explicada https://cloud.google.com/blog/products/gcp/understanding-neural-networks-with-tensorflow-playground
Título: Re:IoT, IA & Machine Learning
Publicado por: Picuino 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.
Título: Re:IoT, IA & Machine Learning
Publicado por: Picuino 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.
Título: Re:IoT, IA & Machine Learning
Publicado por: Picuino 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
Título: Re:IoT, IA & Machine Learning
Publicado por: Neutrino 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.
Título: Re:IoT, IA & Machine Learning
Publicado por: Picuino 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.