Como vimos en la introducción al machine learning, el aprendizaje de máquinas se divide en cinco categorías principales, las cuales vamos a revisar aquí con más detalle, donde hablaremos sobre el objetivo de cada tipo de aprendizaje, su funcionamiento, y algunos ejemplos ilustrativos.
¿Qué necesitas para esta exploración?
Tentempié: algún alimento para amenizar la travesía
Debido a que es un tema en el que no ahondaremos en los conceptos de forma muy técnica, solo es necesario tener presente el contexto sobre qué es el machine learning, y tal vez algún aperitivo.
Tipos de machine learning
Primero recordemos los tipos de machine learning, los cuales se diferencian el uno del otro de acuerdo a las características de los datos que pretendemos procesar, a la clase de resultados esperados, y la forma de conducir a estos.
El aprendizaje de máquinas se puede dividir en cuatro divisiones principales:
- Aprendizaje supervisado (supervised learning).
- Aprendizaje no supervisado (not supervised learning).
- Aprendizaje semi-supervisado (semi-supervised learning).
- Aprendizaje por refuerzo (reinforcement learning).
- Aprendizaje auto-supervisado (auto-supervised learning).
Echemos un vistazo a cada uno.
Aprendizaje supervisado
Este tipo de machine learning es muy frecuente en la industria e investigación científica actualmente.
El aprendizaje supervisado se define como una forma de aprendizaje automático que consiste en generar modelos matemáticos capaces de hacer estimaciones dado un conjunto de datos etiquetados entre los que se pueden distinguir dos clases: de entrada y de salida.
Las entradas suelen referirse a las «características o atributos» de los objetos que constituyen al conjunto de datos utilizado, mientras que las salidas son el objetivo del algoritmo de aprendizaje supervisado (los valores a predecir), y se suelen denotar como «etiquetas«.
Cuando se dice que un conjunto de datos está etiquetado, se refiere a que se señala qué porción de los datos son las entradas y cuáles son las salidas, y con ello cumplir alguna de las siguientes dos tipos de tareas: regresión y clasificación.
Son varios elementos a considerar, por lo que simplificaremos lo dicho con un par de ejemplos.
Ejemplos de aprendizaje supervisado
A continuación, se ilustra el aprendizaje supervisado mediante ejemplos de tareas de regresión y clasificación:
- Regresión: las tareas de regresión tratan sobre dotar a un modelo de la capacidad de predecir cantidades específicas que reflejan algo sobre el conjunto de datos. Un ejemplo de esto es entrenar un modelo que realice estimaciones sobre el precio de una computadora de acuerdo a sus características. En este caso, las propiedades de las computadoras (RAM, almacenamiento, entre otras) son las entradas para el modelo, mientras que la salida es el precio, el cual es el objetivo a predecir.
- Clasificación: las tareas de clasificación consisten en asignar uan categoría a cada conjunto de entradas. Un ejemplo puede ser el de un modelo entrenado para clasificar tipos de estrellas (donde el tipo de estrella es la salida) con base en sus propiedades físicas (las cuales son las entradas). Se dice, entonces, que dadas las entradas o características de las estrellas, el modelo las clasifica por su tipo.
Con esto queda claro que este tipo de algoritmos se alimentan de datos etiquetados (es decir, señalando cuáles son las entradas y salidas) para satisfacer tareas de regresión o clasificación.
En algún punto veremos todo lo relacionado al aprendizaje supervisado en una lección exclusiva, donde ejecutaremos un código de Python y hablaremos sobre sus definiciones matematicas.
Aprendizaje no supervisado
El aprendizaje no supervisado es el hermano misterioso del aprendizaje supervisado, cuya misión, aunque relativamente similar, se separa de manera marcada debido a las características de los datos a procesar y los métodos utilizados para hacerlo.
Su objetivo consiste en generar modelos que identifiquen patrones en conjuntos de datos no etiquetados, es decir, en los que no especificamos salidas. Solemos utilizar este tipo de machine learning para estructurar nuestros datos: resumir o explicar características intrínsecas de forma automática.
Exacto, en este caso, utilizamos un algoritmo de aprendizaje para acomodar las piezas, las cuales representarían nuestro conjunto de datos, del que buscamos obtener algún patrón.
La mayoría de los modelos de aprendizaje no supervisado pueden resumirse en los siguientes cuatro tipos:
- Clustering o agrupamiento: tiene como objetivo acumular el conjunto de datos en grupos de acuerdo con sus similitudes.
- Reducción de dimensionalidad: tiene como objetivo reducir las dimensiones de los datos, ayudándonos a filtrar y mantener aquellos que sean matemáticamente más relevantes. En este caso, encontramos técnicas como el análisis de componentes principales (PCA), el análisis de componentes independientes o la factorización de matrices no negativas.
- Detección de valores atípicos: tiene como objetivo encontrar eventos inusuales que distinguen una parte de los datos del resto según determinados criterios.
- Detección de novedades: se ocupa de los casos en los que se producen cambios en los datos.
En este momento, probablemente estos algoritmos no tengan mucho sentido para ti, pero luego los aprenderás con más detalle. Mientras tanto, veamos un ejemplo de aprendizaje no supervisado explicando cómo funciona un algoritmo de clustering.
Ejemplo de aprendizaje no supervisado
El clustering, agrupamiento, clusterización o análisis de grupos, es un proceso que consiste en agrupar datos similares, es decir, reunir los datos en distintos conglomerados, los cuales se bautizan como grupos o clusters, de manera que las agrupaciones se realicen generando los siguientes resultados:
- Los datos dentro de un grupo son similares.
- Los datos de diferentes grupos son diferentes.
Así es, la agrupación se puede ilustrar de varias formas.
Para visualizar el objetivo del aprendizaje no supervisado utilizaremos un ejemplo de este tipo, utilizando un algoritmo popular llamado k-medias.
El caso es el siguiente: tenemos un conjunto de datos de 1000 estrellas, de las cuales conocemos tres características:
- Su distancia a la tierra.
- Su brillo.
- Su color.
La meta es agrupar a las estrellas de acuerdo a estas propiedades.
Así es como luciría el gráfico de los puntos que buscamos agrupar, es decir, de las estrellas:
Una vez que utilizamos nuestro algoritmo de clusterización, el resultado es el siguiente:
En el mapeo final, se obtienen tres grupos distintos de estrellas acumulados por las semejanzas en sus atributos. De esta forma obtenemos datos etiquetados a partir de información que no teníamos previamente catalogada. Este es un ejemplo de cómo obtenemos estructuras a través de la identificación de patrones en un conjunto de datos mediante aprendizaje no supervisado.
El código de este ejemplo también puede ser consultado y utilizado en el laboratorio, el cual se explicará y desarrollará en futuras expediciones.
Aprendizaje semi-supervisado
El aprendizaje semi-supervisado es un tipo de aprendizaje de máquinas menos común. Se trata de una combinación del aprendizaje supervisado y no supervisado, una especie de fusión que permite abordar ciertas problemáticas particulares.
El aprendizaje semi-supervisado es un tipo de machine learning que consiste en la creación de un modelo de aprendizaje automático que es entrenado con montículos de datos combinados: grandes cantidades de datos no etiquetados y datos etiquetados restantes.
Ejemplo de aprendizaje semi-supervisado
El aprendizaje semi-supervisado es útil principalmente cuando se tienen grandes cantidades de datos no etiquetados, y pocos volúmenes de datos etiquetados. Muchas veces el etiquetado requiere de intervención manual, por lo que se opta por este tipo de modelos para la optimización de tiempos de trabajo.
Un ejemplo de esto es la clasificación del contenido de una página web. En vez de esperar a que un equipo de personas etiqueten las más de 1.8 mil millones de páginas web existentes, los motores de búsqueda como Google utilizan páginas web ya clasificadas, y combinan esta información con todas las demás webs no clasificadas, generando una especie de auto-entrenamiento para obtener un algoritmo de clasificación de contenido a partir de datos etiquetados y no etiquetados.
Aprendizaje por refuerzo
El aprendizaje por refuerzo es un método de aprendizaje de máquinas cuyo objetivo es encontrar las acciones adecuadas en una situación determinada que maximizan la probabilidad de obtener una recompensa específica.
Este tipo de algoritmos no reciben ejemplos de resultados (datos etiquetados) como en el aprendizaje supervisado, sino que debe descubrirlos mediante un proceso de prueba y error. A través de esto, la computadora decide qué acción tomar en una situación específica, la cual no sólo afecta a la recompensa inmediata, sino que también tiene un impacto en la recompensa en todos los pasos de tiempo posteriores.
Ejemplo de aprendizaje por refuerzo
Tomaremos como ejemplo al histórico AlphaGo, el primer programa informático capaz de derrotar a un jugador de Go humano profesional, el primero en derrotar a un campeón mundial de Go, y posiblemente el jugador de Go más fuerte de la historia (el Go es un juego de mesa de origen chino más complejo que el ajedrez).
¿Cómo se logró esto?, utilizando técnicas de aprendizaje por refuerzo. AlphaGo aprendió jugando contra sí mismo miles de veces, aprendiendo de cada error cometido.
En este caso, la computadora debió aprender a tomar una posición del tablero de entrada, y producir una jugada fuerte como salida. La recompensa es la victoria, y a pesar de no obtenerse después de un movimiento, esta es considerada a largo plazo, por lo que el algoritmo busca realizar el mejor movimiento en cada turno para volverse en ganador de la partida.
AlphaGo hizo historia venciendo al campeón mundial de Go utilizando una técnica novedosa de aprendizaje reforzado. Este hecho se recogió en un excelente documental que durante algún tiempo fue exhibido en Netflix. Aquí abajo te dejaré la URL al video, aunque está en inglés y eres libre de buscarlo subtitulado al español:
Denle una oportunidad, verán que está entretenido 👀
Aprendizaje auto-supervisado
Finalmente, pero no menos importante, está el aprendizaje auto-supervisado, el cual es una técnica relativamente nueva y en rápida evolución dentro del campo del machine learning. El aprendizaje auto-supervisado un tipo de machine learning que consiste en modelos que aprenden mediante algoritmos que generan sus propias etiquetas a partir de datos no etiquetados, tomando como punto de partida la definición y ejecución de una tarea de pretexto. La tarea de pretexto es una actividad inicial a ejecutar, diseñada para que el modelo aprenda características útiles de los datos, para posteriormente realizar tareas más específicas.
Ejemplo de aprendizaje auto-supervisado
Para comprender cómo operan este tipo de algoritmos, abordemos un ejemplo dado en el ámbito de la visión por computadora (procesamiento de imágenes). En este caso, se plantea la siguiente tarea de pretexto: rotación de imágenes. Esta servirá para enseñar a un modelo a entender y procesar imágenes de una manera que sea útil para otro tipo de tareas, como la clasificación de imágenes o detección de objetos.
Veámoslo paso a paso:
Paso 1: Tarea de Pretexto
- Primero se define la tarea de pretexto, la cual es la rotación de imágenes. Después, se procede a tomar un conjunto de imágenes no etiquetadas para alimentar al modelo. Para llevar a cabo la tarea de pretexto, cada imagen se rota en ángulos predeterminados (por ejemplo, 0°, 90°, 180°, y 270°), y a cada versión rotada de las imágenes la máquina le asigna una etiqueta que corresponde al ángulo de rotación aplicado.
Paso 2: Entrenamiento del Modelo
- Una vez que se tienen las imágenes auto-etiquetadas, se utiliza un modelo de aprendizaje supervisado como una red neuronal convolucional para procesar las imágenes y aprender a predecir el ángulo de rotación de una imagen dada.
Paso 3: Transferencia del Aprendizaje
- Una vez que el modelo es capaz de predecir con precisión el ángulo de rotación de ciertas imágenes, se puede «partir» la red neuronal para tomar solo una porción de esta que se pueda utilizar como un extractor de características para nuevas tareas. Si no estás familiarizado con las redes neuronales, debes entender que uno de estos algoritmos está compuesto por varias capas de procesamiento, por lo que podemos concebir que la red en su conjunto ha aprendido a determinar ángulos de imágenes, pero las primeras capas se encargan apenas de extraer algunas características de las imágenes para llevar a acabo su tarea. Esta parte de la red se puede utilizar para entrenar un nuevo modelo en una tarea supervisada específica, como la clasificación de imágenes.
De esta forma el modelo puede aprender a reconocer características destacables en las imágenes a través de la ejecución de su primer tarea de pretexto: la de rotación. Al necesitar distinguir entre diferentes ángulos de rotación, el modelo debe prestar atención a los detalles visuales y estructurales de las imágenes, como bordes, formas, texturas, entre otros patrones generales. Esta capacidad para discernir y entender los componentes visuales puede ser aprovechada para ejecutar diversas tareas de análisis de imágenes que dependen de la capacidad de identificar y clasificar visualmente objetos y sus características distintivas.
Esto es todo cuanto los tipos de aprendizaje de máquinas, recuerda que lo entenderás mucho mejor conforme a avancemos en el curso.