Una introducción a la teoría del aprendizaje automático y sus aplicaciones: un tutorial visual con ejemplos

Publicado: 2022-03-11

El aprendizaje automático (ML) se está consolidando, con un reconocimiento cada vez mayor de que ML puede desempeñar un papel clave en una amplia gama de aplicaciones críticas, como la extracción de datos, el procesamiento del lenguaje natural, el reconocimiento de imágenes y los sistemas expertos. ML proporciona soluciones potenciales en todos estos dominios y más, y está configurado para ser un pilar de nuestra civilización futura.

La oferta de diseñadores de ML capaces todavía tiene que ponerse al día con esta demanda. Una de las principales razones de esto es que ML es simplemente complicado. Este tutorial de Machine Learning presenta los conceptos básicos de la teoría de ML, establece los temas y conceptos comunes, lo que facilita seguir la lógica y familiarizarse con los conceptos básicos de Machine Learning.

Ilustración del tutorial de aprendizaje automático: esta curiosa máquina está aprendiendo aprendizaje automático, sin supervisión.

¿Qué es el aprendizaje automático?

Entonces, ¿qué es exactamente el "aprendizaje automático" de todos modos? ML es en realidad muchas cosas. El campo es bastante amplio y se está expandiendo rápidamente, siendo continuamente dividido y subdividido hasta la saciedad en diferentes subespecialidades y tipos de aprendizaje automático.

Sin embargo, hay algunos hilos comunes básicos, y el tema general se resume mejor en esta declaración citada con frecuencia hecha por Arthur Samuel en 1959: "[El aprendizaje automático es el] campo de estudio que le da a las computadoras la capacidad de aprender sin siendo explícitamente programado.”

Y más recientemente, en 1997, Tom Mitchell dio una definición "bien planteada" que ha demostrado ser más útil para los tipos de ingeniería: "Se dice que un programa de computadora aprende de la experiencia E con respecto a alguna tarea T y alguna medida de desempeño P, si su desempeño en T, medido por P, mejora con la experiencia E”.

“Se dice que un programa de computadora aprende de la experiencia E con respecto a alguna tarea T y alguna medida de desempeño P, si su desempeño en T, medido por P, mejora con la experiencia E”. -- Tom Mitchell, Universidad Carnegie Mellon

Entonces, si desea que su programa prediga, por ejemplo, patrones de tráfico en una intersección concurrida (tarea T), puede ejecutarlo a través de un algoritmo de aprendizaje automático con datos sobre patrones de tráfico anteriores (experiencia E) y, si ha "aprendido con éxito ”, entonces será mejor en la predicción de patrones de tráfico futuros (medida de rendimiento P).

Sin embargo, la naturaleza altamente compleja de muchos problemas del mundo real a menudo significa que inventar algoritmos especializados que los resuelvan perfectamente siempre es poco práctico, si no imposible. Los ejemplos de problemas de aprendizaje automático incluyen: "¿Es esto cáncer?", "¿Cuál es el valor de mercado de esta casa?", "¿Cuáles de estas personas son buenos amigos entre sí?", "¿Este motor de cohete explotará al despegar? ”, “¿Le gustará esta película a esta persona?”, “¿Quién es este?”, “¿Qué dijiste?” y “¿Cómo haces volar esta cosa?”. Todos estos problemas son objetivos excelentes para un proyecto de ML y, de hecho, ML se ha aplicado a cada uno de ellos con gran éxito.

ML resuelve problemas que no se pueden resolver solo por medios numéricos.

Entre los diferentes tipos de tareas de ML, se establece una distinción crucial entre aprendizaje supervisado y no supervisado:

  • Aprendizaje automático supervisado: el programa se "entrena" en un conjunto predefinido de "ejemplos de entrenamiento", que luego facilitan su capacidad para llegar a una conclusión precisa cuando se le dan nuevos datos.
  • Aprendizaje automático no supervisado: el programa recibe una gran cantidad de datos y debe encontrar patrones y relaciones en ellos.

Nos centraremos principalmente en el aprendizaje supervisado aquí, pero el final del artículo incluye una breve discusión sobre el aprendizaje no supervisado con algunos enlaces para aquellos que estén interesados ​​en profundizar en el tema.

Aprendizaje automático supervisado

En la mayoría de las aplicaciones de aprendizaje supervisado, el objetivo final es desarrollar una función predictora finamente ajustada h(x) (a veces denominada "hipótesis"). El “aprendizaje” consiste en usar algoritmos matemáticos sofisticados para optimizar esta función de modo que, dados los datos de entrada x sobre un cierto dominio (digamos, pies cuadrados de una casa), prediga con precisión algún valor interesante h(x) (digamos, precio de mercado para dicha casa).

En la práctica, x casi siempre representa múltiples puntos de datos. Entonces, por ejemplo, un predictor del precio de la vivienda podría tomar no solo los pies cuadrados ( x1 ), sino también la cantidad de habitaciones ( x2 ), la cantidad de baños ( x3 ), la cantidad de pisos ( x4) , el año de construcción ( x5 ), el código postal ( x6 ), y así sucesivamente. Determinar qué entradas usar es una parte importante del diseño de ML. Sin embargo, por el bien de la explicación, es más fácil asumir que se usa un solo valor de entrada.

Así que digamos que nuestro predictor simple tiene esta forma:

h de x es igual a theta 0 más theta 1 por x

dondetheta 0 ytheta 1 son constantes. Nuestro objetivo es encontrar los valores perfectos detheta 0 ytheta 1 para que nuestro predictor funcione lo mejor posible.

La optimización del predictor h(x) se realiza mediante ejemplos de entrenamiento . Para cada ejemplo de entrenamiento, tenemos un valor de entrada x_train , para el cual se conoce de antemano una salida correspondiente, y . Para cada ejemplo, encontramos la diferencia entre el valor correcto conocido y y nuestro valor predicho h(x_train) . Con suficientes ejemplos de entrenamiento, estas diferencias nos brindan una forma útil de medir la "incorrección" de h(x) . Entonces podemos ajustar h(x) ajustando los valores detheta 0 ytheta 1 para que sea “menos malo”. Este proceso se repite una y otra vez hasta que el sistema ha convergido en los mejores valores paratheta 0 ytheta 1 . De esta manera, el predictor se entrena y está listo para hacer predicciones en el mundo real.

Ejemplos de aprendizaje automático

Nos ceñimos a problemas simples en esta publicación por el bien de la ilustración, pero la razón por la que ML existe es porque, en el mundo real, los problemas son mucho más complejos. En esta pantalla plana podemos dibujarle una imagen de, como mucho, un conjunto de datos tridimensionales, pero los problemas de ML comúnmente se ocupan de datos con millones de dimensiones y funciones de predicción muy complejas. ML resuelve problemas que no se pueden resolver solo por medios numéricos.

Con eso en mente, veamos un ejemplo simple. Digamos que tenemos los siguientes datos de capacitación, en los que los empleados de la empresa calificaron su satisfacción en una escala del 1 al 100:

La calificación de satisfacción de los empleados por salario es un excelente ejemplo de aprendizaje automático.

Primero, observe que los datos son un poco ruidosos. Es decir, si bien podemos ver que existe un patrón (es decir, la satisfacción de los empleados tiende a aumentar a medida que aumenta el salario), no todo encaja perfectamente en una línea recta. Este siempre será el caso con los datos del mundo real (¡y queremos absolutamente entrenar nuestra máquina usando datos del mundo real!). Entonces, ¿cómo podemos entrenar una máquina para predecir perfectamente el nivel de satisfacción de un empleado? La respuesta, por supuesto, es que no podemos. El objetivo de ML nunca es hacer conjeturas "perfectas", porque ML se ocupa de dominios donde no existe tal cosa. El objetivo es hacer conjeturas que sean lo suficientemente buenas para ser útiles.

Recuerda un poco la famosa declaración del matemático y profesor de estadística británico George EP Box de que “todos los modelos son erróneos, pero algunos son útiles”.

El objetivo de ML nunca es hacer conjeturas "perfectas", porque ML se ocupa de dominios donde no existe tal cosa. El objetivo es hacer conjeturas que sean lo suficientemente buenas para ser útiles.

El aprendizaje automático se basa en gran medida en las estadísticas. Por ejemplo, cuando entrenamos a nuestra máquina para que aprenda, tenemos que darle una muestra aleatoria estadísticamente significativa como datos de entrenamiento. Si el conjunto de entrenamiento no es aleatorio, corremos el riesgo de que los patrones de aprendizaje automático no estén realmente allí. Y si el conjunto de entrenamiento es demasiado pequeño (ver ley de los grandes números), no aprenderemos lo suficiente e incluso podemos llegar a conclusiones inexactas. Por ejemplo, intentar predecir los patrones de satisfacción de toda la empresa basándose solo en los datos de la alta dirección probablemente sea propenso a errores.

Con este entendimiento, demos a nuestra máquina los datos que nos dieron arriba y hagamos que los aprenda. Primero tenemos que inicializar nuestro predictor h(x) con algunos valores razonables detheta 0 ytheta 1 . Ahora nuestro predictor se ve así cuando se coloca sobre nuestro conjunto de entrenamiento:

h de x es igual a doce más 0 coma dos x

Ilustración de ejemplo de aprendizaje automático: un predictor de aprendizaje automático sobre un conjunto de datos de entrenamiento.

Si le preguntamos a este predictor por la satisfacción de un empleado que gana $60k, predeciría una calificación de 27:

En esta imagen, la máquina aún tiene que aprender a predecir un resultado probable.

Es obvio que esta fue una conjetura terrible y que esta máquina no sabe mucho.

Así que ahora, demos a este predictor todos los salarios de nuestro conjunto de capacitación y tomemos las diferencias entre las calificaciones de satisfacción pronosticadas resultantes y las calificaciones de satisfacción reales de los empleados correspondientes. Si hacemos un poco de magia matemática (que describiré en breve), podemos calcular, con mucha certeza, que los valores de 13.12 paratheta 0 y 0,61 paratheta 1 nos van a dar un mejor predictor.

h de x es igual a trece punto uno dos más 0 punto seis uno x

En este caso, el predictor de aprendizaje automático se está acercando.

Y si repetimos este proceso, digamos 1500 veces, nuestro predictor terminará luciendo así:

h de x es igual a quince punto cinco cuatro más 0 punto siete cinco x

Con mucha repetición, el proceso de aprendizaje automático comienza a tomar forma.

En este punto, si repetimos el proceso, encontraremos quetheta 0 ytheta 1 ya no cambiará en una cantidad apreciable y, por lo tanto, vemos que el sistema ha convergido. Si no hemos cometido ningún error, significa que hemos encontrado el predictor óptimo. En consecuencia, si le volvemos a preguntar a la máquina cuál es la calificación de satisfacción del empleado que gana $60,000, pronosticará una calificación de aproximadamente 60.

En este ejemplo, la máquina ha aprendido a predecir un punto de datos probable.

Ahora estamos llegando a alguna parte.

Regresión de aprendizaje automático: una nota sobre la complejidad

El ejemplo anterior es técnicamente un problema simple de regresión lineal univariante, que en realidad se puede resolver derivando una ecuación normal simple y omitiendo este proceso de "ajuste" por completo. Sin embargo, considere un predictor que se vea así:

Ejemplo de ecuación de cuatro dimensiones

Esta función toma datos en cuatro dimensiones y tiene una variedad de términos polinómicos. Deducir una ecuación normal para esta función es un desafío importante. Muchos problemas modernos de aprendizaje automático requieren miles o incluso millones de dimensiones de datos para generar predicciones utilizando cientos de coeficientes. Predecir cómo se expresará el genoma de un organismo, o cómo será el clima dentro de cincuenta años, son ejemplos de problemas tan complejos.

Muchos problemas modernos de ML toman miles o incluso millones de dimensiones de datos para construir predicciones usando cientos de coeficientes.

Afortunadamente, el enfoque iterativo adoptado por los sistemas ML es mucho más resistente frente a tal complejidad. En lugar de usar la fuerza bruta, un sistema de aprendizaje automático "siente el camino" hacia la respuesta. Para grandes problemas, esto funciona mucho mejor. Si bien esto no significa que ML pueda resolver todos los problemas arbitrariamente complejos (no puede), lo convierte en una herramienta increíblemente flexible y poderosa.

Descenso de gradiente - Minimizar "lo incorrecto"

Echemos un vistazo más de cerca a cómo funciona este proceso iterativo. En el ejemplo anterior, ¿cómo nos aseguramos detheta 0 ytheta 1 están mejorando con cada paso, y no peor? La respuesta se encuentra en nuestra "medida de error" a la que se aludió anteriormente, junto con un poco de cálculo.

La medida de error se conoce como la función de costo (también conocida como función de pérdida ),J de theta . la entradatheta representa todos los coeficientes que estamos usando en nuestro predictor. Así que en nuestro caso,theta es realmente la parejatheta 0 ytheta 1 .J de theta 0 y theta 1 nos da una medida matemática de qué tan equivocado está nuestro predictor cuando usa los valores dados detheta 0 ytheta 1 .

La elección de la función de costo es otra pieza importante de un programa ML. En diferentes contextos, estar “equivocado” puede significar cosas muy diferentes. En nuestro ejemplo de satisfacción de los empleados, el estándar bien establecido es la función lineal de mínimos cuadrados:

Función de costo expresada como una función lineal de mínimos cuadrados

Con los mínimos cuadrados, la penalización por una mala suposición aumenta cuadráticamente con la diferencia entre la suposición y la respuesta correcta, por lo que actúa como una medida muy "estricta" de error. La función de costo calcula una penalización promedio sobre todos los ejemplos de entrenamiento.

Así que ahora vemos que nuestro objetivo es encontrartheta 0 ytheta 1 para nuestro predictor h(x) tal que nuestra función de costoJ de theta 0 y theta 1 es lo más pequeño posible. Hacemos un llamado al poder del cálculo para lograr esto.

Considere la siguiente gráfica de una función de costo para algún problema particular de Machine Learning:

Este gráfico representa el diagrama en forma de cuenco de una función de costo para un ejemplo de aprendizaje automático.

Aquí podemos ver el costo asociado con diferentes valores detheta 0 ytheta 1 . Podemos ver que el gráfico tiene un ligero cuenco en su forma. La parte inferior del recipiente representa el costo más bajo que nuestro predictor puede brindarnos en función de los datos de entrenamiento proporcionados. El objetivo es “bajar la colina rodando” y encontrartheta 0 ytheta 1 correspondiente a este punto.

Aquí es donde entra el cálculo en este tutorial de aprendizaje automático. En aras de mantener esta explicación manejable, no escribiré las ecuaciones aquí, pero esencialmente lo que hacemos es tomar el gradiente deJ de theta 0 y theta 1 , que es el par de derivadas deJ de theta 0 y theta 1 (uno sobretheta 0 y uno encimatheta 1 ). El gradiente será diferente para cada valor diferente detheta 0 ytheta 1 , y nos dice cuál es la “pendiente del cerro” y, en particular, “hacia dónde se baja”, para estos particularestheta s. Por ejemplo, cuando conectamos nuestros valores actuales detheta en el gradiente, puede decirnos que agregar un poco atheta 0 y restando un poco detheta 1 nos llevará en la dirección de la función de costo-piso del valle. Por lo tanto, añadimos un poco atheta 0 , y restamos un poco detheta 1 , ¡y voilá! Hemos completado una ronda de nuestro algoritmo de aprendizaje. Nuestro predictor actualizado, h(x) =theta 0 +theta 1 x, devolverá mejores predicciones que antes. Nuestra máquina ahora es un poco más inteligente.

Este proceso de alternar entre calcular el gradiente actual y actualizar eltheta s de los resultados, se conoce como descenso de gradiente.

Esta imagen muestra un ejemplo de un descenso de gradiente de aprendizaje automático.

Esta imagen muestra el número de iteraciones de este tutorial de aprendizaje automático.

Eso cubre la teoría básica que subyace a la mayoría de los sistemas de aprendizaje automático supervisado. Pero los conceptos básicos se pueden aplicar en una variedad de formas diferentes, dependiendo del problema en cuestión.

Problemas de clasificación en el aprendizaje automático

Bajo el LA supervisado, dos subcategorías principales son:

  • Sistemas de aprendizaje automático de regresión: sistemas en los que el valor que se predice cae en algún lugar de un espectro continuo. Estos sistemas nos ayudan con preguntas de "¿Cuánto?" o "¿Cuántos?".
  • Sistemas de aprendizaje automático de clasificación: Sistemas en los que buscamos una predicción de sí o no, como "¿Es este tumor canceroso?", "¿Cumple esta cookie con nuestros estándares de calidad?", etc.

Resulta que la teoría subyacente del aprendizaje automático es más o menos la misma. Las principales diferencias son el diseño del predictor h(x) y el diseño de la función de costoJ de theta .

Nuestros ejemplos hasta ahora se han centrado en problemas de regresión, así que ahora también veamos un ejemplo de clasificación.

Estos son los resultados de un estudio de prueba de calidad de cookies, en el que todos los ejemplos de capacitación se etiquetaron como "galletas buenas" ( y = 1 ) en azul o "galletas malas" ( y = 0 ) en rojo.

Este ejemplo muestra cómo un predictor de regresión de aprendizaje automático no es la solución correcta aquí.

En clasificación, un predictor de regresión no es muy útil. Lo que generalmente queremos es un predictor que haga una suposición entre 0 y 1. En un clasificador de calidad de cookies, una predicción de 1 representaría una suposición muy segura de que la cookie es perfecta y deliciosa. Una predicción de 0 representa un alto grado de confianza en que la cookie es una vergüenza para la industria de las cookies. Los valores que caen dentro de este rango representan menos confianza, por lo que podríamos diseñar nuestro sistema de tal manera que la predicción de 0.6 signifique "Hombre, esa es una decisión difícil, pero voy a decir que sí, puedes vender esa galleta", mientras que un valor exactamente en el medio, en 0,5, podría representar una incertidumbre total. No siempre es así como se distribuye la confianza en un clasificador, pero es un diseño muy común y funciona para los fines de nuestra ilustración.

Resulta que hay una buena función que captura bien este comportamiento. Se llama la función sigmoidea, g(z) , y se parece a esto:

h de x es igual a g de z

La función sigmoidea en acción para lograr un ejemplo de aprendizaje automático supervisado.

z es alguna representación de nuestras entradas y coeficientes, tales como:

z es igual a theta 0 más theta 1 por x

de modo que nuestro predictor se convierte en:

h de x es igual a g de theta 0 más theta 1 por x

Observe que la función sigmoidea transforma nuestra salida en el rango entre 0 y 1.

La lógica detrás del diseño de la función de costo también es diferente en la clasificación. Nuevamente preguntamos "¿qué significa que una conjetura sea incorrecta?" y esta vez una muy buena regla general es que si la suposición correcta fue 0 y nosotros adivinamos 1, entonces estábamos total y absolutamente equivocados, y viceversa. Como no se puede estar más equivocado que absolutamente equivocado, la sanción en este caso es enorme. Alternativamente, si la suposición correcta fue 0 y nosotros adivinamos 0, nuestra función de costo no debería agregar ningún costo cada vez que esto suceda. Si la suposición fue correcta, pero no estábamos completamente seguros (por ejemplo, y = 1 , pero h(x) = 0.8 ), esto debería tener un pequeño costo, y si nuestra suposición fue incorrecta pero no estábamos completamente seguros ( por ejemplo, y = 1 pero h(x) = 0.3 ), esto debería tener un costo significativo, pero no tanto como si estuviéramos completamente equivocados.

Este comportamiento es capturado por la función de registro, de modo que:

costo expresado como log

Nuevamente, la función de costoJ de theta nos da el costo promedio sobre todos nuestros ejemplos de entrenamiento.

Así que aquí hemos descrito cómo el predictor h(x) y la función de costoJ de theta difieren entre regresión y clasificación, pero el descenso de gradiente aún funciona bien.

Un predictor de clasificación se puede visualizar dibujando la línea límite; es decir, la barrera donde la predicción cambia de un “sí” (una predicción mayor a 0.5) a un “no” (una predicción menor a 0.5). Con un sistema bien diseñado, nuestros datos de cookies pueden generar un límite de clasificación que se ve así:

Un gráfico de un ejemplo completo de aprendizaje automático utilizando la función sigmoide.

¡Esa es una máquina que sabe un par de cosas sobre las cookies!

Una introducción a las redes neuronales

Ninguna discusión sobre Machine Learning estaría completa sin al menos mencionar las redes neuronales. Las redes neuronales no solo ofrecen una herramienta extremadamente poderosa para resolver problemas muy difíciles, sino que también ofrecen pistas fascinantes sobre el funcionamiento de nuestros propios cerebros y posibilidades intrigantes para algún día crear máquinas verdaderamente inteligentes.

Las redes neuronales se adaptan bien a los modelos de aprendizaje automático donde la cantidad de entradas es gigantesca. El costo computacional de manejar tal problema es demasiado abrumador para los tipos de sistemas que hemos discutido anteriormente. Sin embargo, resulta que las redes neuronales se pueden ajustar de manera efectiva utilizando técnicas que, en principio, son sorprendentemente similares al descenso de gradiente.

Una discusión exhaustiva de las redes neuronales está más allá del alcance de este tutorial, pero recomiendo consultar nuestra publicación anterior sobre el tema.

Aprendizaje automático no supervisado

El aprendizaje automático no supervisado generalmente tiene la tarea de encontrar relaciones dentro de los datos. No hay ejemplos de entrenamiento utilizados en este proceso. En cambio, el sistema recibe un conjunto de datos y tiene la tarea de encontrar patrones y correlaciones en ellos. Un buen ejemplo es identificar grupos de amigos muy unidos en datos de redes sociales.

Los algoritmos de Machine Learning que se usan para hacer esto son muy diferentes de los que se usan para el aprendizaje supervisado, y el tema merece su propia publicación. Sin embargo, mientras tanto, si tiene algo que analizar, eche un vistazo a los algoritmos de agrupamiento, como k-means, y también a los sistemas de reducción de dimensionalidad, como el análisis de componentes principales. Nuestra publicación anterior sobre big data también analiza varios de estos temas con más detalle.

Conclusión

Hemos cubierto gran parte de la teoría básica que subyace en el campo del aprendizaje automático aquí, pero, por supuesto, apenas hemos arañado la superficie.

Tenga en cuenta que para aplicar realmente las teorías contenidas en esta introducción a los ejemplos de aprendizaje automático de la vida real, es necesaria una comprensión mucho más profunda de los temas que se tratan aquí. Hay muchas sutilezas y trampas en ML, y muchas formas de dejarse engañar por lo que parece ser una máquina de pensar perfectamente afinada. Casi todas las partes de la teoría básica se pueden jugar y modificar sin cesar, y los resultados suelen ser fascinantes. Muchos crecen en campos de estudio completamente nuevos que se adaptan mejor a problemas particulares.

Claramente, Machine Learning es una herramienta increíblemente poderosa. En los próximos años, promete ayudar a resolver algunos de nuestros problemas más apremiantes, así como abrir nuevos mundos de oportunidades para las empresas de ciencia de datos. La demanda de ingenieros de Machine Learning seguirá creciendo, ofreciendo oportunidades increíbles de ser parte de algo grande. ¡Espero que considere entrar en acción!


Reconocimiento

Este artículo se basa en gran medida en el material enseñado por el profesor de Stanford, el Dr. Andrew Ng, en su curso gratuito y abierto de aprendizaje automático. El curso cubre todo lo discutido en este artículo en gran profundidad y brinda toneladas de consejos prácticos para el profesional de ML. No puedo recomendar este curso lo suficiente para aquellos interesados ​​en seguir explorando este fascinante campo.

Relacionados:
  • Lógica de sonido y modelos de IA monótona
  • Schooling Flappy Bird: un tutorial de aprendizaje por refuerzo