Entendiendo las redes neuronales PART 1

Las redes neuronales no son algo de este siglo, desde los 1940 se viene investigando esta tecnología. Con la investigación del psicólogo Donald Hebb y ayuda del matemático Alan Turing se empezó a probar las primeras redes neuronales. Pero no fue hasta 1955 que Frank Rosenblatt inventó la primera red neuronal conocida como perceptrón.

En esta primera parte de la serie Entendiendo las redes neuronales vamos a entender cómo funcionan una red neuronal internamente.

La neurona de una red neuronal

Neurona, es una forma cool de llamarle a una función matemática que realiza una suma ponderada de cada uno de los valores de entrada y la suma adicional de un término conocido como sesgo (bias).

Linear Regression

Como puedes ver en la imagen lo que hace una neurona internamente es una regresión linear.

Layers (capas)

Las redes neuronales están compuestas por capas, las capas son un conjunto de neuronas de la red neuronal ubicadas verticalmente, cada una de las capas realizan un cálculo y luego lo pasan a la siguiente capa. Así las neuronas de las capas siguientes pueden tener un aprendizaje jerarquizado, yendo desde un aprendizaje simple a uno complejo.

Existen tres tipos de capas principales que conforman nuestras neuronas: input layer (capa de entrada), hidden layers (capas ocultas) y output layer (capa de salida).

Neural Network

Como puedes ver en la imagen, la capa de entrada proporciona datos a nuestra capa oculta, la cual se encarga del cálculo para luego pasar el resultado a nuestra capa de salida.

Estos tipos de layers son diferentes a los layers que hemos visto hasta ahora. Su principal uso es el análisis de imágenes y lo puedes encontrar en convolutional neural network.

Convolutional Layer

Funciones de activación

Las funciones de activación (activation function) son las funciones que se encargan de agregar no linealidad a cada una de las neuronas. Haciendo que la red pueda resolver problemas no triviales con pocas neuronas.

Las funciones de activación reciben la salida de cada neurona, para luego pasar el resultado a la capa siguiente.

Algunos ejemplos de funciones de activación:

Paso binario:

Esta función hace que la salida de la neurona sean valores binarios:

Binary step

Sigmoid

Sigmoid

Esta función Añade una no linealidad que va de 0 a 1, formando una curva suave.

Sigmoid graph

ReLu

ReLu

Es una función que va en un rango de 0 a x, siendo x el valor de salida de la neurona.

ReLu graph

TanH

TanH

La curva de esta función es parecida a la curva que forma la función Sigmoid, con la gran diferencia de que esta va en un rango de -1 a 1.

TanH graph

Algoritmos de optimización

Los algoritmos de optimización (optimization algorithm) son una parte esencial de las redes neuronales. Estos algoritmos se encargan de reducir el error de cada una de las neuronas, formando una parte importante en el aprendizaje de la red neuronal.

Una buena elección de estos algoritmos puede hacer que tu red neuronal tenga una mayor eficiencia en un menor tiempo.

Algunos ejemplos de estos algoritmos son:

El Stochastic Gradient Descent (SGD) es unos de los algoritmos de optimizacion mas conocidos para redes neuronales. Su objectivo es ir reduciendo el error de la neurona paso a paso asta llegar al punto donde el error es minimo.

Wikipedia: https://en.wikipedia.org/wiki/Stochastic_gradient_descent

Adam

Adam es una combinación del Stochastic Gradient Descent with momentum y RMSprop. Este algoritmo de optimización promete una mayor eficiencia que otros algoritmos, haciendo que el error de tu red llegue al mínimo en el menor tiempo posible.

Paper: https://arxiv.org/abs/1412.6980

Backpropagation

Imagínate que tienes una red neuronal donde cada una de las neuronas aportan al resultado final de la red y resulta que el resultado es un error, ¿Que tanta culpa tiene cada una de las neuronas? Pues de esto se encarga el algoritmo de backpropagation. Este algoritmo se encarga de repartir la culpa del error, desde la última hasta la primera capa, a cada una de las neuronas dependiendo de cuanto haya aportando al resultado final.

¿Y cómo funciona una red neuronal?

  1. Las capas de entrada pasan los datos a las capas ocultas.
  2. Cada neurona de las capas ocultas realiza una regresión linear.
  3. El resultado de la regresión linear se pasa por una funcion de activacion.
  4. Los resultados pasan a la capa siguiente.
  5. Al obtener un resultado calculamos su error.
  6. El algoritmo de backpropagation le asigna una parte del error a cada neurona.
  7. El algoritmo de optimización disminuye el error de cada neurona.
  8. Al disminuir el error, la red aprende.
  9. repetimos hasta que el error sea mínimo.
  10. Y como resultado tenemos una red neuronal entrenada.

Conclusion

Con todo lo que hemos visto hasta ahora podemos llegar a la conclusión de que las redes neuronales son un conjunto de neuronas que se comunican entre sí para llegar a un resultado en conjunto.

En la segunda parte de la serie entendiendo redes neuronales, la cual puedes encontrar aquí en medium, vamos a crear una red neuronal con tensorflow.

Waiting for singularity, Data Scientists, Machine Leargning, Backend Developer. https://eddydecena.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store