Las redes de prealimentación con niveles fueron estudiadas por primera vez a finales de la década de los 50 bajo el nombre de perceptrones. Si bien se sometieron a estudio redes de todos los tamaños y topologías, el único elemento de aprendizaje efectivo en esa época fueron las redes de un solo nivel. Actualmente el término perceptrón es sinónimo de una red de prealimentación de un solo nivel.
Está formado por varias neuronas para recibir las entradas a la red y una neurona de salida que es capaz de decidir cuándo una entrada a la red pertenece a una de las dos clases que es capaz de reconocer.

La neurona de salida del Perceptrón realiza la suma ponderada de las entradas, resta el umbral y pasa el resultado a una función de transferencia de tipo escalón. La regla de decisión es responder +1 si el patrón presentado pertenece a la clase A, o -1 si el patrón pertenece a la clase B.
La separabilidad lineal limita a las redes con sólo dos capas a la resolución de problemas en los cuáles el conjunto de puntos (valores de entrada) sean separables geométricamente. En el caso de dos entradas, la separación se lleva a cabo mediante una línea recta. Para tres entradas, la separación se realiza mediante un plano en el espacio tridimensional y así sucesivamente hasta el caso de N entradas, en el cuál el espacio N-dimensional es dividido en un hiperplano.
El hecho de que el perceptrón sólo es capaz de representar funciones linealmente separables se deduce de la expresión
salida = W E
| dónde : | |
| W es el vector de los pesos de las conexiones con la neurona de salida | |
| E es el vector de las entradas a la neurona de salida |
Este produce un 1 sólo si W.E > 0 Esto significa que todo el espacio de entradas se divide en dos a lo largo de un límite definido por W.E = 0, es decir, un plano en el espacio de entrada con coeficientes definidos por los pesos.

Para entender el mecanismo de aprendizaje del perceptrón nos basaremos en la función OR. Lo que se pretende al modificar los pesos es encontrar una recta que divida el plano en dos espacios de las dos clases de valores de entrada: las que producen un 1 a la salida y las entradas que producen un 0 a la salida. Concretamente deberá separar las entradas 01, 10, 11 de la entrada 00.

Función OR: produce 0 cuando las dos entradas son 0. En cualquier otro caso produce 1.
La ecuación de salida vendrá dada por
y = f ( w1x1+ w2x2)
donde wi representa el peso de la conexión, xi la entrada y f la función de transferencia o de salida que en este caso es la función identidad.Si la suma anterior es mayor que 0, la salida será 1 y en caso contrario, -1 (función escalón).
Se supone también que se añade una neurona con una entrada fija a 1 y peso w0 igual al opuesto del valor del umbral y que deberá ser ajustado durante la etapa de aprendizaje.
A continuación se expone el algoritmo y posteriormente un ejemplo que aclara el funcionamiento.
2. Presentación de un nuevo par (Entrada, Salida esperada) :
3. Cálculo de la salida actual
| y(t) = f [ Sum (wi(t) xi(t)) - umbral] |
4. Adaptación de los pesos
| wi(t+1) = wi(t) + ß [d(t) - y(t)] xi(t) |
donde d(t) representa la salida deseada y ß es un factor de ganancia (velocidad de aprendizaje), en el rango 0.0 a 1.0. En la función OR ß=1
5. Volver al paso 2
| w0 = 1.5 | w1 = 0.5 | w2 = 1.5 |
b) Se van tomando uno a uno los cuatro patrones de entrada
b.1) Patrón 00
Entradas : xo = 1; x1 = 0; x2 = 0 Pesos : wo(t) = 1.5 ; w1(t) = 0.5; w2(t) = 1.5 Net i : 1 (1.5)+ 0 (0.5) + 0 (1.5) = 1.5 Salida que produce f : 1, puesto que Neti > 0 Salida deseada : 0, puesto que OR(00) = 0 Pesos modificados : wo(t+1) = 0.5 ; w1(t+1) = 0.5 ; w2(t+1) = 1.5
b.2) Patrón 01
Entradas : xo = 1; x1 = 0; x2 = 1 Pesos : wo(t) = 0.5 ; w1(t) = 0.5; w2(t) = 1.5 Net i : 1 (0.5)+ 0 (0.5) + 1 (1.5) = 2 Salida que produce f : 1, puesto que Neti > 0 Salida deseada : 1, puesto que OR(01) = 1 Error (deseada - obtenida) = 0 Pesos no modificados : wi(t+1) = wi(t)
b.3) Patrones 10 y 11 : la salida obtenida es igual que la deseada por lo que no varían los pesos.c) Se toman de nuevo los cuatro patrones de entrada
c.1) Patrón 00
Entradas : xo = 1; x1 = 0; x2 = 0 Pesos : wo(t) = 0.5 ; w1(t) = 0.5; w2(t) = 1.5 Net i : 1 (0.5)+ 0 (0.5) + 0 (1.5) = 0.5 Salida que produce f : 1, puesto que Neti > 0 Salida deseada : 0, puesto que OR(00) = 0 Pesos modificados : wo(t+1) = -0.5 ; w1(t+1) = 0.5 ; w2(t+1) = 1.5
c.2) Patrón 01
Entradas : xo = 1; x1 = 0; x2 = 1 Pesos : wo(t) = -0.5 ; w1(t) = 0.5; w2(t) = 1.5 Net i : 1 (-0.5)+ 0 (0.5) + 1 (1.5) = 2 Salida que produce f : 1, puesto que Neti > 0 Salida deseada : 1, puesto que OR(01) = 1 Error (deseada - obtenida) = 0 Pesos no modificados : wi(t+1) = wi(t)
c.3) Patrones 10 y 11 : la salida obtenida es igual que la deseada por lo que no varían los pesos.d) Se toman de nuevo los cuatro patrones de entrada
d.1) Patrón 00
Entradas : xo = 1; x1 = 0; x2 = 0 Pesos : wo(t) = -0.5 ; w1(t) = 0.5; w2(t) = 1.5 Net i : 1 (-0.5)+ 0 (0.5) + 0 (1.5) = -0.5 Salida que produce f : 0, puesto que Neti < 0 Salida deseada : 0, puesto que OR(00) = 01 Error (deseada - obtenida) = 0 Pesos no modificados : wi(t+1) = wi(t)
d.2) Patrones 01, 10 y 11 : la salida obtenida es igual que la deseada por lo que no varían los pesos.Con estos nuevos pesos, al calcular la salida que se obtiene para cualqueiera de los cuatro patrones de entrada ya no se comete ningún error, por lo que la etapa de aprendizaje concluye.

Para poder trazar dos rectas en el espacio habría que añadir a la capa de salida otra neurona y para elegir entre una u otra zona de las tres, es necesario utilizar una nueva capa con una neurona (capa de salida) cuyas entradas serían las salidas de las dos neuronas anteriores(capa oculta). Resumiendo, hemos pasado de un perceptrón bicapa a uno con tres capas (neuronas de entrada, capa oculta con dos neuronas y capa de salida con una neurona). Las dos zonas o regiones que contienen los puntos (0,0) y (1,1) se asocian a una salida nula de la red y la zona central con la salida 1.
Queda claro que el proceso de aprendizaje del perceptrón consiste
en la modificación de los pesos de las conexiones de acuerdo a la
diferencia existente entre la salida deseada y la obtenida. Por otro lado,
no se tiene por qué conocer cuál debe ser la salida deseada
de las células de la capa oculta, por lo que el método utilizado
en la función OR no es aplicable a la XOR.
El método de aprendizaje más popular en las redes de varios niveles se conoce como propagación posterior o retropropagación. Fué inventada por Bryson y Ho en 1969 pero permaneció ignorada hasta mediados de los 80.
Este algoritmo lo que hace es distribuir la contribución de cada uno de los pesos en la generación de la salida. Se trata de reducir al mínimo el error.
Modificación de los pesos para el nivel de salida
El proceso para la capa de salida es lo mismo que en el perceptrón; sólo se cambian las entradas en éste por el valor de activación de la unidad oculta, aj, conectada a la salida y que también se añade un término para el gradiente de la función de activación. Si Erries el error del nodo de salida, la regla de actualización de los pesos desde la unidad j hasta la unidad i es:
wji = wji + ß . aj . Erri . g'(enti)
donde g' es la derivada de la función de activación. Podemos definir un nuevo término de error en el nivel de salida como la agrupación de los dos últimos términos de la regla anterior
Deltai = Erri . g'(enti)
Modificación de los pesos entre las entradas y el nivel oculto
Para actualizar las conexiones entre las unidades de entrada y las ocultas hay que definir una cantidad análoga al término de error de los nodos de salida, Deltai. Es aquí donde tiene lugar la propagación posterior. El nodo oculto j es responsable de una parte del error Deltai en cada uno de los nodos de salida con los que conecta. Por lo tanto, los valores deltai son divididos de acuerdo con la intensidad de la conexión entre el nodo oculto y el nodo de salida y se propagan hacia atrás para proporcionar los valores Deltaj de la capa oculta. La regla de propagación es la siguiente:
Deltaj = g'(entj). Sum(wji . Deltai)
La regla de actualización de pesos es parecida a la regla de actualización de salida:
wkj = wkj + ß . aj . Ik . Deltaj
| entradas: | red, | una red con varios niveles |
| ejemplos, | un conjunto de pares entrada/salida | |
| ß, | la velocidad de aprendizaje | |
| salida: | una red con pesos modificados |
| repetir | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
| hasta que red tenga convergencia | ||||||||||||||||||||||||
| responder con red | ||||||||||||||||||||||||
En cuanto a la estructura de la red ADALINE, que es casi idéntica a la del Perceptrón, sus autores la consideran formada por un elemento denominado combinador adaptativo lineal (ALC), que obtiene una salida lineal que puede ser aplicada a otro elemento de conmutación bipolar, de forma que si la salida del ALC es positiva, la salida de la red es +1 y -1 en el caso contrario.

Para no abrumar al intrépido lector, no
voy a entrar en más detalles sobre estas redes. Si se desea un conocimiento
más profundo se recomienda leer el libro Redes Neuronales Artificiales
de José Hilera y Víctor J. Martínez de la Editorial
ra-ma.
La importancia de esta red consiste en su capacidad de autoadaptar los pesos de las neuronas de las capas intermedias para aprender la relación que existe entre un conjunto de patrones dados como ejemplo y sus salidas correspondientes, para poder aplicar esa misma relación, después del entrenamiento, a nuevos vectores de entrada con ruido o incompletas, dando una salida activa si la nueva entrada es parecida a las presentadas durante el aprendizaje. Esta característica, exigida en los sistemas de aprendizaje, es la capacidad de generalización, entendida como la facilidad de dar salidas satisfactorias a entradas que el sistema no ha visto nunca en su fase de entrenamiento.

El funcionamiento de la red consiste en un aprendizaje de un conjunto predefinido de pares de entradas-salidas dados como ejemplo, empleando un ciclo propagación-adaptación de dos fases:

Algoritmo de entrenamiento
Paso 1
Inicializar los pesos
con valores aleatorios pequeños
Paso 2
Presentar el patrón
de entrada, Xp : xp1, ...,
xpn, y especificar la salida deseada : d1,...,
dm.
Paso 3
Calcular la salida actual
de la red : y1, ..., ym
Para ello :
Para más detalles y ver las reglas aplicadas
en cada paso del algoritmo se puede consultar el libro Redes Neuronales
Artificiales de José Hilera y Víctor J. Martínez
de la Editorial ra-ma, págs. 138-142.