Matrices de entrada-salida La forma de presentar los datos de entrada-salida para obtener un modelo difiere dependiendo del método que se utilice para modelar. Supóngase la siguiente estructura de 4 entradas - 1 salida (múltiples entradas-una salida) tiempo = 0.2250 0.2500 0.2750 0.3000 0.3250 0.3500 0.3750 0.4000 0.4250 0.4500 0.4750 0.5000 0.5250 0.5500 0.5750 | entradas = 0.5878 0.8090 0.9511 1.0000 0.3090 0.5878 0.8090 0.9511 0.0000 0.3090 0.5878 0.8090 -0.3090 0.0000 0.3090 0.5878 -0.5878 -0.3090 0.0000 0.3090 -0.8090 -0.5878 -0.3090 0.0000 -0.9511 -0.8090 -0.5878 -0.3090 -1.0000 -0.9511 -0.8090 -0.5878 -0.9511 -1.0000 -0.9511 -0.8090 -0.8090 -0.9511 -1.0000 -0.9511 -0.5878 -0.8090 -0.9511 -1.0000 -0.3090 -0.5878 -0.8090 -0.9511 -0.0000 -0.3090 -0.5878 -0.8090 0.3090 -0.0000 -0.3090 -0.5878 0.5878 0.3090 -0.0000 -0.3090 | salidas = 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000 -0.3090 -0.5878 -0.8090 -0.9511 -1.0000 -0.9511 -0.8090 -0.5878 |
O una estructura de 3 entradas - 2 salidas (múltiples entradas-múltiples salidas) tiempo = 0.2250 0.2500 0.2750 0.3000 0.3250 0.3500 0.3750 0.4000 0.4250 0.4500 0.4750 0.5000 0.5250 0.5500 0.5750 | entradas_mul = 0.5878 0.8090 0.9511 0.3090 0.5878 0.8090 0.0000 0.3090 0.5878 -0.3090 0.0000 0.3090 -0.5878 -0.3090 0.0000 -0.8090 -0.5878 -0.3090 -0.9511 -0.8090 -0.5878 -1.0000 -0.9511 -0.8090 -0.9511 -1.0000 -0.9511 -0.8090 -0.9511 -1.0000 -0.5878 -0.8090 -0.9511 -0.3090 -0.5878 -0.8090 -0.0000 -0.3090 -0.5878 0.3090 -0.0000 -0.3090 0.5878 0.3090 -0.0000 | salidas_mul = 1.0000 0.9511 0.9511 1.0000 0.8090 0.9511 0.5878 0.8090 0.3090 0.5878 0.0000 0.3090 -0.3090 0.0000 -0.5878 -0.3090 -0.8090 -0.5878 -0.9511 -0.8090 -1.0000 -0.9511 -0.9511 -1.0000 -0.8090 -0.9511 -0.5878 -0.8090 -0.3090 -0.5878 |
Como se puede apreciar cada fila representa una unidad de tiempo o patrón de entrenamiento de entrada-salida. Si se utilizan sistemas borrosos El entrenamiento de un sistema borroso se realiza utilizando la función anfis, la entrada salida se define en una única matriz donde la última columna representa la salida, ello es % Define matriz >> Matrizentrenar=[entradas salidas] % Se entrena el sistema borroso >>Sistemaborroso=anfis([Matrizentrenar]) % Lo que equivale a >>Sistemaborroso=anfis([entradas salidas]) |
Cuando se desea obtener un modelo multivariable, es necesario entrenar tantos sistemas borrosos como salidas hayan, manteniendo la misma matriz de variables de entrada; en este caso % Se definen dos modelos independientes >> Sistemaborroso_I=anfis([entradas_mul salidas_mul(:,1)]) >> Sistemaborroso_II=anfis([entradas_mul salidas_mul(:,2)]) |
Lo anterior es válido para la interfaz gráfica de usuario anfisedit, como muestra el siguiente ejemplo. Si se utilizan redes neuronales En el Toolbox de Redes Neuronales el tratamiento de las matrices difiere: 1.- Es necesario definir la matriz de las variables de entrada de forma independiente de la matriz de variables de salida. 2.- Contrario a los sistemas borrosos, en este caso cada patrón de entrenamiento se define en una columna, es por ello que se debe determinar la traspuesta de la matriz antes de definir la red. 3.- La definición de la red y el entrenamiento se realiza con funciones diferenciadas. 4.- Múltiples salidas se modelan de forma automática. 5.- Se define, dependiendo como se presentan las matrices y la función de adaptación utilizada, si el entrenamiento es secuencial o por lotes. Si se utiliza la función newff, entonces % Se define la red con 6 neuronas en la capa intermedia >>RedDefinida=newff(entradas', salidas', 6); % Se han creado los parámetros: % Primera capa (entrada): 4 entradas, 6 salidas >> size(RedDefinida.IW{1}) ans = 6 4 %Capa intermedia: 6 entradas, 1 salida >> size(RedDefinida.LW{2,1}) ans = 1 6 % Posteriormente se estrena RedDefinida = train(RedDefinida,entradas',salidas') |
En redes neuronales no es necesario definir diferentes redes para múltiples salidas, por ejemplo % Se define la red con 6 neuronas en la capa intermedia >> RedDefinida_mul=newff(entradas_mul', salidas_mul', 6); % Se han creado los parámetros: % Primera capa (entrada): 3 entradas, 6 salidas >> size(RedDefinida_mul.IW{1}) ans = 6 3 %Capa intermedia: 6 entradas, 2 salidas >> size(RedDefinida_mul.LW{2,1}) ans = 2 6 |
Un ejemplo de utilización de las redes neuronales con la función newff y la interpretación del modelo resultante se puede ver en el siguiente ejemplo. Si se utiliza la interfaz gráfica de usuario nntool, el tratamiento matricial es semejante al de la función newff, tal y como se muestra en el siguiente ejemplo. Si se utiliza la interfaz gráfica de usuario nftool, los patrones de entrenamiento de entrada-salida pueden estar definidos tanto en filas como en columnas, tal y como se muestra a continuación Entrenamiento secuencial o por lotes Se dice que un entrenamiento es secuencial cuando los parámetros se adaptan cada vez que un conjunto de entrenamiento de entrada-salida se presenta a la red. El entrenamiento es por lotes cuando se presentan todos los datos definidos en la matriz de entrada a la red que representará al modelo y el error resultante con respecto a todos los valores de la matriz de salida que se pretende modelar, se utilizan para adaptar los parámetros. Para diferenciar ambos tipos de entrenamiento se utilizan las funciones de entrenamiento adapt o train. La función adapt puede entrenar tanto de forma secuencial o por lotes. La función train sólo por lotes ( mecanismos de adaptación paramétrica como Levenberg-Marquardt sólo admiten entrenamiento por lotes, la adaptación por gradiente admite ambos tipos de entrenamiento). La función adapt detecta como entrenará la red en la forma en que se le presente la matriz de entrada-salida. Por ejemplo, para el entrenamiento secuencial entradas = {[0.5878; 0.8090; 0.9511; 1.0000] [0.3090; 0.5878; 0.8090; 0.9511]}; salidas = {0.9511 1.0000}; Si se desea en entrenamiento por lotes, los mismos datos se presentarían de la forma entradas = [0.5878 0.8090 0.9511 1.0000; 0.3090 0.5878 0.8090 0.9511]; salidas = [0.9511 1.0000]; Por lo general su utiliza más la función train, pues permite algoritmos de entrenamiento más eficientes. Si se utiliza el System Identification Toolbox Cuando se utiliza la interfaz gráfica de usuario ident, se representa en cada fila un patrón de entrenamiento de entrada-salida. La salida y las entradas deben definirse como matrices separadas, tal y como muestra el siguiente ejemplo. |