4.1. Ejemplo de aprendizaje para un problema de clasificacion por medio de una red RBF

Como ejemplo de entrenamiento vamos a escoger un problema de clasificacion sencillo y utilizaremos una red de tipo RBF. El problema en cuestion se plantea como sigue: Imaginemos que tenemos puntos en el plano. Los puntos se distribuyen en ciertas regiones, donde la densidad de puntos es mayor. Queremos que la red neuronal sirva como un clasificador de esas regiones de manera que si preguntamos por nuevos puntos nos diga si esta en alguna de esas tres regiones.

Como tendremos tres regiones, escogeremos tres neuronas para la capa oculta. En realidad podiamos haber escogido más, pero con tres sirve para ilustrar el ejemplo. La capa de salida tendra tambien 3 neuronas y estara acotada entre 0 y 1. Si la salida i-esima toma un valor cercano a 1 y el resto de las salidas toman valores cercanos a 0 eso nos dira que la muestra de entrenamiento pertenece a la zona i-esima. Además la funcion de activacion de las neuronas de la capa de salida sera una sigmoide, que nos acota la salida entre 0 y 1.

Nuestro conjunto de muestras de entrenamiento sera el siguiente:

Tabla 4-1. Datos de entrenamiento

0.80.8 
0.90.10.1
0.91.3 
0.90.10.1
1.10.7 
0.90.10.1
1.21.1 
0.90.10.1
6.78.2 
0.10.90.1
6.97.8 
0.10.90.1
7.28.1 
0.10.90.1
7.57.5 
0.10.90.1
14.03.0 
0.10.10.9
14.84.1 
0.10.10.9
15.34.2 
0.10.10.9
16.03.0 
0.10.10.9
Las filas corresponden a la entrada (un punto en el plano se representa con dos coordenadas reales) y su correspondiente salida deseada (tres numeros entre 0 y 1. No usaremos exactamente el valor 1 ni el valor 0 pero con esos valores nos bastara).

Para entrenar la capa oculta elegiremos el algoritmo de las k-medias. El desarrollo de dicho algoritmo es el siguiente:
-------------------------------------------------------
Iteracion: 1
-------------------------------------------------------
Muestra 0
dc0 = 0, dc1 = 0.509902, dc2 = 0.316228,
Muestra 1
dc0 = 0.509902, dc1 = 0, dc2 = 0.632456,
Muestra 2
dc0 = 0.316228, dc1 = 0.632456, dc2 = 0,
Muestra 3
dc0 = 0.5, dc1 = 0.360555, dc2 = 0.412311,
Muestra 4
dc0 = 9.46414, dc1 = 9.01388, dc2 = 9.36002,
Muestra 5
dc0 = 9.28493, dc1 = 8.8459, dc2 = 9.16788,
Muestra 6
dc0 = 9.70824, dc1 = 9.26984, dc2 = 9.5901,
Muestra 7
dc0 = 9.47523, dc1 = 9.05539, dc2 = 9.33809,
Muestra 8
dc0 = 13.3821, dc1 = 13.2098, dc2 = 13.1034,
Muestra 9
dc0 = 14.3837, dc1 = 14.1792, dc2 = 14.1156,
Muestra 10
dc0 = 14.8933, dc1 = 14.6891, dc2 = 14.625,
Muestra 11
dc0 = 15.3584, dc1 = 15.1954, dc2 = 15.0765,
Dominios: 0  1  2  1  1  1  1  1  2  2  2  2


Centro 1:	0.8  0.8
Centro 2:	5.06667  5.66667
Centro 3:	12.24  3

-------------------------------------------------------
Iteracion: 2
-------------------------------------------------------
Muestra 0
dc0 = 0, dc1 = 6.47216, dc2 = 11.6496,
Muestra 1
dc0 = 0.509902, dc1 = 6.03563, dc2 = 11.4667,
Muestra 2
dc0 = 0.316228, dc1 = 6.35627, dc2 = 11.375,
Muestra 3
dc0 = 0.5, dc1 = 5.98377, dc2 = 11.2023,
Muestra 4
dc0 = 9.46414, dc1 = 3.01423, dc2 = 7.59813,
Muestra 5
dc0 = 9.28493, dc1 = 2.81287, dc2 = 7.18022,
Muestra 6
dc0 = 9.70824, dc1 = 3.23608, dc2 = 7.17019,
Muestra 7
dc0 = 9.47523, dc1 = 3.04667, dc2 = 6.53587,
Muestra 8
dc0 = 13.3821, dc1 = 9.32285, dc2 = 1.76,
Muestra 9
dc0 = 14.3837, dc1 = 9.85861, dc2 = 2.78632,
Muestra 10
dc0 = 14.8933, dc1 = 10.3379, dc2 = 3.28688,
Muestra 11
dc0 = 15.3584, dc1 = 11.2538, dc2 = 3.76,
Dominios: 0  0  0  0  1  1  1  1  2  2  2  2 


Centro 1:	1  0.975
Centro 2:	7.075  7.9
Centro 3:	15.025  3.575

-------------------------------------------------------
Iteracion: 3
-------------------------------------------------------
Muestra 0
dc0 = 0.265754, dc1 = 9.47553, dc2 = 14.4931,
Muestra 1
dc0 = 0.340037, dc1 = 9.03829, dc2 = 14.307,
Muestra 2
dc0 = 0.292618, dc1 = 9.35631, dc2 = 14.2187,
Muestra 3
dc0 = 0.23585, dc1 = 8.98641, dc2 = 14.0448,
Muestra 4
dc0 = 9.20275, dc1 = 0.480234, dc2 = 9.52346,
Muestra 5
dc0 = 9.02168, dc1 = 0.201556, dc2 = 9.15785,
Muestra 6
dc0 = 9.44487, dc1 = 0.23585, dc2 = 9.03915,
Muestra 7
dc0 = 9.21008, dc1 = 0.583631, dc2 = 8.48712,
Muestra 8
dc0 = 13.1568, dc1 = 8.48326, dc2 = 1.17527,
Muestra 9
dc0 = 14.1494, dc1 = 8.60904, dc2 = 0.571183,
Muestra 10
dc0 = 14.6591, dc1 = 9.0189, dc2 = 0.682825,
Muestra 11
dc0 = 15.1361, dc1 = 10.1816, dc2 = 1.13192,
Dominios: 0  0  0  0  1  1  1  1  2  2  2  2  


Centro 1:	1  0.975
Centro 2:	7.075  7.9
Centro 3:	15.025  3.575

Como vemos, en apenas 3 iteraciones el algoritmo ha convergido totalmente. Se aprecia como los dominos ya reflejan los tres grupos claramente (de hecho estos grupos ya aparecen en la 2 iteracion). Cabe resaltar que en este entrenamiento no se empleo la salida deseada para nada, y esto es debido a que se trata de un algoritmo de aprendizaje no supervisado.

Una vez entrenada la capa oculta, le tocaría el turno a la capa de salida. En ésta lo que se hace es pasar los patrones de entrenamiento durante un cierto numero de épocas (en este entrenamiento se escogio 60 épocas) y en cada época con todos los patrones de entrenamiento se calcula la variación de los pesos de la capa de salida según lo explicado en el apartado 3.4 Al final, los pesos que resultan para toda la red son los siguientes:
---------------------------------------------------------------
  Topología de la red : 0
---------------------------------------------------------------
  Número de neuronas de entrada: 2
  Número de neuronas ocultas   : 3
  Número de neuronas de salida : 3
  Función de la capa oculta    : Gaussiana
  Función de la capa de salida : Sigmoide
  Red Híbrida MLP              : false
---------------------------------------------------------------
  Datos del entrenamiento
---------------------------------------------------------------
  Algoritmo de la capa oculta : K-medias
     Tipo de inicialización: K primeras
     Epsilon : 0.0010
  Algoritmo de la capa de salida : Regla delta
     Ritmo de aprendizaje : 0.1000
     Número de épocas : 60
---------------------------------------------------------------
  Pesos de la red RBF
---------------------------------------------------------------
---------------------------------------------------------------
  Pesos de la capa oculta
---------------------------------------------------------------
Neurona     0            1            2
---------------------------------------------------------------
  0           1.0000  7.0750  15.0250
  1           0.9750  7.9000  3.5750
---------------------------------------------------------------
  Anchuras de la capa oculta
---------------------------------------------------------------
              9.2120  9.0503  9.0503
---------------------------------------------------------------
  Pesos de la capa de salida
---------------------------------------------------------------
Neurona     0            1            2
---------------------------------------------------------------
  0           1.6047  -0.9334  -1.1720
  1           -1.5427  2.6404  -1.2721
  2           -1.3295  -1.1118  1.9833
---------------------------------------------------------------
  Bias de la capa de salida
---------------------------------------------------------------
              0.5470  -0.9427  0.0257

Con esto quedaría realizada la etapa de aprendizaje de la red neuronal. Si ahora presentamos otros datos para obtener su clasificación, estariamos en la etapa de recuperación. Los datos que presentaremos seran los siguientes:
 0.0   0.0    -->  Region A
 2.0   0.0    -->  Region A
 9.0   9.0    -->  Region B
13.0  13.0    -->  Entre Region B y Region C
como podemos apreciar, esta vez ya no se le presentan a la red las salidas deseadas. El resultado que da la red ante estas entradas es el siguiente:
0.8903   0.1692   0.0678	-->	Region A
0.8309   0.2013   0.0795	-->	Region A
0.1021   0.7057   0.2969	-->	Region B
0.1243   0.5372   0.5301	-->	???
La tasa de aciertos fue del 75 %