Entendiendo las redes neuronales: De la neurona a RNN, CNN y Deep Learning

//Entendiendo las redes neuronales: De la neurona a RNN, CNN y Deep Learning

Redes neuronales es uno de los algoritmos de aprendizaje automático más populares en la actualidad.

Con el tiempo, se ha demostrado de manera decisiva que las redes neuronales superan a otros algoritmos en precisión y velocidad. Con diversas variantes como CNN (redes neuronales convolucionales), RNN (redes neuronales recurrentes), AutoEncoders, Deep Learning, etc.

Las redes neuronales se están convirtiendo poco a poco en los científicos de datos o en los profesionales del aprendizaje automático, lo que fue una regresión lineal para los estadísticos. Por lo tanto, es imperativo tener una comprensión fundamental de lo que es una red neuronal, cómo está formada y cuál es su alcance y limitaciones.

Este post es un intento de explicar una red neuronal a partir de su bloque de construcción más básico: una neurona, y luego profundizar en sus variaciones más populares como CNN, RNN, etc.

¿Qué es una neurona?

Como sugiere su nombre, las redes neuronales se inspiraron en la arquitectura neuronal de un cerebro humano, y como en un cerebro humano, el bloque de construcción básico se llama neurona. Su funcionalidad es similar a una neurona humana, es decir, toma algunas entradas y dispara una salida. En términos puramente matemáticos, una neurona en el mundo del aprendizaje automático es un marcador de posición para una función matemática, y su único trabajo es proporcionar una salida mediante la aplicación de la función en las entradas proporcionadas.

redes neuronales

La función utilizada en una neurona se denomina generalmente como una función de activación. Se han intentado hasta la fecha 5 funciones de activación principales, step, sigmoid, tanh y ReLU. Cada uno de estos se describe en detalle a continuación.

Funciones de activación


Función de paso

Una función de paso se define como:

redes neuronales

Donde la salida es 1 si el valor de x es mayor que igual a cero y 0 si el valor de x es menor que cero. Como se puede ver, una función de paso no es diferenciable en cero. En la actualidad, una red neuronal utiliza el método de propagación hacia atrás junto con el descenso del degradado para calcular los pesos de diferentes capas. Dado que la función de escalón no es diferenciable en cero, no puede avanzar con el enfoque de pendiente de gradiente y falla en la tarea de actualizar los pesos.

Para superar este problema, se introdujeron funciones sigmoidales en lugar de la función escalonada.

Función sigmoidea

Una función sigmoidea o una función logística se define matemáticamente como:

redes neuronales

El valor de la función tiende a cero cuando z o la variable independiente tiende a infinito negativo y tiende a 1 cuando z tiende a infinito. Debe tenerse en cuenta que esta función representa una aproximación del comportamiento de la variable dependiente y es una suposición. Ahora surge la pregunta de por qué usamos la función sigmoide como una de las funciones de aproximación. Hay ciertas razones simples para esto.

1. Captura la no linealidad en los datos. Aunque en una forma aproximada, pero el concepto de no linealidad es esencial para un modelado preciso.

2. La función sigmoide es diferenciable en todo momento y, por lo tanto, se puede utilizar con los métodos de descenso de gradiente y propagación hacia atrás para calcular los pesos de diferentes capas.

3. La suposición de que una variable dependiente sigue una función sigmoidea supone inherentemente una distribución gaussiana para la variable independiente, que es una distribución general que vemos para muchos eventos que ocurren al azar y esta es una buena distribución genérica para comenzar.

Sin embargo, una función sigmoidea también tiene un problema de desvanecimiento de los gradientes. Como puede verse en la imagen, una función sigmoide aplasta su entrada en un rango de salida muy pequeño [0,1] y tiene gradientes muy pronunciados. Por lo tanto, quedan grandes regiones de espacio de entrada, donde incluso un cambio grande produce un cambio muy pequeño en la salida. Esto se conoce como el problema de la desaparición del gradiente. Este problema aumenta con un aumento en el número de capas y, por lo tanto, se estanca el aprendizaje de una red neuronal en un cierto nivel.

Función Tanh

La función tanh (z) es una versión reescalada del sigmoide, y su rango de salida es [- 1,1] en lugar de [0,1]. [1]

redes neuronales

La razón general para usar una función Tanh en algunos lugares en lugar de la función sigmoide es que, como los datos se centran alrededor de 0, las derivadas son más altas. Un gradiente más alto ayuda en una mejor tasa de aprendizaje. A continuación se adjuntan gradientes trazados de dos funciones tanh y sigmoide. [2]

Para la función tanh, para una entrada entre [-1,1], tenemos una derivada entre [0,42, 1].

funcion Tanh

Por otra parte, para la función sigmoide, para la entrada entre [0,1], tenemos un derivado entre [0.20, 0.25]funcion Tanh

Como se puede ver en las imágenes de arriba, una función Tanh tiene un rango de derivados más alto que una función Sigmoide y, por lo tanto, tiene una mejor tasa de aprendizaje. Sin embargo, el problema de los gradientes de desaparición aún persiste en la función Tanh.

Función ReLU

La unidad lineal rectificada es la función de activación más utilizada en los modelos de aprendizaje profundo. La función devuelve 0 si recibe una entrada negativa, pero para cualquier valor positivo x, devuelve ese valor. Por lo tanto, se puede escribir como f (x) = max (0, x).

Gráficamente se ve así [3]

redes neuronales

El Leaky ReLU es uno de los más conocidos. Es lo mismo que ReLU para números positivos. Pero en lugar de ser 0 para todos los valores negativos, tiene una pendiente constante (menos de 1.).

Esa pendiente es un parámetro que el usuario establece cuando construye el modelo, y con frecuencia se llama α. Por ejemplo, si el usuario establece α = 0.3, la función de activación es f (x) = max (0.3 * x, x) Esto tiene la ventaja teórica de que, al ser influenciado por x en todos los valores, puede hacer más Uso completo de la información contenida en x.

Existen otras alternativas, pero tanto los profesionales como los investigadores generalmente han encontrado un beneficio insuficiente para justificar el uso de cualquier otra cosa que no sea ReLU. También en la práctica general, ReLU ha demostrado tener un mejor desempeño que las funciones sigmoide o tanh.

Redes neuronales


Hasta ahora hemos cubierto las funciones neuronales y de activación que, en conjunto, forman los bloques de construcción básicos de cualquier red neuronal. Ahora, profundizaremos en lo que es una red neuronal y diferentes tipos de ella. Recomendaría encarecidamente a las personas, que revisen las neuronas y las funciones de activación si tienen alguna duda al respecto.

Antes de comprender una red neuronal, es imprescindible comprender qué es una capa en una red neuronal. Una capa no es más que una colección de neuronas que toman una entrada y proporcionan una salida. Las entradas a cada una de estas neuronas se procesan a través de las funciones de activación asignadas a las neuronas. Por ejemplo, aquí hay una pequeña red neuronal.

redes neuronales

La capa más a la izquierda de la red se llama capa de entrada, y la capa más a la derecha es la capa de salida (que, en este ejemplo, solo tiene un nodo). La capa intermedia de los nodos se denomina capa oculta porque sus valores no se observan en el conjunto de entrenamiento.

También decimos que nuestra red neuronal de ejemplo tiene 3 unidades de entrada (sin contar la unidad de polarización), 3 unidades ocultas y 1 unidad de salida [4]

Cualquier red neuronal tiene 1 entrada y 1 capa de salida. El número de capas ocultas, por ejemplo, difiere entre diferentes redes dependiendo de la complejidad del problema a resolver. Otro punto importante a tener en cuenta aquí es que cada una de las capas ocultas puede tener una función de activación diferente, por ejemplo, la capa oculta1 puede usar una función sigmoidea y la capa oculta2 puede usar una ReLU, seguida de un Tanh en la capa oculta3, todo en el mismo neuronal red. La elección de la función de activación que se utilizará de nuevo depende del problema en cuestión y del tipo de datos que se utilizan.

Ahora, para que una red neuronal realice predicciones precisas, cada una de estas neuronas aprende ciertos pesos en cada capa. El algoritmo a través del cual aprenden los pesos se llama propagación de vuelta, cuyos detalles están fuera del alcance de esta publicación.

Una red neuronal que tiene más de una capa oculta generalmente se conoce como una red neuronal profunda.

Redes neuronales convolucionales (CNN)

 

Las redes neuronales convolucionales (CNN) es una de las variantes de las redes neuronales que se utilizan mucho en el campo de la visión artificial. Deriva su nombre del tipo de capas ocultas en las que se compone. Las capas ocultas de una CNN suelen consistir en capas convolucionales, capas agrupadas, capas totalmente conectadas y capas de normalización. Aquí simplemente significa que en lugar de utilizar las funciones de activación normales definidas anteriormente, las funciones de convolución y agrupación se utilizan como funciones de activación.

redesneuronales

Para entenderlo en detalle, uno necesita entender qué son la convolución y la agrupación. Ambos conceptos están tomados del campo de la Visión por Computador y se definen a continuación.

Convolución: la convolución funciona con dos señales (en 1D) o dos imágenes (en 2D): puede pensar en una como la señal de “entrada” (o imagen), y la otra (llamada núcleo) como un “filtro” en la imagen de entrada, produciendo una imagen de salida (por lo tanto, la convolución toma dos imágenes como entrada y produce una tercera como salida). [5]

En términos sencillos, toma una señal de entrada y aplica un filtro sobre ella, esencialmente multiplica la señal de entrada con el núcleo para obtener la señal modificada. Matemáticamente, una convolución de dos funciones f y g se define como

formula

que, no es más que un producto de puntos de la función de entrada y una función del núcleo. En el caso del procesamiento de imágenes, es más fácil visualizar un núcleo deslizando sobre una imagen completa y, por lo tanto, cambiando el valor de cada píxel en el proceso.

pooling

Agrupación: la agrupación es un proceso de discretización basado en muestras. El objetivo es muestrear una representación de entrada (imagen, matriz de salida de capa oculta, etc.), reduciendo su dimensionalidad y permitiendo hacer suposiciones sobre las características contenidas en las subregiones agrupadas.

Hay 2 tipos principales de agrupación comúnmente conocidos como agrupación máxima y mínima. Como su nombre sugiere, la agrupación máxima se basa en recoger el valor máximo de la región seleccionada y la agrupación mínima se basa en recoger el valor mínimo de la región seleccionada.

pooling

Por lo tanto, como se puede ver, una red neuronal convolucional o CNN es básicamente una red neuronal profunda que consiste en capas ocultas que tienen funciones de convolución y agrupación además de la función de activación para introducir la no linealidad.

Una explicación más detallada se puede encontrar en http://colah.github.io/posts/2014-07-Conv-Nets-Modular/

Redes Neuronales Recurrentes (RNN)

 

Las redes neuronales recurrentes o RNN, como se las llama en breve, son una variante muy importante de las redes neuronales muy utilizadas en el procesamiento del lenguaje natural. En una red neuronal general, una entrada se procesa a través de varias capas y se produce una salida, suponiendo que dos entradas sucesivas son independientes entre sí. Sin embargo, esta suposición no es cierta en varios escenarios de la vida real. Por ejemplo, si uno quiere predecir el precio de una acción en un momento dado o quiere predecir la siguiente palabra en una secuencia, es imperativo que se considere la dependencia de observaciones anteriores.

Los RNN se denominan recurrentes porque realizan la misma tarea para cada elemento de una secuencia, y la salida depende de los cálculos anteriores. Otra forma de pensar acerca de los RNN es que tienen una “memoria” que captura información sobre lo que se ha calculado hasta ahora.

En teoría, las RNN pueden utilizar la información en secuencias arbitrariamente largas, pero en la práctica, se limitan a mirar hacia atrás solo unos pocos pasos. [7] En cuanto a la arquitectura, una RNN se parece a esto. Uno puede imaginarlo como una red neuronal multicapa con cada capa representando las observaciones en un cierto tiempo t.

redes

RNN ha demostrado tener un gran éxito en el procesamiento de lenguaje natural, especialmente con su variante LSTM, que puede mirar hacia atrás más tiempo que RNN.

Si está interesado en comprender LSTM, sin duda lo invito a visitar http://colah.github.io/posts/2015-08-Understanding-LSTMs/

En este artículo he tratado de cubrir las redes neuronales desde un punto de vista teórico, a partir de la estructura más básica, una neurona y cubriendo hasta las versiones más populares de las redes neuronales.

El objetivo de este artículo fue hacer que los lectores comprendan cómo se construye una red neuronal desde cero, en qué campos se utilizan y cuáles son sus variaciones más exitosas.

Entiendo que hay muchas otras versiones populares que trataré de cubrir en publicaciones posteriores. Por favor, siéntase libre de sugerir un tema si desea que sea cubierto antes

 

No comments yet.

Leave a comment

Your email address will not be published.