7.1.5 Problemas comunes en el entrenamiento

Uno de los problemas más comunes al entrenar una RNA es que la red no se entrene con precisión suficiente; es decir, que tenga un alto porcentaje de fallos que no se reduzca por más veces que se le pase el juego de ensayo o que la red tarde mucho tiempo en entrenarse. Cuando esto sucede, se deberá analizar el diseño de la red y del juego de ensayo. El hecho de cambiar el número de capas ocultas aumentará o disminuirá el tiempo de aprendizaje, pero probablemente no afectará en gran medida a la precisión o proporción de respuestas acertadas de la red. Si los resultados son pobres al presentarle una colección de patrones de entrada, es preciso comprobar el juego de ensayo. Tal vez se haya olvidado representar en el juego de ensayo alguno de los problemas tipo con los que la red debe enfrentarse, o la información sea engañosa o contradictoria. Se tendrá en cuenta que, cuando se modifica el juego de ensayo añadiendo nuevos hechos o corrigiendo alguno de los existentes, la red debe de ser entrenada de nuevo con la totalidad de los hechos y no tan sólo con los nuevos o con los corregidos. Una forma de determinar qué hechos están produciendo problemas consiste en entrenar la red hasta que responda con un nivel de aciertos aproximadamente del 90%. Luego, al probar la red, se observan los hechos a los cuales la red responde mal. A continuación, se le deberá proporcionar a la red una mayor información similar a la de los hechos no aprendidos y se entrenará de nuevo. Si se llega a la conclusión de que se le han dado suficientes hechos a la red; es decir, que el juego de ensayo es completo y cubre todos los problemas a resolver y ésta sigue comportándose poco satisfactoriamente, habrá que considerar la posibilidad de cambiar el modo de presentar la información de entrada a la red. Si se están utilizando entradas no distribuidas, se deberá cambiar a distribuidas lo cual requerirá una estructuración completamente nueva de la red. Existen, por supuesto, problemas tan complejos que una red de neuronas no puede resolver en un tiempo y un espacio razonables. Si este es el caso, se podrá montar una cadena de redes de neuronas de modo que las salidas de una red alimenten las entradas de otras. Las primeras redes deberán simplemente identificar los objetos y sus salidas se utilizarán para alimentar a otra red que realice la evaluación. El añadir más capas a una única red no produce el mismo efecto. Otro de los problemas que pueden ocurrir, y de hecho es bastante común, es el del sobreentrenamiento. Este problema puede observarse al hacer un test de una red que acaba de ser entrenada con un alto porcentaje de acierto en dicho entrenamiento. Si el comportamiento que ofrece la red en el test no es todo lo bueno que puede hacer suponer por los resultados obtenidos en el entrenamiento, la red obtenida está sobreentrenada. Esto quiere decir que la red ha aprendido los patrones existentes en el juego de ensayo, pero realmente no ha sido capaz de abstraer y generalizar las relaciones entre los mismos, con lo que esta red no es aplicable en el mundo real, en el que se le presentarán entradas que no están presentes en el juego de ensayo. Este problema puede estar provocado por dos motivos fundamentales:

Una situación muy común es entrenar una RNA con un juego de ensayo que contiene ruido, puesto que en el mundo real en muchas ocasiones no se puede eliminar totalmente el ruido de las mediciones que se realizan. Cualquier algoritmo de aprendizaje máquina -y las redes neuronales no son una excepción- que sea capaz de aprender y ofrecer una precisión del 100% (o, en general, un porcentaje superior a la precisión de los patrones sin el ruido) ha aprendido los patrones de entrenamiento y el ruido de los mismos, sin llegar a discriminarlo, es decir, ha perdido la capacidad de generalización.

El proceso de entrenamiento tiende a minimizar el error que se consigue en el conjunto de entrenamiento durante el mismo, (Figura 9.a). Sin embargo, si durante el entrenamiento se realizan tests a la red con patrones que no se presentan durante el entrenamiento, el error observado en estos tests no tiende siempre a minimizarse, como puede verse en la Figura 9.b, sino que llega a un punto en el que este empieza a crecer. Este es el punto en el que la red empieza a sobreentrenarse y perder la capacidad de generalización, por eso se comporta mal en los test.

Figura 9: Evolución del error durante la fase de entrenamiento
\includegraphics[width=.95\linewidth]{imagenes/evolError.eps}
Una solución a este problema podría ser el realizar test durante el entrenamiento, y detectar el punto en el que el error en el test comienza a crecer. (valor 6 del eje de abscisas en la Figura 9.c) Esto no se puede realizar con el conjunto de test, puesto que, de hacerlo así, se está condicionando la red de alguna forma a este conjunto de test, lo cual no es deseable, porque este conjunto de test está pensado para ser presentado a una red final, no a una que todavía está en el proceso de entrenamiento, y con patrones que nunca haya visto.

Para solucionar esto, se cuenta con otro conjunto de patrones, denominado conjunto de validación, que tendrá patrones distintos a los del entrenamiento y test. Al ser evaluada la red durante el entrenamiento con este nuevo conjunto de patrones, se ofrece una estimación de cómo se comportará la red cuando se realice el test, es decir, en su ejecución real con patrones que no ha visto. Este conjunto de validación también sirve para tomar decisiones acerca de qué red es mejor tomar, entre varias redes distintas -posiblemente con topologías distintas- ya entrenadas.

Sin embargo, este proceso no es tan sencillo. El error de validación mostrado en la Figura 3.8.b es un error teórico. En la práctica se tiene uno similar al mostrado en la Figura 9.c, con lo que no resulta sencillo determinar cuándo hay que parar el entrenamiento. Existen diversas técnicas que, utilizando el conjunto de validación, dictan cuándo es razonablemente aconsejable parar el entrenamiento. Sin embargo, ninguna de ellas consigue determinar con exactitud cuándo es el mejor momento.

Marcos Gestal 2009-12-04