¿Por qué las redes neuronales necesitan una función de activación?

Las redes neuronales tienen que implementar funciones de mapeo complejas, por lo tanto, necesitan funciones de activación que no sean lineales para incorporar la muy necesaria propiedad de no linealidad que les permite aproximar cualquier función. Una neurona sin una función de activación es equivalente a una neurona con una función de activación lineal dada por.

[matemáticas] \ Phi (x) = x [/ matemáticas]

Tal función de activación no agrega no linealidad, por lo tanto, toda la red sería equivalente a una sola neurona lineal. Es decir, tener una red lineal multicapa es equivalente a un nodo lineal.

Por lo tanto, no tiene sentido construir una red multicapa con funciones de activación lineal, es mejor que solo un nodo haga el trabajo. Para empeorar las cosas, un solo nodo lineal no es capaz de manejar datos no separables, lo que significa que no importa cuán grande pueda ser una red lineal multicapa, nunca podrá resolver el clásico problema XOR o cualquier otro problema no lineal.

Las funciones de activación también son importantes para aplastar la suma ponderada linealmente ilimitada de las neuronas. Esto es importante para evitar que grandes valores se acumulen en la jerarquía de procesamiento.

Luego, por último, las funciones de activación son funciones de decisión, la función de decisión ideal es la función de paso lateral. Pero esto no es diferenciable, por lo tanto, se han utilizado versiones más suaves, como la función sigmoide, simplemente por el hecho de que son diferenciables, lo que las hace ideales para algoritmos de optimización basados ​​en gradientes.

Espero que esto ayude.

Calcula la suma ponderada de las entradas.

Agrega sesgo.

Y = np.dot (wT, X) + b

Ahora, el problema es que su valor Y no tiene límite. Necesitamos alguna función para restringir el valor de Y a un cierto rango.

Digamos que está ejecutando un clasificador binario donde su modelo predice si la imagen dada es un Unicornio o no. Para eso, si su salida es mayor que 0.5, la imagen es positiva.

Sin una función de activación (sigmoide en este caso), su valor Y no conocería ningún límite.

¿Solución? Use algún tipo de función de activación para ajustar su valor Y.

A = sigmoide (np.dot (wT, X) + b)

Solo entonces, su neurona podrá decidir si debe dispararse (activarse) o no.

En este caso, debe decidir si el valor envuelto de Y es mayor que 0.5 y menor que 1 o no.

Si es el caso, su imagen es probablemente un unicornio .

Usted elige su función de activación según sus necesidades. Aquí hay algunas funciones no lineales que generalmente se usan en una red neuronal.

Sigmoideo

Tanh

ReLU (Unidad lineal rectificada)

ReLU con fugas

A veces, tendemos a perdernos en la jerga y confundir las cosas fácilmente, por lo que la mejor manera de hacerlo es volviendo a lo básico.

No olvide cuál es la premisa original del aprendizaje automático (y, por lo tanto, el aprendizaje profundo): si la entrada y la salida están relacionadas por una función y = f (x), entonces si tenemos x, no hay forma de saber exactamente f a menos que sepamos el proceso en sí. Sin embargo, el aprendizaje automático le brinda la capacidad de aproximar f con una función g, y el proceso de probar múltiples candidatos para identificar la función g que se aproxima mejor a f se llama aprendizaje automático.

Ok, eso fue aprendizaje automático, y ¿en qué se diferencia el aprendizaje profundo? El aprendizaje profundo simplemente intenta expandir el posible tipo de funciones que se pueden aproximar utilizando el paradigma de aprendizaje automático mencionado anteriormente. En términos generales, si el modelo anterior pudiera aprender, por ejemplo, 10,000 tipos de funciones, ahora podrá aprender, por ejemplo, 100,000 tipos (en realidad, ambos son espacios infinitos pero uno es más grande que el otro, porque las matemáticas son geniales de esa manera).

Si desea conocer las matemáticas, lea sobre la dimensión VC y cómo la afectan más capas en una red. Pero evitaré las matemáticas aquí y confiaré en su intuición para creerme cuando digo que no todos los datos pueden clasificarse correctamente en categorías usando una función lineal. Por lo tanto, necesitamos nuestro modelo de aprendizaje profundo para poder aproximar funciones más complejas que solo una función lineal.

Ahora, pasemos a su bit de no linealidad. Imagine una función lineal y = 2x + 3, y otra y = 4x + 7. ¿Qué sucede si los combino y tomo un promedio? Obtengo otra función lineal y = 3x + 5. Entonces, en lugar de hacer esos dos cálculos por separado y luego promediarlos, podría haber usado la única función lineal y = 3x + 5. Obviamente, esta lógica es válida si tengo más de 2 funciones lineales de este tipo. Esto es exactamente lo que sucederá si no tiene no linealidades en sus nodos, y también lo que otros han escrito en sus respuestas.

Simplemente se deduce de la definición de una función lineal:

(i) Si toma dos funciones lineales, AND

(ii) Tome una combinación lineal de ellos (que es cómo combinamos las salidas de múltiples nodos de una red)

Usted está obligado a obtener una función lineal porque f (x) + g (x) = mx + b + nx + c = (m + n) x + (b + c) = diga h (x).

Y, en esencia, podría reemplazar toda su red por una simple transformación matricial que tenga en cuenta todas las combinaciones lineales y las subidas / bajadas.

En pocas palabras, solo intentará aprender una aproximación lineal para la función original f que relaciona la entrada y la salida. Lo cual, como discutimos anteriormente, no siempre es la mejor aproximación. Agregar no linealidades asegura que pueda aprender funciones más complejas al aproximar cada función no lineal como una combinación LINEAL de una gran cantidad de funciones no lineales.

Todavía es nuevo en el campo, así que si hay algo mal aquí, ¡comente a continuación! Espero que ayude 🙂

En palabras simples, la función de activación es una función que limita la señal de salida a un valor finito.

Por lo tanto, las funciones de activación son necesarias para restringir el valor de salida a un cierto valor finito.

La función de activación puede ser una función lineal (que representa una línea recta o planos) o una función no lineal (que representa curvas). La mayoría de las veces, las funciones de activación utilizadas en las redes neuronales serán no lineales.

Mire el video desde el siguiente enlace para conocer en profundidad las funciones de activación, cómo funcionan y los diferentes tipos de funciones de activación como sigmoide / logística, softmax, ReLU, etc.

Función de activación | Quick KT

Además de restringir las salidas a un cierto rango, las funciones de activación rompen la linealidad de una red neuronal, lo que le permite aprender funciones más complejas que la regresión lineal.

La multiplicación de peso en cada capa es solo una transformación lineal. Agregar el vector de sesgo lo convierte en una transformación afín. En cualquier caso, puede condensar múltiples transformaciones en una sola.

Digamos que tenemos cinco capas pero ninguna función de activación. Multiplicamos los datos de entrada por la matriz de peso de la primera capa, agregamos el sesgo, multiplicamos por la matriz de peso de la segunda capa, y así sucesivamente.

Sin embargo, también podríamos combinar las transformaciones afines de todas las capas en una sola matriz de peso y un vector de sesgo. (Haría esto representando ambos pesos y sesgos en una matriz [1] y multiplicando esas matrices juntas).

Entonces, sin importar la cantidad de capas, la red puede ser tan poderosa como una regresión lineal. Para aprender funciones más complejas, agregamos funciones de activación no lineal como tanh o relu a cada capa. Las funciones de activación lineal como f (x) = 2.4x + 0.7 no funcionarían ya que no rompen la linealidad de todo el sistema.

Notas al pie

[1] ¿Cómo puedo combinar transformaciones afines en una matriz?

El término función de activación puede llamarse fácilmente otra cosa. Pero el nombre está inspirado biológicamente. Las neuronas cerebrales reales obtienen señales de otras neuronas, y decidieron si se disparan o no (es decir, si se activan, producen resultados, hacen cosas, etc.) teniendo en cuenta la entrada acumulativa. Esta ‘decisión’ basada en la ‘entrada acumulativa’ es lo que modela la ‘función de activación’.
Tenga en cuenta que la función de activación es diferente de la función que utiliza para combinar la entrada. La x en la función de activación f (x) es la entrada combinada calculada por alguna otra función g (todas las entradas)

Hay tres razones:
1. Para proyectar valores con rango infinito (-inf a + inf) a una configuración probabilística donde el rango de valores es de 0 a 1 (o, a veces, -1 a +1).
2. Esto introduce no linealidades que son deseables en redes multicapa para detectar características no lineales en los datos. Si solo se aplicara la función de activación lineal, entonces la red solo aplicaría un par de funciones lineales que nuevamente es una función lineal.
3. Inspirado por la forma en que funcionan las neuronas en el cerebro, se disparan o no, por lo tanto, una salida binaria (es decir, 0 o 1) se parece a esta propiedad.

Estrictamente hablando, no lo hacen.

Sin embargo, si no usa uno, no importa cuán elegante sea su red, ¡termina siendo equivalente a un * modelo lineal *!

Por lo tanto, todo ese trabajo de configuración de su elegante arquitectura puede haberle dado algo no más poderoso que ajustar y = mX + b.

De hecho, será * menos * potente que y = mX + b, es mucho más regularizado que simplemente hacer OLS. Lo que en realidad puede ser algo bueno en muchos casos, pero no obstante es menos poderoso.

Sin embargo, una vez que agrega la no linealidad, siempre que tenga al menos una capa oculta, el poder salta por el techo. La red se convierte en un aproximador de función universal, y se vuelve capaz de torcer y convertir la entrada en cualquier forma que se requiera.

La no linealidad, junto con una arquitectura bien elegida, es en realidad lo que le da poder a una red neuronal.

La función de activación de un nodo en una red neuronal define la salida del nodo, dado un conjunto de entradas predeterminadas. Podemos conceptualizar una función de activación usando el ejemplo de algo tan simple como una compuerta AND en electrónica. Tenga en cuenta que la naturaleza combinatoria de una compuerta AND implica que la salida será 0 o 1, dependiendo únicamente de las entradas (similar a una función de activación básica, definida como

[matemáticas] \ phi (v_i, v_j) =
\ begin {cases}
1 & \ text {if} v_i = 1, v_j = 1 \\
0 & \ text {else}
\ end {cases} [/ math]

La raíz de tal función está biológicamente inspirada; La función es una representación del potencial de acción disparando en una neurona. En su forma más simple, esta función es binaria como se demostró anteriormente.

También necesitamos la función para fines prácticos: limitar los valores a una configuración probabilística entre -1 y 1 en una red (por lo que a menudo se considera una función sigmoidea). El modelo comúnmente utilizado en perceptrones multicapa es entonces una función de activación sigmoidal, definida en forma de una tangente hiperbólica como [matemática] \ phi (v_i) = \ tanh (v_i) [/ matemática], normalizada de -1 a 1, o [matemática] \ phi (v_i) = (1+ \ exp (-v_i)) ^ {- 1} [/ matemática], traducida verticalmente entre 0 y 1.

Imagine que una red neuronal es una manguera:

Toma agua (toma algo de entrada), la lleva a alguna parte (modifica su entrada) y empuja el agua hacia afuera (produce algo de salida).

Sin una función de activación, su manguera actuará más como una tubería de acero: fija e inflexible. A veces eso es lo suficientemente bueno. No hay nada de malo en usar una tubería para entregar el agua:

A veces será más difícil. Tendrás que pasar por puntos muy específicos y evitar otros:

Una tubería de acero inflexible simplemente no encajará sin importar cómo la gire. Aquí es útil una función de activación, ya que permite que su función sea más flexible.

En este caso, una red neuronal con una función de activación actuaría como una manguera de jardín de plástico. Puede doblarlo a sus necesidades específicas y llevar su agua a muchos más lugares que son imposibles de alcanzar con una tubería de acero:

Por lo tanto, el propósito de una función de activación es agregar flexibilidad a su manguera (no linealidad a su red neuronal).

Las funciones de activación agregan no linealidad a la red neuronal.

Si todas las redes neuronales lo hicieran multiplicando pesos con entradas y luego sumando todo para cada nodo en cada capa, entonces una red neuronal realmente amplia sería representable con solo una capa. Eso es porque cuando multiplica muchas funciones lineales juntas sobre las capas, obtendrá otra función lineal como resultado en la capa de salida.

Al usar funciones de activación, se pueden representar funciones más complejas agregando más y más capas.

El problema que estamos tratando de resolver es encontrar una función que describa la relación entre la variable independiente x y la variable dependiente y [y = f (x)]. La red neuronal es uno de los métodos para encontrar esta función. Las redes neuronales pueden aprender representaciones complejas debido a la no linealidad de las funciones de activación. Sin la no linealidad, la red está restringida a aprender solo funciones lineales. Si bien no hay nada de malo en eso, una función lineal es solo una de las muchas asignaciones posibles entre dos variables.

¿Qué pasa si quieres que la red aprenda algo un poco más complicado?

¿O qué tal algo funky como este?

El segundo problema con las funciones de activación lineal es que no pueden ser profundas. Una función lineal aplicada a una función lineal sigue siendo una función lineal.

y1 = a * x + b

y2 = c * y1 + d = c * (a * x + b) + d = c * a * x + (c * b + d) = A * x + B

Por lo tanto, una red neuronal de muchas capas se reduciría a una red de una sola capa en ausencia de funciones de activación no lineal.

Creo que proviene de una explicación biológicamente inspirada en la que las neuronas en nuestro cerebro toman como entrada de varias neuronas y luego realizan una operación en la entrada combinada para decidir si se dispara o no.

Las funciones de activación en NN son necesarias para que la red aprenda asignaciones complejas derivando una función no lineal y adecuada que, por ejemplo, pueda clasificar los datos.