Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¡Resulta que ReLU es muy fácil de usar! ¡Este artículo le brindará una comprensión profunda de la función de activación de ReLU!

¡Resulta que ReLU es muy fácil de usar! ¡Este artículo le brindará una comprensión profunda de la función de activación de ReLU!

En una red neuronal, una función de activación se encarga de convertir una entrada ponderada de un nodo en una activación del nodo o una salida para esa entrada. ReLU es una función lineal por partes que generará directamente si la entrada es positiva; de lo contrario, generará cero. Se ha convertido en la función de activación predeterminada para muchos tipos de redes neuronales porque los modelos que la utilizan son más fáciles de entrenar y, en general, funcionan mejor. Este artículo presentará ReLU en detalle, que se divide principalmente en las siguientes partes:

1. Limitaciones de las funciones de activación Sigmoide y Tanh

2.ReLU (función de activación lineal rectificada)

3. Cómo implementar ReLU

4. Ventajas de ReLU

5. Consejos para usar ReLU

Las redes neuronales se componen de múltiples capas de nodos. Aprenda a asignar muestras de entrada a salidas. Para un nodo determinado, la entrada se multiplica por el peso en el nodo y se suma. Este valor se denomina valor de activación suma del nodo, y el valor de activación suma luego se transforma mediante una función de activación, que define la salida específica del nodo, o "activación".

La función de activación más simple se llama activación lineal, en la que no se aplica ninguna transformación. Las redes que constan únicamente de funciones de activación lineal son fáciles de entrenar, pero no pueden aprender funciones de mapeo complejas. Las funciones de activación lineal todavía se utilizan para predecir la capa de salida de algunas redes (como los problemas de regresión).

Las funciones de activación no lineales son mejores porque permiten a los nodos aprender estructuras más complejas en los datos. Dos funciones de activación no lineal ampliamente utilizadas son la función sigmoidea y la función de activación tangente hiperbólica.

La función de activación sigmoidea, también conocida como red neuronal de función logística, es una función de activación de redes neuronales tradicionalmente muy popular. La entrada a esta función se convierte a un valor entre 0,0 y 1,0. Los valores de entrada superiores a 1,0 se convierten a 1,0; de manera similar, los valores de entrada inferiores a 0,0 se contraen a 0,0. Todas las funciones de entrada posibles tienen una forma sigmoidea de 0 a 0,5 a 1,0. Durante mucho tiempo, antes de principios de la década de 1990, este era el método de activación predeterminado para las redes neuronales.

La función tangente hiperbólica, o tanh para abreviar, es una función de activación no lineal de forma similar con un valor de salida entre -1,0 y 1,0. A finales de la década de 1990 y principios de la de 2000, se prefería la función tanh a la función de activación sigmoidea porque los modelos que usaban la función tanh eran más fáciles de entrenar y tendían a tener un mejor rendimiento predictivo.

Un problema común con las funciones sigmoidea y tanh es que sus rangos se saturan. Esto significa que los valores grandes de repente se convertirán en 1,0 y los valores pequeños de repente se convertirán en -1 o 0. Además, estas funciones sólo son sensibles a cambios cerca del punto medio de la entrada.

Independientemente de si las activaciones sumadas proporcionadas por los nodos como entradas contienen información útil, la sensibilidad y saturación de la función son limitadas. Una vez que se alcanza la saturación, el algoritmo de aprendizaje necesita ajustar continuamente los pesos para mejorar el rendimiento del modelo.

Finalmente, a medida que mejora el rendimiento del hardware, no es fácil entrenar redes neuronales profundas en GPU utilizando funciones de activación sigmoidea y tanh. No se puede obtener información de gradiente útil utilizando estas funciones de activación no lineales en redes grandes y profundas. El error se propaga a través de la red y se utiliza para actualizar los pesos. Con cada capa adicional, la cantidad de errores disminuye significativamente. Esto se conoce como el problema del gradiente de desaparición y evita efectivamente que las redes profundas (multicapa) aprendan.

Aunque el uso de funciones de activación no lineales permite a las redes neuronales aprender funciones de mapeo complejas, en realidad dificultan la aplicación de algoritmos de aprendizaje en redes profundas. No fue hasta finales de la década de 2000 y principios de la de 2010 que se encontraron soluciones mediante el uso de otros tipos de redes, como máquinas Boltzmann y capacitación jerárquica o preformación no supervisada.

Para entrenar una red neuronal profunda, necesita una red neuronal con función de activación, que se ve y se comporta como una función lineal, pero que en realidad es una función no lineal que puede aprender relaciones complejas en los datos. La función también debe proporcionar activación y entrada más sensibles para evitar la saturación.

Así apareció ReLU, y se puede decir que la adopción de ReLU es uno de los pocos hitos en la revolución del aprendizaje profundo. La función de activación de ReLU es un cálculo simple que devuelve directamente el valor proporcionado como entrada si la entrada es mayor que 0, o 0 si la entrada es 0 o menos.

Podemos describirlo usando una declaración if simple de la siguiente manera:

Para valores mayores que 0, la función es lineal, lo que significa que cuando se entrena una red neuronal usando retropropagación Cuando , tiene muchas propiedades ideales de una función de activación lineal. Sin embargo, es una función no lineal ya que los valores negativos siempre dan como resultado cero. Dado que la función de corrección es lineal en la mitad del dominio de entrada y no lineal en la otra mitad, se denomina función lineal por partes.

Podemos implementar fácilmente la función de activación de ReLU en Python.

Queremos que cualquier valor positivo devuelto no cambie, mientras que un valor de entrada de 0,0 o un valor negativo devolverá 0,0.

A continuación se muestran algunos ejemplos de entradas y salidas para una función de activación lineal modificada:

La salida es la siguiente:

Podemos hacer esto trazando una serie de entradas y calcular la curva de salida para comprender la relación entre la entrada y la salida de una función. El siguiente ejemplo genera una serie de números enteros de -10 a 10, calcula la activación lineal modificada para cada entrada y luego traza los resultados.

Al ejecutar este ejemplo se crea un gráfico que muestra que todas las entradas negativas y cero cambian a 0,0, mientras que las salidas positivas vuelven a sus valores originales:

La derivada de la función ReLU es la pendiente. Los valores negativos tienen una pendiente de 0,0 y los valores positivos tienen una pendiente de 1,0.

Tradicionalmente, el campo de las redes neuronales no puede utilizar ninguna función de activación que no sea completamente diferenciable, y ReLU es una función por partes. Técnicamente, no podemos calcular la derivada de ReLU cuando la entrada es 0.0, pero podemos asumir que es 0.

Las funciones de activación tanh y sigmoide requieren cálculos exponenciales, mientras que ReLU solo requiere max(), lo que lo hace computacionalmente más simple y menos costoso.

Una ventaja importante de ReLU es que puede generar ceros verdaderos. Esto es diferente de las funciones de activación tanh y sigmoidea, que aprenden una salida cero aproximada, es decir, un valor muy cercano a cero, pero no realmente cero. Esto significa que las entradas negativas pueden generar valores cero verdaderos, lo que permite que las activaciones de capas ocultas en las redes neuronales contengan uno o más valores cero verdaderos. Esto se denomina representación dispersa y es una propiedad deseable en el aprendizaje de representación porque acelera el aprendizaje y simplifica el modelo.

ReLU se parece más a una función lineal y, en términos generales, la optimización es más fácil cuando el comportamiento de una red neuronal es lineal o casi lineal.

La clave de esta característica es que las redes entrenadas usando esta función de activación evitan casi por completo el problema de los gradientes que desaparecen, ya que los gradientes siguen siendo proporcionales a las activaciones de los nodos.

La aparición de ReLU hace posible utilizar mejoras de hardware y retropropagación para entrenar con éxito redes multicapa profundas con funciones de activación no lineales.

Durante mucho tiempo, la función de activación predeterminada fue la función de activación Sigmoide. Más tarde, Tanh se convirtió en la función de activación. Para las redes neuronales modernas de aprendizaje profundo, la función de activación predeterminada es la función de activación ReLU.

ReLU se puede utilizar en la mayoría de los tipos de redes neuronales. A menudo se utiliza como función de activación de redes neuronales de perceptrón multicapa y redes neuronales convolucionales, y se ha confirmado en muchos artículos. Tradicionalmente, LSTM utiliza una función de activación tanh para activar estados unitarios y una función de activación sigmoidea para salidas de nodos. ReLU generalmente no es adecuado para redes de tipo RNN.

Un sesgo es una entrada a un nodo que tiene un valor fijo que afecta el desplazamiento de la función de activación. Tradicionalmente, el valor de entrada del sesgo se establece en 1,0. Cuando se utiliza ReLU en una red, el sesgo se puede establecer en un valor muy pequeño, como 0,1.

Antes de entrenar una red neuronal, los pesos de la red deben inicializarse a pequeños valores aleatorios.

Cuando se usa ReLU en una red e inicializa los pesos en pequeños valores aleatorios centrados alrededor de cero, la mitad de las unidades en la red generarán valores cero de forma predeterminada. Existen muchas heurísticas para inicializar los pesos de una red neuronal, pero no existe un esquema de inicialización de pesos óptimo. El artículo de He Kaiming señaló que la inicialización de Xavier y otros esquemas no son adecuados para ReLU. Para que la inicialización de Xavier sea adecuada para ReLU, realizó ligeras modificaciones en la inicialización de Xavier y propuso la inicialización de peso He, que es más adecuada para ReLU.

Antes de utilizar una red neuronal, es una buena práctica escalar los datos de entrada. Esto podría incluir normalizar la variable para que tenga media cero y varianza unitaria, o normalizar cada valor para que oscile entre 0 y 1. Sin escalar los datos para muchos problemas, los pesos de una red neuronal pueden aumentar, lo que puede desestabilizar la red y aumentar el error de generalización. Esta buena práctica de escalar entradas se aplica independientemente de que se utilice ReLU en la red o no.

La salida de ReLU es ilimitada en el dominio positivo. Esto significa que en algunos casos la producción seguirá creciendo. Por lo tanto, utilizar alguna forma de regularización de peso (como el paradigma de vector l1 o l2) puede ser un mejor enfoque. Esta es una buena manera de mejorar la escasa representación del modelo (por ejemplo, usando la regularización l 1) y reducir el error de generalización.

. .