Aprendizaje automático automatizado (AutoML)
SE APLICA A: Azure ML del SDK de Python v1
El aprendizaje automático automatizado, también denominado ML automatizado o AutoML, es el proceso de automatizar las tareas lentas e iterativas del desarrollo de modelos de Machine Learning. Permite que los desarrolladores, analistas y científicos de datos creen modelos de aprendizaje automático con un escalado, eficiencia y productividad altos, al mismo tiempo que mantiene la calidad del modelo. El aprendizaje automático de Azure Machine Learning se basa en una innovación de la división Microsoft Research.
El desarrollo de modelos de Machine Learning tradicional consume muchos recursos, que requieren un conocimiento del dominio y tiempo significativos para generar y comparar docenas de modelos. Gracias al aprendizaje automático automatizado, reducirá el tiempo necesario para obtener modelos de aprendizaje automático listos para producción con gran eficiencia y facilidad.
Formas de usar AutoML en Azure Machine Learning
Azure Machine Learning ofrece las dos experiencias siguientes para trabajar con el aprendizaje automático automatizado. Consulte las secciones siguientes para comprender la disponibilidad de las características en cada experiencia (v1).
Para clientes con experiencia en código, el SDK de Azure Machine Learning para Python. Introducción con el Tutorial: Uso del aprendizaje automático para predecir tarifas de taxi (v1).
Para clientes con poca experiencia en código o ninguna, Estudio de Azure Machine Learning en https://ml.azure.com. Comience por estos tutoriales:
Configuración del experimento
Los valores siguientes le permiten configurar el experimento de aprendizaje automático automatizado.
SDK de Python | La experiencia web de Studio | |
---|---|---|
Divide los datos en conjuntos de entrenamiento y validación | ✓ | ✓ |
Admite tareas de Machine Learning: clasificación, regresión y predicción | ✓ | ✓ |
Admite tareas de Computer Vision: clasificación de imágenes, detección de objetos y segmentación de instancias | ✓ | |
Optimiza en función de la métrica principal | ✓ | ✓ |
Admite el proceso de Azure Machine Learning como destino de proceso | ✓ | ✓ |
Configura el horizonte de previsión, los intervalos de destino y el período acumulado | ✓ | ✓ |
Establece criterios de salida | ✓ | ✓ |
Establece el número de iteraciones simultáneas | ✓ | ✓ |
Quitar columnas | ✓ | ✓ |
Bloquea algoritmos | ✓ | ✓ |
Validación cruzada | ✓ | ✓ |
Admite el aprendizaje en clústeres de Azure Databricks | ✓ | |
Muestra nombres de características con ingeniería | ✓ | |
Resumen de características | ✓ | |
Caracterización para festivos | ✓ | |
Niveles de detalle del archivo de registro | ✓ |
Configuración del modelo
Estos valores se pueden aplicar al mejor modelo como resultado del experimento de aprendizaje automático automatizado.
SDK de Python | La experiencia web de Studio | |
---|---|---|
Registro, implementación y explicación mejores del modelo | ✓ | ✓ |
Habilita los modelos del conjunto de votación y el conjunto de pila | ✓ | ✓ |
Muestra el mejor modelo en función de una métrica que no es la principal | ✓ | |
Habilita o deshabilita la compatibilidad con el modelo de ONNX | ✓ | |
Prueba del modelo | ✓ | ✓ (vista previa) |
Configuración de control de trabajos
Esta configuración le permite revisar y controlar los trabajos de experimentos y sus trabajos secundarios.
SDK de Python | La experiencia web de Studio | |
---|---|---|
Tabla de resumen de trabajos | ✓ | ✓ |
Cancelar trabajos y trabajos secundarios | ✓ | ✓ |
Obtiene límites de protección | ✓ | ✓ |
Pausar y reanudar trabajos | ✓ |
Cuándo usar AutoML: clasificación, regresión, previsión y Computer Vision NLP
Aplique aprendizaje automático automatizado cuando quiera que Azure Machine Learning entrene y ajuste un modelo automáticamente con la métrica de destino que especifique. El aprendizaje automático automatizado democratiza el proceso de desarrollo del modelo de Machine Learning y permite que los usuarios (independientemente de su experiencia en ciencia de datos) identifiquen una canalización de aprendizaje automático completa para cualquier problema.
Los profesionales y desarrolladores de ML de todos los sectores pueden usar el aprendizaje automático para:
- Implementar soluciones de ML sin grandes conocimientos de programación.
- Ahorrar tiempo y recursos.
- Aprovechar los procedimientos recomendados de la ciencia de datos.
- Proporcionar soluciones ágiles a los problemas.
clasificación
La clasificación es una tarea común del aprendizaje automático. La clasificación es un tipo de aprendizaje supervisado en el que los modelos aprenden mediante datos de entrenamiento y aplican lo que han aprendido a nuevos datos. Azure Machine Learning ofrece caracterizaciones específicas para estas tareas, como los caracterizadores de texto de red neuronal profunda para la clasificación. Más información sobre las opciones de caracterización (v1).
El objetivo principal de los modelos de clasificación es predecir en qué categorías se incluirán los nuevos datos en función de lo aprendido de los datos de entrenamiento. Algunos ejemplos comunes de clasificación son la detección de fraudes, el reconocimiento de escritura a mano y la detección de objetos. Obtenga más información y vea un ejemplo en Creación de un modelo de clasificación con aprendizaje automático (v1).
Consulte ejemplos de clasificación y aprendizaje automático automatizado en estos cuadernos de Python: Detección de fraudes, Predicción de Marketing y Clasificación de datos de grupo de noticias
Regresión
De forma similar a la clasificación, las tareas de regresión también son una tarea de aprendizaje supervisada común.
A diferencia de la clasificación, donde los valores de salida pronosticados son categóricos, los modelos de regresión predicen valores de salida numéricos basados en predicciones independientes. En la regresión, el objetivo es ayudar a establecer la relación entre esas variables de predicción independientes mediante la estimación de cómo una variable afecta a las otras. Por ejemplo, el precio de un automóvil según características como, el kilometraje de gas, la clasificación de seguridad, etc. Puede encontrar más información y ver un ejemplo en el artículo sobre la regresión con aprendizaje automático automatizado (v1).
Vea ejemplos de regresión y aprendizaje automático automatizado para predicciones en estos cuadernos de Python: Predicción del rendimiento de la CPU,
Previsión de series temporales
La creación de previsiones es una parte integral de cualquier empresa, ya sea de los ingresos, los inventarios, las ventas o los clientes. Puede usar el aprendizaje automático automatizado para combinar las técnicas y enfoques y obtener una previsión recomendada y de alta calidad de series temporales. Puede encontrar más información en este artículo de procedimientos: Aprendizaje automático automatizado para un modelo de previsión de series temporales (v1).
Un experimento automatizado de series temporales se trata como un problema de regresión multivariante. Los valores de series temporales anteriores se "dinamizan" para convertirse en dimensiones adicionales para el regresor junto con otros indicadores. Este enfoque, a diferencia de los métodos clásicos de series temporales, tiene la ventaja de incorporar de forma natural varias variables contextuales y su relación entre sí durante el entrenamiento. El aprendizaje automático automatizado aprende un modelo único (a menudo, internamente bifurcado) para todos los elementos en el conjunto de datos y horizontes de predicción. Por tanto, hay más datos disponibles para calcular los parámetros del modelo, y se hace posible la generalización hasta series totalmente nuevas.
La configuración de previsión avanzada incluye:
- detección y caracterización de festividades
- aprendizaje de series temporales y DNN (ARIMA, Prophet, ForecastTCN)
- compatibilidad con gran cantidad de modelos a través de la agrupación
- validación cruzada de origen variable
- retrasos configurables
- características de agregado en periodos acumulados
Consulte ejemplos de regresión y aprendizaje automático automatizado para las predicciones en estos cuadernos de Python: Previsión de ventas, Previsión de la demanda y Previsión de usuarios activos diarios de GitHub.
Visión del equipo
La compatibilidad con las tareas de visión por ordenador permite generar fácilmente modelos entrenados con datos de imágenes para escenarios como la clasificación de imágenes y la detección de objetos.
Con esta funcionalidad, puede:
- Integrar sin problemas con la funcionalidad de etiquetado de datos de Azure Machine Learning.
- Usar datos etiquetados para generar modelos de imagen.
- Optimizar el rendimiento del modelo especificando el algoritmo de modelo y ajustando los hiperparámetros.
- Descargar o implementar el modelo resultante como un servicio web en Azure Machine Learning.
- Operacionalizar a gran escala, aprovechando las funcionalidades de MLOps y canalizaciones de ML (v1) de Azure Machine Learning.
La creación de modelos de aprendizaje automático automatizado para tareas de visión se admite mediante el SDK de Python de Azure Machine Learning. Se puede acceder a los trabajos, modelos y salidas de experimentación resultantes desde la UI de Estudio de Azure Machine Learning.
Aprenda a configurar el entrenamiento de AutoML para modelos de Computer Vision.
ML automatizado para imágenes admite las siguientes tareas de Computer Vision:
Tarea | Descripción |
---|---|
Clasificación de imágenes de varias clases | Tareas en las que una imagen se clasifica con una sola etiqueta de un conjunto de clases; por ejemplo, cada imagen se clasifica como una imagen de un "gato", un "perro" o un "pato". |
Clasificación de imágenes con varias etiquetas | Tareas en las que una imagen podría tener una o varias etiquetas de un conjunto de etiquetas; por ejemplo, una imagen podría etiquetarse con "gato" y "perro". |
Detección de objetos | Tareas para identificar objetos en una imagen y localizar cada objeto con un rectángulo delimitador, por ejemplo, localizar todos los perros y gatos de una imagen y dibujar un rectángulo delimitador alrededor de cada uno. |
Segmentación de instancias | Tareas para identificar objetos de una imagen en el nivel de píxel, dibujando un polígono alrededor de cada objeto de la imagen. |
Procesamiento del lenguaje natural (NLP)
La compatibilidad con tareas de procesamiento de lenguaje natural (NLP) en ML automatizado le permite generar fácilmente modelos entrenados en datos de texto para escenarios de clasificación de texto y reconocimiento de entidades con nombre. La creación automatizada ML modelos NLP entrenados se admite a través del SDK Azure Machine Learning Python. Se puede acceder a los trabajos, modelos y salidas de experimentación resultantes desde la UI de Estudio de Azure Machine Learning.
La funcionalidad NLP admite:
- Entrenamiento de NLP de red neuronal profunda de un extremo a otro con los modelos de BERT entrenados previamente más recientes
- Integración sin problemas con el etiquetado de datos de Azure Machine Learning
- Usar datos etiquetados para generar modelos NLP
- Compatibilidad multilingüe con 104 idiomas
- Aprendizaje distribuido con Horovod
Aprenda a configurar el entrenamiento de AutoML para modelos NLP (v1).
Funcionamiento del aprendizaje automático
Durante el entrenamiento, Azure Machine Learning crea una serie de canalizaciones en paralelo que prueban distintos parámetros y algoritmos. El servicio recorre en iteración los algoritmos de ML que corresponden con las selecciones de características, de forma que cada iteración genera un modelo con una puntuación de entrenamiento. Cuanto mayor sea la puntuación, mejor se "ajustará" el modelo a sus datos. Se detendrá una vez que logre los criterios de salida definidos en el experimento.
Si usa Azure Machine Learning, puede diseñar y ejecutar sus experimentos de entrenamiento de Machine Learning automatizado mediante los siguientes pasos:
Identifique el problema de Machine Learning que quiere solucionar: clasificación, previsión, regresión o Computer Vision.
Elija si desea usar el SDK de Python o la experiencia web de Studio: Aprenda sobre la paridad entre el SDK de Python y la experiencia web de Studio.
- Si busca una experiencia sin código o limitada, pruebe la experiencia web de Azure Machine Learning Studio en https://ml.azure.com.
- Los desarrolladores de Python pueden consultar el SDK de Python de Azure Machine Learning (v1).
Especifique el origen y el formato de los datos de entrenamiento etiquetados: matrices de Numpy o dataframes de Pandas.
Configure el destino de proceso para el entrenamiento del modelo, puede ser un equipo local, los procesos de Azure Machine Learning, las máquinas virtuales remotas o Azure Databricks con SDK v1.
Configure los parámetros de aprendizaje de automático automatizado que determinan el número de iteraciones en diferentes modelos, las configuraciones de hiperparámetros, la caracterización y preprocesamiento de datos y las métricas que se deben observar para seleccionar al mejor modelo.
Envíe el trabajo de entrenamiento.
Revisión de los resultados
En el siguiente diagrama se muestra este proceso.
También puede inspeccionar la información de trabajo registrada, que contiene las métricas que se recopilan durante el trabajo. El trabajo de entrenamiento genera un objeto serializado de Python (archivo .pkl
) que contiene el modelo y el preprocesamiento de los datos.
Aunque se automatiza la creación del modelo, también puede conocer las características importantes o pertinentes de los modelos generados.
Guía sobre los destinos de proceso de ML administrados de forma local o remota
La interfaz web siempre usa para el aprendizaje automático automatizado un destino de proceso remoto. Pero cuando use el SDK de Python, elegirá un destino de proceso o bien local o remoto para el entrenamiento de ML automatizado.
- Proceso local: el entrenamiento se produce en el proceso del equipo portátil o máquina virtual local.
- Proceso remoto: el entrenamiento se produce en los clústeres de proceso de Machine Learning.
Selección del destino de proceso
Tenga en cuenta estos factores al elegir el destino de proceso:
- Elija un proceso local: si su escenario es de exploraciones iniciales o demostraciones con datos reducidos y entrenamientos cortos (es decir, segundos o un par de minutos por cada trabajo secundario), el entrenamiento en el equipo local puede ser la mejor opción. No hay tiempo de instalación y los recursos de infraestructura (su equipo o máquina virtual) están disponibles directamente.
- Elija un clúster de proceso de ML remoto: si va a realizar un entrenamiento con conjuntos de datos de mayor tamaño, como en los entrenamientos de producción con la creación de modelos que necesiten entrenamientos más largos, el proceso remoto proporciona un rendimiento de tiempo de extremo a extremo mucho mejor, ya que
AutoML
pondrá en paralelo los entrenamientos en los nodos del clúster. En un proceso remoto, el tiempo de inicio para la infraestructura interna agregará alrededor de 1,5 minutos por trabajo secundario, además de minutos adicionales para la infraestructura de clústeres si las máquinas virtuales todavía no están en funcionamiento.
Ventajas y desventajas
Cuando elija entre local y remoto tenga en cuenta estas ventajas y desventajas.
Ventajas (a favor) | Desventajas (en contra) | |
---|---|---|
Destino de proceso local | ||
Clústeres de proceso de ML remotos |
Disponibilidad de características
Hay más características disponibles cuando se usa el proceso remoto, tal como se muestra en la tabla siguiente.
Característica | Remote | Local |
---|---|---|
Streaming de datos (compatibilidad con datos de gran tamaño, hasta 100 GB) | ✓ | |
Características de texto y entrenamiento basados en DNN-BERT | ✓ | |
Compatibilidad de GPU integrada (entrenamiento e inferencia) | ✓ | |
Compatibilidad con la clasificación y etiquetado de imágenes | ✓ | |
Modelos Auto-ARIMA, Prophet y ForecastTCN para la previsión | ✓ | |
Varios trabajos/iteraciones en paralelo | ✓ | |
Creación de modelos con la funcionalidad de interpretación en la interfaz de usuario de la experiencia web de AutoML Studio | ✓ | |
Personalización de ingeniería de características en la interfaz de usuario de la experiencia web de Studio | ✓ | |
Ajuste de hiperparámetros de Azure Machine Learning | ✓ | |
Compatibilidad con el flujo de trabajo de canalización de Azure Machine Learning | ✓ | |
Continuación de un trabajo | ✓ | |
Previsión | ✓ | ✓ |
Creación y ejecución de experimentos en cuadernos | ✓ | ✓ |
Registro y visualización de la información y las métricas del experimento en la interfaz de usuario | ✓ | ✓ |
Límites de protección de datos | ✓ | ✓ |
Datos de entrenamiento, validación y prueba
Con la ML proporciona los datos de entrenamiento para entrenar ML modelos y puede especificar qué tipo de validación de modelos se va a realizar. El ML automatizado realiza la validación del modelo como parte del entrenamiento. Es decir, el ML automatizado utiliza datos de validación para optimizar los hiperparámetros del modelo en función del algoritmo aplicado para encontrar la mejor combinación que mejor se adapte a los datos de entrenamiento. Sin embargo, se usan los mismos datos de validación para cada iteración de optimización, lo que introduce el sesgo de evaluación del modelo, ya que el modelo sigue mejorando y ajustando los datos de validación.
Para ayudar a confirmar que este sesgo no se aplica al modelo recomendado final, el ML automatizado admite el uso de datos de prueba para evaluar el modelo final que el ML automatizado recomienda al final del experimento. Cuando se proporcionan datos de prueba como parte de la configuración del experimento de AutoML, este modelo recomendado se prueba de forma predeterminada al final del experimento (versión preliminar).
Importante
La característica para probar modelos con un conjunto de datos de prueba con el fin de evaluar los modelos generados está en versión preliminar. Esta funcionalidad es una característica experimental en versión preliminar y puede cambiar en cualquier momento.
Aprenda a configurar experimentos de AutoML para usar datos de prueba (versión preliminar) con el SDK (v1) o con Estudio de Azure Machine Learning.
También puede probar cualquier modelo de ML automatizado existente (versión preliminar) (v1), incluidos los modelos de trabajos secundarios, proporcionando sus propios datos de prueba o reservando una parte de los datos de entrenamiento.
Ingeniería de características
La ingeniería de características es el proceso de usar el conocimiento de dominio de los datos para crear características que ayuden a mejorar los algoritmos de ML. En Azure Machine Learning, se aplican técnicas de escalado y normalización para facilitar la ingeniería de características. En conjunto, estas técnicas y la ingeniería de características se conocen como caracterización.
En el caso de los experimentos de aprendizaje automático automatizado, la caracterización se aplica automáticamente, pero también se puede personalizar en función de los datos. Obtenga más información sobre qué caracterización se incluye (v1) y cómo AutoML ayuda a evitar el sobreajuste y los datos desequilibrados en los modelos.
Nota:
Los pasos de la caracterización del aprendizaje automático automatizado (normalización de características, control de los datos que faltan, conversión de valores de texto a numéricos, etc.) se convierten en parte del modelo subyacente. Cuando se usa el modelo para realizar predicciones, se aplican automáticamente a los datos de entrada los mismos pasos de caracterización que se aplican durante el entrenamiento.
Personalización de la caracterización
También hay disponibles técnicas de ingeniería de características adicionales, como la codificación y las transformaciones.
Para habilitar esta configuración, realice lo siguiente:
Estudio de Azure Machine Learning: Habilite Características automáticas en la sección Ver configuración adicional siguiendo estos pasos (v1).
SDK de Python: Especifique
"feauturization": 'auto' / 'off' / 'FeaturizationConfig'
en el objeto AutoMLConfig. Más información sobre cómo habilitar la ingeniería de características (v1).
Modelos de conjuntos
El aprendizaje automático automatizado admite modelos de conjunto, que están habilitados de forma predeterminada. El aprendizaje de conjunto mejora los resultados del aprendizaje automático y su rendimiento predictivo mediante la combinación de varios modelos en lugar de usar modelos únicos. Las iteraciones de conjunto aparecen como las iteraciones finales del trabajo. El aprendizaje automático automatizado usa los métodos de conjunto de votaciones y apilamiento para combinar modelos:
- Votación: realiza la predicción en función de la media ponderada de las probabilidades de clase predichas (para tareas de clasificación) o de los destinos de regresión predichos (para tareas de regresión).
- Apilamiento: el apilamiento combina modelos heterogéneos y entrena un metamodelo basado en la salida de los modelos individuales. Los metamodelos predeterminados actuales son LogisticRegression para las tareas de clasificación y ElasticNet para las tareas de regresión y previsión.
El algoritmo de selección de conjunto de Caruana con inicialización de conjunto ordenado se utiliza para decidir qué modelos se van a utilizar en el conjunto. En un nivel alto, este algoritmo inicializa el conjunto con hasta cinco modelos con las mejores puntuaciones individuales y comprueba que estos modelos se encuentran en un umbral del 5 % de la mejor puntuación para evitar un conjunto inicial deficiente. A continuación, para cada iteración de conjunto, se agrega un nuevo modelo al conjunto existente y se calcula la puntuación resultante. Si un nuevo modelo ha mejorado la puntuación de conjunto existente, el conjunto se actualiza para incluir el nuevo modelo.
Consulte el procedimiento (v1) para cambiar la configuración del conjunto predeterminado en el aprendizaje automático automatizado.
AutoML y ONNX
Con Azure Machine Learning, puede usar Machine Learning para generar un modelo de Python y convertirlo al formato ONNX. Una vez que los modelos están en el formato ONNX, se pueden ejecutar en varias plataformas y dispositivos. Más información sobre la aceleración de los modelos de Machine Learning con ONNX.
Consulte cómo convertir al formato ONNX en este ejemplo de Jupyter Notebook. Aprenda cuáles son los algoritmos que se admiten en ONNX (v1).
El entorno de ejecución de ONNX también es compatible con C#, por lo que puede usar el modelo creado automáticamente en sus aplicaciones de C# sin necesidad de volver a codificar o experimentar alguna de las latencias de red que presentan los puntos de conexión REST. Obtenga más detalles sobre el uso de un modelo AutoML de ONNX en una aplicación .NET con ML.NET y la creación de inferencias en modelos de ONNX con la API de C# del entorno de ejecución de ONNX.
Pasos siguientes
Hay varios recursos que le ayudarán a ponerse en marcha con AutoML.
Tutoriales y procedimientos
Los tutoriales son ejemplos de introducción de un extremo a otro de escenarios de AutoML.
Para una experiencia basada en código, consulte Tutorial: Entrenamiento de un modelo de regresión con AutoML y Python (v1).
Para una experiencia sin código o con poco código, consulte Tutorial: Entrenamiento de un modelo de clasificación con aprendizaje automático automatizado sin código en el Estudio de Azure Machine Learning.
Para usar AutoML para entrenar modelos de Computer Vision, consulte el Tutorial: Entrenamiento de un modelo de detección de objetos con AutoML y Python (v1).
Los artículos de procedimientos proporcionan información adicional sobre la funcionalidad que ofrece AutoML. Por ejemplo,
Configure de los experimentos de aprendizaje automáticos
Obtenga información sobre cómo entrenar modelos de previsión con datos de series temporales (v1).
Obtenga más información sobre cómo entrenar modelos de Computer Vision con Python (v1).
Obtenga información sobre cómo ver el código generado desde los modelos ML automatizados.
Muestras de cuaderno de Jupyter
Revise los ejemplos de código y los casos de uso detallados en el repositorio del cuaderno de GitHub para obtener muestras de aprendizaje automático automatizado.
Referencia de SDK de Python
Profundizar en sus conocimientos sobre los patrones de diseño y las especificaciones de clases del SDK con la documentación de referencia de la clase AutoML.
Nota:
Las funcionalidades del aprendizaje automático automatizado también están disponibles en otras soluciones de Microsoft como,ML.NET, HDInsight, Power BI y SQL Server