Los algoritmos de aprendizaje automático aprenden de los datos para resolver problemas que son demasiado complejos para resolver con la programación convencional.
Aprendizaje automático definido
El aprendizaje automático (machine learning) es una rama de la Inteligencia Artificial que incluye métodos o algoritmos para crear automáticamente modelos a partir de datos. A diferencia de un sistema que realiza una tarea siguiendo reglas explícitas, un sistema de aprendizaje automático aprende de la experiencia. Mientras que un sistema basado en reglas realizará una tarea de la misma manera cada vez (para bien o para mal), el rendimiento de un sistema de aprendizaje automático se puede mejorar a través del entrenamiento, al exponer el algoritmo a más datos.
Los algoritmos de aprendizaje automático a menudo se dividen en supervisados (los datos de entrenamiento se etiquetan con las respuestas) y no supervisados (cualquier etiqueta que pueda existir no se muestra en el algoritmo de entrenamiento). Los problemas de aprendizaje automático supervisados se dividen además en clasificación (predicción de respuestas no numéricas, como la probabilidad de no hacer un pago de la hipoteca) y regresión (predicción de respuestas numéricas).
El aprendizaje no supervisado se divide además en agrupamiento (encontrar grupos de objetos similares, como zapatos para correr, caminar y zapatos de vestir), asociación (encontrar secuencias comunes de objetos, como café y crema) y reducción de dimensionalidad (proyección, selección de características y extracción de características).
Aplicaciones del aprendizaje automático
Escuchamos sobre aplicaciones de aprendizaje automático a diario, aunque no todas son éxitos absolutos. Los autos sin conductor son un buen ejemplo, donde las tareas van desde simples y exitosas (asistencia de estacionamiento y seguimiento de carril en la autopista) hasta complejas y dudosas (control total del vehículo en entornos urbanos, lo que ha provocado varias muertes).
El aprendizaje automático de juegos es un gran éxito para el ajedrez, el shogi, las damas y el go, ya que venció a los campeones mundiales humanos. La traducción automática de idiomas ha tenido un gran éxito, aunque algunos pares de idiomas funcionan mejor que otros, y los traductores humanos aún pueden mejorar muchas traducciones automáticas.
La voz automática a texto funciona bastante bien para las personas con acentos convencionales, pero no tanto para las personas con fuertes acentos regionales o nacionales; el rendimiento depende de los conjuntos de entrenamiento utilizados por los proveedores. El análisis automático de sentimientos de las redes sociales tiene una tasa de éxito razonablemente buena, probablemente porque los conjuntos de capacitación (p. ej., calificaciones de productos de Amazon, que combinan un comentario con una puntuación numérica) son grandes y de fácil acceso.
La selección automática de currículos es un área controvertida. Amazon tuvo que retirar su sistema interno debido a los sesgos de la muestra de capacitación que hicieron que degradara todas las solicitudes de empleo de mujeres.
Otros sistemas de selección de currículums actualmente en uso pueden tener sesgos de capacitación que los llevan a mejorar a los candidatos que son “similares” a los empleados actuales de maneras que legalmente no deberían importar (por ejemplo, candidatos jóvenes, blancos, hombres de vecindarios de alto nivel y que jugaron deportes de equipo tienen más probabilidades de pasar la evaluación). Los esfuerzos de investigación de Microsoft y otros se centran en eliminar los sesgos implícitos en el aprendizaje automático.
La clasificación automática de imágenes de patología y radiología ha avanzado hasta el punto en que puede ayudar (pero no reemplazar) a los patólogos y radiólogos en la detección de ciertos tipos de padecimientos. Mientras tanto, los sistemas de identificación facial son controvertidos cuando funcionan bien (debido a consideraciones de privacidad) y tienden a no ser tan precisos para las mujeres y las personas de color como lo son para los hombres blancos (debido a los sesgos en la población de capacitación).
Algoritmos de aprendizaje automático
El aprendizaje automático depende de una serie de algoritmos para convertir un conjunto de datos en un modelo. El algoritmo que funcione mejor depende del tipo de problema que esté resolviendo, los recursos informáticos disponibles y la naturaleza de los datos. Independientemente del algoritmo o algoritmos que utilice, primero deberá limpiar y acondicionar los datos.
Analicemos los algoritmos más comunes para cada tipo de problema.
Algoritmos de clasificación
Un problema de clasificación es un problema de aprendizaje supervisado que pide una elección entre dos o más clases, generalmente proporcionando probabilidades para cada clase. Dejando de lado las redes neuronales y el aprendizaje profundo, que requieren un nivel mucho más alto de recursos informáticos, los algoritmos más comunes son Naive Bayes, Decision Tree, Logistic Regression, K-Nearest Neighbors y Support Vector Machine (SVM). También puede usar métodos de conjunto (combinaciones de modelos), como Random Forest, otros métodos de Bagging y métodos de refuerzo como AdaBoost y XGBoost.
Algoritmos de regresión
Un problema de regresión es un problema de aprendizaje supervisado que le pide al modelo que prediga un número. El algoritmo más simple y rápido es la regresión lineal (mínimos cuadrados), pero no debe quedarse ahí, porque a menudo da un resultado mediocre. Otros algoritmos de regresión de aprendizaje automático comunes (aparte de las redes neuronales) incluyen Naive Bayes, Decision Tree, K-Nearest Neighbors, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost y XGBoost. Notará que existe cierta superposición entre los algoritmos de aprendizaje automático para la regresión y la clasificación.
Algoritmos de agrupamiento
Un problema de agrupamiento es un problema de aprendizaje no supervisado que le pide al modelo que encuentre grupos de puntos de datos similares. El algoritmo más popular es K-Means Clustering; otros incluyen Agrupación de desplazamiento medio, DBSCAN (Agrupación espacial basada en la densidad de aplicaciones con ruido), GMM (Modelos de mezcla gaussiana) y HAC (Aglomeración aglomerativa jerárquica).
Algoritmos de reducción de dimensionalidad
La reducción de dimensionalidad es un problema de aprendizaje no supervisado que le pide al modelo que elimine o combine variables que tienen poco o ningún efecto en el resultado. Esto se usa a menudo en combinación con clasificación o regresión. Los algoritmos de reducción de dimensionalidad incluyen la eliminación de variables con muchos valores faltantes, la eliminación de variables con poca varianza, el árbol de decisión, el bosque aleatorio, la eliminación o combinación de variables con alta correlación, la eliminación de características hacia atrás, la selección de características hacia adelante, el análisis factorial y PCA (análisis de componentes principales).
Métodos de optimización
El entrenamiento y la evaluación convierten los algoritmos de aprendizaje supervisado en modelos mediante la optimización de los pesos de sus parámetros para encontrar el conjunto de valores que mejor coincida con la realidad básica de sus datos. Los algoritmos a menudo se basan en variantes del descenso más pronunciado para sus optimizadores, por ejemplo, el descenso de gradiente estocástico (SGD), que es esencialmente el descenso más pronunciado realizado varias veces desde puntos de inicio aleatorios.
Los refinamientos comunes en SGD agregan factores que corrigen la dirección del gradiente en función del impulso, o ajustan la tasa de aprendizaje en función del progreso de un paso a través de los datos (llamado época o lote) al siguiente.
Redes neuronales y aprendizaje profundo
Las redes neuronales se inspiraron en la arquitectura de la corteza visual biológica. El aprendizaje profundo (deep learning) es un conjunto de técnicas para el aprendizaje en redes neuronales que involucra una gran cantidad de capas “ocultas” para identificar características. Las capas ocultas se encuentran entre las capas de entrada y salida. Cada capa está formada por neuronas artificiales, a menudo con funciones de activación sigmoideas o ReLU (unidad lineal rectificada).
En una red de alimentación directa, las neuronas se organizan en distintas capas: una capa de entrada, cualquier número de capas de procesamiento ocultas y una capa de salida, y las salidas de cada capa van solo a la siguiente capa.
En una red feed-forward con conexiones de acceso directo, algunas conexiones pueden saltar sobre una o más capas intermedias. En las redes neuronales recurrentes, las neuronas pueden influir en sí mismas, ya sea directamente o indirectamente a través de la siguiente capa.
El aprendizaje supervisado de una red neuronal se realiza como cualquier otro aprendizaje automático: presenta la red con grupos de datos de entrenamiento, compara la salida de la red con la salida deseada, genera un vector de error y aplica correcciones a la red en función del vector de error. , generalmente usando un algoritmo de retropropagación. Los lotes de datos de entrenamiento que se ejecutan juntos antes de aplicar las correcciones se denominan épocas.
Al igual que con todo el aprendizaje automático, debe verificar las predicciones de la red neuronal con un conjunto de datos de prueba separado. Sin hacer eso, corre el riesgo de crear redes neuronales que solo memorizan sus entradas en lugar de aprender a ser predictores generalizados.
El gran avance en el campo de las redes neuronales para la visión fue LeNet-5 de 1998 de Yann LeCun, una red neuronal convolucional (CNN) de siete niveles para el reconocimiento de dígitos escritos a mano digitalizados en imágenes de 32×32 píxeles. Para analizar imágenes de mayor resolución, la red necesitaría más neuronas y más capas.
Las redes neuronales convolucionales suelen utilizar capas convolucionales, de agrupación, ReLU, totalmente conectadas y de pérdida para simular una corteza visual. La capa convolucional básicamente toma las integrales de muchas pequeñas regiones superpuestas. La capa de agrupación realiza una forma de muestreo descendente no lineal. Las capas ReLU, que mencioné anteriormente, aplican la función de activación no saturada f(x) = max(0,x)
.
En una capa completamente conectada, las neuronas tienen conexiones completas con todas las activaciones en la capa anterior. Una capa de pérdida calcula cómo el entrenamiento de la red penaliza la desviación entre las etiquetas pronosticadas y las verdaderas, utilizando una pérdida Softmax o de entropía cruzada para la clasificación o una pérdida euclidiana para la regresión.
El procesamiento del lenguaje natural (NLP) es otra área de aplicación importante para el aprendizaje profundo. Además del problema de traducción automática abordado por Google Translate, las principales tareas de NLP incluyen el resumen automático, la resolución de co-referencias, el análisis del discurso, la segmentación morfológica, el reconocimiento de entidades nombradas, la generación de lenguaje natural, la comprensión del lenguaje natural, el etiquetado de partes del discurso, el sentimiento análisis y reconocimiento de voz.
Además de las CNN, las tareas de NLP a menudo se abordan con redes neuronales recurrentes (RNN), que incluyen el modelo de memoria a largo y corto plazo (LSTM).
Cuantas más capas haya en una red neuronal profunda, más computación se necesita para entrenar el modelo en una CPU. Los aceleradores de hardware para redes neuronales incluyen GPU, TPU y FPGA.
Aprendizaje reforzado
El aprendizaje por refuerzo (reinforcement learning) entrena a un actor o agente para responder a un entorno de una manera que maximiza algún valor , generalmente por prueba y error. Eso es diferente del aprendizaje supervisado y no supervisado, pero a menudo se combina con ellos.
Por ejemplo, AlphaGo de DeepMind , para aprender a jugar (la acción) el juego de Go (el entorno), primero aprendió a imitar a los jugadores humanos de Go a partir de un gran conjunto de datos de juegos históricos (aprendizaje de aprendizaje). Luego mejoró su juego por prueba y error (aprendizaje por refuerzo), al jugar una gran cantidad de juegos de Go contra instancias independientes de sí mismo.
El control robótico es otro problema que ha sido atacado con métodos de aprendizaje de refuerzo profundo, lo que significa aprendizaje de refuerzo más redes neuronales profundas, las redes neuronales profundas a menudo son CNN entrenadas para extraer características de cuadros de video.
Cómo usar el aprendizaje automático
¿Cómo se hace para crear un modelo de aprendizaje automático? Empiece por limpiar y acondicionar los datos, continúe con la ingeniería de características y luego pruebe todos los algoritmos de aprendizaje automático que tenga sentido. Para ciertas clases de problemas, como la visión y el procesamiento del lenguaje natural, los algoritmos que probablemente funcionen implican un aprendizaje profundo.
Limpieza de datos para el aprendizaje automático
No existen “datos limpios” en la naturaleza. Para hacerlos útiles para el aprendizaje automático, los datos deben filtrarse agresivamente, por ejemplo:
- Mire los datos y excluya cualquier columna que tenga muchos datos faltantes.
- Mire los datos nuevamente y elija las columnas que desea usar ( selección de características ) para su predicción. Esto es algo que puede querer variar cuando itera.
- Excluya las filas a las que aún les falten datos en las columnas restantes.
- Corrija los errores tipográficos obvios y combine las respuestas equivalentes. Por ejemplo, EE. UU., EE. UU., EE. UU. y América deben fusionarse en una sola categoría.
- Excluya filas que tengan datos que estén fuera de rango. Por ejemplo, si está analizando viajes en taxi dentro de la ciudad de Nueva York, querrá filtrar filas con latitudes y longitudes de recogida o entrega que estén fuera del cuadro delimitador del área metropolitana.
Hay mucho más que puede hacer, pero dependerá de los datos recopilados. Esto puede ser tedioso, pero si configura un paso de limpieza de datos en su proceso de aprendizaje automático, puede modificarlo y repetirlo a voluntad.
Codificación y normalización de datos para el aprendizaje automático
Para usar datos categóricos para la clasificación de máquinas, debe codificar las etiquetas de texto en otro formulario. Hay dos codificaciones comunes.
Una es la codificación de etiquetas , lo que significa que cada valor de etiqueta de texto se reemplaza con un número. La otra es la codificación one-hot , lo cual significa que cada valor de etiqueta de texto se convierte en una columna con un valor binario (1 o 0). La mayoría de los marcos de aprendizaje automático tienen funciones que hacen la conversión por usted. En general, se prefiere la codificación one-hot, ya que la codificación de etiquetas a veces puede confundir al algoritmo de aprendizaje automático al pensar que la columna codificada está ordenada.
Para usar datos numéricos para la regresión automática, generalmente necesita normalizar los datos. De lo contrario, los números con rangos más grandes podrían tender a dominar la distancia euclidiana entre vectores de características , sus efectos podrían magnificarse a expensas de los otros campos y la optimización de descenso más pronunciado podría tener dificultades para converger. Hay varias formas de normalizar y estandarizar los datos para el aprendizaje automático, incluida la normalización mínima-máxima, la normalización media, la estandarización y la escala a la longitud de la unidad. Este proceso a menudo se denomina escalado de características .
Ingeniería de características para el aprendizaje automático
Una característica es una propiedad individual medible o característica de un fenómeno observado. El concepto de “característica” está relacionado con el de variable explicativa, que se utiliza en técnicas estadísticas como la regresión lineal. Los vectores de características combinan todas las características de una sola fila en un vector numérico.
Parte del arte de elegir características es elegir un conjunto mínimo de variables independientes que expliquen el problema. Si dos variables están altamente correlacionadas, deben combinarse en una sola característica o debe eliminarse una. A veces, las personas realizan análisis de componentes principales para convertir variables correlacionadas en un conjunto de variables linealmente no correlacionadas.
Algunas de las transformaciones que la gente usa para construir nuevas funciones o reducir la dimensionalidad de los vectores de funciones son simples. Por ejemplo, puede restar el Año de Nacimiento del Año de Defunción y construir Edad al morir, que es una variable independiente principal para el análisis de vida y mortalidad. En otros casos, la construcción de características puede no ser tan obvia.
División de datos para el aprendizaje automático
La práctica habitual para el aprendizaje automático supervisado es dividir el conjunto de datos en subconjuntos para entrenamiento, validación y prueba . Una forma de trabajar es asignar el 80% de los datos al conjunto de datos de entrenamiento y el 10% a cada uno de los conjuntos de datos de validación y de prueba. (La división exacta es una cuestión de preferencia). La mayor parte del entrenamiento se realiza con el conjunto de datos de entrenamiento y la predicción se realiza con el conjunto de datos de validación al final de cada época.
Los errores en el conjunto de datos de validación se pueden usar para identificar criterios de detención o para impulsar el ajuste de hiperparámetros. Lo que es más importante, los errores en el conjunto de datos de validación pueden ayudarlo a descubrir si el modelo se ha sobreajustado a los datos de entrenamiento.
La predicción contra el conjunto de datos de prueba generalmente se realiza en el modelo final. Si el conjunto de datos de prueba nunca se usó para el entrenamiento, a veces se denomina conjunto de datos reservados.
Hay varios otros esquemas para dividir los datos. Una técnica común, la validación cruzada , consiste en dividir repetidamente el conjunto de datos completo en un conjunto de datos de entrenamiento y un conjunto de datos de validación. Al final de cada época, los datos se barajan y se dividen nuevamente.
AutoML y optimización de hiperparámetros
AutoML y la optimización de hiperparámetros son formas de hacer que la computadora pruebe muchos modelos e identifique el mejor. Con AutoML (como se define generalmente), la computadora prueba todos los modelos de aprendizaje automático apropiados y también puede probar todas las técnicas apropiadas de ingeniería y escalado de características. Con la optimización de hiperparámetros, normalmente define qué hiperparámetros le gustaría barrer para un modelo específico, como la cantidad de capas ocultas, la tasa de aprendizaje y la tasa de abandono, y el rango que le gustaría barrer para cada uno.
Google tiene una definición diferente para Google Cloud AutoML. En lugar de probar todos los modelos de aprendizaje automático apropiados, intenta personalizar un modelo de aprendizaje profundo relevante (visión, traducción o lenguaje natural) mediante el aprendizaje de transferencia profunda. Azure Machine Learning Service ofrece servicios de aprendizaje de transferencia similares con diferentes nombres: visión personalizada, voz y traducción personalizables y búsqueda personalizada.
Aprendizaje automático en la nube
Puede ejecutar el aprendizaje automático y el aprendizaje profundo en sus propias máquinas o en la nube. AWS, Azure y Google Cloud ofrecen servicios de aprendizaje automático que puede usar a pedido, y también ofrecen aceleradores de hardware a pedido.
Si bien hay niveles gratuitos en los tres servicios, eventualmente puede generar facturas mensuales, especialmente si usa instancias grandes con GPU, TPU o FPGA. Debe equilibrar este costo operativo con el costo de capital de comprar sus propias GPU y computadoras de clase de estación de trabajo. Si necesita entrenar muchos modelos de manera constante, entonces tiene sentido comprar al menos una GPU para su propio uso.
La gran ventaja de usar la nube para el aprendizaje automático y el aprendizaje profundo es que puede activar recursos significativos en cuestión de minutos, ejecutar su capacitación rápidamente y luego liberar los recursos de la nube. Además, las tres nubes principales ofrecen servicios de aprendizaje automático y aprendizaje profundo que no requieren un doctorado. en ciencia de datos para ejecutar. Tiene las opciones para usar sus modelos previamente entrenados, personalizar sus modelos para su propio uso o crear sus propios modelos con cualquiera de los principales marcos de trabajo de aprendizaje automático y aprendizaje profundo , como Scikit-learn , PyTorch y TensorFlow .
También hay opciones gratuitas para ejecutar cuadernos Jupyter de aprendizaje automático y aprendizaje profundo: Google Colab y Kaggle (adquirida recientemente por Google). Colab ofrece una selección de instancias de CPU, GPU y TPU. Kaggle ofrece instancias de CPU y GPU, junto con competencias, conjuntos de datos y kernels compartidos.
Aprendizaje automático con más profundidad
Puede aprender mucho sobre el aprendizaje automático y el aprendizaje profundo simplemente instalando uno de los paquetes de aprendizaje profundo, probando sus ejemplos y leyendo sus tutoriales. Para más saber más, considere uno o más de los siguientes recursos:
- Redes neuronales y aprendizaje profundo por Michael Nielsen
- Una breve introducción a las redes neuronales por David Kriesel
- Aprendizaje profundo por Yoshua Bengio, Ian Goodfellow y Aaron Courville
- Un curso de aprendizaje automático de Hal Daumé III
- Patio de juegos TensorFlow por Daniel Smilkov y Shan Carter
- Stanford Computer Science, CS231n: redes neuronales convolucionales para el reconocimiento visual
Martin Heller, InfoWorld.com