¿Cómo evitan las CNN el problema del gradiente de fuga?

15

He estado leyendo mucho sobre redes neuronales convolucionales y me preguntaba cómo evitan el problema del gradiente de fuga. Sé que las redes de creencias profundas apilan codificadores automáticos de un solo nivel u otras redes poco profundas previamente entrenadas y, por lo tanto, puedo evitar este problema, pero no sé cómo se evita en las CNN.

De acuerdo con Wikipedia :

"a pesar del" problema de gradiente de fuga "mencionado anteriormente, la potencia de procesamiento superior de las GPU hace posible la propagación inversa simple para redes neuronales de alimentación profunda con muchas capas".

No entiendo por qué el procesamiento de GPU eliminaría este problema.

Aly
fuente
2
¿El artículo de Wikipedia no justifica por qué la GPU ayuda a abordar el problema del gradiente de fuga? ¿Es porque a pesar de que los gradientes son pequeños, ya que las GPU son tan rápidas que aún podemos mejorar los parámetros haciendo muchos pasos gracias a las GPU?
Charlie Parker el
2
Exactamente. El problema del gradiente de fuga es la razón por la cual los pesos de las capas inferiores se actualizan a una velocidad muy pequeña y, por lo tanto, lleva una eternidad entrenar la red. Pero, como con las GPU, puede hacer más cálculos (es decir, más actualizaciones de los pesos) en menos tiempo, con más y más procesamiento de GPU, el problema de gradiente de desaparición se desvanece en cierta medida.
Sangram
@CharlieParker, ¿podría dar más detalles GPU's are fast correlated with vanishing gradients, puedo entender la lógica rápida con gran ancho de banda de memoria para procesar múltiples multiplicaciones de matriz! pero, ¿podría explicar qué tiene que ver con los derivados? El problema del gradiente de fuga parece hacer más con la inicialización del peso , ¿no es así?
Anu

Respuestas:

13

El problema del gradiente de desaparición requiere que usemos pequeñas tasas de aprendizaje con descenso de gradiente que luego necesita muchos pequeños pasos para converger. Este es un problema si tiene una computadora lenta que toma mucho tiempo para cada paso. Si tiene una GPU rápida que puede realizar muchos más pasos en un día, esto no es un problema.

Hay varias formas de abordar el problema del gradiente de fuga. Supongo que el mayor efecto para las CNN provino del cambio de unidades sigmoideas no lineales a unidades lineales rectificadas. Si considera una red neuronal simple cuyo error depende del peso w i j solo a través de y j , dondemiwyojyj

yj=F(yowyojXyo),

su gradiente es

wyojmi=miyjyjwyoj=miyjF(yowyojXyo)Xyo.

Si es la función sigmoidea logística, f ' estará cerca de cero para entradas grandes y entradas pequeñas. Si f es una unidad lineal rectificada,FFF

la derivada es cero solo para entradas negativas y 1 para entradas positivas. Otra contribución importante proviene de inicializar adecuadamente los pesos. Este documento parece una buena fuente para comprender los desafíos con más detalles (aunque todavía no lo he leído):

F(tu)=max(0 0,tu),

http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf

Lucas
fuente
2
Estoy un poco perplejo acerca de las unidades lineales rectificadas. Sí, para los sigmoides, etc., el gradiente es a menudo muy pequeño, pero para las unidades lineales rectificadas a menudo es exactamente cero. ¿No es eso peor? Por lo tanto, si los pesos de una unidad son desafortunados, nunca cambiarán.
Hans-Peter Störr
2
Pensando en esto, ReLUs con fugas y / o ruidosas podrían estar en uso por esa razón.
sol
55
¿Por qué es verdadera tu primera oración? Es decir, "el problema del gradiente de desaparición requiere que usemos pequeñas tasas de aprendizaje con descenso de gradiente que luego necesitan muchos pequeños pasos para converger". ¿Por qué necesitamos pequeñas tasas de aprendizaje para lidiar con el problema del gradiente de fuga? Si los gradientes ya son pequeños debido a la desaparición de los gradientes, hubiera esperado que hacerlos pequeños solo empeorara las cosas.
Charlie Parker el
2
Buena pregunta, debería haber explicado mejor esa afirmación. El problema del gradiente de desaparición no es que todos los gradientes sean pequeños (lo que podríamos solucionar fácilmente usando grandes tasas de aprendizaje), sino que los gradientes desaparecen a medida que se propaga por la red. Es decir, los gradientes son pequeños en algunas capas pero grandes en otras capas. Si usa altas tasas de aprendizaje, todo explota (porque algunos gradientes son grandes), por lo que debe usar una pequeña tasa de aprendizaje. El uso de múltiples tasas de aprendizaje es otro enfoque para abordar el problema, a costa de introducir más hiperparámetros.
Lucas
3
Yo diría que la tasa de aprendizaje está principalmente vinculada al problema de la explosión del gradiente. Reducir el gradiente con una tasa de aprendizaje exageradamente baja no evita en absoluto la desaparición de los gradientes, solo retrasa el efecto a medida que el aprendizaje se ralentiza considerablemente. El efecto en sí mismo es causado por la aplicación repetida de no linealidades y la multiplicación de valores pequeños. Por supuesto, existe una tendencia a ir a tasas de aprendizaje más pequeñas (debido a la potencia informática), pero eso no tiene nada que ver con la desaparición de los gradientes, ya que solo controla qué tan bien se explora el espacio de estado (dadas las condiciones estables).
runDOSrun