Introducción

Las redes neuronales artificiales son modelos computacionales inspirados en el funcionamiento del cerebro humano. Están compuestas por capas de neuronas interconectadas, donde cada conexión tiene un peso que determina la influencia de una neurona sobre otra.

Uno de los ejemplos clásicos para ilustrar el poder de las redes neuronales es la función XOR (o disyunción exclusiva). Esta función devuelve un valor de salida igual a 1 si las dos entradas son diferentes, y 0 en caso contrario.

Para este trabajo construiremos y entrenaremos una red neuronal de dos capas utilizando el algoritmo de retropropagación del error (backpropagation).
De esta forma, mostraremos paso a paso cómo se calculan las activaciones, errores y ajustes de pesos, hasta que la red logre aproximar correctamente la función XOR.

Pesos: antes / después (por época y muestra)
Epoca Muestra w1_before w2_before w3_before w4_before w5_before w6_before b1_before b2_before b3_before w1_after w2_after w3_after w4_after w5_after w6_after b1_after b2_after b3_after
1.000000 1.000000 0.100000 0.500000 −0.700000 0.300000 0.200000 0.400000 0.000000 0.000000 0.000000 0.100000 0.500000 −0.700000 0.300000 0.182447 0.382447 0.000000 0.000000 0.000000
1.000000 2.000000 0.100000 0.500000 −0.700000 0.300000 0.182447 0.382447 0.000000 0.000000 0.000000 0.100000 0.500000 −0.698933 0.302466 0.191199 0.397600 0.000000 0.000000 0.000000
1.000000 3.000000 0.100000 0.500000 −0.698933 0.302466 0.191199 0.397600 0.000000 0.000000 0.000000 0.098447 0.496984 −0.700486 0.299450 0.178612 0.373089 0.000000 0.000000 0.000000
1.000000 4.000000 0.098447 0.496984 −0.700486 0.299450 0.178612 0.373089 0.000000 0.000000 0.000000 0.099584 0.499223 −0.700486 0.299450 0.192002 0.388958 0.000000 0.000000 0.000000
2.000000 1.000000 0.099584 0.499223 −0.700486 0.299450 0.192002 0.388958 0.000000 0.000000 0.000000 0.099584 0.499223 −0.700486 0.299450 0.174495 0.371451 0.000000 0.000000 0.000000
2.000000 2.000000 0.099584 0.499223 −0.700486 0.299450 0.174495 0.371451 0.000000 0.000000 0.000000 0.099584 0.499223 −0.699459 0.301861 0.183301 0.386697 0.000000 0.000000 0.000000
2.000000 3.000000 0.099584 0.499223 −0.699459 0.301861 0.183301 0.386697 0.000000 0.000000 0.000000 0.098099 0.496296 −0.700944 0.298933 0.170754 0.362261 0.000000 0.000000 0.000000
2.000000 4.000000 0.098099 0.496296 −0.700944 0.298933 0.170754 0.362261 0.000000 0.000000 0.000000 0.099195 0.498488 −0.700944 0.298933 0.184250 0.378254 0.000000 0.000000 0.000000