Ejemplos habituales de neuronas artificiales muy sencillas de diseñar son aquellas que modelan el comportamiento de puertas lógicas. En la práctica no es necesario ni práctico utilizar neuronas artificiales para modelar puertas lógicas, pero son buenos ejemplos que permiten intuir su carácter de herramientas universales para resolver problemas.
OR
Una puerta lógica OR admite dos entradas y produce una salida positiva sólo cuando al menos uno de los dos valores de entrada es positivo.
\begin{matrix} \mathbf{x_1} & \mathbf{x_2} & \mathbf{x_1 \lor x_2} \\ 0 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 1 \end{matrix}
Se considera el criterio habitual de que los únicos valores de entrada y salida válidos son 1 y 0. Donde 1 representa un valor positivo (true) y 0 un valor negativo (false).
Una puerta lógica OR puede diseñarse con una neurona de dos entradas. Cada entrada con un peso igual a 1. Y un umbral de activación igual también a 1.
Con esta configuración, el valor neto de entrada z es igual a la suma aritmética de los valores de entrada x_1 y x_2 :
z = \displaystyle\sum_{i=1}^{2} w_i x_i = w_1 * x_1 + w_2 * x_2 = 1 * x_1 + 1 * x_2 = x_1 + x_2
Si ambas entradas son 0, el valor neto es 0. Si una de las entradas es 1 y la otra 0, el neto es 1. Y si ambas entradas son 1, el neto es 2.
Utilizando un umbral de activación T igual a 1, el valor de salida de la neurona y será 1 cuando el neto sea igual o mayor que 1, y 0 en caso contrario:
y = f(z) = f(x_1 + x_2) = \begin{cases} 1 & \quad \text{if } x_1 + x_2 \geq 1 \\ 0 & \quad \text{if } x_1 + x_2 < 1 \end{cases}
Lo que quiere decir todo esto es que la salida será 1 cuando la suma aritmética de las entradas sea mayor o igual que 1, algo que sucede cuando al menos una de las entradas es 1 (true).
Sustituyendo, es fácil verificar que para las distintas posibles combinaciones de entrada se obtiene el resultado esperado:
f(0 + 0) = f(0) = 0
f(0 + 1) = f(1) = 1
f(1 + 0) = f(1) = 1
f(1 + 1) = f(2) = 1
En este punto es interesante observar que se puede utilizar cualquier valor mayor de cero para los pesos y el umbral de activación. Por ejemplo, un valor de 4 en los pesos y el umbral siguen modelando una puerta OR. Es decir, un mismo diseño con parámetros de configuración distintos puede resolver un mismo problema.
AND
Una puerta lógica AND admite dos entradas y produce una salida positiva sólo cuando los dos valores de entrada son positivos.
\begin{matrix} \mathbf{x_1} & \mathbf{x_2} & \mathbf{x_1 \land x_2} \\ 0 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \\ 1 & 1 & 1 \end{matrix}
Este tipo de puerta puede modelarse con una neurona de dos entradas siguiendo el mismo diseño utilizado para la puerta OR. Ponderando las entradas con un mismo peso, pues ambas son iguales de importante, pero utilizando esta vez como umbral de activación el doble de dicho peso, pues sólo se quiere activar la neurona cuando ambas entradas sean positivas.
De igual forma que en el diseño anterior, el valor neto es igual a la suma aritmética de las entradas:
z = \displaystyle\sum_{i=1}^{2} w_i x_i = w_1 * x_1 + w_2 * x_2 = 1 * x_1 + 1 * x_2 = x_1 + x_2
Utilizando 2 como umbral, el valor de salida de la neurona será 1 cuando el neto sea igual o mayor que 2, y 0 en caso contrario:
y = f(z) = f(x_1 + x_2) = \begin{cases} 1 & \quad \text{if } x_1 + x_2 \geq 2 \\ 0 & \quad \text{if } x_1 + x_2 < 2 \end{cases}
Sustituyendo, es fácil verificar que para las distintas posibles combinaciones de entrada se obtiene el resultado esperado:
f(0 + 0) = f(0) = 0
f(0 + 1) = f(1) = 0
f(1 + 0) = f(1) = 0
f(1 + 1) = f(2) = 1
Es interesante observar en este punto que un mismo diseño de neurona ha servido para modelar tanto la puerta OR como la AND. Es decir, un mismo diseño con parámetros de configuración distintos puede resolver problemas distintos.
NOT
Una puerta lógica NOT admite una entrada y produce una salida positiva sólo cuando la entrada es negativa.
\begin{matrix} \mathbf{x_1} & \mathbf{\overline{x_1}} \\ 0 & 1 \\ 1 & 0 \end{matrix}
Esta puerta puede modelarse con una neurona de una entrada con peso -1 y un umbral de activación igual a 0. Utilizar un valor negativo responde a la idea intuitiva de que una puerta NOT invierte su valor de entrada.
En este caso el valor neto es igual a la entrada con el signo cambiado:
z = \displaystyle\sum_{i=1}^{1} w_i x_i = w_1 * x_1 = -1 * x_1 = -x_1
Utilizando 0 como umbral, el valor de salida de la neurona será 1 cuando el neto sea igual o mayor que 0, y 0 en caso contrario:
y = f(z) = f(-x_1) = \begin{cases} 1 & \quad \text{if } -x_1 \geq 0 \\ 0 & \quad \text{if } -x_1 < 0 \end{cases}
Nuevamente, sustituyendo, es fácil verificar que para las distintas posibles combinaciones de entrada se obtiene el resultado esperado:
f(0) = 1
f(-1) = 0
NAND
Una puerta lógica NAND admite dos entradas y produce una salida positiva sólo cuando al menos una de las entradas es negativa.
\begin{matrix} \mathbf{x_1} & \mathbf{x_2} & \mathbf{\overline{x_1 \land x_2}} \\ 0 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \end{matrix}
Este tipo de puerta lógica puede diseñarse con una neurona de dos entradas, con peso -1 cada una de ellas, y -1 como umbral de activación. El hecho de que todos los valores sean negativos responden a la idea intuitiva de que una puerta NAND es la negación de una puerta AND.
z = \displaystyle\sum_{i=1}^{2} w_i x_i = w_1 * x_1 + w_2 * x_2 = -1 * x_1 - 1 * x_2 = -x_1 - x_2
y = f(z) = f(-x_1 - x_2) = \begin{cases} 1 & \quad \text{if } -x_1 - x_2 \geq -1 \\ 0 & \quad \text{if } -x_1 - x_2 < -1 \end{cases}
Nuevamente, sustituyendo para todas las combinaciones posibles de entrada, se verifica el resultado esperado:
f(0 - 0) = f(0) = 1
f(0 - 1) = f(-1) = 1
f(-1 - 0) = f(-1) = 1
f(-1 - 1) = f(-2) = 0
Es interesante que una neurona artificial pueda modelar una puerta NAND, ya que es una puerta lógica universal, lo que quiere decir que puede diseñarse cualquier circuito lógico utilizando sólo puertas NAND.
NOR
Una puerta lógica NOR admite dos entradas y produce una salida positiva sólo cuando las dos entradas son negativas.
\begin{matrix} \mathbf{x_1} & \mathbf{x_2} & \mathbf{\overline{x_1 \lor x_2}} \\ 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \\ 1 & 1 & 0 \end{matrix}
Este tipo de puerta lógica puede diseñarse con una neurona de dos entradas, con peso -1 cada una de ellas, y 0 como umbral de activación.
z = \displaystyle\sum_{i=1}^{2} w_i x_i = w_1 * x_1 + w_2 * x_2 = -1 * x_1 - 1 * x_2 = -x_1 - x_2
y = f(z) = f(-x_1 - x_2) = \begin{cases} 1 & \quad \text{if } -x_1 - x_2 \geq 0 \\ 0 & \quad \text{if } -x_1 - x_2 < 0 \end{cases}
Nuevamente, sustituyendo para todas las combinaciones posibles de entrada, se verifica el resultado esperado:
f(0 - 0) = f(0) = 1
f(0 - 1) = f(-1) = 0
f(-1 - 0) = f(-1) = 0
f(-1 - 1) = f(-2) = 0
Por último, comentar que no todas las puertas lógicas pueden modelarse con una neurona artificial. El ejemplo paradigmático de esta limitación es la operación XOR. No existe ninguna combinación de pesos y umbral de activación que la modelen.