¿Se utilizan métodos de búsqueda de línea en el aprendizaje profundo? Por qué no?

18

Muchos tutoriales en línea hablan sobre el descenso del gradiente y casi todos usan un tamaño de paso fijo (tasa de aprendizaje ). ¿Por qué no se utiliza la búsqueda de línea (como la búsqueda de línea de retroceso o la búsqueda de línea exacta)?α

Haitao Du
fuente
55
"Y casi todos usan un tamaño de paso fijo", ¿estás seguro? Se supone que los hiperparámetros de "tasa de aprendizaje" adaptan el tamaño del paso a las condiciones. Un algoritmo de Adam muy popular sí adapta el tamaño del paso
Aksakal
1
hmm, los métodos de gradiente de tamaño de paso adaptable han existido desde al menos 2011, e incluso se citan en la página de descenso de gradiente estocástico de Wikipedia . No es exactamente una buena noticia. Incluso el SGD de vainilla casi siempre se usa con una tasa de aprendizaje que cambia con el número de iteraciones ( cronograma ). Ahora, una muy buena pregunta sería: ¿por qué, incluso si hay tantos métodos de descenso de gradiente adaptativo, el SGD aún domina el mundo de Deep Learning? La pregunta es mucho menos trivial de lo que parece.
DeltaIV
1
La búsqueda de línea de retroceso fija una dirección y luego busca una forma de reducir la función. Entonces, a menos que tenga una manera inteligente de elegir la dirección para buscar, se encontrará con una optimización tediosa.
Alex R.
1
No veo que la búsqueda de líneas tenga sentido para SGD (en oposición al descenso de gradiente [por lotes]), por lo que diría que esa es la razón.
seanv507
3
Sospecho que la razón por la que la búsqueda de líneas no es muy popular es el procesamiento por lotes en el descenso de gradiente. Obtienes un lote y luego calculas el gradiente. No tiene mucho sentido ir y venir de la línea debido al ruido en el gradiente. Es mejor seguir adelante con el próximo lote y, quizás, recocer el tamaño del paso.
Aksakal

Respuestas:

14

El descenso del gradiente de vainilla se puede hacer más confiable usando búsquedas de línea; He escrito algoritmos que hacen esto y lo convierte en un algoritmo muy estable (aunque no necesariamente rápido).

Sin embargo, casi no tiene sentido hacer una búsqueda en línea de métodos de gradiente estocástico . La razón por la que digo esto es que si hacemos una búsqueda de línea basada en minimizar la función de pérdida total, inmediatamente perdemos una de las principales motivaciones para hacer métodos estocásticos; ahora necesitamos calcular la función de pérdida completa para cada actualización, que generalmente tiene un costo computacional comparable al cálculo de la primera derivada completa. Dado que queríamos evitar calcular el gradiente completo debido a los costos computacionales, parece muy poco probable que queramos estar bien con el cálculo de la función de pérdida total.

EDITAR

@DeltaIV señala que esto también se aplica a mini lotes, no solo a muestras individuales.

Acantilado
fuente
44
muy agradable (+1), pero no estoy seguro de por qué en el último ejemplo hablas de una sola muestra. Estoy de acuerdo en que calcular la búsqueda de línea basada en un mini lote no tiene sentido, pero un mini lote todavía contiene 512 muestras (generalmente, y cuando se habla de ImageNet): por supuesto, no hay un valor fijo para el número de muestras en un mini -batch, pero 1 mini-lotes de muestra se sienten un poco extremos. ¿Los usaste solo para aclarar tu punto, o me estoy perdiendo algo?
DeltaIV
2
@DeltaIV: la muestra única es principalmente para señalar qué tan malo podría ser en un problema muy simple. Si hiciéramos un mini lote con 512 muestras en regresión logística con más de 512 covariables, veríamos el mismo problema.
Cliff AB
10

Los tutoriales hablan sobre el descenso del gradiente presumiblemente porque es uno de los algoritmos más simples utilizados para la optimización, por lo que es fácil de explicar. Como la mayoría de estos tutoriales son bastante breves, se centran en cosas simples. Existen al menos varios algoritmos de optimización populares más allá del simple descenso de gradiente que se utilizan para el aprendizaje profundo. En realidad, las personas a menudo usan diferentes algoritmos y luego gradiente de descenso, ya que generalmente convergen más rápido. Algunos de ellos tienen una tasa de aprendizaje no constante (por ejemplo, disminuyen con el tiempo). Para la revisión de dichos algoritmos, puede consultar la publicación Una visión general de los algoritmos de optimización de descenso de gradiente publicada por Sebastian Ruder (o el documento presentado ).

Tim
fuente
2
@DeltaIV: Todos los "otros" métodos sofisticados se basan en SGD. El problema principal es que los otros métodos aprovechan el conocimiento local para realizar saltos más eficientes, en lugar de solo puntos de muestreo aleatorios para calcular el gradiente. Pero SGD es tan simple y rápido, y no es completamente terrible por sí solo.
Alex R.
2
@AlexR. El punto no es que SGD sea simple y / o rápido. La simplicidad no importa, ya que todas las bibliotecas decentes implementan SGD, Adam, AdaGrad y RMSProp (y más, a veces). La velocidad es aún menos importante, porque el tiempo empleado, por ejemplo, Adam, para calcular las actualizaciones a nivel de parámetros es infinitesimal en comparación con el tiempo de entrenamiento general de un modelo como ResNet. El único punto es que, por alguna razón que hoy no entendemos completamente, SGD generaliza mejor que ellos. Básicamente, si quieres vencer a SOTA, a menudo te ves obligado a usarlo, o al menos a cambiarlo más tarde durante el entrenamiento.
DeltaIV
3
@DeltaIV Muy interesante. Abrí el documento al que se vinculó y hace referencia a la preimpresión de Wilson et al 2017 para la afirmación de que SGD generaliza mejor que Adam, etc. así que cuando dices que es "bien conocido", te refieres a conocido desde hace aproximadamente medio año, ¿verdad?
ameba dice Reinstate Monica
2
@DeltaIV Gracias. Yo mismo no estoy aprendiendo mucho y no estaba al tanto de eso. En 2012, más o menos, cuando estaba viendo las conferencias de Hinton en Coursera, estaba abogando principalmente por RMSprop y en los últimos 1-2 años mi impresión fue que todo el mundo está usando Adam (que reemplaza a RMSprop, según el artículo de Adam). Cuando estaba jugando con autoencoders el año pasado, me di cuenta de que Adam funciona mucho más rápido que SGD, y desde entonces simplemente asumí que Adam es una opción predeterminada en la actualidad.
ameba dice Reinstate Monica
3
@CliffAB Sí, la relación entre la detención temprana y la regularización se puede ver claramente para los mínimos cuadrados, donde el descenso de gradiente opera en la base del valor propio y los valores propios pequeños son los últimos en converger; mientras que la penalización de cresta también penaliza los valores propios pequeños. Ahora solo tenía un vistazo rápido a Wilson et al. vinculado anteriormente, pero al menos en su ejemplo de mínimos cuadrados SGD vs Adam diferente no se explica por la detención temprana vs tardía. Afirman que convergen a diferentes soluciones.
ameba dice Reinstate Monica