Redes Neuronales Aplicadas a Electrónica.
Sin duda cada vez es mas común escuchar hablar de "Inteligencia Artificial" o simplemente IA y la pregunta sería como afecta esto a quienes están desarrollando sistemas electrónicos.
Para entender mejor el asunto veamos la programación algorítmica clásica en donde el programador debe contemplar todos los posibles escenarios y escribir un código que lo trate, por ejemplo si ocurre el evento A hacer tal cosa si el evento es B hacer otra si ocurren A y B hacer algo mas y si no se da ningún evento o se dan los dos o si el usuario toca el teclado mientras algún evento sucede o si se corta la energía, etc, etc. Todo debe estar contemplado para que el sistema sepa que hacer ante un escenario determinado. Podríamos codificar todo esto con una larga cadena de IF o CASE que cubra todas las posibilidades incluso las menos probables.
O podríamos hacer algo mas eficiente, crear un modelo de aprendizaje automático donde solo le indicamos el resultado que se debe obtener y le enseñamos que aprenda todos los posibles escenarios, los ensaye y verifique que tan lejos está de obtener el resultado y guarde cada aprendizaje como experiencia adquirida hasta lograr el objetivo. El sistema puede calcular mediante estadísticas nuevos escenarios y poder predecir soluciones con margenes de acierto aceptables aprendiendo y evolucionando en todo momento.
Esto suena muy complicado y desproporcionado para una desarrollo electrónico simple que podríamos resolver con una líneas de código en C sin embargo ahora hay muchas cosas nuevas que pueden correr en electrónica simple y crear redes neuronales alimentadas por modelos de aprendizaje automático y todo corriendo en un microcontrolador.
Con TensorFlow podemos crear estos modelos para sistemas informáticos como Raspberry PI y con TensorFlow Lite crear modelos para microcontroladores como el RP2040, ESP32, etc.
Hablemos de Aprendizaje Automático.
Esto es una rama de la inteligencia artificial, un sistema mediante el cual ayudamos a un software a realizar una tarea sin programación ni reglas específicas, normalmente se vinculan a redes neuronales y una red neuronal es un modelo que se puede entrenar para reconocer y repetir patrones. Todo esto representa un cambio en el proceso de la programación, Ya no es necesario dar órdenes o reglas a los sistemas para ejecutar una acción en concreto.
Una vez el sistema ha sido entrenado mediante el aprendizaje automático, este se centra en analizar los datos de esta nueva programación y repetirlos de forma automática hasta lograr el objetivo.
Y que tiene que ver TensorFlow en todo esto?
TensorFlow es una plataforma que facilita la creación y uso de modelos de aprendizaje automático. Lo que se busca es automatizar cientos de procesos y TensorFlow nos permite llegar a esta automatización, crear y entrenar modelos de Aprendizaje Automático con mucha facilidad y muy poco código gracias a sus APIs.
TensorFlow nace en Google en uno de sus laboratorios destinados a Inteligencia Artificial pero en la actualidad TensorFlow no solo lo utiliza Google y Youtube también autos autónomos, navegadores, diagnósticos médicos, reconocimiento de imágenes, etc etc.
TensorFlow es de código abierto y su programación es básicamente Python ya que se maneja como un modulo mas de este lenguaje.
TensorFloW Lite.
Impresionantes los resultados obtenidos con MicroPython y TensorFlow Lite usando Pico W y ESP32 sobre todo en programas que involucran reconocimiento de caras, voces o formas determinadas ideal para sistemas de seguridad movimientos de máquinas o sistemas robóticos.
También útil para sistemas de riego, control de temperaturas y en general todos los sistemas en donde pueden aparecer imprevistos, anticipar eventos futuros en base a acontecimientos pasados, encontrar soluciones posibles basados en estadísticas obtenidos mediante lectura de sensores.
Próximamente estaremos publicando ejemplos concretos para sistemas de control y manejo de datos.
Conclusiones.
Sin duda el mundo de la electrónica esta cambiando, evolucionando. El usuario solo percibe que las cosas funcionan mejor, que los sistemas son mas "espectaculares" mas "inteligentes" mas "humanos" sin embargo los que estamos detrás de bambalinas y pretendemos seguir siendo competitivos en el campo de la electrónica estamos obligados a avanzar. Nuevos procesadores, microcontroladores de varios núcleos, mas memoria, nuevos lenguajes y nuevas tecnologías están cambiando los viejos paradigmas en la programación para electrónica y esto nos guste o no presenta escenarios nuevos con nuevas formas.
Puede no interesarnos TensorFlow o MicroPython o Ajax o los procesadores de múltiples núcleos pero lo que si debe interesarnos es que todo esto marca el camino hacia donde vamos y lo que vendrá después y cuanto mas tardemos en subirnos a esta nueva ola tecnológica mas nos costará después.