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?
Respuestas:
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).
Una función de activación común utilizada en backprop ( tangente hiperbólica ) evaluada de -2 a 2:
fuente
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:
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.
fuente
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
, dondea
yc
son 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.
fuente
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
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
n
capas. 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.fuente
"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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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 )