Tengo la siguiente pregunta que compara la optimización por búsqueda aleatoria con la optimización por descenso de gradiente:
Basado en la (sorprendente) respuesta proporcionada aquí Optimización cuando la función de costes es lenta de evaluar Me di cuenta de algo muy interesante sobre la búsqueda aleatoria:
Búsqueda aleatoria
Incluso cuando la función de costes es costosa de evaluar, la búsqueda aleatoria puede ser útil. La búsqueda aleatoria es muy sencilla de implementar. La La única elección que tiene que hacer el investigador es establecer el probabilidad $p$ que quiere que sus resultados estén en algún cuantificar $q$ el resto procede automáticamente utilizando los resultados de la probabilidad básica.
Supongamos que su cuantil es $q = 0.95$ y quieres un $p=0.95$ probabilidad de que los resultados del modelo estén en lo más alto $100\times (1-q)=5$ por ciento de todas las tuplas de hiperparámetros. La probabilidad de que todas las $n$ las tuplas intentadas son no en esa ventana es $q^n = 0.95^n$ (porque se eligen independientemente al azar de la misma distribución), por lo que la probabilidad de que al menos uno la tupla está en esa región es $1 - 0.95^n$ . Si lo juntamos todo, tenemos
$$ 1 - q^n \ge p \implies n \ge \frac{\log(1 - p)}{\log(q)} $$
que en nuestro caso concreto da como resultado $n \ge 59$ .
Este resultado es la razón por la que la mayoría de la gente recomienda $n=60$ intentos de tuplas para búsqueda aleatoria. Cabe destacar que $n=60$ es comparable a la número de experimentos necesarios para obtener buenos resultados con los métodos basados en procesos gaussianos cuando hay un número moderado de parámetros. A diferencia de los procesos gaussianos, el número de tuplas de consulta no no cambia con el número de hiperparámetros a buscar; de hecho, para un gran número de hiperparámetros, un método basado en procesos gaussianos puede puede necesitar muchas iteraciones para avanzar.
Dado que se tiene una caracterización probabilística de lo bueno que es el resultados, este resultado puede ser una herramienta persuasiva para convencer a su de que la realización de más experimentos dará lugar a rendimientos marginales decrecientes. rendimientos marginales.
Utilizando la búsqueda aleatoria, se puede demostrar matemáticamente que: independientemente del número de dimensiones que tenga su función, ¡hay un 95% de probabilidades de que sólo se necesiten 60 iteraciones para obtener una respuesta en el 5% superior de todas las soluciones posibles!
-
Suponga que hay 100 soluciones posibles para su función de optimización (esto no depende del número de dimensiones). Un ejemplo de solución es $(X_1 = x_1, X_2 = x_2.... X_n = x_n)$ .
-
El 5% de las soluciones más altas incluirá las 5 soluciones más altas (es decir, las 5 soluciones que proporcionan los 5 valores más bajos de la función que se quiere optimizar)
-
La probabilidad de encontrar al menos una de las 5 primeras soluciones en " $n$ iteraciones" : $\boldsymbol{1 - [(1 - 5/100)^n]}$
-
Si quieres esta probabilidad $= 0.95$ se puede resolver para $n$ : $ \boldsymbol {1 - [(1 - 5/100)^n] = 0.95}
-
Así, $\boldsymbol{n = 60}$ ¡iteraciones!
Pero lo fascinante es que, $\boldsymbol{n = 60}$ iteraciones sigue siendo válida independientemente del número de soluciones que existan. Por ejemplo, aunque existan 1.000.000.000 de soluciones, sólo se necesitan 60 iteraciones para garantizar una probabilidad del 0,95 de encontrar una solución en el 5% superior de todas las soluciones.
-
$\boldsymbol{1 - [(1 - ( (0.05 \times 1000000000) /1000000000 )^{n} )] = 0.95}$
-
" $\boldsymbol{n}$ " ¡seguirán siendo 60 iteraciones!
Mi pregunta: Basándonos en este sorprendente "poder oculto" de la búsqueda aleatoria, y teniendo en cuenta además que la búsqueda aleatoria es mucho más rápida que el descenso de gradiente, ya que la búsqueda aleatoria no requiere calcular las derivadas de funciones de pérdida complejas multidimensionales (por ejemplo, las redes neuronales) : ¿Por qué utilizamos el descenso de gradiente en lugar de la búsqueda aleatoria para optimizar las funciones de pérdida en las redes neuronales?
La única razón que se me ocurre es que si la distribución de los valores de optimización está "muy sesgada negativamente", entonces el 1% superior podría ser significativamente mejor que el 2%-5% superior, y la cantidad de iteraciones necesarias para encontrar una solución en el 1% superior también será significativamente mayor:
Pero incluso con esa distribución de las puntuaciones de optimización, ¿el descenso por gradiente seguiría teniendo sus ventajas? ¿El descenso de gradiente (o el descenso de gradiente estocástico) tiene realmente la capacidad de competir con este "poder oculto" de la búsqueda aleatoria? Si se cumplen ciertas condiciones, debido a sus atractivas propiedades teóricas (por ejemplo, la convergencia), ¿tiene el descenso de gradiente la capacidad de alcanzar la mejor solución (no el mejor 5%, sino la mejor solución) mucho más rápido que la búsqueda aleatoria? O en aplicaciones de la vida real con funciones objetivo no convexas y ruidosas, ¿estas "propiedades teóricas atractivas" del descenso de gradiente generalmente no se aplican, y una vez más - el "increíble poder oculto" de la búsqueda aleatoria gana de nuevo?
En resumen: basándonos en este increíble "poder oculto" (y velocidad) de la búsqueda aleatoria, ¿por qué utilizamos el descenso de gradiente en lugar de la búsqueda aleatoria para optimizar las funciones de pérdida en las redes neuronales?
¿Puede alguien comentar esto?
Nota: Basándome en el gran volumen de literatura que insiste y alaba la capacidad del descenso de gradiente estocástico, estoy asumiendo que el descenso de gradiente estocástico tiene muchas ventajas en comparación con la búsqueda aleatoria.
Nota: Pregunta relacionada que ha resultado de una respuesta dada a esta pregunta: El teorema del almuerzo gratis y la búsqueda aleatoria
17 votos
¿Por qué no hacer el experimento obvio: probar 60 redes neuronales para algún problema no trivial con 60 inicializaciones aleatorias diferentes, elegir la mejor y ver cómo se compara con una entrenada mediante descenso de gradiente? Repítalo un número suficiente de veces para asegurarse de que el resultado es sólido. Sospecho que el método de búsqueda aleatoria no dará buenos resultados.
1 votos
Pregunta relacionada stats.stackexchange.com/questions/559251/
5 votos
Respuesta corta: Con una búsqueda aleatoria, se puede obtener muy barato una solución que esté "en el 5 por ciento superior", esto es cierto. Pero probablemente esa solución siga siendo completamente inútil. Sólo el 0,00....00001 por ciento de las soluciones son buenas (ese número se reduce rápidamente al aumentar el número de dimensiones). Y no podrá encontrar ninguna de ellas sólo con la aleatorización.
0 votos
@Simon ¿cómo lo sabes? El pasaje sobre 0.00 0001
0 votos
Creo que a todas las respuestas hasta ahora les falta el elemento clave que debe incluirse en cualquier resolución satisfactoria de la paradoja del OP