domingo, 29 de agosto de 2021

La experiencia Machine Learning: mi certificación en TensorFlow

Mi certificación de TensorFlow (https://bit.ly/3zrWV1g).

Recién me he certificado en la que quizás es la librería más usada para construir y ejecutar modelos de Machine Learning: TensorFlow. El certificado, para ser más específico, lleva por nombre «TensorFlow Developer Certificate», el cual da evidencia de que un usuario de TensorFlow tiene las capacidades para integrar parte de la tecnología del Machine Learning en usos y aplicaciones informáticas. ¿Qué tecnología? Grosso modo: modelos basados en redes neuronales artificiales. Pero, mejor iré por partes.

Dentro del Machine Learning —Aprendizaje Automático en castellano—, existen modelos para abordar y estudiar fenómenos tanto lógicos como físicos, los cuales se denominan Redes Neuronales Artificiales ('redes neuronales' de aquí en delante). Pues bien, los usos de las redes neuronales como modelos se han potenciado en los últimos años, ya que estas permiten, con relativa eficiencia —y cuando están bien construidas—, predecir, clasificar y estimar comportamientos de un fenómeno donde o bien la aproximación tradicional presenta un error que no se puede desestimar, es complejo construir un nuevo  modelo, o prácticamente toda aproximación es inexistente. Téngase, por ejemplo, el problema de clasificar sí en una imagen existe un automóvil o no. Esto sería difícil abordarse con un modelo matemático (por la complejidad estructural y lógica que ello entraña), cosa que no sucede así con las redes neuronales. 

La principal desventaja de las redes neuronales es, sin embargo, que requieren ser «entrenadas» con datos para que puedan ser funcionales. En el ejemplo dado arriba, esto implicaría entrenar una red con una cantidad adecuada de imágenes en las que se clasifique sí existe o no un automóvil, y ello conlleva el tratamiento adecuado de datos, el etiquetado de los mismos, y el tipo de estructura de datos que habría de usarse para entrenar un modelo basado en redes neuronales con esas capacidades.

En el caso de TensorFlow, esta es una librería que incorpora modelos de redes neuronales para múltiples aplicaciones, entre las que se destacan las siguientes:
  • Problemas de regresión (predicción de uno o múltiples valores con datos de entrada).
  • Problemas de clasificación.
  • Problemas de visión por computadora.
  • Problemas de procesado de lenguaje natural.
  • Problemas de predicción con base en datos de series temporales.
  • Derivados y/o yuxtaposición de algunos de los anteriores.
Sí te lo preguntas, ¡Desde luego! ¡cada tipo de problema requiere una clase o subclase específica de red neuronal! Tómese el caso de problemas de visión por computadora, donde las «redes neuronales convolucionales» son la base para llevar a cabo la solución a estos. O en series temporales, por ejemplo, donde las «redes neuronales recurrentes» son también los cimientos en problemas de predicción de datos que varían en el tiempo. 

Pues bien, para acceder a la certificación de TensorFlow tuve que estudiar bastante. Mucho. Demasiado. Porque sí bien antes de hacer uso por primera vez de tal librería yo ya sabía lo que eran las redes neuronales en el lenguaje C++, debo decir que, entre otras cosas, de lejos había realizado la solución a un problema de visión por computadora, o había usado redes neuronales recurrentes para tratar de estimar, por ejemplo, sí un tweet es sarcástico o no. Tuve entonces que aprender los problemas sobre los que se usan algunas de las redes neuronales más modernas. Así que estudié, entre muchas otras cosas, desde la parte matemática de lo que son las redes neuronales convolucionales hasta los métodos que entrañan cada clase y subclase de problemas de series temporales con modelos autoregresivos de redes neuronales recurrentes. Así que desde hace alrededor de unos dos años he estado leyendo y estudiando sobre los problemas que el Machine Learning puede abordar con las redes neuronales artificiales, y muy particularmente usando TensorFlow. Sobre esto último, los materiales que más me ayudaron fueron los siguientes libros:
  1. Mathematics for Machine Learning (Deisenroth, Faisal y Soon, 2020)
  2. The hundred-page machine learning book (Burkov, 2019).
  3. Deep Learning (Goodfellow et al, 2016)
  4. Deep Learning with Python (Chollet, 2018).
  5. Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow, 2nd ed. (Géron, 2019).
  6. The Elements of Statistical Learning, Second Edition (Hastie, Tibshirani y Friedman, 2013).
Aunque debería mencionar múltiples cursos que tomé en Coursera, Udemy y YouTube, y que son fácilmente localizables con introducir "TensorFlow" en la casilla de búsqueda de cada una de esas plataformas, en lo personal éstos son secundarios, pues en mi experiencia el conocer bien la matemática detrás de cada modelo fue lo que me hizo más fácil comprender las clases, objetos, métodos y funciones que contiene TensorFlow como librería. Además, debo decir que es muy esencial conocer bien al menos Python intermedio para empezar a trabajar con TensorFlow (diría que hasta el correcto uso e implementación del paradigma Programación Orientada a Objetos). Porque de no saber ese lenguaje de programación, simplemente es muy difícil iniciar incluso con el estudio de la librería. Así que, antes de todo, vale la pena estudiar muy bien Python. 

Algunos de los libros que me apoyaron a estudiar para el examen de certificación.

Y con todo esto, ¿Debería de dar una recomendación para pasar el examen? Lo más sano es decir que no, porque «cada cabeza es un mundo», y en mi caso con conocer la matemática de los modelos de redes neuronales del Machine Learning fue lo que pienso me acercó más a la certificación. Por otro lado, en línea existen casos muy variados de experiencias con el examen que para nada mencionan aprender matemáticas (y quizás sea cierto para la mayoría de las personas). Pero, sí eres como yo, quizás mi único consejo es el siguiente: prepárate a leer, y no sólo los libros que acabo de mencionar arriba, sino blogs, artículos científicos, entradas y foros donde se reporte y comunique el uso de la librería TensorFlow. Pero sobre todo, trata de aplicarlo en algún problema «muy tuyo» donde realmente aprendas a tratar datos que sólo tu conoces, para posteriormente crear con ellos un modelo de red neuronal en dicha librería y así puedas realmente practicar sobre un caso real. 
Insignia de TensorFlow.

Para cerrar esta entrada, lo siguiente: certificarme en TensorFlow era un reto que me propuse hace casi dos años, desde que se anunció el examen en un blog de Google. Yo trabajaba redes neuronales sólo con C++, y en realidad para usos muy particulares. Brincar a construir y aplicar modelos de esa librería, y además hacerme del conocimiento de las herramientas que usan hoy día muchos tecnólogos y científicos del Machine Learning, fue toda una experiencia que tuve y disfruté cada momento (incluso en una de mis publicaciones reporto el uso de TensorFlow). Así que este mes he estado muy feliz y no vislumbro sino el crecer aún más y aplicar dicho conocimiento a mis investigaciones en el futuro. Quién sabe, quizás incluso hasta construya un modelo de red neuronal sui generis a nuestra línea de investigación: el modelado constitutivo de materiales para distintos regímenes de respuesta no-lineal en materiales avanzados.

Alejandro

No hay comentarios.:

Publicar un comentario