Las redes neuronales son una ciencia que, con los años, ha regresado con fuerza al punto de interés. Digo que han regresado ya que sus bases fueron sentadas en 1943 por los científicos matemáticos Warren McCulloch Y Walter Pitts a través de un modelo computacional basado en matemáticas y algoritmos llamado: lógica de umbral (threshold logic)Pretendo en este post explicar algunos de los conceptos básicos de las redes neuronales artificiales.

Pero para saber que es exactamente una red neuronal artificial, es necesario entender primero el concepto de machine learning.

Machine Learning

Normalmente pongo títulos en castellano pero este termino es mundialmente reconocido así, y podríamos traducirlo como “Aprendizaje de Maquina”.

El aprendizaje de maquina es la ciencia de hacer que las computadoras actúen de una manera determinada sin necesidad de que sean programadas explícitamente y es el paso más grande que hemos tenido en el campo de la inteligencia artificial.

Esta ciencia se utiliza para lograr un algoritmo o un conjunto de reglas que trabajan con grandes colecciones de datos para hacer predicciones. Como por ejemplo: filtrar el SPAM de tu bandeja de entrada, recomendarte una película según tus gustos o decirte que tan pesado estará el tráfico en tu área a determinada hora.

En gran medida lo anterior se logra, entrenando un algoritmo diciéndole que es SPAM y que no, que películas te gustaron y cuales no, y bajo que condiciones hay tráfico y cuando no.

Existen una gran cantidad de algoritmos que en la actualidad están siendo usados y hay varias formas en las que se pueden categorizar. A grandes rasgos:

Esta lista por su puesto no comprende todos los algoritmos que existen, pero si los más populares y estudiados. Pero, para no abrumarnos en este punto sobre la complejidad de estos algoritmos, podemos decir en términos generales que existen 3 formas de aprendizaje de maquina:

#1 Aprendizaje Supervisado

En el aprendizaje supervisado, el algoritmo es alimentado con un conjunto de entradas y salidas deseables o correctas que también podemos llamar “etiquetas”. De esta forma cuando el algoritmo está lo suficientemente entrenado puede reconocer entradas y gracias al mapa de etiquetas que tiene, producir una salida con una predicción muy acertada.

Por ejemplo, si quisiéramos un algoritmo especializado para reconocer y categorizar peras y manzanas, tendríamos que presentarle al algoritmo como luce una pera y como luce una manzana unos cuantos cientos de miles de veces.

Entonces la etiqueta es el resultado deseado para el algoritmo, y después de ser entrenado podrá categorizar las frutas en cuestión con un margen de error muy corto. Es necesario aclarar que la etiqueta no contiene la palabra “MANZANA”, esto solo fue para efectos de este ejemplo. En realidad la etiqueta contiene una representación numérica de la imagen en cuestión.

#2 Aprendizaje No Supervisado

En el aprendizaje no supervisado, se le presentan al algoritmo sets de entradas pero sin etiquetas con las salidas deseadas. Esto significa que el algoritmo deberá identificar estructuras y patrones por si solo para poder categorizar. En el ejemplo anterior vimos que le decíamos cual era manzana y cual no, pero la idea del aprendizaje no supervisado surge de que seria muy costoso para ciertos casos el “enseñar” al algoritmo la respuesta correcta, y siempre habría un margen de error un poco más amplio.

Como el algoritmo no tiene sets de entrenamiento, podría incluso categorizar manzanas en más categorías, como “manzanas verdes”, “manzanas rojas”, “manzanas irradiadas” etc…

#3 Aprendizaje Semi-Supervisado

Este es una combinación de los dos anteriores, en donde se le presentan al algoritmo tanto entradas con etiquetas, como sin etiquetas. Por lo tanto el algoritmo debe ser capaz de encontrar patrones y estructuras para categorizar pero, a la vez, cuenta con algo de ayuda de algunos ejemplos de salidas correctas.

Redes Neuronales

Una red neuronal es un algoritmo de aprendizaje de maquina inspirado en el funcionamiento biológico del cerebro humano. Es uno de los algoritmos más populares hoy en día, y está diseñado para solucionar problemas en una forma similar a como lo hace nuestro cerebro.

Las redes neuronales artificiales son parte del estudio de lo que se conoce como Deep Learning,  y tienen mucho valor a la hora de resolver problemas muy complejos como lo son el reconocimiento de objetos dentro de imágenes (¿reCaptcha eres tú?) o bien en el procesamiento de lenguaje natural (pasar de voz a texto).

La redes neuronales toman un camino distinto al resto de programas de computadoras para resolver problemas, el software convencional por lo general usa algoritmos para resolver problemas mientras que, por su parte, las redes neuronales artificiales emulan el funcionamiento de las neuronas de nuestro cerebro. Entonces aprenden a través de ejemplos en lugar de ser programadas para efectuar tareas especificas.

Técnicamente están compuestas por un numero inmenso de unidades de procesamiento (nodos), que trabajan en paralelo para resolver un problema especifico. Que es como el cerebro humano funciona.

Las redes neuronales artificiales están diseñadas para resolver un problema especifico y se componen de tres partes:

  1. Capa de Entrada
  2. Capa(s) Ocultas
  3. Capa de Salida

Estas redes neuronales pueden funcionar de dos formas:

  • Feedforward  También llamadas redes neuronales convolucionales (CNN por sus siglas en ingles Convolusional Neural Network). Con este tipo de redes, las señales solo pueden viajar en una sola dirección, desde la capa de entrada hacia la capa de salida, este tipo de redes son usadas extensivamente en el reconocimiento de patrones
  • Feedback También llamadas redes neuronales recurrentes (RNN por sus siglas en ingles Recursive Neural Networks). En estas las señales pueden viajar en todas direcciones y por lo tanto pueden existir ciclos, esto hace que su complejidad sea mayor a las CNN y que cambien constantemente. Probablemente a la fecha se han utilizado menos que las CNN, en parte porque su rendimiento es menor, sin embargo, esta implementación es la más cercana a la idea de como funciona el cerebro humano.

Además de esto podemos clasificar a las redes neuronales artificiales de dos maneras:

  • Fijas: El valor del peso de los nodos en esta no cambia, es decir, se mantiene estático.
  • Adaptativas; Contrario a las fijas el valor del peso de los nodos si cambia

Y para alimentar los nodos se utilizan 3 tipos de conjuntos de datos diferentes:

  1. Datos De Entrenamiento: Es utilizado para ajustar el peso de los nodos en una red neuronal
  2. Datos De Validación: Es utilizado para resolver el problema de sobre ajuste. Que es cuando la red neuronal se entrena con demasiados datos y esto ocasiona que los datos no tengan una relación causal con el objetivo especifico de la red.
  3. Datos De Prueba: Es utilizada en una etapa final para probar que tan acertadas son las predicciones realizadas por la red.

Conclusión

Las redes neuronales son un tema de estudio en la actualidad y sus aplicaciones son tan extensas como fascinantes.