¿Por qué se debe utilizar una función de activación no lineal en una red neuronal de retropropagación?

139

He estado leyendo algunas cosas en redes neuronales y entiendo el principio general de una red neuronal de capa única. Entiendo la necesidad de capas adicionales, pero ¿por qué se utilizan las funciones de activación no lineal?

Esta pregunta es seguida por esta: ¿Cuál es una derivada de la función de activación utilizada en la retropropagación?

corazza
fuente
mejor respuesta de todas aquí en inteligencia artificial
eusoubrasileiro

Respuestas:

167

El propósito de la función de activación es introducir la no linealidad en la red.

a su vez, esto le permite modelar una variable de respuesta (también conocida como variable objetivo, etiqueta de clase o puntaje) que varía de forma no lineal con sus variables explicativas

no lineal significa que la salida no se puede reproducir a partir de una combinación lineal de las entradas (que no es lo mismo que la salida que se representa en una línea recta; la palabra para esto es afín ).

Otra forma de pensarlo: sin una función de activación no lineal en la red, un NN, sin importar cuántas capas tenga, se comportaría como un perceptrón de una sola capa, porque la suma de estas capas le daría simplemente otra función lineal. (ver definición justo arriba).

>>> in_vec = NP.random.rand(10)
>>> in_vec
  array([ 0.94,  0.61,  0.65,  0.  ,  0.77,  0.99,  0.35,  0.81,  0.46,  0.59])

>>> # common activation function, hyperbolic tangent
>>> out_vec = NP.tanh(in_vec)
>>> out_vec
 array([ 0.74,  0.54,  0.57,  0.  ,  0.65,  0.76,  0.34,  0.67,  0.43,  0.53])

Una función de activación común utilizada en backprop ( tangente hiperbólica ) evaluada de -2 a 2:

ingrese la descripción de la imagen aquí

Doug
fuente
15
¿Por qué querríamos eliminar la linealidad?
corazza
17
Si los datos que deseamos modelar no son lineales, entonces debemos tenerlo en cuenta en nuestro modelo.
Doug
38
Respuesta de una oración: << no importa cuántas capas se comporten como un solo perceptrón (porque las funciones lineales sumadas solo te dan una función lineal). >> . ¡Agradable!
Autónomo
12
Esto es un poco engañoso: como mencionó Eski, las funciones de activación lineal rectificadas son extremadamente exitosas, y si nuestro objetivo es modelar / aproximar funciones, eliminar la no linealidad en todos los pasos no es necesariamente la respuesta correcta. Con suficientes piezas lineales, puede aproximar casi cualquier función no lineal con un alto grado de precisión. Me pareció una buena explicación de por qué funcionan las unidades lineales rectificadas: stats.stackexchange.com/questions/141960/…
tegan
11
@tegan Las funciones de activación lineal rectificadas no son lineales. No estoy seguro de qué tiene que ver tu comentario con la respuesta.
endolito el
49

Se puede utilizar una función de activación lineal, sin embargo, en ocasiones muy limitadas. De hecho, para comprender mejor las funciones de activación, es importante observar el mínimo cuadrado ordinario o simplemente la regresión lineal. Una regresión lineal tiene como objetivo encontrar los pesos óptimos que resultan en un efecto vertical mínimo entre las variables explicativas y objetivo, cuando se combinan con la entrada. En resumen, si el resultado esperado refleja la regresión lineal como se muestra a continuación, entonces se pueden usar las funciones de activación lineal: (Figura superior). Pero como en la segunda figura a continuación, la función lineal no producirá los resultados deseados: (Figura central). Sin embargo, una función no lineal como se muestra a continuación produciría los resultados deseados:

ingrese la descripción de la imagen aquí

Las funciones de activación no pueden ser lineales porque las redes neuronales con una función de activación lineal son efectivas solo en una capa de profundidad, independientemente de cuán compleja sea su arquitectura. La entrada a las redes suele ser una transformación lineal (entrada * peso), pero el mundo real y los problemas no son lineales. Para hacer que los datos entrantes no sean lineales, utilizamos un mapeo no lineal llamado función de activación. Una función de activación es una función de toma de decisiones que determina la presencia de una característica neural particular. Se asigna entre 0 y 1, donde cero significa ausencia de la característica, mientras que uno significa su presencia. Desafortunadamente, los pequeños cambios que ocurren en los pesos no pueden reflejarse en los valores de activación porque solo puede tomar 0 o 1. Por lo tanto, las funciones no lineales deben ser continuas y diferenciables entre este rango. Una red neuronal debe poder tomar cualquier entrada de -infinito a + infinito, pero debe poder asignarla a una salida que oscila entre {0,1} o entre {-1,1} en algunos casos, por lo tanto, Necesidad de la función de activación. La no linealidad es necesaria en las funciones de activación porque su objetivo en una red neuronal es producir un límite de decisión no lineal a través de combinaciones no lineales del peso y las entradas.

chibole
fuente
1
+ Uno, ¿entonces se puede deducir que la función no lineal se usa para establecer un límite perfecto?
SIslam
1
Sí exactamente. En constante de solo producir 0 o 1, puede producir 0.4 o 0.78, haciéndolo continuo sobre el rango del límite.
chibole
3
Una red neuronal debe poder tomar cualquier entrada de -infinito a + infinito, pero debe poder asignarla a una salida que oscile entre {0,1} o entre {-1,1} ... me recuerda esa limitación de ReLU es que solo debe usarse dentro de capas ocultas de un modelo de red neuronal.
Cloud Cho
21

Si solo permitimos funciones de activación lineal en una red neuronal, la salida será solo una transformación lineal de la entrada, que no es suficiente para formar un aproximador de función universal . Dicha red solo puede representarse como una multiplicación de matriz, y no podría obtener comportamientos muy interesantes de dicha red.

Lo mismo ocurre con el caso en que todas las neuronas tienen funciones de activación afines (es decir, una función de activación en el formulario f(x) = a*x + c, donde ay cson constantes, que es una generalización de las funciones de activación lineal), lo que solo dará como resultado una transformación afín de entrada a salida , que tampoco es muy emocionante.

Una red neuronal puede contener neuronas con funciones de activación lineal, como en la capa de salida, pero esto requiere la compañía de neuronas con una función de activación no lineal en otras partes de la red.

Nota: Una excepción interesante son los gradientes sintéticos de DeepMind , para los cuales usan una pequeña red neuronal para predecir el gradiente en el paso de propagación hacia atrás dados los valores de activación, y descubren que pueden salirse con la suya usando una red neuronal sin capas ocultas y con solo activaciones lineales.

Hola Adios
fuente
1
Las funciones de orden superior se pueden aproximar con funciones de activación lineal utilizando múltiples capas ocultas. El teorema de aproximación universal es específico para MLP con solo una capa oculta.
eski
En realidad, creo que tiene razón en su afirmación sobre las funciones de activación afines que resultan en una transformación afín, pero el hecho de que la transformación se aprenda a través de la propagación inversa (o cualquier otro medio) hace que no sea del todo inútil en lo que respecta a la pregunta original.
eski
44
@eski No, que puede no aproximar funciones de orden superior con sólo funciones de activación lineales, sólo se puede lineal modelo (o afín, si usted tiene un nodo adicional constante en cada uno, pero la última capa) funciones y transformaciones, no importa cuántas capas tener.
HelloGoodbye
¿Es correcto decir que el propósito principal de la función de activación es permitir que la red neuronal produzca un límite de decisión no lineal?
stackoverflowuser2010
@ stackoverflowuser2010 Esa sería una forma de verlo. Pero hay más en una función de activación que eso. El artículo de Wikipedia sobre funciones de activación enumera varias funciones de activación, todas (excepto una) que no son lineales, y compara las diferentes cualidades que puede tener una función de activación.
HelloGoodbye
9

Una red neuronal de avance con activación lineal y cualquier cantidad de capas ocultas es equivalente a solo una red neuronal neural lineal sin capa oculta. Por ejemplo, consideremos la red neuronal en la figura con dos capas ocultas y sin activación ingrese la descripción de la imagen aquí

y = h2 * W3 + b3 
  = (h1 * W2 + b2) * W3 + b3
  = h1 * W2 * W3 + b2 * W3 + b3 
  = (x * W1 + b1) * W2 * W3 + b2 * W3 + b3 
  = x * W1 * W2 * W3 + b1 * W2 * W3 + b2 * W3 + b3 
  = x * W' + b'

Podemos hacer el último paso porque la combinación de varias transformaciones lineales se puede reemplazar con una transformación y la combinación de varios términos de sesgo es solo un sesgo único. El resultado es el mismo incluso si agregamos alguna activación lineal.

Por lo tanto, podríamos reemplazar esta red neuronal con una red neuronal de una sola capa. Esto se puede extender a las ncapas. Esto indica que agregar capas no aumenta en absoluto el poder de aproximación de una red neuronal lineal. Necesitamos funciones de activación no lineales para aproximar las funciones no lineales y la mayoría de los problemas del mundo real son altamente complejos y no lineales. De hecho, cuando la función de activación no es lineal, se puede demostrar que una red neuronal de dos capas con un número suficientemente grande de unidades ocultas es un aproximador de función universal.

xashru
fuente
5

"El presente documento utiliza el Teorema de Stone-Weierstrass y el aplastador de coseno de Gallant y White para establecer que las arquitecturas de red de alimentación multicapa estándar que utilizan funciones de aplastamiento arbitrario pueden aproximarse virtualmente a cualquier función de interés con el grado deseado de precisión, siempre que haya muchos ocultos las unidades están disponibles ". ( Hornik et al., 1989, Redes neuronales )

Una función de aplastamiento es, por ejemplo, una función de activación no lineal que se asigna a [0,1] como la función de activación sigmoidea.

esparto
fuente
3

Hay momentos en que una red puramente lineal puede dar resultados útiles. Digamos que tenemos una red de tres capas con formas (3,2,3). Al limitar la capa intermedia a solo dos dimensiones, obtenemos un resultado que es el "plano de mejor ajuste" en el espacio tridimensional original.

Pero hay formas más fáciles de encontrar transformaciones lineales de esta forma, como NMF, PCA, etc. Sin embargo, este es un caso en el que una red de varias capas NO se comporta de la misma manera que un perceptrón de una sola capa.

markemus
fuente
2

Para comprender la lógica detrás de las funciones de activación no lineal , primero debe comprender por qué se utilizan las funciones de activación. En general, los problemas del mundo real requieren soluciones no lineales que no son triviales. Entonces necesitamos algunas funciones para generar la no linealidad. Básicamente, lo que hace una función de activación es generar esta no linealidad mientras se asignan los valores de entrada en un rango deseado.

Sin embargo, las funciones de activación lineal podrían usarse en un conjunto muy limitado de casos en los que no necesita capas ocultas, como la regresión lineal. Por lo general, no tiene sentido generar una red neuronal para este tipo de problemas porque, independientemente del número de capas ocultas, esta red generará una combinación lineal de entradas que se puede hacer en un solo paso. En otras palabras, se comporta como una sola capa.

También hay algunas propiedades más deseables para las funciones de activación, como la diferenciabilidad continua . Como estamos utilizando la propagación hacia atrás, la función que generamos debe ser diferenciable en cualquier punto. Le recomiendo que consulte la página de wikipedia para ver las funciones de activación desde aquí para comprender mejor el tema.

Alican Şafak Özdek
fuente
2

Varias buenas respuestas están aquí. Será bueno señalar el libro "Reconocimiento de patrones y aprendizaje automático" de Christopher M. Bishop. Es un libro al que vale la pena referirse para obtener una visión más profunda sobre varios conceptos relacionados con el LD. Extracto de la página 229 (sección 5.1):

Si las funciones de activación de todas las unidades ocultas en una red se consideran lineales, entonces, para cualquier red de este tipo, siempre podemos encontrar una red equivalente sin unidades ocultas. Esto se deduce del hecho de que la composición de transformaciones lineales sucesivas es en sí misma una transformación lineal. Sin embargo, si el número de unidades ocultas es menor que el número de unidades de entrada o salida, entonces las transformaciones que puede generar la red no son las transformaciones lineales más generales posibles de entradas a salidas porque la información se pierde en la reducción de dimensionalidad en el unidades ocultas En la Sección 12.4.2, mostramos que las redes de unidades lineales dan lugar al análisis de componentes principales. En general, sin embargo, hay poco interés en las redes multicapa de unidades lineales.

haripkannan
fuente
1

Como recuerdo, las funciones sigmoideas se usan porque su derivada que se ajusta al algoritmo BP es fácil de calcular, algo simple como f (x) (1-f (x)). No recuerdo exactamente las matemáticas. En realidad, se puede usar cualquier función con derivados.

Anton
fuente
77
La función todavía quiere estar aumentando monotónicamente, según recuerdo. Entonces, ninguna función.
Novak
1

Se puede usar un NN en capas de varias neuronas para aprender problemas linealmente inseparables. Por ejemplo, la función XOR se puede obtener con dos capas con función de activación por pasos.

david
fuente
0

Permíteme darte una explicación lo más simple posible:

Las redes neuronales se utilizan en el reconocimiento de patrones, ¿correcto? Y la búsqueda de patrones es una técnica muy no lineal.

Supongamos, por el bien del argumento, que usamos una función de activación lineal y = wX + b para cada neurona y establecemos algo como si y> 0 -> clase 1 más clase 0.

Ahora podemos calcular nuestra pérdida usando la pérdida por error cuadrado y propagarla de nuevo para que el modelo aprenda bien, ¿correcto?

INCORRECTO.

  • Para la última capa oculta, el valor actualizado será w {l} = w {l} - (alpha) * X.

  • Para la segunda última capa oculta, el valor actualizado será w {l-1} = w {l-1} - (alpha) * w {l} * X.

  • Para la i-ésima última capa oculta, el valor actualizado será w {i} = w {i} - (alpha) * w {l} ... * w {i + 1} * X.

Esto da como resultado que multipliquemos todas las matrices de peso, lo que da como resultado las posibilidades: A) w {i} apenas cambia debido a la desaparición del gradiente B) w {i} cambia drásticamente e incorrectamente debido a la explosión del gradiente C) w {i} cambia bien suficiente para darnos un buen puntaje

¡En el caso de que ocurra C, eso significa que nuestro problema de clasificación / predicción fue probablemente un simple basado en regresor lineal / logístico y nunca requirió una red neuronal en primer lugar!

No importa cuán robusto o bien ajustado esté su NN, si usa una función de activación lineal, nunca podrá abordar problemas de reconocimiento de patrones que no sean lineales.

Kaustubh J
fuente
-3

No es en absoluto un requisito. De hecho, la función de activación lineal rectificada es muy útil en grandes redes neuronales. Calcular el gradiente es mucho más rápido e induce la escasez al establecer un límite mínimo en 0.

Consulte lo siguiente para obtener más detalles: https://www.academia.edu/7826776/Mathematical_Intuition_for_Performance_of_Rectified_Linear_Unit_in_Deep_Neural_Networks


Editar:

Se ha debatido si la función de activación lineal rectificada se puede llamar una función lineal.

Sí, técnicamente es una función no lineal porque no es lineal en el punto x = 0, sin embargo, todavía es correcto decir que es lineal en todos los demás puntos, por lo que no creo que sea tan útil hacer una trampa aquí,

Podría haber elegido la función de identidad y aún sería cierto, pero elegí ReLU como ejemplo debido a su reciente popularidad.

eski
fuente
8
La función de activación lineal rectificada también es no lineal (a pesar de su nombre). Es simplemente lineal para valores positivos
Plankalkül
44
Es técnicamente correcto, no es lineal en todo el dominio, específicamente en x = 0 (es lineal para x <0 en realidad, ya que f (x) = 0 es una función lineal). Tampoco es diferenciable, por lo que la función de gradiente tampoco es totalmente computable, pero en la práctica estos tecnicismos son fáciles de superar.
eski
44
No solo es técnicamente correcto, también tiene razón en la práctica (o algo así). Es la no linealidad de ReLU lo que los hace útiles. Si hubieran sido lineales, habrían tenido una función de activación en el formulario f(x) = a*x(porque ese es el único tipo de función de activación lineal que existe), que es inútil como función de activación (a menos que la combine con funciones de activación no lineales )
Hola
10
La Unidad Lineal Rectificada (ReLU) no es lineal, y no es solo un "detalle menor" que las personas están criticando, es una razón importante importante de por qué es útil para empezar. Una red neuronal con la matriz de identidad o una unidad lineal regular utilizada como función de activación no podría modelar funciones no lineales. El hecho de que sea lineal por encima de 0 no significa que sea prácticamente una función lineal. Una ReLU con fugas también es "lineal" por debajo de 0, pero todavía no es una función lineal y definitivamente no puede ser reemplazada por la función de identidad. La no linealidad es definitivamente un requisito.
Essam Al-Mansouri
3
Es un concepto real llamado función lineal por partes.
eski