¿Cómo resuelve RELU los gradientes que desaparecen y explotan en la red neuronal?

Las unidades ReLU se ven así:

Lo realmente bueno de esta función es que el gradiente es 0 o 1, lo que significa que nunca se satura, por lo que los gradientes no pueden desaparecer, se transfieren perfectamente a través de una red. Por supuesto, esto significa que puede obtener ReLU “muertos”, que devuelven 0 para siempre, y nunca aprender porque el gradiente nunca se pasa. Esto es diferente a algunas de las no linealidades más ingenuas y anteriores que se usaron en redes neuronales como Sigmoid o Tanh . La función sigmoidea, por ejemplo, se ve así:

El gráfico rojo es la función sigmoidea, y el gráfico verde es su derivada. Observe cómo la derivada (verde) se reduce a cero en ambos extremos de su activación. Esta es la causa de los gradientes que desaparecen en las redes de avance (los gradientes que desaparecen en los RNN generalmente se deben a la multiplicación continua sobre la misma matriz de peso). La explosión de gradientes en las redes de retroalimentación no es muy común, pero puede deberse a “acantilados de gradiente” en el espacio de parámetros, que pueden lanzar parámetros al espacio, esto generalmente se debe a la mala regularización o las malas tasas de aprendizaje, en lugar de la falta de ReLU .

Realmente no.

Las ReLU son útiles porque causan una convergencia más rápida, hacen que las salidas sean escasas.

Personalmente, creo que la escasez de los resultados es la razón principal por la que ReLU es más útil que su contraparte: Sigmoid. Sin embargo, ReLU no garantiza la evitación de gradientes que desaparecen. Si la salida de un conjunto de filtros en una capa, usando la activación ReLU, siempre es negativa, el gradiente siempre desaparecerá. Antes de la técnica de Batch Normalization, se suponía que tal caso es poco probable que suceda.

Ahora, usando la normalización por lotes seguida de ReLU, potencialmente eliminamos la mitad de los datos y la señal es realmente escasa. Por lo tanto, BN-ReLU se hizo popular. BN, por otro lado, (potencialmente, durante las pruebas) asegura que la salida de los filtros se escalará a pequeños números positivos y negativos, por lo tanto (intenta) evitar la desaparición de los gradientes. Las conexiones residuales también ayudan mucho a resolver el problema de gradientes de fuga.

La desaparición de los gradientes ocurre cuando la derivada de la función de activación 0 <= f '(x) <1 y la explosión cuando f' (x)> 1.
La derivada de Relu es 1 o 0, por lo que solo puede desaparecer los gradientes si son <0, lo que sucede mucho si selecciona pesos iniciales incorrectos.

Para minimizar los problemas con los gradientes, hay normalización por lotes, recorte de gradiente y activación de Selu.
Selu es algo nuevo en NN, da la posibilidad de que la red se auto normalice y funcione más rápido que Batch Norm. Recomendaría leer el documento al respecto https://arxiv.org/abs/1706.02515

No.

No puede.

Hay una razón muy simple para esto. Incluso con la distribución gaussiana en términos de distribuciones multivariadas, se lograron tasas de convergencia para todo lo que vale, etc.

ReLU no converge a un mínimo absoluto.

Ver, el problema general en términos de problema de gradiente de vanshing es simple.

Promedias matrices, y el hecho mismo de que NO estás operando en niveles subgaussianos para empezar …

Bueno, tu factor de error será mayor en 0, entonces.

Lo cual, no suena como un gran problema, ¿verdad?

Pero, incluso si es 0.0000001 y lo multiplicas por unos pocos millones de carreras, bueno, eso de repente es algo.

Vea, el problema general en términos de modelos de Kernel y de qué no se trata, eludir completamente el gradiente de fuga.

No se trata de eludir la idea de borrar completamente el factor de error.

De hecho, un “suficientemente bueno”, es lo que podemos hacer, de manera realista.

Porque, la optimización real, la regla matemática real conocida de los hallazgos.

No se puede implementar debido a restricciones de procesamiento técnico.

Por supuesto, puedes hacer, “lo suficientemente bueno”, mientras tanto.

Pero no puede, inherentemente, vencer el problema del gradiente de fuga, con propagación hacia atrás y promediando modelos, como datos inherentemente

se resta y nunca se agrega nuevamente

Es decir, todo el modelo es una pérdida constante. Siempre pierdes algo. Y en virtud de “bajar”, su paso no es 0, su margen de error no es 0 ..

Entonces, bueno, adivina qué.

Su factor de error general nunca será 0.

Porque no puedes alcanzar ese nivel de precisión.

E incluso si pudiera, la cantidad de potencia de procesamiento sería demasiado alta para acentuarla.

No es que no sepamos cómo alcanzar esos niveles, es que no podemos calcularlos, con gran poder de procesamiento.

Con una ReLU, el gradiente será 1 o 0. El error de propagación inversa será lineal en los pesos de todos los nodos que están “activos” (gradiente = 1) aguas arriba del nodo en cuestión.

La única forma en que podría tener un gradiente de fuga es si todas las unidades en una capa tienen un gradiente de 0 para una entrada dada, o para una unidad específica si su gradiente es 0 para todas las entradas. Cuando ambos ocurren, tendrás un problema. Es poco probable que esto suceda.