Loading [MathJax]/jax/element/mml/optable/GeneralPunctuation.js

14 votos

¿Por qué no aprendemos los hiperparámetros?

Estaba implementando un papel bastante popular " EXPLICAR Y APROVECHAR LOS EJEMPLOS ADVERSOS " y en el papel, entrena una función objetivo adversaria

J''() = J() + (1 )J'().

Se trata como un hiperparámetro. puede ser 0,1, 0,2, 0,3, etc.

Independientemente de este documento específico, me pregunto, ¿por qué no incluimos en nuestros parámetros y aprendemos lo mejor?

¿Cuál es la desventaja de hacerlo? ¿Es por el exceso de ajuste? Si es así, ¿por qué el aprendizaje de un solo parámetro más provoca tanto sobreajuste?

0 votos

Pues bien, si el hiperparámetro es un parámetro de la función de coste (y no del proceso de generación de datos DGP) no está claro que los datos por sí mismos contengan información al respecto.

1 votos

En muchos casos, utilizamos los datos para seleccionar α observando el rendimiento del modelo en un conjunto de validación. (es decir, un sustituto del error de generalización).

11voto

Adrya Puntos 573

"¿Por qué no aprendemos los hiperparámetros?"

Es una gran pregunta. Intentaré dar una respuesta más general. El TL;DR La respuesta es que definitivamente se pueden aprender los hiperparámetros, sólo que no a partir de los mismos datos. Siga leyendo para obtener una respuesta un poco más detallada.


A hiperparámetro suele corresponder a un ajuste del algoritmo de aprendizaje, más que a uno de sus parámetros. En el contexto del aprendizaje profundo, por ejemplo, esto se ejemplifica con la diferencia entre algo como el número de neuronas en una capa concreta (un hiperparámetro) y el peso de una arista concreta (un parámetro regular y aprendible).

¿Por qué hay una diferencia en primer lugar? El caso típico para hacer de un parámetro un hiperparámetro es que simplemente no es apropiado aprender ese parámetro del conjunto de entrenamiento. Por ejemplo, dado que siempre es más fácil reducir el error de entrenamiento añadiendo más neuronas, hacer que el número de neuronas de una capa sea un parámetro regular siempre fomentaría redes muy grandes, algo que sabemos a ciencia cierta que no siempre es deseable (por el exceso de ajuste).

A tu pregunta, no es que no aprendamos los hiperparámetros en absoluto. Dejando a un lado los retos computacionales por un minuto, es muy posible aprender buenos valores para los hiperparámetros, e incluso hay casos en los que esto es imperativo para un buen rendimiento; todo lo que la discusión en el primer párrafo sugiere es que por definición, no se pueden utilizar los mismos datos para esta tarea .

Utilizando otra división de los datos (creando así tres partes disjuntas: el conjunto de entrenamiento, el conjunto de validación y el conjunto de prueba, lo que se podría hacer en teoría es lo siguiente optimización anidada procedimiento: en el bucle externo, se trata de encontrar los valores para el hiperparámetros que minimizan la pérdida de validación y en el bucle interno, se intenta encontrar los valores para el regular parámetros que minimizan el pérdida de entrenamiento .

Esto es posible en teoría, pero muy costoso computacionalmente: cada paso del bucle exterior requiere resolver (hasta su finalización, o en algún punto cercano a ella) el bucle interior, que suele ser muy pesado computacionalmente. Lo que complica aún más las cosas es que el problema externo no es fácil: por un lado, el espacio de búsqueda es muy grande.

Hay muchos enfoques para superar esto simplificando la configuración anterior (búsqueda en cuadrícula, búsqueda aleatoria u optimización de hiperparámetros basada en el modelo), pero explicarlos va mucho más allá del alcance de su pregunta. Como también demuestra el artículo al que has hecho referencia, el hecho de que este procedimiento sea costoso suele hacer que los investigadores se lo salten por completo, o que prueben manualmente muy pocas configuraciones, para acabar decantándose por la mejor (de nuevo, según el conjunto de validación). Sin embargo, en cuanto a tu pregunta original, sostengo que, aunque sea muy simplista y artificial, sigue siendo una forma de "aprendizaje".

0 votos

Hola, gracias por su respuesta. ¿Qué ocurre si utilizo los mismos datos?

0 votos

@aerin, El modelo se sobreajustará como dijo por ejemplo en el número de capas o el número de nodos de la capa. Porque estos hiperparámetros tratan de encontrar el mejor ajuste que cubra completamente los datos de entrenamiento.

9voto

mclaughlinj Puntos 1099

Los hiperparámetros como el de ese artículo suelen utilizarse para equilibrar múltiples términos en la función de pérdida. Si los hicieras aprendibles, el proceso de optimización simplemente aprendería a asignar todo el peso hacia los términos que son más fáciles de optimizar a costa de los términos que son más difíciles de optimizar, lo que anula el objetivo de equilibrar los términos.

Otra forma de verlo es que la función de pérdida es un sustituto de un objetivo real que es difícil de definir u optimizar, como "generar imágenes de salida debe parecer realista" o "debe ser resistente a los ejemplos adversos". En ese caso, el verdadero objetivo no es "encontrar los hiperparámetros para minimizar la pérdida sustituta", sino "encontrar los hiperparámetros de tal manera que cuando ejecutamos SGD en el resto de los parámetros para optimizar el sustituto, obtenemos un buen rendimiento en el verdadero objetivo".

4voto

siliconpi Puntos 524

Ya que has preguntado "independientemente del papel", me gustaría tomar un ejemplo más sencillo: La regresión lineal penalizada (Ridge/Lasso).

Para esos casos, se me ocurren dos razones: Pero en primer lugar, tenga en cuenta que hay dos funciones aquí: (F1) La función de pérdida, que es una función analítica del hiperparámetro y de los datos (en el artículo que enlazaste, es ˜J y (F2) una estimación del error de generalización, que depende de la solución óptima de (F1) y del hiperparámetro elegido en (F1).

Advertencia: Un vistazo rápido al artículo revela que los autores entrenan un clasificador de red neuronal para el conjunto de datos MNIST. No dice explícitamente cómo elegir el hiperparámetro α pero yo habría elegido uno α que minimice el error de validación del mejor modelo.

  1. La función objetivo para optimizar el hiperparámetro es una expresión que representa el error de generalización. Esta expresión es difícil de escribir como una función analítica simple que se pueda diferenciar, pero se puede evaluar fácilmente en algún momento simplemente resolviendo el problema de optimización subyacente.

  2. La evaluación de la función (F2) requiere que se resuelva un problema de optimización, lo que podría ser costoso. Así que, incluso si se puede aproximar el gradiente de F2 para hacer el descenso de gradiente, sería caro y lento. En estos casos, hacer una búsqueda en cuadrícula suele ser "suficiente".

Dicho esto, existen técnicas para optimizar funciones objetivo de caja negra (como F2) asumiendo cierta estructura de suavidad debido a su dependencia del hiperparámetro. Como ejemplo, puedes ver este post que muestra cómo varía el rendimiento de un modelo Lasso con su hiperparámetro λ :

Lasso Model Performance

(Imagen extraída de este post: https://stats.stackexchange.com/a/26607/54725 )

Algunas referencias:

0 votos

¿Te refieres concretamente al segundo término del documento J(, x + esign (xJ(, x, y)) como F2?

0 votos

@Aaron no. J es la función de costes; ˜J es la función de costes regularizada. Dado que están construyendo un clasificador, yo diría que F2 podría ser la función de pérdida de validación. El documento dice que eligieron α sea 0,5, ya que funcionó lo suficientemente bien (no exploraron otros valores de α ni una estrategia para elegir α ).

0 votos

¿A qué se refieren en el documento como F1 y F2?

2voto

Aksakal Puntos 11351

Veamos cómo quedaría la condición de primer orden si introducimos el hiperparámetro α y tratar de aprenderlo de la misma manera que θ de los datos: αJ Por lo tanto, J(\theta) = J'(\theta)

Cuando se optimiza este hiperparámetro, entonces hará que tanto J como J' se conviertan en la misma función, es decir, en pesos iguales. Terminará con una solución trivial.

Si quiere filosofar de forma más genérica, considere lo siguiente: los hiperparámetros no suelen estar enredados con los datos. ¿A qué me refiero? En una red neuronal o incluso en una simple regresión, los parámetros de su modelo estarán en cierto modo interactuando directamente con los datos: y_L=X_L\beta_L a_L=\sigma(y_L) X_{L+1}=a_L y así sucesivamente en las capas. Ya ves cómo \beta_L enredarse en sus datos. Así, cuando se toma una derivada sobre cualquier \beta de la función objetivo se obtienen puntos de datos que entran en el resultado de formas no obvias en la matriz, Hessians, productos cruzados, etc.

Sin embargo, si se intenta estimar las condiciones de primer orden sobre los hiperparámetros, no se obtiene este efecto. Las derivadas de los hiperparámetros a menudo operan los trozos enteros de su modelo, sin barajar sus partes como las derivadas sobre los parámetros. Por eso la optimización de los hiperparámetros a menudo conduce a soluciones triviales como la que te di para el documento específico. Optimizar los hiperparámetros no angustia tu conjunto de datos y lo hace lo suficientemente incómodo como para producir algo interesante.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X