De igual forma que las puertas lógicas se conectan para crear circuitos lógicos, las neuronas artificiales se pueden conectar para crear redes neuronales artificiales. Al conectar una neurona con otra se construye un sistema con la capacidad de realizar tareas que una neurona no puede realizar por si sola de manera individual.

Red Neuronal Artificial

Uno de los diseños de red neuronal más utilizado hoy en día es la red neuronal multicapa. En este diseño las neuronas se distribuyen en capas, donde todas las neuronas de una capa se conectan con todas las neuronas de la siguiente capa.Red Neuronal Artificial

Dicho de una forma más técnica, las neuronas se organizan formando un grafo dirigido acíclico. Es decir, mediante conexiones dirigidas en un único sentido que va desde la entrada hasta la salida de la red, sin ciclos.

Una red neuronal artificial se compone de los siguientes elementos:

  • Un vector de valores de entrada:

X = \begin{bmatrix} x_1 \ldots x_{n} \end{bmatrix}

  • Una capa de neuronas de entrada:

L_0

  • Una serie de capas de neuronas ocultas:

L_{0 \lt i \lt k}

  • Una capa de neuronas de salida:

L_k

  • Un vector de valores de salida:

Y = \begin{bmatrix} y_1 \ldots y_{m} \end{bmatrix}

 

Vector de Valores de Entrada

El vector de valores de entrada representa los valores a ser introducidos en la red neuronal, como por ejemplo los pixeles de una imagen concreta dentro de un conjunto de imágenes.

Es el mismo vector de valores de entrada visto anteriormente en el análisis de las neuronas artificiales de forma individual.

Capa de Neuronas de Entrada

La capa de neuronas de entrada recibe el vector de valores de entrada y los introduce en la red. No realiza ningún tipo de procesamiento, lo que se introduce en la entrada se emite por la salida. Es una manera conveniente de poder gestionar todas las capas de una manera uniforme. En la mayoría de las representaciones se obvia.

Esta capa tiene tantas neuronas como elementos tiene el vector de valores de entrada.

Capas de Neuronas Ocultas

Las capas de neuronas ocultas son las que se encuentran entre la capa de entrada y la capa de salida. En la práctica son iguales que las capas de entrada y salida, aunque a diferencia de estas su número de neuronas no está determinado por las entradas y salidas.

El número de capas ocultas, y de neuronas por capa, necesarias para resolver un determinado problema no se conoce de antemano. Determinar el número de capas y neuronas a utilizar forma parte de encontrar la solución a un problema utilizando redes neuronales.

Capa de Neuronas de Salida

La capa de neuronas de salida recibe los valores de la última capa oculta y calcula los valores finales resultantes de la red neuronal.

Esta capa tiene tantas neuronas como elementos tiene el vector de valores de salida.

Vector de Valores de Salida

El vector de valores de salida representa los valores resultantes del cálculo realizado por la red neuronal.

No se impone ningún límite al número de elementos que puede tener el vector de valores de salida, a diferencia de una neurona individual, que sólo puede tener un valor de salida.

Notación

Para identificar los distintos elementos de una red neuronal en las expresiones matemáticas se utilizan índices, tanto superiores como inferiores. En los superiores se indica el número de capa al que pertenece el elemento entre paréntesis. En los inferiores el índice correspondiente del elemento dentro del vector de entrada o salida, o los índices correspondientes a un par de neuronas interconectadas entre sí.

Ejemplos:

  • Entrada 4 de la capa 2:

x^{(2)}_4

  • Peso de la conexión entre la neurona 1 de la capa 3 y la neurona 6 de la capa anterior:

w^{(3)}_{1, 6}

  • Neto de la neurona 2 de la capa 5:

z^{(5)}_2

  • Salida de la neurona 4 de la capa 1:

y^{(1)}_4

XOR

Una red neuronal artificial puede implementar una puerta lógica XOR, algo que una neurona artificial no puede hacer por si sola.

Una puerta lógica XOR admite dos entradas y produce una salida positiva sólo cuando una de las entradas es negativa y la otra positiva.

  \begin{matrix} \mathbf{x_1} & \mathbf{x_2} & \mathbf{x_1 \oplus x_2} \\ 0 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \end{matrix}

Este tipo de puerta puede implementarse con una red neuronal de dos capas como la siguiente.

Red Neuronal - Puerta XORLa primera neurona de la primera capa implementa la operación lógica x_1 \lor x_2 , y la segunda \overline{x_1} \lor \overline{x_2} . La segunda capa, con una neurona, implementa (x_1 \lor x_2) \land (\overline{x_1} \lor \overline{x_2}) , que es precisamente la operación lógica XOR.

Los valores de salida de la capa de entrada se corresponden con los del vector de valores de entrada.

x^{(0)}_1 = y^{(0)}_1 = x_1

x^{(0)}_2 = y^{(0)}_2 = x_2

Los valores de salida de la capa oculta se corresponden con los de la operación lógica correspondiente implementada por cada una de las neuronas.

z^{(1)}_1 = w^{(1)}_{1, 1} * y^{(0)}_1 + w^{(1)}_{1, 2} * y^{(0)}_2 = 1 * x_1 + 1 * x_2 = x_1 + x_2

z^{(1)}_2 = w^{(1)}_{2, 1} * y^{(0)}_1 + w^{(1)}_{2, 2} * y^{(0)}_2 = (-1) * x_1 + (-1) * x_2 = -x_1 - x_2

y^{(1)}_1 = \begin{cases} 1 & \quad \text{if } x_1 + x_2 \geq 1 \\ 0 & \quad \text{if } x_1 + x_2 < 1 \end{cases}

y^{(1)}_2 = \begin{cases} 1 & \quad \text{if } -x_1 - x_2 \geq -1 \\ 0 & \quad \text{if } -x_1 - x_2 < -1 \end{cases}

La valores de salida de la capa de salida es el resultado de la operación XOR.

z^{(2)}_1 = w^{(2)}_{1, 1} * y^{(1)}_1 + w^{(2)}_{1, 2} * y^{(1)}_2 = 1 * y^{(1)}_1+ 1 * y^{(1)}_2 = y^{(1)}_1 + y^{(1)}_2

y_1 = \begin{cases} 1 & \quad \text{if } y^{(1)}_1 + y^{(1)}_2 \geq 2 \\ 0 & \quad \text{if } y^{(1)}_1 + y^{(1)}_2 < 2 \end{cases}

Sustituyendo para todos los posibles valores de entrada se puede verificar que se obtiene el resultado esperado.

  \begin{matrix} \mathbf{x_1} & \mathbf{x_2} & \mathbf{z^{(1)}_1} & \mathbf{z^{(1)}_2} & \mathbf{y^{(1)}_1} & \mathbf{y^{(1)}_2} & \mathbf{z^{(2)}_1} & \mathbf{y_1} \\ 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 \\ 0 & 1 & 1 & -1 & 1 & 1 & 2 & 1 \\ 1 & 0 & 1 & -1 & 1 & 1 & 2 & 1 \\ 1 & 1 & 2 & -2 & 1 & 0 & 1 & 0 \end{matrix}

Cada neurona de la capa oculta se centra en una característica concreta que deben satisfacer los vectores de entrada. Trazan fronteras de decisión que realizan una primera clasificación en base a esa característica, sin pretender resolver el problema en su totalidad de una sola vez.

La neurona de la capa de salida vuelve a clasificar los resultados de la primera capa, no en base a los valores de entrada, sino en base a la clasificación realizada en la capa anterior.

En la práctica, la primera neurona clasifica en función de si alguno de los valores del vector de entrada es igual a 1. Y la segunda neurona en función de si alguno de los valores es igual a 0. Lo que gráficamente puede representarse mediante una superficie plana sobre la que se traza una recta que determina una frontera de decisión para cada una de las operaciones lógicas implementadas por cada una de las neuronas.

Fronteras de Decisión - Puerta XOR

La neurona de salida clasifica como pertenecientes a la clase 1 a todos los valores clasificados como pertenecientes a la clase 1 por las dos neuronas de la capa anterior, y el resto como pertenecientes a la clase 0. Lo que puede interpretarse diciendo que clasifica un valor en función de si se encuentra a un mismo lado o no de las dos fronteras de decisión definidas en la capa oculta. De esta forma se evita las limitaciones de las neuronas individuales, que sólo pueden clasificar en base a una única frontera de decisión.

Frontera de Decisión - Puerta XOR

Es importante entender en este punto que las clases 0 y 1 para cada neurona tienen un significado distinto. Para la primera neurona de la capa oculta la clase 1 representa los vectores de entrada que tienen al menos uno de sus valores a 1. Para la segunda neurona representa los vectores de entrada que tienen al menos uno de sus valores a 0. Y para la neurona de la capa de salida representa los vectores de entrada que han sido clasificados como pertenecientes a sus correspondientes clases 1 por las dos neuronas artificiales anteriores.

De igual forma que es importante comentar que puede haber más de una solución para un mismo problema, no sólo utilizando una única neurona, sino también utilizando una red. Por ejemplo, la siguiente red también implementa la operación lógica XOR.

Red Neuronal - Puerta XOR La primera neurona de la primera capa implementa \overline{x_1} \land x_2 , y la segunda x_1 \land \overline{x_2} . La segunda capa implementa (\overline{x_1} \land x_2) \lor (x_1 \land \overline{x_2}) , que es otra forma de expresar la operación lógica XOR.

Intuitivamente resulta fácil imaginar que puede diseñarse una red neuronal para cualquier tipo de expresión lógica siguiendo este esquema o similares.