En el ejercicio anterior, viste que agregar capas ocultas a nuestra red no eran suficientes para representar no linealidades. Las operaciones lineales que se realizan en operaciones lineales siguen siendo lineales.
¿Cómo se puede configurar una red neuronal para que aprenda relaciones no lineales entre valores? Necesitamos alguna manera de insertar operaciones matemáticas en un modelo.
Si esto te parece algo familiar, es porque realmente aplicamos operaciones matemáticas no lineales a la salida de un modelo lineal en una etapa anterior el curso. En el lab Regresión logística adaptamos un modelo de regresión lineal para obtener un valor continuo de 0 a 1 (que representa una probabilidad), pasando la salida del modelo a través de un función sigmoidea.
Podemos aplicar el mismo principio a nuestra red neuronal. Revisemos nuestro modelo del Ejercicio 2, pero esta vez, antes para obtener el valor de cada nodo, primero aplicaremos la función sigmoidea:
Haz clic en el botón >| para intentar realizar los cálculos de cada nodo. (a la derecha del botón de reproducción). Revisar las operaciones matemáticas realizadas para calcular el valor de cada nodo en el panel Cálculos debajo del gráfico. Ten en cuenta que la salida de cada nodo ahora es una transformación sigmoidea de la combinación de nodos en la capa anterior, y los valores de salida se todas entre 0 y 1.
Aquí, la sigmoidea funciona como una función de activación para la red neuronal, una transformación no lineal del valor de salida de una neurona antes de que el valor se pase como entrada a los cálculos de la siguiente de la red neuronal.
Ahora que agregamos una función de activación, agregar capas tiene un mayor impacto. Apilar no linealidades en no linealidades nos permite modelar muy complejos relaciones entre las entradas y las salidas previstas. En resumen, cada capa es aprender de manera efectiva una función más compleja y de nivel superior sobre los datos de datos. Si desea intuir mejor cómo funciona esto, consulta la excelente entrada de blog de Chris Olah.
Funciones de activación comunes
Tres funciones matemáticas que se usan comúnmente como funciones de activación son las siguientes: sigmoidea, tanh y ReLU.
La función sigmoidea (descrita anteriormente) realiza la siguiente transformación en la entrada. $x$, lo que produce un valor de salida entre 0 y 1:
\[F(x)=\frac{1} {1+e^{-x}}\]
Aquí hay un gráfico de esta función:
![Figura 4: Trama de la función sigmoidea: una curva con forma de S que
acerca del eje x asintóticamente a medida que x se acerca al negativo
infinito y 1 cuando x se aproxima al infinito.](https://developers.google.cn/static/machine-learning/crash-course/neural-networks/images/sigmoid.png?authuser=8&hl=es)
La función tanh (abreviatura de “tangente hiperbólica”) transforma los datos de entrada $x$ en produce un valor de salida entre –1 y 1:
\[F(x)=tanh(x)\]
Aquí hay un gráfico de esta función:
![Figura 5: Trama de la función tanh: un poco
con forma de S más empinada que la función sigmoidea, que asintótica
se acerca a –1 cuando x se acerca al infinito negativo y a 1 cuando se acerca x.
infinito.](https://developers.google.cn/static/machine-learning/crash-course/neural-networks/images/tanh.png?authuser=8&hl=es)
La función de activación de la unidad lineal rectificada (o ReLU, para short) transforma la salida con el siguiente algoritmo:
- Si el valor de entrada $x$ es menor que 0, muestra 0.
- Si el valor de entrada $x$ es mayor o igual que 0, muestra el valor de entrada.
ReLU se puede representar matemáticamente con la función max():
Aquí hay un gráfico de esta función:
![Figura 6: Trama de la función ReLU: una línea horizontal
a lo largo del eje x de infinito negativo a 0, que se convierte en una línea diagonal
subiendo y hacia la derecha con una pendiente 1 (y=x) de 0 al infinito.](https://developers.google.cn/static/machine-learning/crash-course/neural-networks/images/relu.png?authuser=8&hl=es)
ReLU a menudo funciona un poco mejor como función de activación que como Suavizado. funcionar como sigmoidea o tanh, ya que es menos susceptible al Problema de gradiente de fuga durante el entrenamiento de las redes neuronales. ReLU también es mucho más fácil que estas funciones.
Otras funciones de activación
En la práctica, cualquier función matemática puede servir como una función de activación. Supongamos que \(\sigma\) representa nuestra función de activación. El valor de un nodo en la red se obtiene de la siguiente manera: Fórmula:
Keras brinda compatibilidad inmediata para muchos funciones de activación. Dicho esto, recomendamos comenzar con ReLU.
Resumen
El siguiente video ofrece un resumen de todo lo que aprendiste hasta ahora sobre cómo se construyen las redes neuronales:
Ahora, nuestro modelo tiene todos los componentes estándar de lo que las personas cuando hacen referencia a una red neuronal:
- Es un conjunto de nodos, análogos a las neuronas, organizados en capas.
- Un conjunto de ponderaciones que representan las conexiones entre cada red neuronal y la inferior. La capa inferior puede otra capa de la red neuronal u otro tipo de capa.
- Un conjunto de sesgos, una para cada nodo.
- Una función de activación que transforma el resultado de cada nodo en una capa. Las diferentes capas pueden tener diferentes funciones de activación.
Una salvedad: las redes neuronales no siempre son mejores que combinaciones de atributos, pero las redes neuronales ofrecen una alternativa flexible que funciona en muchos casos.