¿Qué es el aprendizaje automático?
Claro, la teoría real detrás de modelos como ChatGPT es ciertamente muy difícil, pero la intuición subyacente detrás de Machine Learning (ML) es, ¡bueno, intuitiva! Entonces, ¿qué es ML?
El aprendizaje automático permite que las computadoras aprendan usando datos.
Pero ¿qué significa esto? ¿Cómo usan los datos las computadoras? ¿Qué significa que una computadora aprenda? Y antes que nada, ¿a quién le importa? Comencemos con la última pregunta.
Hoy en día, los datos están a nuestro alrededor. Por lo tanto, es cada vez más importante usar herramientas como ML, ya que puede ayudar a encontrar patrones significativos en los datos sin estar programado explícitamente para hacerlo. En otras palabras, al utilizar ML, podemos aplicar algoritmos genéricos a una amplia variedad de problemas con éxito.
Hay algunas categorías principales de aprendizaje automático, y algunos de los tipos principales son el aprendizaje supervisado (SL), el aprendizaje no supervisado (UL) y el aprendizaje por refuerzo (RL). Hoy solo describiré el aprendizaje supervisado, aunque en publicaciones posteriores espero dar más detalles sobre el aprendizaje no supervisado y el aprendizaje por refuerzo.
Speedrun SL de 1 minuto
Mira, entiendo que es posible que no quieras leer este artículo completo. En esta sección, te enseñaré los conceptos básicos (¡que para mucha gente es todo lo que necesitas saber!) antes de profundizar en las secciones posteriores.
El aprendizaje supervisado implica aprender a predecir alguna etiqueta usando diferentes características.
Imagine que está tratando de encontrar una manera de predecir el precio de los diamantes utilizando características como quilates, corte, claridad y más. Aquí, el objetivo es aprender una función que toma como entrada las características de un diamante específico y genera el precio asociado.
Así como los humanos aprenden con el ejemplo, en este caso las computadoras harán lo mismo. Para poder aprender una regla de predicción, este agente de ML necesita “ejemplos etiquetados” de diamantes, incluidas sus características y su precio. La supervisión viene desde que te dan la etiqueta (precio). En realidad, es importante considerar que sus ejemplos etiquetados son realmente ciertos, ya que es una suposición de aprendizaje supervisado que los ejemplos etiquetados son “verdad básica”.
Bien, ahora que hemos repasado los conceptos básicos más fundamentales, podemos profundizar un poco más en toda la canalización de ciencia de datos/ML.
Configuración del problema
Usemos un ejemplo extremadamente identificable, que está inspirado en este libro de texto Imagina que estás varado en una isla, donde el único alimento es una fruta rara conocida como “Justin-Melon”. Aunque nunca hayas comido Justin-Melon en particular, has comido muchas otras frutas y sabes que no quieres comer frutas que se hayan echado a perder. También sabe que, por lo general, puede saber si una fruta se ha echado a perder observando el color y la firmeza de la fruta, por lo que extrapola y asume que esto también es válido para Justin-Melon.
En términos de ML, usó el conocimiento previo de la industria para determinar dos características (color, firmeza) que cree que predecirán con precisión la etiqueta (si el Justin-Melon se ha estropeado o no).
Pero, ¿cómo sabrás qué color y qué firmeza corresponde a que la fruta esté mala? ¿Quién sabe? Solo necesitas probarlo. En términos de ML, necesitamos datos. Más específicamente, necesitamos un conjunto de datos etiquetados que consista en Justin-Melons reales y su etiqueta asociada.
Recopilación/procesamiento de datos
Así que pasas los próximos dos días comiendo melones y registrando el color, la firmeza y si el melón estaba malo o no. Después de unos días dolorosos de comer constantemente melones que se han echado a perder, tiene el siguiente conjunto de datos etiquetado:
Cada fila es un melón específico y cada columna es el valor de la característica/etiqueta para el melón correspondiente. Pero observe que tenemos palabras, ya que las características son categóricas en lugar de numéricas.
Realmente necesitamos números para que nuestra computadora los procese. Hay una serie de técnicas para convertir características categóricas en características numéricas, que van desde una codificación caliente a incrustaciones y más allá.
Lo más sencillo que podemos hacer es convertir la columna “Etiqueta” en una columna “Bueno”, que es 1 si el melón es bueno y 0 si es malo. Por ahora, suponga que existe alguna metodología para cambiar el color y la firmeza a una escala de -10 a 10, de tal manera que sea sensato. Para obtener puntos de bonificación, piense en las suposiciones de poner una característica categórica como el color en esa escala. Después de este preprocesamiento, nuestro conjunto de datos podría verse así:
Ahora tenemos un conjunto de datos etiquetado, lo que significa que podemos emplear un algoritmo de aprendizaje supervisado. Nuestro algoritmo debe ser un algoritmo de clasificación, ya que estamos prediciendo una categoría buena (1) o mala (0). La clasificación se opone a los algoritmos de regresión, que predicen un valor continuo como el precio de un diamante.
Análisis exploratorio de datos
¿Pero qué algoritmo? Hay una serie de algoritmos de clasificación supervisada, que varían en complejidad desde la regresión logística básica hasta algunos algoritmos de aprendizaje profundo. Bueno, primero echemos un vistazo a nuestros datos haciendo un análisis exploratorio de datos (EDA):
La imagen de arriba es un gráfico del espacio de características; tenemos dos características, y simplemente estamos poniendo cada ejemplo en una gráfica con los dos ejes siendo las dos características. Además, hacemos que el punto sea morado si el melón asociado era bueno y lo hacemos amarillo si era malo. Claramente, con solo un poco de EDA, ¡hay una respuesta obvia!
Probablemente deberíamos clasificar todos los puntos dentro del círculo rojo como buenos melones, mientras que los que están fuera del círculo deberían clasificarse como malos melones. Intuitivamente, ¡esto tiene sentido! Por ejemplo, no quieres un melón que sea sólido como una roca, pero tampoco quieres que sea absurdamente blando. Más bien, desea algo intermedio, y probablemente lo mismo sea cierto con respecto al color.
Determinamos que querríamos un límite de decisión que fuera un círculo, pero esto solo se basó en la visualización preliminar de datos. ¿Cómo determinaríamos sistemáticamente esto? Esto es especialmente relevante en problemas más grandes, donde la respuesta no es tan simple. Imagina cientos de funciones. No hay forma posible de visualizar el espacio de características de 100 dimensiones de una manera razonable.
¿Qué estamos aprendiendo?
El primer paso es definir su modelo. Hay toneladas de modelos de clasificación. Dado que cada uno tiene su propio conjunto de suposiciones, es importante tratar de hacer una buena elección. Para enfatizar esto, comenzaré por hacer una muy mala elección.
Una idea intuitiva es hacer una predicción sopesando cada uno de los factores:
Por ejemplo, supongamos que nuestros parámetros w1 y w2 son 2 y 1, respectivamente. También suponga que nuestra entrada Justin Melon es una con Color = 4, Firmeza = 6. Entonces nuestra predicción Bueno = (2 x 4) + (1 x 6) = 14.
Nuestra clasificación (14) no es ni siquiera una de las opciones válidas (0 o 1). Esto se debe a que en realidad es un algoritmo de regresión. De hecho, es un caso simple del algoritmo de regresión más simple: la regresión lineal.
Entonces, convirtamos esto en un algoritmo de clasificación. Una forma simple sería esta: use la regresión lineal y clasifique como 1 si la salida es más alta que un término de sesgo b. De hecho, podemos simplificar agregando un término constante a nuestro modelo de tal manera que clasifiquemos como 1 si la salida es mayor que 0.
En matemáticas, sea PRED = w1 * Color + w2 * Firmeza + b. Entonces obtenemos:
Esto es ciertamente mejor, ya que al menos estamos realizando una clasificación, pero hagamos un gráfico de PRED en el eje x y nuestra clasificación en el eje y:
Esto es un poco extremo. Un ligero cambio en PRED podría cambiar la clasificación por completo. Una solución es que la salida de nuestro modelo represente la probabilidad de que Justin-Melon sea bueno, lo que podemos hacer suavizando la curva:
Esta es una curva sigmoidea (o una curva logística). Entonces, en lugar de tomar PRED y aplicar esta activación por partes (bueno si PRED ≥ 0), podemos aplicar esta función de activación sigmoidea para obtener una curva suavizada como la anterior. En general, nuestro modelo logístico se ve así:
Aquí, el sigma representa la función de activación sigmoidea. Genial, ya tenemos nuestro modelo, ¡y solo necesitamos averiguar qué pesos y sesgos son los mejores! Este proceso se conoce como entrenamiento.
Entrenando al modelo
¡Genial, así que todo lo que tenemos que hacer es averiguar qué pesos y sesgos son los mejores! Pero esto es mucho más fácil decirlo que hacerlo. Hay un número infinito de posibilidades, y ¿qué significa mejor?
Empezamos con la última pregunta: ¿qué es lo mejor? Esta es una manera simple pero poderosa: los pesos más óptimos son los que obtienen la mayor precisión en nuestro conjunto de entrenamiento.
Entonces, solo necesitamos encontrar un algoritmo que maximice la precisión. Sin embargo, matemáticamente es más fácil minimizar algo. En palabras, en lugar de definir una función de valor, donde un valor más alto es “mejor”, preferimos definir una función de pérdida, donde una pérdida más baja es mejor. Aunque la gente normalmente usa algo como la entropía cruzada binaria para la pérdida de clasificación (binaria), solo usaremos un ejemplo simple: minimizar la cantidad de puntos clasificados incorrectamente.
Para hacer esto, usamos un algoritmo conocido como descenso de gradiente. A un nivel muy alto, el descenso de pendientes funciona como un esquiador miope que trata de bajar una montaña. Una propiedad importante de una buena función de pérdida (y de la que en realidad carece nuestra función de pérdida cruda) es la suavidad. Si tuviera que trazar nuestro espacio de parámetros (valores de parámetros y pérdida asociada en el mismo gráfico), el gráfico se vería como una montaña.
Entonces, primero comenzamos con parámetros aleatorios y, por lo tanto, probablemente comencemos con mala pérdida. Como un esquiador que trata de bajar la montaña lo más rápido posible, el algoritmo mira en todas direcciones, tratando de ver el camino más empinado a seguir (es decir, cómo cambiar los parámetros para reducir al máximo las pérdidas). Pero, el esquiador es miope, por lo que solo mira un poco en cada dirección. Repetimos este proceso hasta que terminamos en la parte inferior (las personas con ojos agudos pueden notar que en realidad podríamos terminar en un mínimo local). En este punto, los parámetros con los que terminamos son nuestros parámetros entrenados.
Una vez que entrena su modelo de regresión logística, se da cuenta de que su rendimiento sigue siendo realmente malo y que su precisión es solo de alrededor del 60% (¡apenas mejor que adivinar!). Esto se debe a que estamos violando uno de los supuestos del modelo. La regresión logística matemáticamente solo puede generar un límite de decisión lineal, ¡pero sabíamos por nuestra EDA que el límite de decisión debería ser circular!
Con esto en mente, prueba modelos diferentes y más complejos, ¡y obtienes uno que tiene una precisión del 95 %! Ahora tiene un clasificador completamente entrenado capaz de diferenciar entre buenos Justin-Melons y malos Justin-Melons, ¡y finalmente puede comer toda la fruta sabrosa que quiera!
Conclusión
Demos un paso atrás. En alrededor de 10 minutos, aprendió mucho sobre el aprendizaje automático, incluido lo que es esencialmente todo el proceso de aprendizaje supervisado. ¿Qué es lo siguiente?
Bueno, eso es para que usted decida! Para algunos, este artículo fue suficiente para obtener una imagen de alto nivel de lo que realmente es ML. Para otros, este artículo puede dejar muchas preguntas sin respuesta. ¡Genial! Quizás esta curiosidad le permita explorar más a fondo este tema.
Por ejemplo, en el paso de recopilación de datos asumimos que solo comerías una tonelada de melones durante unos días, sin tener en cuenta ninguna característica específica. Esto no tiene sentido. Si comieras un Justin-Melon verde y blando y te enfermara gravemente, probablemente te alejarías de esos melones. En realidad, aprendería a través de la experiencia, actualizando sus creencias sobre la marcha. Este marco es más similar al aprendizaje por refuerzo.
¿Y si supieras que un Justin-Melon malo podría matarte instantáneamente y que era demasiado arriesgado probar uno sin estar seguro? Sin estas etiquetas, no podría realizar el aprendizaje supervisado. Pero tal vez todavía haya una manera de obtener información sin etiquetas. Este marco es más similar al aprendizaje no supervisado.
En las siguientes publicaciones de blog, espero ampliar de manera análoga el aprendizaje por refuerzo y el aprendizaje no supervisado.