You are opening our Spanish language website. You can keep reading or switch to other languages.
21.09.2022
8 minutos de lectura

Los primeros pasos en Machine Learning: ¿por dónde empezar?

Muchas veces la Inteligencia Artificial (IA) y, más específicamente, las técnicas de Machine Learning (ML) pueden resultar abstractas y complejas de poner en práctica si uno no cuenta con experiencia previa.
Los primeros pasos en Machine Learning: ¿por dónde empezar?
Autores
Juan Pablo Federico

Sin embargo, en realidad, el mayor impedimento que he notado entre colegas dedicados al desarrollo de Software en otras áreas es la incertidumbre sobre cómo arrancar y qué conceptos aprender en un comienzo. Esto se debe a la amplia variedad de conceptos y tecnologías que existen en el mundo.

A fin de ayudar a esclarecer dudas respecto de estas cuestiones y traer un poco de luz a los iniciantes, vamos a fijar ciertas pautas y desarrollar una pequeña guía -basada en mi experiencia- sobre algunas claves que se deben tener en cuenta al momento de dar los primeros pasos en ML.

En primer lugar, hay que destacar que tener conocimiento y experiencia como desarrollador facilita la introducción a la aplicación de la IA como enfoque de resolución de problemas; ya sea para optimizar soluciones de sistemas existentes o para integrarla en nuevos desarrollos.

Asimismo, es una ventaja tener un background en matemática y estadística; sobre todo para comprender mejor el funcionamiento subyacente de las redes neuronales (modelos matemáticos complejos y muy utilizados en Machine Learning y Deep Learning), por ejemplo, como así también para entender la influencia de los datos de entrada en el comportamiento del modelo y tener una lectura más acertada de su desempeño.

Respecto del conocimiento técnico, es deseable contar con: manejo de datos estructurados, semi-estructurados y no estructurados, conocimiento de estructuras de datos, algoritmos de búsqueda, ordenamiento y optimización. A su vez, se recomienda tener conocimientos previos programando en C/C++, Python y R (multiparadigma), los lenguajes más utilizados en Machine Learning.

En el campo de la matemática y la estadística, resulta conveniente tener conocimientos sobre algebra lineal; teoría de la probabilidad, cálculo, análisis numérico y matemática discreta, entre otros conceptos relacionados.

En lo que se refiere específicamente a Python, el lenguaje más utilizado en la Ciencia de Datos y la IA, existen diferentes frameworks y librerías para la manipulación de datos, el entrenamiento, la validación y la prueba de modelos:

  • Scikit-learn: posiblemente la mejor librería para principiantes en Machine Learning. Posee una gran variedad de algoritmos, datasets y modelos pre-entrenados que se pueden utilizar para manipular datos; realizar un análisis de datos y modelos, y generar métricas, entre otras funciones que facilitan el aprendizaje en esta área.
  • Keras: biblioteca de redes neuronales que provee una API de alto nivel escrita en Python para la creación de modelos de ML.
  • TensorFlow: framework de código abierto para Machine Learning y Deep Learning (DL) que permite la construcción, el entrenamiento y la evaluación de modelos basados en redes neuronales de múltiple naturaleza. Este framework también integra Keras en su API de alto nivel a partir de Tensorflow 2, mediante tf.keras.
  • PyTorch: framework de código abierto para realizar tareas de ML mediante Python o C++. Posee una depuración sencilla y, al igual que TensorFlow, posee integración y soporte en las principales plataformas Cloud que mencionaremos más adelante.
  • Matplotlib: biblioteca utilizada para la visualización de datos mediante diversos gráficos, con múltiples funciones y gran facilidad de uso. Es una herramienta sumamente útil para analizar la composición, distribución y patrones contenidos en nuestros datos, como así también para proveer de forma ilustrativa la estructura completa y detalles de los datos a grupos de trabajo, clientes u otras partes interesadas.
  • Pandas: paquete de código abierto muy popular y desarrollado en Python. Se especializa principalmente en el manejo y análisis de estructuras de datos con un manejo eficiente de la memoria. Permite realizar múltiples funciones y operaciones, visualizar datos de manera sencilla y exportarlos en diversos formatos según la necesidad. Sin dudas, se trata de una librería fundamental para cualquier proyecto de Machine Learning que tenga una gran cantidad de datos.

Machine Learning en la nube

Hoy en día es muy común utilizar servicios de terceros que brindan recursos de infraestructura bajo demanda (IaaS), aplicaciones de Software de terceros mediante internet (SaaS) o entornos para crear, alojar y desplegar aplicaciones (PaaS). Este tipo de servicios se está aplicando ampliamente a Machine Learning a raíz de las potenciales ventajas que presenta su contratación.

Por lo general, entrenar modelos complejos de Machine Learning requiere procesadores y/o GPUs muy potentes para lograr resultados aceptables con datasets grandes y modelos profundos.

La mayoría de los principales proveedores de servicios de Machine Learning en la nube permite gestionar la carga de trabajo con múltiples GPUs que se ofrecen para utilizar bajo demanda. Además, se ofrecen entornos y servicios de Software que facilitan la creación de los datasets necesarios; etiquetado manual y automático, evaluación, versionado, despliegue y mantenimiento de los modelos, entre otras funciones.

En concreto, esta colección de servicios en la nube permite mejorar y facilitar múltiples aspectos del desarrollo durante todo el ciclo de vida en un proyecto de Machine Learning. Es muy recomendable utilizarla a fin de contar con mayores recursos al iniciar un proyecto de esta naturaleza, además de ser una experiencia elemental para todo ingeniero de Machine Learning.

Existen múltiples plataformas que ofrecen servicios gratuitos, bajo versiones de prueba y también de pago. Las principales son: Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure, IBM Watson.

Cuatro claves para dar los primeros pasos en Machine Learning

1. Datos en primer lugar.

Hay que tener en cuenta que la importancia de los datos (recopilación, análisis, pre-procesamiento) es incluso mayor a la importancia de el/los modelo/s. Es fundamental hacer un buen análisis del set de datos que utilizaremos para nuestro modelo, así como también evaluar la representatividad de los datos de entrenamiento y validación respecto de los datos reales para minimizar el sesgo.

A su vez, los datos que tenemos (y los que no) nos proporcionan las directrices necesarias para utilizar un tipo de modelo que se adapte al dominio (eligiendo entre enfoques de aprendizaje supervisado, no supervisado o por refuerzo).

2. Identificación de las áreas de aplicación.

Identificar áreas que sean de interés, diferentes campos o escenarios de preferencia donde se pueda aplicar Machine Learning resulta esencial. Si bien muchos conceptos son comunes para todas las áreas de aplicación, algunos resultan muy específicos; por lo que es recomendable comenzar con un área y aplicar los conceptos generales de manera práctica.

Algunas de estas áreas de aplicación pueden ser:

  • Visión computacional
    • Reconocimiento de imágenes
    • Reconocimiento biométrico (por ejemplo: reconocimiento facial)
  • Procesamiento del lenguaje natural
    • Análisis/resumen de textos
    • Generación de textos
    • Traducción
    • Identificador de idiomas
  • Análisis predictivo
    • Prevención de fraudes
    • Predicción del precio de un activo
  • Procesamiento de audio
  • Análisis de datos/extracción de características
  • Y muchas otras aplicaciones... la imaginación es el límite.

3. Determinación de la metodología de aprendizaje.

Es indispensable establecer una metodología de aprendizaje en el campo elegido. Este punto es crucial debido a que -si bien todos ellos están relacionados al Machine Learning- la naturaleza de los datos varía de manera considerable entre imágenes, audio y datos estructurados, por ejemplo.

Esto hace que la manipulación de dichos datos (el “corazón” del modelo en sí mismo) sea diferente en cada caso, al igual que la estructura de los modelos a utilizar y la interpretación de los datos de entrada y salida -junto con el análisis del sesgo-, el ruido y el “error” en los datos.

4. Extrapolación de los conceptos aprendidos.

Es muy importante extrapolar los conceptos aprendidos en otras áreas de aplicación. Si bien cada área en sí misma es distinta, la experiencia y conocimiento previo nos proveerá de herramientas esenciales para saber con qué problemas podemos enfrentarnos y qué procedimientos aplicar para su resolución.

Cuantas más áreas de ML conozcamos, mejor sabremos identificar qué tipo de aprendizaje y modelo se adaptará más a la naturaleza del problema y a los requerimientos en cuestión.

Por último, cabe destacar que no todos los problemas deben (o pueden) ser resueltos aplicando Machine Learning. Una de las fases de análisis preliminares es determinar si vale la pena -o no- utilizar este tipo de soluciones en contraste con algoritmos de programación tradicionales. Estas respuestas se deberían determinar mediante el conocimiento del dominio del problema y el conocimiento de ML adquirido.

Conclusiones

Este artículo está recomendado para aquellas personas que han tenido experiencia en otras áreas de tecnología y quieren aproximarse a la Inteligencia Artificial y al Machine Learning. En este marco es importante entender que, al igual que ocurre en otras áreas como Frontend o Backend en general, la variedad de conceptos y aplicaciones es muy amplia y su aprendizaje es gradual.

Al comenzar con ML resulta de gran importancia tener presentes las premisas mencionadas -entre otras de diversos autores- para que este aprendizaje gradual tenga un rumbo idóneo hacia lo que esencialmente buscamos obtener aplicando Machine Learning: la transformación de datos de entrada en nuevos datos de salida, cuyos patrones representen el dominio del problema real de la mejor forma posible.

Como ya se comentó anteriormente, una de las premisas corresponde a minimizar el sesgo y el error en cualquier caso. No es útil tener un modelo sumamente preciso en relación con los datos de entrada si no es acertado y/o no proporciona la información correcta con datos no conocidos por el modelo.

En este enorme (pero interesante) mundo, es recomendable complementar con una “hoja de ruta” sobre los conceptos y áreas de aplicaciones a conocer. Es posible crear una propia mediante la investigación y priorizando las preferencias personales, o utilizar una existente. Recomiendo ésta.

Libros y blogs recomendados

Más buscadas
1 3
Suscribirse al newsletter
Suscríbete a nuestro newsletter para no perderte ningún evento, anuncio o vacante disponible