Herramientas en GNU/Linux para estudiantes universitarios: | ||
---|---|---|
Anterior | Capítulo 4. Ejemplo de entrenamiento de una red neuronal. Caso RBF | Siguiente |
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.8 | 0.8 | |
0.9 | 0.1 | 0.1 |
0.9 | 1.3 | |
0.9 | 0.1 | 0.1 |
1.1 | 0.7 | |
0.9 | 0.1 | 0.1 |
1.2 | 1.1 | |
0.9 | 0.1 | 0.1 |
6.7 | 8.2 | |
0.1 | 0.9 | 0.1 |
6.9 | 7.8 | |
0.1 | 0.9 | 0.1 |
7.2 | 8.1 | |
0.1 | 0.9 | 0.1 |
7.5 | 7.5 | |
0.1 | 0.9 | 0.1 |
14.0 | 3.0 | |
0.1 | 0.1 | 0.9 |
14.8 | 4.1 | |
0.1 | 0.1 | 0.9 |
15.3 | 4.2 | |
0.1 | 0.1 | 0.9 |
16.0 | 3.0 | |
0.1 | 0.1 | 0.9 |
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 |
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 --> ??? |