Encontré la unidad lineal rectificada (ReLU) elogiada en varios lugares como una solución al problema del gradiente de fuga para las redes neuronales. Es decir, uno usa max (0, x) como función de activación. Cuando la activación es positiva, es obvio que es mejor que, digamos, la función de activación sigmoidea, ya que su derivación es siempre 1 en lugar de un valor arbitrariamente pequeño para x grande. Por otro lado, la derivación es exactamente 0 cuando x es menor que 0. En el peor de los casos, cuando una unidad nunca se activa, los pesos de esta unidad tampoco cambiarían nunca más, y la unidad sería para siempre inútil, lo que parece mucho peor que incluso gradientes muy pequeños. ¿Cómo manejan los algoritmos de aprendizaje ese problema cuando usan ReLU?
fuente
Respuestas:
Aquí hay un documento que explica el problema. Cito alguna parte para aclarar el problema.
Por lo tanto, la función de activación del rectificador introduce un efecto de dispersión en la red. Aquí hay algunas ventajas de la escasez del mismo artículo;
También responde la pregunta que has hecho:
Puedes leer el periódico para más detalles.
fuente
Esta es la razón por la que probablemente sea una mejor idea usar PReLU, ELU u otras activaciones similares a ReLU con fugas que no solo mueren a 0, sino que caen a algo así como 0.1 * x cuando x se vuelve negativo para seguir aprendiendo. Durante mucho tiempo me pareció que las ReLU son historia como sigmoideas, aunque por alguna razón la gente todavía publica artículos con estas. ¿Por qué? No lo sé.
Dmytro Mishkin y otros muchachos realmente probaron una red con muchos tipos de activación diferentes, debería ver sus hallazgos sobre el rendimiento de diferentes funciones de activación y otras cosas. Sin embargo, algunas funciones, como XOR, se aprenden mejor con ReLU simple. No pienses en cosas neuronales en términos de dogma, porque las redes neuronales son mucho trabajo en progreso. Nadie en el mundo realmente los conoce y entiende lo suficiente como para decir la verdad divina. Nadie. Pruebe cosas, haga sus propios descubrimientos. Tenga en cuenta que el uso de ReLU en sí es un desarrollo muy reciente y durante décadas todos los diferentes doctores en el campo han utilizado funciones de activación demasiado complicadas de las que ahora solo podemos reír. Demasiado a menudo "saber" demasiado puede obtener malos resultados. Es importante comprender que las redes neuronales no son una ciencia exacta. Nada en matemáticas dice que las redes neuronales realmente funcionen tan bien como lo hacen. Es heurístico Y entonces es muy maleable.
Para su información, incluso la activación de valor absoluto obtiene buenos resultados en algunos problemas, por ejemplo, problemas de tipo XOR. Las diferentes funciones de activación se adaptan mejor a diferentes propósitos. Intenté Cifar-10 con abs () y parecía funcionar peor. Sin embargo, no puedo decir que "es una peor función de activación para el reconocimiento visual", porque no estoy seguro, por ejemplo, si mi preinicialización fue óptima, etc. El hecho de que estaba aprendiendo relativamente bien me sorprendió
Incluso iría tan lejos como para decir que deberíamos prohibir llamarlos "derivados" y comenzar a llamarlos de otra manera, por ejemplo,
error activation functions
no cerrar nuestras mentes a las posibilidades de jugar con ellos. En realidad, puede, por ejemplo, usar la activación ReLU, pero proporcionar un 0.1, o algo así en lugar de 0 como derivado para x <0. En cierto modo, entonces tienes un ReLU simple, pero las neuronas no pueden "morir por adaptabilidad". Yo llamo a esto NecroRelu, porque es un ReLU que no puede morir. Y en algunos casos (definitivamente no en la mayoría), eso funciona mejor que LeakyReLU simple, que en realidad tiene 0.1 derivada en x <0 y ReLU mejor de lo habitual. Sin embargo, no creo que muchos otros hayan investigado dicha función, esto o algo similar podría ser una función de activación generalmente genial que nadie consideró solo porque están demasiado concentrados en las matemáticas.En cuanto a lo que generalmente se usa, para la función de activación de tanH (x) es habitual pasar 1 - x² en lugar de 1 - tanH (x) ² como derivada para calcular las cosas más rápido.
Además, tenga en cuenta que ReLU no es tan "obviamente mejor" que, por ejemplo, TanH. TanH probablemente puede ser mejor en algunos casos. Simplemente, por lo que parece, no en reconocimiento visual. Sin embargo, ELU, por ejemplo, tiene un poco de suavidad sigmoidea y es una de las funciones de activación más conocidas para el reconocimiento visual en este momento. Realmente no lo he intentado, pero apuesto a que uno puede configurar varios grupos con diferentes funciones de activación en el mismo nivel de capa para una ventaja. Porque, una lógica diferente se describe mejor con diferentes funciones de activación. Y a veces probablemente necesite varios tipos de evaluación.
Tenga en cuenta que es importante tener una inicialización que corresponda al tipo de su función de activación. Las ReLU con fugas necesitan otro init que las ReLU simples, por ejemplo.
EDITAR: En realidad, el ReLU estándar parece menos propenso al sobreajuste frente a los que tienen fugas con arquitecturas modernas. Al menos en reconocimiento de imágenes. Parece que si está buscando una red de muy alta precisión con una gran carga de parámetros, podría ser mejor quedarse con opciones simples de ReLU frente a fugas. Pero, por supuesto, prueba todo esto por ti mismo. Tal vez, algunas cosas con fugas funcionarán mejor si se da más regularización.
fuente
initialization that corresponds to a type of activation function one is using
en unNOTE
en su publicación, ¿podría proporcionar sus sugerencias para esto en las mismas líneas? No estoy completamente convencido de que el uso de activaciones ReLu sobre sigmoid / tanH sea una solución para el problema de gradiente de fuga / explosión. .Aquí hay una explicación heurística:
Puede pensar que sería mejor tener una función lineal, en lugar de aplanar cuando x <0. La idea aquí es que RELU genera redes dispersas con un número relativamente pequeño de enlaces útiles, que tiene más plausibilidad biológica, por lo que la pérdida de Un montón de pesas es realmente útil. Además, la simulación de funciones interesantes con redes neuronales solo es posible con cierta no linealidad en la función de activación. Una función de activación lineal da como resultado una salida lineal, que no es muy interesante en absoluto.
fuente
Consideremos la relación de recurrencia principal que define la propagación hacia atrás de la señal de error.
Esta ecuación también demuestra el otro problema característico de la activación relu: las neuronas muertas: si una neurona dada se inicializa de una manera que no dispara ninguna entrada (su activación es cero), su gradiente también sería cero, y por lo tanto, nunca se activaría.
fuente