Introducción Machine Learning y diferencias con IA & Deep Learning

Primera toma de contacto con eso que llaman Inteligencia Artificial, o a veces también Machine Learning, o espera… ¿y el Deep Learning?

Como habrás comprobado en los últimos años, ha habido un gran crecimiento del uso de estos términos a pesar de existir desde hace mucho tiempo. Ha sido tal el uso, que muchas veces se confunden unos conceptos con otros; porque por si todavía no lo sabes, son tres significados diferentes aunque relacionados entre sí.

El más general de todos y que en su propio significado abarca a los otros dos, es la Inteligencia Artificial (IA). La IA más que una técnica a aplicar, se define como una rama de la ciencia (en concreto de la informática) que hace referencia a la capacidad de una máquina para resolver un problema tal y como lo haría una persona. Trata de resolver una situación de manera coherente y lo más acertada posible en relación al entorno en que se desarrolla. Para que veas que existe desde hace mucho tiempo, ¿quién no ha jugado nunca al ajedrez o a las damas contra una máquina? Sin embargo, ¿será igual de buena esa máquina intentando resolver otro problema en un entorno diferente? Esta capacidad de adaptación de un entorno a otro es la mayor complicación que la IA puede encontrar, además de ser lo más lejano a nuestro alcance por el momento.

Si además de resolver un problema como lo haría una persona, queremos que la máquina aprenda por sí sola, entonces estaríamos hablando del segundo y más sonado término: Machine Learning (ML), o lo que es lo mismo, Aprendizaje Automático. Puesto que considero que es la parte más importante en la que uno debe adentrarse tras tener claros los tres conceptos que estamos tratando, profundizaremos en ello un poco más adelante.

Por último, el Deep Learning (DL) o Aprendizaje Profundo es una parte concreta del Machine Learning. Algunos artículos consideran que el Deep Learning es lo más aproximado a una simplificación práctica de los procesos biológicos que suceden en nuestras neuronas, todo mediante la extracción de características abstractas en cada capa. Otras fuentes consideran el Deep Learning como la técnica más flexible actual, pero también posiblemente, la más exigente en consumo de recursos para el aprendizaje automático. Sin embargo en lo que toda la comunidad de IA coincide, es que es un proceso capaz de tomar decisiones acertadas y muy específicas sólo cuando la cantidad de datos es suficientemente grande, pero todavía estando lejos de los procesos reales del cerebro humano.

Una vez aclarado que la Inteligencia Artificial, el Machine Learning y el Deep Learning son términos relacionados entre sí, que cada uno engloba el siguiente respectivamente, y que a pesar de ello son significados diferentes, podemos adentrarnos un poco más en el Machine Learning.

MACHINE LEARNING

En una máxima simplificación del proceso para aplicar ML podríamos decir que consiste en tomar un conjunto de datos, introducirlo como entrada en uno o varios modelos de ML para entrenarlo y comprobar que el resultado es coherente con el objetivo que pretendemos.

Sin embargo, no es tan sencillo como ha podido parecer. Estudiemos brevemente los pasos a seguir.

PREPARACIÓN DE LOS DATOS

Dado que la información es poder, pararnos a ver los datos, entender qué tenemos y cómo están las variables relacionadas entre sí, nos proporcionará una gran ventaja en los próximos pasos. Estas son algunas de las técnicas que se emplean para la limpieza y preparación del set de datos seleccionado:

  • Representación de las variables en distintas gráficas. Esto puede sernos de gran utilidad para tener una noción de los valores de cada variable. Con ello podemos detectar posibles fallos en los datos como valores negativos en variables que no lo admiten, encontrar outliers, ver si las variables siguen una distribución normal o no… En resumen, información que nos pueda ser útil para su comprensión.
  • Detección de valores nulos. Habrá veces que sea conveniente sustituirlos por valores calculados como la media de los demás de esa misma columna, o bien tener en cuenta otras variables para conseguir una media seccionada. Quizá sea mejor introducir un nuevo valor por defecto, o incluso puede que convenga dejarlos nulos tal y como venían. De nuevo, todo ello será más sencillo si conocemos bien los datos.
  • Reducción del número de variables. Posiblemente existan variables que no aporten información nueva al conjunto, por lo que podríamos prescindir de ellas. O bien, que su información pueda ser exactamente deducible a partir de otras variables. Por el contrario, a pesar de aportar un mínimo de información extra, quizá nos sea conveniente perder esa aportación para evitar un sobre ajuste en el modelo y que la respuesta del mismo sea más sencilla o apropiada. En cualquier caso, para detectar estas posibles variables que podrían ser eliminadas, sería posible hacerlo tanto de manera manual (si no son demasiadas las variables de entrada), o de manera automática con ayuda de otros modelos creados con este fin.
  • Regularización.En lugar de reducir el número de variables, este método consiste en reducir los valores o los rangos de los parámetros. Pretende controlar la complejidad del algoritmo añadiendo un término de penalización en la función objetivo del modelo. Suele usarse cuando tenemos muchas variables de entrada y cada una de ellas aporta información útil para predecir la variable de salida, y/o cuando nuestro modelo se adapta de manera casi perfecta a la muestra de entrada, pero empeora enormemente con las nuevas predicciones, es decir, cuando no es capaz de generalizar correctamente.
  • Crear variables nuevas a partir de los datos. Lo explicamos mejor con un ejemplo. Supongamos que en los datos tenemos la columna “países” que únicamente toma los valores “España”, “Francia” y “Portugal”. En lugar de añadir la variable “países” de tipo String, podríamos añadir las variables “país_España”, “país_Francia”, “país_Portugal” de tipo binarias, es decir, que tomen los valores uno o cero en función de si la entrada pertenece a ese país o no respectivamente. Siempre todo dependerá del modelo que se vaya aplicar.

Como resultado, me atrevería a decir que esta es la parte más compleja del proceso: conseguir una buena calidad del dato a partir del conjunto escogido. Cuanto mejor calidad, conocimiento y limpieza de los mismos, mejores resultados podremos esperar. Merece la pena emplear tiempo en esta parte para evitar, como se dice en este ámbito, “Garbage in, garbaje out”.

ELECCIÓN DEL MODELO

Esta parte no trata de inventar un nuevo modelo matemático, sino de entrenar modelos que ya existen pero que aprenden de una manera u otra en función de los datos que reciben como entrada. Puesto que existen infinidad de modelos, vamos a explicar los principales tipos que hay y nombraremos aquellos más comunes.

Por otra parte, aunque no sea estrictamente necesario conocer las matemáticas que aplican los modelos de Machine Learning internamente, sí que pueden ser de gran ayuda para decidir con mayor rapidez y precisión el modelo (o los modelos) que mejor se adapte a nuestro conjunto de datos y a nuestras necesidades.

Principalmente existen tres tipos de algoritmos de Machine Learning:

  • Aprendizaje supervisado: Toman como entrada una muestra de datos de los que se conoce el resultado a predecir. Con ella se entrena el algoritmo que trata de identificar patrones y encontrar un modelo de predicción, el cual habrá que ir corrigiendo en caso de que las predicciones no se realicen correctamente. Algunos ejemplos de este tipo de algoritmos serían los árboles de decisión, los algoritmos de clasificación de Naive Bayes, regresión por mínimos cuadrados, regresión logística, SVM (Support Vector Machines)…
  • Aprendizaje no supervisado: Los algoritmos de este tipo se encargan de organizar y clasificar los datos en función de las propiedades que haya conseguido detectar el modelo a raíz del estudio de las relaciones y correlaciones de los datos. Algunos ejemplos serían los algoritmos de clustering, análisis de componentes principales, descomposición en valores singulares…
  • Aprendizaje por refuerzo: Dado un objetivo, este tipo de algoritmo debe intentar alcanzarlo mediante una serie de acciones definidas. Así el modelo se entrena mediante recompensas asociadas a esas acciones, y posteriormente aprende también de sus errores ya que se retroalimenta con sus propios resultados. Será con múltiples entrenamientos como el algoritmo irá poco a poco optimizándose para alcanzar su meta de la mejor manera posible.

COMPROBACIÓN DEL RESULTADO

Tras realizar múltiples ejecuciones del modelo para afinar su aprendizaje, se deberá realizar un análisis del resultado (análisis de errores) y estudiar cómo de buenas o malas han sido las predicciones o los resultados del modelo empleado.

Probablemente el modelo que estemos usando no sea el adecuado y haya que usar uno más complejo, o incluso otro más sencillo. Otra opción puede ser que se necesite más cantidad de datos para aprender, o más variables de las que sacar más relaciones o información, o ambas cosas.

Es por ello, que si no conseguimos alcanzar nuestro propósito como esperábamos, quizá deberemos regresar al primer paso dónde hicimos énfasis en la importancia que tiene conocer detalladamente la muestra de datos obtenida.

HERRAMIENTAS PARA COMENZAR

No quería acabar sin nombrar algunas de las herramientas más comunes que se suelen utilizar para comenzar a “trastear” en Machine Learning.

En primer lugar, si no se tiene un conjunto de datos del que partir, en Internet hay algunos preparados para descargar como pueden ser: pasajeros del Titanic, mnist, mnist fashion y clasificación de plantas según sus pétalos.

Después de encontrar un set de datos, lo más recomendable para entender cómo funciona todo es usar los notebooks online. Tanto Jupiter como Google Colaboratory o R-Studio son bastante útiles ya que no requieren ninguna instalación previa.

Respecto al lenguaje de programación,  existe y existirá un continuo debate sobre si utilizar Python, R o Matlab, aunque que para empezar cualquiera es perfectamente válido.

Finalmente, en caso de que el lenguaje que se escoja sea Python, estas son algunas de las librerías más útiles que serán de gran ayuda: Numpy, Pandas, Matplotlib, Seaborn, TensorFlow, NLTK, Sklearn…

CONCLUSIÓN

Recapitulando el contenido expuesto en esta entrada, recordemos que el Deep Learning es una parte concreta del Machine Learning, y este a su vez se incluye en el ámbito de la Inteligencia Artificial.

Por otro lado, también hemos visto que adentrarse en el mundo del Machine Learning no es tan sencillo como podía parecer ya que requiere prestar mucha atención a los detalles y al conocimiento de los datos que vayamos a usar en nuestro modelo. Y no solo hay que «mimar» los datos, sino todo el proceso de principio a fin: desde su preparación, pasando por la elección del modelo y su entrenamiento, hasta la valoración de si los resultados van acorde con el objetivo que se deseaba alcanzar desde el principio o no.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*
*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.