Ajustar los hiperparámetros es crucial para optimizar los modelos de aprendizaje automático, pero el proceso puede ser computacionalmente costoso y complejo. Los métodos tradicionales de optimización de cuadrícula, búsqueda aleatoria o incluso bayesianos suelen omitir áreas críticas del espacio de hiperparámetros, lo que genera modelos subóptimos.
En esta charla, presentamos un complemento JMP que desarrollamos y que utiliza DOE de relleno de espacio para abordar de forma más eficiente el reto del ajuste de hiperparámetros. El uso de DOE de relleno de espacio garantiza que las combinaciones de hiperparámetros se muestreen de forma más uniforme en todo el espacio de parámetros, lo que reduce el número de evaluaciones necesarias y aumenta la probabilidad de encontrar la configuración óptima.
Esta charla también destaca la integración mejorada con Python presente en JMP 18 y cómo aprovechar capacidades como DOE dentro de JMP puede ser beneficioso para los científicos de datos. Esta charla combina técnicas estadísticas avanzadas con herramientas prácticas y accesibles para optimizar el rendimiento de los modelos en diversas aplicaciones.
Hola. Gracias por asistir a nuestra charla. Esta charla trata sobre cómo mejorar el aprendizaje automático mediante diseños que rellenan el espacio para ajustar los hiperparámetros. Me llamo Peter Hirsch y mi copresentador es Scott Allen. Antes de explicar nuestro enfoque para mejorar el aprendizaje automático, quería compartir algunos resultados.
Aquí hay dos concursantes a quienes se les planteó el reto de construir 10 modelos predictivos. Cada uno de estos modelos predictivos fue una respuesta categórica. Si observamos los antecedentes de los dos concursantes, en una esquina tenemos a un científico de datos de fama mundial, Russ Wolfinger, y en la otra, a uno que no lo es. Esto equivale a jugar un uno contra uno contra Michael Jordan. Se podría esperar un resultado muy desigual.
Como pueden ver, los resultados fueron muy similares, y los científicos de datos menos conocidos obtuvieron mejores resultados. ¿Cómo es posible? El complemento Torch Companion fue mi arma secreta. Este complemento nos ayuda a todos a mejorar nuestros resultados de modelado, y es como tener a LeBron James como compañero en un partido de baloncesto uno contra uno.
Quiero empezar con un cuestionario muy sencillo. Cuando miramos esta imagen, ¿vemos un gato o un perro? ¿Y la otra imagen? ¿Vemos un gato o un perro? Es muy fácil: podemos distinguir que el perro está a la izquierda y el gato a la derecha, pero ¿cómo sabemos que esa imagen es de un perro o de un gato? ¿Cuáles son las características clave? Si construyéramos un modelo, ¿cómo lo entrenaríamos para que identificara un gato o un perro? Aquí hay un diagrama que nos da una representación visual de cómo se construye una red neuronal. En este caso, la imagen es de un cuatro escrito a mano, dividido en tres capas con tamaños de capa de cuatro nodos cada una.
Cada nodo tiene una representación diferente de la entrada original, y estos nodos y capas se combinan para realizar una predicción. Cada conjunto de datos puede tener un nivel de complejidad distinto. Si observamos el ejemplo superior, intentar identificar si un punto es verde o rojo podría ser un modelo mucho más sencillo que el inferior, donde vemos la imagen de un perro o un gato. Esto podría requerir un modelo mucho más complejo. El número de capas y el tamaño de las capas, o los nodos por capa, se denominan hiperparámetros, y deberán ajustarse para optimizar cada modelo.
¿Cómo ajustamos el modelo para abordar diferentes problemas? Si observamos aquí, esta es la ventana de inicio del complemento de ajuste de Torch dentro de JMP, y hay muchas opciones diferentes. Podemos analizar diferentes aspectos como épocas, tasa de aprendizaje, tamaño de capa y función de activación. Con todas estas opciones, tenemos millones de combinaciones diferentes que podemos ejecutar. ¿Por dónde empezamos?
Hay un par de opciones que podríamos tomar al explorar el espacio de hiperparámetros. La primera es una búsqueda en cuadrícula, y creo que es la más común o la más relacionada con un diseño factorial completo. Si la examináramos, consideraríamos todas las combinaciones posibles de todos los factores, lo que resultaría en más de dos millones y medio de modelos diferentes que tendríamos que ejecutar. Eso es demasiado en la mayoría de los casos. También podríamos realizar una búsqueda aleatoria, donde seleccionaríamos ciertas combinaciones de factores para ejecutarlas al azar.
También podríamos usar un enfoque de optimización bayesiana, o podríamos consultar con Russ Wolfinger. Es genial tener a Russ en el marcado rápido, o a otro científico de datos similar, pero no siempre es posible. ¿Cómo podríamos yo, Scott o un experimentador normal resolver este problema? Lo tratamos como un experimento. En JMP, ¿cómo hacemos experimentos? ¿Lo hacemos factor por factor? No, Drake no lo cree buena idea. Probablemente deberíamos diseñar un experimento. Vamos a hablar un poco sobre cómo funciona ese enfoque y le cedo la palabra a Scott.
Gracias, Peter. Lo que haremos aquí es simplemente repasar de qué se compone Torch Companion, mostrar algunos ejemplos y luego trabajar un poco con el complemento. Antes de profundizar en eso, voy a explicar brevemente qué incluye este complemento.
Este complemento integra diversas funciones de JMP, como las funciones de tabla, la plataforma DOE, el complemento Torch Deep Learning desarrollado por Russ y su equipo, y algunas salidas del generador de gráficos. Probablemente, podría realizar todas estas tareas por su cuenta, pero su objetivo es crear un flujo de trabajo fluido. Al igual que en muchas plataformas JMP, el usuario interactúa con el complemento especificando columnas que pueden ser su respuesta, sus factores y su validación. Luego, especifica los parámetros de Torch (en este caso, un rango de parámetros o una selección de opciones) y los pasa al complemento Torch. Veamos brevemente algunas de estas interfaces.
El cuadro de diálogo de columnas es muy similar al que se puede ver en una plataforma JMP estándar, donde se cargan la respuesta, los factores y las columnas de validación. Los factores pueden ser numéricos, de caracteres o, en este caso, un modelo de imagen. Creo que una característica única del complemento Torch es la capacidad de visualizar modelos de imagen, por lo que nos aseguramos de integrarla también en este complemento complementario. Al hacer clic en "Aceptar", se accede a la ventana de especificaciones. Trabajamos un poco con Russ en esto para obtener orientación sobre qué parámetros se pueden filtrar para alcanzar un modelo óptimo.
El objetivo es usar Torch Companion junto con el complemento Torch Deep Learning. No incluimos todos los parámetros que podría querer ajustar, pero esto le permitirá acercarse a un modelo óptimo y hacerlo de forma más eficiente. Podemos ajustar aspectos como el modelo, el tipo de modelo tabular o el tipo de modelo de imagen, y algunos de esos parámetros. También podemos analizar diferentes opciones de parámetros de la estructura del modelo, en concreto el número de ensayos DOE. Así es como puede configurar, en lugar de ejecutar un modelo a la vez, un enfoque de un factor a la vez: puede configurar un rango de parámetros y analizar 200 o 300 modelos con un solo clic.
Verás que algunas opciones están en gris. Queríamos que este complemento fuera accesible para quienes no usan Torch ni el aprendizaje automático en general, así que incluimos algunas medidas de seguridad. Sé que Peter agradeció algunas de ellas mientras lo revisábamos.
Sí, definitivamente era necesario para mantenerme enfocado. Fue útil.
Si no está familiarizado con estos diferentes tipos de modelos, preseleccionamos algunos de los más comunes y algunos buenos puntos de partida. Si desea usar este complemento para filtrar parámetros, puede seleccionar la casilla de verificación "Parámetros de pantalla" y empezar a analizarlos. De nuevo, desactivaremos algunas opciones que podrían no ser óptimas según el aspecto de su tabla de datos. También seleccionamos algunas funciones de activación más comunes y configuramos algunos de estos parámetros para escalarlos por un factor de, o por la potencia de dos, lo que le ayuda a filtrar una amplia gama de, por ejemplo, tamaños de capa de forma más eficiente.
También queremos incluir opciones avanzadas. Si seleccionas estas opciones, tendrás acceso a todos los tipos de modelos disponibles en el complemento Torch, así como a los tipos de modelos tabulares y a las funciones de activación disponibles. Dependiendo de tu nivel de conocimiento sobre aprendizaje profundo de Torch, puedes optar por la opción simple o por la opción avanzada. Veamos un ejemplo de cómo funciona. En este caso, he precargado diferentes opciones, un rango de épocas y tasas de aprendizaje, he seleccionado algunos tamaños de capa y lo he configurado en 100. Puedes realizar tantas o tan pocas pruebas como desees.
Luego, cuando hayas configurado todos los rangos de parámetros, haz clic en "Ejecutar". Una vez hecho esto, veremos el funcionamiento interno del complemento. Al hacer clic en "Ejecutar", se creará el diagrama de relleno de espacio después de manipular las tablas. Después, pasará cada fila de la tabla de diseño de relleno de espacio a Torch Deep Learning. De hecho, antes de empezar la charla, inicié un modelo. Como pueden ver, lo configuré para ejecutar 500 modelos de Torch. Seguimos avanzando a medida que hablábamos, recorriendo cada una de esas filas del diseño de relleno de espacio, lo que nos da una pequeña indicación de cómo va nuestra función de pérdida con respecto a las épocas, para indicarnos que hemos seleccionado los parámetros adecuados. Continuaremos con la charla y volveremos a revisarla en unos minutos.
Una vez que el complemento de aprendizaje profundo Torch se esté ejecutando, una vez que complete los cientos, docenas o la cantidad de modelos que haya especificado, resumirá los resultados mediante funciones de tabla adicionales y un generador de gráficos, y luego le proporcionará una ventana de salida o informe para interpretarlos. Según esa interpretación, existen dos caminos diferentes. Puede tomar un camino que le lleve de vuelta a la especificación de parámetros. Quizás no haya obtenido ningún modelo satisfactorio. Quizás crea que hay margen para mejorarlos.
Puedes configurar nuevos rangos de parámetros, seleccionar diferentes funciones y reiniciar el ciclo. Esto simplemente añadirá los nuevos resultados a los originales. O quizás hayas encontrado modelos realmente buenos, en los que confías y que no necesitas mejorar. Ahora puedes pasarlos directamente al complemento Torch Deep Learning para refinarlos, compararlos, guardarlos e implementarlos o ajustar los parámetros que no puedes ajustar en el complemento. Este es el flujo de trabajo que diseñamos y fue divertido organizarlo, pero Peter fue quien hizo la mayor parte del trabajo pesado en la creación del modelo. Peter, ¿podrías contarnos tu experiencia con esto?
Creo que si hay desarrolladores de software aquí, pueden pensar en Scott como el desarrollador del complemento y yo como el tester. Se me ocurrieron un par de cosas. Esto es un DOE, y el DOE suele ser un proceso iterativo: hacemos un solo DOE, aprendemos de él y, a partir de ahí, construimos un DOE óptimo. Si observamos los resultados que obtuve de un par de modelos, pueden ver que la mayoría de las veces ejecuto más de un DOE. A menudo, estos modelos se ejecutaban muy rápido en segundos, lo que permitía crear una gran cantidad de modelos. A veces, el proceso tardaba mucho más y era necesario ejecutar varios DOE, y no era conveniente ejecutar 100 para empezar. Por ejemplo, el modelo superior era un modelo de imagen, y cada modelo tardaba unos 10 minutos en ejecutarse.
Si empezaras con 200 modelos, tendrías que esperar un fin de semana para que se complete. Si observas algunos de los otros, quizás ejecutar 200 cuando todos tardan 4 segundos cada uno sea un poco mejor. Un par de consejos al respecto: me gusta usar un conjunto de validación cruzada de reserva para empezar, ya que es un proceso mucho más rápido que usar K-fold. Cuando lo revises, y si te gusta K-fold, al final, al iniciarlo en Torch, puedes cambiar la columna de validación; sin embargo, para optimizar, me gusta usar ese conjunto de validación único.
Además, me encanta el control de tiempo que Scott trajo incorporado. Si te preocupa que un modelo pueda llevar mucho tiempo, como un modelo de imagen, puedes hacer que el ajuste agregue el control por ti.
Bien. Gracias, Peter. Me atrevería a decir que probablemente hayas creado, aparte de Rust, la mayor cantidad de modelos de antorchas que hayas creado en JMP.
Definitivamente los que tienen peor rendimiento.
Cambiemos de tema y vayamos al complemento para mostrar algunos de estos informes y cómo filtrar y optimizar estos modelos. Repasemos nuestro modelo. Aún no hemos terminado. Tenemos unos 270 de los 500 que especificamos.
Otra función integrada es la posibilidad de cancelar. Si cancelamos esto, podrías cancelar por varias razones. Quizás estén tardando más de lo esperado o tengas poco tiempo. Sea cual sea el motivo, puedes cancelar. Al aceptar el error de la antorcha, tendrás la opción de continuar con la siguiente ejecución. Por ejemplo, si estás ejecutando un modelo de imagen y todos se ejecutan bastante rápido, entonces te encuentras con uno que va a tardar mucho tiempo.
Puedes continuar con el DOE y, básicamente, omitirlo y pasar al siguiente, o puedes detenerlo por completo. Eso es lo que haremos. Se detendrá, se generará el informe y la ventana del informe está aquí abajo. Aquí está la ventana del informe. Teníamos 500 en nuestro DOE, pero como pueden ver, tenemos resultados para 270 de ellos.
Lo que haremos ahora es simplemente echar un vistazo a esta tabla de resultados. Quiero guiarnos a través de algunos de los elementos más importantes para empezar. Lo primero son las estadísticas de resumen. La tabla está organizada según el R-cuadrado de validación; por lo tanto, cuanto mayor sea el R-cuadrado de validación, menor será el número de fila. A continuación, se tiene acceso a todos los ajustes de los parámetros, las diferentes entradas y algunas salidas, como el tiempo de ejecución de los modelos y el número de DOE ejecutados hasta el momento.
La primera herramienta de diagnóstico que puedes consultar es el mapa de calor de R-cuadrado. Esto simplemente representa gráficamente el R-cuadrado de validación frente al R-cuadrado de entrenamiento. Preferirías modelos con valores altos de R-cuadrado tanto para la validación como para el entrenamiento, pero puedes ver que aquí se obtiene un amplio rango de valores de R-cuadrado. Creo que esto es importante si eres nuevo en Torch o en el aprendizaje automático: si no estás seguro de qué parámetros establecer, podrías obtener modelos que se queden en esta situación. Podrías pensar: "Realmente no voy a poder construir un buen modelo".
Luego, se ajustan algunos parámetros, y es posible que empeoren. Lo que podemos hacer es ver que al analizar varios parámetros, se obtiene una mejor visión de las posibilidades de ese modelo. En este caso, vemos que tenemos algunos modelos que son bastante buenos, con un R cuadrado alto, para la validación y el entrenamiento. Hay algunos filtros de datos integrados, pero todos están disponibles solo en el Constructor de Gráficos, así que se pueden tomar estos datos y graficarlos como se desee. También hay dos pestañas que analizan parámetros individuales: los parámetros de ajuste del modelo, como la tasa de aprendizaje y las épocas, y su tendencia a lo largo del tiempo o en el espacio del modelo, así como las funciones de activación y otros parámetros de la estructura de capas.
Algo que podrías considerar aquí es analizar diferentes tipos de funciones de activación. Sé, Peter, que encontraste algunos resultados interesantes al analizar estos modelos.
Por supuesto. Cuando empezamos a desarrollar este complemento, Russ nos recomendó que analizáramos una sola función de activación y usáramos ReLU. ReLU es la más común. Es la que todos usan. Es un buen punto de partida. En algunos casos, ReLU funcionaba bien, pero en la mayoría de los casos, descubrimos que alguna de las otras funciones de activación funcionaba un poco mejor. No es que el enfoque de Russ no sea bueno, pero fue útil poder analizar todas estas funciones de activación y ver si se puede obtener un resultado ligeramente mejor modificando esa función.
No. Creo que esa es sin duda una de las intenciones aquí: si no conoces estas funciones de activación, o si las conoces, quizás sepas cuáles podrían ser apropiadas para un conjunto de datos o un tipo de modelo, o según tu experiencia. Pero si no las conoces, esto te ayudará a analizarlas todas. En este caso, analizamos seis de esas funciones, pero hay 20 disponibles que también podrías consultar.
También tenemos una salida de importancia de parámetros. Esto simplemente analiza la construcción de un modelo de bosque bootstrap rápido para mostrar cuáles de esos hiperparámetros o parámetros de ajuste son los más importantes para afectar la respuesta; en este caso, la validación de R-cuadrado. También tenemos detalles de cada modelo. Verá que en la tabla de resultados hay una columna que le proporciona un ID de modelo único; por lo tanto, si desea profundizar en cualquiera de estos modelos, puede abrirla. Esto es simplemente una exportación de Torch mientras se ejecutaba, por lo que aún tiene acceso aunque estemos resumiendo todo según el R-cuadrado del conjunto de validación. Todas las estadísticas de resumen de todos los modelos están disponibles.
Creo que esto cubre prácticamente todo lo que quería mostrar para la ventana de informes, y solo quería resumir lo que se puede hacer con el complemento con un par de opciones de flujo de trabajo diferentes. La primera es la reejecución. En este caso, quizás estemos satisfechos con algunos de estos modelos, pero podemos revisarlos y ver qué funciones de activación se usaron, y quizás queramos aumentar el número o el tamaño de las capas para poder volver a las especificaciones y seleccionar funciones específicas.
Quizás solo queramos ver estos tres, pero también tamaños de capa mayores. Entonces, podríamos especificar, quizás solo ver 50, y hacer clic en "Ejecutar" para ejecutar solo esa serie de parámetros seleccionada, y luego ejecutar otros 50 y añadirlos a la tabla. Esta sería una opción de flujo de trabajo a considerar. Otra opción son algunas de las opciones en el triángulo rojo. Quizás esté satisfecho con este modelo o estos dos y quiera incorporarlos al complemento Torch para ejecutarlos directamente.
No tienes que recordar constantemente cada parámetro e introducirlo en el complemento Torch. Simplemente ve al triángulo rojo y selecciona "Ejecutar selección". Al hacer clic en "Ejecutar selección", se tomarán esos parámetros, se pasarán al complemento Torch y se ejecutarán. Esto generará un informe en el complemento Torch nativo, lo que nos permitirá comparar los modelos. Como puedes ver, hemos pasado todos los parámetros necesarios, lo que nos permite comparar de forma más directa los modelos que mejor se ajusten y obtener una mejor indicación de las estadísticas de resumen.
Finalmente, quizás tengas modelos que tardan mucho en ejecutarse. En ese caso, es posible que no puedas realizar todos los ajustes en un día. Si quieres guardar esto y volver a verlo más tarde, puedes ir al triángulo rojo; simplemente guardaremos la tabla de datos de este resultado. Al guardarlo, puedo guardarlo en cualquier ubicación que desee y volver a cargarlo más tarde. Lo que haremos es mostrarte cómo funciona.
Voy a cerrar esto, hacer clic en Aceptar. Si quisiera recargar una tabla de datos guardada, volvería a mi tabla de datos original. Esta era la tabla de datos que usaba para el modelado. Ejecutaré el complemento, el complemento, y haré clic en Recuperar. Solo tienes que asegurarte de que estás ingresando las columnas correctas, las mismas columnas que se especificaron en tu ajuste, y hacer clic en Aceptar. En lugar de especificar todos los parámetros aquí, simplemente iremos al botón de carga, que no tenía activado.
Vayamos aquí a los resultados de ajuste y hagamos clic en "Abrir". Aparecerá un cuadro de diálogo que indica que tenemos las mismas variables "x", "y" y la columna de validación. Si alguna de ellas no coincide con la ejecución original, no se cargará. Al hacer clic en "Aceptar", veremos las ejecuciones de ajuste anteriores y regeneraremos todos los gráficos. Puede volver a las especificaciones y ejecutarlas de nuevo.
Creo que eso es todo lo que quería mostrar. Hay algunas otras opciones en el complemento Torch, y realmente quiero que la gente lo use junto con el complemento Torch Deep Learning que Russ y su equipo desarrollaron. Estoy seguro de que encontrarán otras funciones útiles una vez que empiecen a trabajar con él. Quizás ahora le ceda el paso a Peter para que hable un poco sobre algunos de los resultados, o los resultados finales.
Suena bien. Gracias, Scott. Los resultados que obtuvimos aquí en rojo son los resultados del R-cuadrado de validación que obtuve de mis modelos, y en azul son los resultados que Russ obtuvo de los suyos. Esto no es una crítica a Russ. Russ es un gran científico de datos, pero creo que es más bien una demostración del poder de usar el DOE en lugar de un factor a la vez.
Esto demuestra que, al comparar a un químico con un científico de datos y permitirle ejecutar modelos, si se utiliza DOE, el químico puede tener un éxito similar o incluso superar lo que un buen científico de datos puede hacer. El complemento de ajuste ofrece esa capacidad a todos, y no pretende, como dijo Scott, reemplazar el complemento Torch; funciona junto con este y estará disponible en el mercado. Ambos están disponibles.
Me di una medalla olímpica por vencer a Russ porque creo que es un buen resultado para cualquiera, pero también para alguien sin experiencia en ciencia de datos. Empezamos hablando de identificar gatos y perros, pero si lo pensamos en el mundo real, podemos imaginarnos que existen diferentes tipos de modelos de imagen o incluso modelos tabulares que podrían usarse con este enfoque de red neuronal de aprendizaje profundo, y ajustar estos hiperparámetros ayudará a obtener mejores resultados.
Estas imágenes provienen de diferentes ejemplos del libro de cuentos del complemento Torch. Creo que todos tenemos este tipo de datos a los que podríamos aplicar este enfoque. Queremos agradecer, por supuesto, a Russ. Sé que le hicimos pasar un mal rato, pero también nos ayudó mucho con el desarrollo de este complemento, ayudándonos a establecer límites para que no me sintiera perdido. Y, por supuesto, al comité directivo de JMP por seleccionar esta charla. Como mencionamos, tanto el complemento Torch como el complemento Tuning están disponibles en Marketplace. Tenemos un código QR aquí si desean descargarlo o simplemente visitar marketplace.jmp.com. Gracias.
Gracias.