• No se han encontrado resultados

DISEÑO DE REDES NEURONALES RECURRENTES PARA WEKA

CAPÍTULO II. DISEÑO E IMPLEMENTACIÓN DE REDES RECURRENTES

II. 1.2 ¿Cómo crear un clasificador en Weka?

II.2. DISEÑO DE REDES NEURONALES RECURRENTES PARA WEKA

La modelación del proceso es sumamente importante para que el funcionamiento de la aplicación a implementar logre su máximo rendimiento tanto para los usuarios finales como para los desarrolladores. El estudio realizado para la implementación de redes recurrentes neuronales para Weka posibilitó distinguir muy bien cuales eran los paquetes y estructuras que se debían crear para que se pudiera utilizar como un clasificador dentro de Weka, así como facilitar la extensibilidad del paquete para ser ampliado en un futuro.

37

El diseño de RNR se divide en dos paquetes que son:

Topology: agrupa las clases para la creación de la topología de la red. Se tuvo en cuenta una estructura para las capas de salidas que define si la red se va a utilizar para clasificación. (Ver anexo 3)

Functions: comprende las funciones que pueden ser aplicadas en redes de clasificación para procesamiento de la salida. (Ver anexo 4)

II.2.1. Redes Neuronales Recurrentes para Clasificación.

Como se ha venido diciendo a lo largo del presente trabajo se desea crear un conjunto de clases de redes neuronales recurrentes para su utilización como un clasificador. Se diseñó una clase llamada RecurrentNeuralNetwork que va a permitir que se utilice como un clasificador. Dicha clase se basa en la idea del

MultilayerPerceptron que se encuentra dentro del paquete

weka.classifiers.functions por su semejanza en lo que al método Backpropagation

se refiere. La clase que se diseña aplica el algoritmo BPTT descrito en el epígrafe I.2.1

Para la implementación de un nuevo método de aprendizaje dentro del Weka se debe conocer en detalles las clases de las se van a utilizar con vistas a hacer un uso correcto de las mismas. Se estudiaron las clases NeuralNode,

NeuralConnection, SigmoidUnit y LinearUnit; además de la interfaz NeuralMethod

para la utilización de las neuronas. Para el entrenamiento y clasificación se estudiaron las clases MultilayerPerceptron, Instances y Classifier. De la primera se estudió la clase interna NeuralEnd que indica como serán las neuronas de entradas y salidas (aquellas que se conectan a los atributos y clases del fichero de datos para el cual se pretende utilizar la red) y que se diferencia de las vista anteriormente aunque hereda de NeuralConection. Instances es la clase para la manipulación y ordenamiento de las instancias pesadas desde los ficheros que reconoce Weka (extensiones .arff). Classifier es la clase madre de todos los clasificadores que existen y los que se creen; en ella se encuentran los métodos que se explicaron en el epígrafe II.1.2.2 y otros que se utiliza para el trabajo con los mismos

38

II.2.1.1. Topologías.

La creación de la red neuronal se puede considerar como la construcción de un grafo orientado de forma tal que cada nodo representa una unidad computacional y cada arco la relación que existe entre las unidades. Esto en su conjunto constituye la topología de la red.

La modelación de la red es el primer paso para su implementación por lo que seguidamente se describen las clases fundamentales del paquete Topology así como los métodos relevantes de estas. Este paquete tiene dos clases fundamentales que heredan de la clase antes mencionada donde cada una representa una topología diferente en cuanto a la estructura y la forma de hacer sus cálculos, ellas son: Topology_FSCF, y Topology_CFSS que corresponden al modelo de clasificadores.

Topology_FSCF emplea una función para combinar las salidas en la evaluación del problema.

Topology_CFSS utiliza una capa fija a la que se conectan las neuronas de salida pero tomando a estas como neuronas ocultas. Ambas clases heredan de la clase

Topology que por su condición de ser abstracta permite que se creen nuevas topologías a partir de ella.

La clase abstracta Topology como se dijo anteriormente es la clase madre de las topologías existentes y que a su vez es la que crea la mayor parte de la red. Entre sus métodos se encuentran:

CreateTopology() crea la topología utilizando las neuronas anteriormente referidas de forma que crea las conexiones desde la capa de entrada (que se genera automáticamente conociendo la cantidad de atributos del .arff y la cantidad de tiempos en la que se despliega la red) hasta las neuronas de las capas ocultas. Las conexiones a la capa de salida se realizan en las clases hijas que componen a los clasificadores.

setData() inicializa la matriz de conexiones de la red.

39 Unfolding() despliega las conexiones de la red en el tiempo para crear la red desplegada.

OrganizeConnections() organiza las conexiones para mantener un orden en la replicación de los pesos en la red desplegada.

Actualize_weights() replica los pesos de la red original para la red desplegada.

Topology_FSCF y Topology_CFSS tienen entre sus metodos:

calculateOutputs() calcula las salidas de la red recurrente.

calculateErrors() realiza el cálculo de los errores.

updateNetworkWeights() después de haber calculado las salidas y los errores procede al cálculo de la variación de los pesos (

w).

resetNetwork() reinicia los valores de la salida, errores e indica que se puede calcular los

w.

setupOutputs() se encarga de crear las neuronas ocultas que se conectan con las salidas.

setOutputs() crea la capa de salida.

II.2.1.2. Posibles procesamientos de las salidas de redes

neuronales recurrentes para ser usadas como clasificadores.

El procesamiento de las salidas viene dado por la arquitectura de la red que se utilice en el proceso de clasificación, en dependencia de la modelación será mayor o menor efectivo su poder de cómputo. En este sentido se proponen dos topologías para la experimentación en cuanto a los resultados que se obtengan. Para la topología Topology_FSCF se utilizan varios tipos de procesamientos de la salida, el procesamiento viene dado por la aplicación de una función determinada a las salidas obtenidas en la red desplegada procesando los t vectores de salida (t

significa la cantidad de tiempos) obteniéndose un solo vector. Las posibles funciones que se implementan son:

40

Máxima probabilidad, que devuelve el vector que mayor probabilidad tuvo en una de sus salidas.

Average, devuelve la media de los vectores de salida.

Moda, retorna la moda de los t vectores.

La otra topología Topology_CFSS a diferencia de la anterior posee una capa fija a la que se conectarán las capas de salidas de la red desplegada tomándose las neuronas de estas últimas como nodos de una capa oculta (para el caso que se implementa son de tipo sigmoidal). De forma que los t vectores de salida se conectan en uno solo (capa fija) que es donde realmente se realizarán los cálculos.

II.3. Implementación de las Redes Neuronales Recurrentes para