Aprendizaje profundo vs. aprendizaje automático

Comprenda las diferencias

0
49

El aprendizaje automático y el aprendizaje profundo son formas de inteligencia artificial. También puede decir, correctamente, que el aprendizaje profundo es un tipo específico de aprendizaje automático. Tanto el aprendizaje automático como el aprendizaje profundo comienzan con datos de entrenamiento y prueba y un modelo, y pasan por un proceso de optimización para encontrar los pesos que hacen que el modelo se ajuste mejor a los datos. Ambos pueden manejar problemas numéricos (de regresión) y no numéricos (de clasificación), aunque hay varias áreas de aplicación -como el reconocimiento de objetos y la traducción del lenguaje- donde los modelos de aprendizaje profundo tienden a producir mejores ajustes que los modelos de aprendizaje automático.

Aprendizaje automático explicado
Los algoritmos de aprendizaje automático a menudo se dividen en supervisados (los datos de entrenamiento se etiquetan con las respuestas) y no supervisados (las etiquetas que puedan existir no se muestran al algoritmo de entrenamiento). Los problemas de aprendizaje automático supervisados se dividen en clasificación (predicción de respuestas no numéricas, como la probabilidad de un pago hipotecario atrasado) y regresión (predicción de respuestas numéricas, como la cantidad de widgets que se venderán el próximo mes en su tienda de Manhattan).

El aprendizaje no supervisado se divide en clustering (búsqueda de grupos de objetos similares, como zapatillas para correr, zapatos para caminar y zapatos de vestir), asociación (búsqueda de secuencias comunes de objetos, como café y crema) y reducción de la dimensionalidad (proyección, selección de características y extracción de características).

Algoritmos de clasificación: Un problema de clasificación es un problema de aprendizaje supervisado que solicita una elección entre dos o más clases, que generalmente proporciona 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 debería detenerse en ese punto porque suele darle un resultado mediocre. Otros algoritmos comunes de regresión de aprendizaje automático (cortos en redes neuronales) incluyen Naive Bayes, Decision Tree, K-Nearest Neighbours, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost y XGBoost. Notará que hay cierta superposición entre los algoritmos de aprendizaje automático para la regresión y la clasificación.

Algoritmos de clustering: Un problema de clustering es un problema de aprendizaje no supervisado que le pide al modelo que encuentre grupos de puntos de datos similares. El algoritmomás popular es K-Means Clustering; otros incluyen Mean-Shift Clustering, DBSCAN (Density-Based Spatial Clustering of Applications with Noise), GMM (Gaussian Mixture Models), y HAC (Hierarchical Agglomerative Clustering).

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 a menudo se usa en combinación con clasificación o regresión. Los algoritmos de reducción de dimensionalidad incluyen eliminar variables con muchos valores faltantes, eliminar variables con baja varianza, Decision Tree, Random Forest, eliminar o combinar variables con alta correlación, Backward Feature Elimination, Forward Feature Selection, Factor Analysis, y PCA (Principal Component Analysis).

Métodos de optimización: El entrenamiento y la evaluación convierten los algoritmos de aprendizaje supervisado en modelos optimizando sus pesos de parámetros para encontrar el conjunto de valores que mejor se adapte a la verdad básica de sus datos. Muchas veces los algoritmos se basan en variantes de descenso pronunciado para sus optimizadores -por ejemplo, el descenso de gradiente estocástico, que es esencialmente el descenso más pronunciado realizado varias veces desde puntos de partida aleatorios.

Los refinamientos comunes en el descenso de gradiente estocástico 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.

Limpieza de datos para el aprendizaje automático: No existen datos limpios ahí afuera. Para ser útiles para el aprendizaje automático, los datos deben filtrarse agresivamente. Por ejemplo, querrá:

  1. Mirar los datos y excluir cualquier columna a la que le falten muchos datos.
  2. Volver a mirar los datos y elegir las columnas que desea usar (selección de características) para su predicción. Esto es algo que puede querer variar al iterar.
  3. Excluir cualquier fila a la que todavía le falten datos en las columnas restantes.
  4. Corregir errores tipográficos obvios y combinar respuestas equivalentes. Por ejemplo, EE.UU., EEUU y Estados Unidos deben fusionarse en una sola categoría.
  5. Excluir filas que tienen datos fuera de rango. Por ejemplo, si está analizando viajes en taxi dentro de la ciudad de Nueva York, deseará filtrar las filas con latitudes y longitudes de recogida o destino que se encuentran fuera del cuadro delimitador del área metropolitana.

Hay muchas más posibilidades, pero dependerá de los datos recopilados. Esto puede ser tedioso, pero si configura un paso de limpieza de datos en su canal de aprendizaje automático, puede modificarlo y repetirlo a voluntad.

Codificación y normalización de datos para el aprendizaje automático: Para utilizar datos categóricos para la clasificación automática, debe codificar las etiquetas de texto en otro formulario. Hay dos codificaciones comunes.

Uno es la codificación de etiquetas, lo que significa que cada valor de etiqueta de texto se reemplaza con un número. El otro es la codificación one-hot, lo que 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 haciéndolo creer que la columna codificada es supuestamente una lista ordenada.

Para usar datos numéricos para la regresión automática, generalmente es necesario normalizar los datos. De lo contrario, los números con rangos más grandes podrían tender a dominar la distancia euclidiana entre los vectores de características, sus efectos podrían ampliarse a expensas de los otros campos, y la optimización del 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 min-max, la normalización media, la estandarización y el escalado a la longitud de la unidad. Este proceso suele ser denominado feature scaling.

Ingeniería de factores para el aprendizaje automático: Un factor es una propiedad individual medible o característica de un fenómeno que se observa. El concepto de un «factor» está relacionado con el de una 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 escoger un conjunto mínimo de variables independientes que expliquen el problema. Si dos variables están altamente correlacionadas, o bien deben combinarse en una sola característica, o se debe descartar 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 las personas usan para construir nuevas características o reducir la dimensionalidad de los vectores de características son simples. Por ejemplo, reste el Año de nacimiento del Año de muerte y construya Edad al morir, que es una variable independiente principal para el análisis de la vida y la 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 capacitación, 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 los conjuntos de datos de validación y prueba. (La división exacta es una cuestión de preferencia). La mayor parte del entrenamiento se realiza contra el conjunto de datos de entrenamiento, y la predicción se realiza contra 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 más importante, los errores en el conjunto de datos de validación pueden ayudarlo a descubrir si el modelo ha sobreajustado los datos de entrenamiento.

La predicción contra el conjunto de datos de prueba se realiza generalmente en el modelo final. Si el conjunto de datos de prueba nunca se usa para el entrenamiento, a veces se lo denomina conjunto de datos de reserva.

Hay 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.

Librerías de aprendizaje automático: En Python, Spark MLlib y Scikit-learn son excelentes opciones. En R, algunas opciones de paquetes de aprendizaje automático son CARAT, randomForest, e1071 y KernLab. En Java, las buenas opciones incluyen Java-ML, RapidMiner y Weka.

Aprendizaje profundo explicado
El aprendizaje profundo es una forma de aprendizaje automático en la que el modelo que se está entrenando tiene más de una capa oculta entre el input y el output. En la mayoría de las discusiones, el aprendizaje profundo significa usar redes neuronales profundas. Sin embargo, existen algunos algoritmos que implementan el aprendizaje profundo utilizando otros tipos de capas ocultas además de las redes neuronales.

Las ideas para las redes neuronales «artificiales» se remontan a la década de 1940. El concepto esencial es que una red de neuronas artificiales construidas a partir de interruptores de umbral interconectados. puede aprender a reconocer patrones de la misma manera que lo hace un cerebro y sistema nervioso animal (incluida la retina).

Backprop: El aprendizaje ocurre básicamente al fortalecer la conexión entre dos neuronas cuando ambas están activas al mismo tiempo durante el entrenamiento. En el software moderno de redes neuronales, esto normalmente es cuestión de aumentar los valores de peso para las conexiones entre las neuronas usando una regla llamada retropropagación de error (backpropagation), backprop o BP.

Neuronas en redes neuronales artificiales: ¿Cómo se modelan las neuronas? Cada uno tiene una función de propagación que transforma los outputs de las neuronas conectadas, a menudo con una suma ponderada. El output de la función de propagación pasa a una función de activación, que se dispara cuando su input excede un valor umbral.

Funciones de activación en redes neuronales: En las décadas de 1940 y 1950, las neuronas artificiales usaban una función de activación por pasos y se llamaban perceptrones. Las redes neuronales modernas pueden decir que están usando perceptrones, pero en realidad tienen funciones de activación pulidas, como la función logística o sigmoidea, la tangente hiperbólica o la Rectified Linear Unit (ReLU). ReLU suele ser la mejor opción para una convergencia rápida, aunque tiene un problema de neuronas que «mueren» durante el entrenamiento si la tasa de aprendizaje es demasiado alta.

El output de la función de activación puede pasar a una función de output para dar forma adicional. Sin embargo, a menudo, la función de output es la función de identidad, lo que significa que el output de la función de activación es trasladado a las neuronas conectadas en fases posteriores.

Topologías de redes neuronales: Ahora que conocemos las neuronas, necesitamos aprender sobre las topologías de redes neuronales comunes. En una red de retroalimentación, las neuronas se organizan en capas distintas: una capa de entrada, n capas de procesamiento ocultas y una capa de salida. Los outputs de cada capa van solo a la siguiente capa.

En una red prealimentada 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 directa o indirectamente a través de la siguiente capa.

Redes neuronales de entrenamiento: El aprendizaje supervisado de una red neuronal se realiza como cualquier otro aprendizaje automático: le presenta grupos de datos de entrenamiento a la red, compara el output de la red con el output deseado, genera un vector de error y aplica correcciones a la red en base al vector de error. Los lotes de datos de entrenamiento que se ejecutan juntos antes de aplicar correcciones se denominan épocas.

Para aquellos interesados en los detalles, la retropropagación utiliza el gradiente de la función de error (o costo) con respecto a los pesos y sesgos del modelo para descubrir la dirección correcta y minimizar el error. Dos cosas controlan la aplicación de correcciones: el algoritmo de optimización y la variable de ritmo de aprendizaje. La variable de ritmo de aprendizaje generalmente debe ser pequeña para garantizar la convergencia y evitar causar neuronas ReLU muertas.

Optimizadores para redes neuronales: Los optimizadores para redes neuronales suelen utilizar alguna forma de algoritmo de descenso de gradiente para impulsar la retropropagación, a menudo con un mecanismo para ayudar a evitar que se quede atascado en los mínimos locales. Estos mecanismos pueden ser la optimización de mini lotes seleccionados aleatoriamente (Descenso de gradiente estocástico) y la aplicación de correcciones de impulso al gradiente. Algunos algoritmos de optimización también adaptan las tasas de aprendizaje de los parámetros del modelo mediante la observación del historial del gradiente (AdaGrad, RMSProp y Adam).

Al igual que con todo aprendizaje automático, debe verificar las predicciones de la red neuronal contra un conjunto de datos de validación separado. Si no lo hace, corre el riesgo de crear redes neuronales que solo memorizan sus inputs en lugar de aprender a ser predictores generalizados.

Algoritmos de aprendizaje profundo: Una red neuronal profunda para un problema real podría tener más de 10 capas ocultas. Su topología puede ser simple o bastante compleja.

Cuantas más capas en la red, más características puede reconocer. Desafortunadamente, cuantas más capas haya en la red, más tiempo tomará calcular y más difícil será entrenarla.

Las redes neuronales convolucionales (CNN) a menudo se usan para la visión artificial. Las redes neuronales convolucionales generalmente usan capas convolucionales, agrupadas, ReLU, completamente 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 aplican la función de activación no saturante f (x) = max (0, x). En una capa completamente conectada, las neuronas tienen conexiones 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 predichas y verdaderas, utilizando una función de pérdida de Softtrop o de entropía cruzada para la clasificación, o una función de pérdida euclidiana para la regresión.

Las redes neuronales recurrentes (RNN) se utilizan a menudo para el procesamiento del lenguaje natural (PNL) y otros procesos de secuencia, al igual que las redes Long Short-Term Memory (LSTM) y las redes neuronales basadas en la atención. En las redes neuronales prealimentadas, la información fluye desde el input, a través de las capas ocultas, hasta el output. Esto limita la red a tratar con un solo estado a la vez.

En las redes neuronales recurrentes, la información circula a través de un bucle, lo que permite que la red recuerde outputs anteriores recientes. Esto permite el análisis de secuencias y series de tiempo. Las RNN tienen dos problemas comunes: gradientes explosivos (se arreglan fácilmente sujetando los gradientes) y gradientes de fuga (no es tan fácil de arreglar).

En los LSTM, la red es capaz de olvidar (bloquear) información previa, así como recordarla; en ambos casos alterando los pesos. Esto efectivamente proporciona una memoria tanto a largo como a corto plazo, y resuelve el problema del gradiente de fuga. Los LSTM pueden manejar secuencias de cientos de outputs pasados.

Los módulos de atención son puertas generalizadas que aplican pesos a un vector de inputs. Un codificador jerárquico de atención neuronal utiliza múltiples capas de módulos de atención para manejar decenas de miles de inputs pasados.

Los Random Decision Forests (RDF), que no son redes neuronales, son útiles para una variedad de problemas de clasificación y regresión. Los RDF se construyen a partir de muchas capas, pero en lugar de neuronas, se construye un RDF a partir de árboles de decisión, y genera un promedio estadístico (modo de clasificación o media de regresión) de las predicciones de los árboles individuales. Los aspectos aleatorizados de los RDF son el uso de la agregación bootstrap (también conocido como bagging) para árboles individuales, y la toma de subconjuntos aleatorios de características para los árboles.

XGBoost (eXtreme Gradient Boosting), que tampoco es una red neuronal profunda, es un sistema escalable end-to-end de crecimiento (boosting) de árbol que ha producido resultados de vanguardia en muchos desafíos de aprendizaje automático. Bagging y boosting a menudo son mencionados en el mismo contexto; la diferencia es que, en lugar de generar un conjunto de árboles aleatorizados, la potenciación del gradiente de árbol comienza con un solo árbol de decisión o regresión, lo optimiza y luego construye el siguiente árbol a partir de los residuos del primero.

Algunos de los mejores frameworks de aprendizaje profundo de Python son TensorFlow, Keras, PyTorch y MXNet. Deeplearning4j es uno de los mejores frameworks de aprendizaje profundo de Java. ONNX y TensorRT son tiempos de ejecución para modelos de aprendizaje profundo.

Aprendizaje profundo vs. aprendizaje automático
En general, los algoritmos clásicos de aprendizaje automático (no profundo) entrenan y predicen mucho más rápido que los algoritmos de aprendizaje profundo; una o más CPU suelen ser suficientes para entrenar un modelo clásico. A menudo, los modelos de aprendizaje profundo necesitan aceleradores de hardware como GPU, TPU o FPGA para el entrenamiento y también para la implementación a escala; sin ellos, las modelos tardarían meses en entrenar.

Para muchos problemas, algunos algoritmos clásicos de aprendizaje automático producirán un modelo «suficientemente bueno». Para otros problemas, los algoritmos clásicos de aprendizaje automático no han funcionado demasiado bien en el pasado.

Un área que es generalmente abordada con el aprendizaje profundo es el procesamiento del lenguaje natural, que abarca la traducción del lenguaje, el resumen automático, la resolución de referencia conjunta, el análisis del discurso, la segmentación morfológica, el reconocimiento de entidades nombradas, la generación del lenguaje natural, la comprensión del lenguaje natural, el etiquetado gramatical, análisis de sentimientos y reconocimiento de voz.

Otra área principal para el aprendizaje profundo es la clasificación de imágenes, que incluye la clasificación de imágenes con localización, detección de objetos, segmentación de objetos, transferencia de estilos de imagen, colorización de imágenes, reconstrucción de imágenes, superresolución de imágenes y síntesis de imágenes.

Además, el aprendizaje profundo se ha utilizado con éxito para predecir cómo interactuarán las moléculas para ayudar a las compañías farmacéuticas a diseñar nuevos fármacos, buscar partículas subatómicas y analizar automáticamente las imágenes de microscopio utilizadas para construir un mapa tridimensional del cerebro humano.

Martin Heller, InfoWorld.com