Download En esta segunda tarea de EL4106 Inteligencia - U

Document related concepts

Propagación hacia atrás wikipedia , lookup

Perceptrón multicapa wikipedia , lookup

Red neuronal prealimentada wikipedia , lookup

RNA de base radial wikipedia , lookup

Redes neuronales probabilísticas wikipedia , lookup

Transcript
EL4106 Inteligencia Computacional
Tarea 2:
Red Neuronal Feed-Forward con Backpropagation
Matías Mattamala A.
29 de Abril de 2013
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
Contenido
1.
Introducción ................................................................................................................................ 2
2.
Objetivos ..................................................................................................................................... 2
3.
Redes Neuronales Artificiales ..................................................................................................... 3
3.1
Definiciones......................................................................................................................... 3
3.1.1
Red Neuronal Artificial (RNA) ......................................................................................... 3
3.1.2
Neurona Artificial ............................................................................................................ 3
3.1.3
Capa de entrada ............................................................................................................. 4
3.1.4
Capa oculta ..................................................................................................................... 4
3.1.5
Capa de salida ................................................................................................................ 4
3.1.6
Pesos ............................................................................................................................... 5
3.1.7
Bias .................................................................................................................................. 5
3.1.8
Función de activación ..................................................................................................... 5
3.2
Respecto a la dimensionalidad de las capas ocultas ........................................................ 5
3.3
Algoritmo de Backpropagation ......................................................................................... 6
3.4
Sobreentrenamiento........................................................................................................... 8
4.
Problema propuesto ................................................................................................................ 10
5.
Desarrollo .................................................................................................................................. 10
6.
Resultados ................................................................................................................................. 13
7.
Análisis de Resultados .............................................................................................................. 20
8.
Conclusiones ............................................................................................................................. 22
9.
Referencias ................................................................................................................................ 23
1
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
1. Introducción
En esta segunda tarea de EL4106 Inteligencia Computacional, se busca comprender los
conceptos asociados al segundo clasificador estudiado en el curso: Redes Neuronales Artificiales
(RNA). Las Redes Neuronales Artificiales son una técnica de clasificación de datos, basada en
representar matemáticamente una neurona y su modo de operación en conjunto, emulando lo
que realizan en el cerebro humano. En el caso particular de este trabajo, se realizará el
reconocimiento y clasificación de patrones de 16 componentes que representan números
manuscritos, los cuales serán clasificados como dígitos del 0 al 9. Para ello, se utilizará
nuevamente una base de datos del Repositorio de Aprendizaje de Máquinas de la Universidad
de California, Irvine, llamado Pen-Based Recognition of Handwritten Digits Data Set.
Para desarrollar el trabajo, en primer lugar serán explicados algunos conceptos básicos de las
RNA, de modo de introducir la base teórica necesaria que fue utilizada para abarcar este
problema. Se aprovecharan de explicar también algunos conceptos relacionados con el método
de uso de la red, como así también una métrica para evaluarla.
Posteriormente se dará paso a la explicación de los experimentos realizados, donde se
presentarán los principales resultados, que posteriormente serán analizados en conjunto de
modo de reconocer las diferencias que existen al variar parámetros del modelo.
Finalmente se presentarán las principales conclusiones del trabajo realizado, comentando
algunos aspectos de las RNA que fueron observados, como así también comparándolas con la
técnica de clasificación vista anteriormente, el Clasificador Bayesiano.
2. Objetivos
2
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
Este trabajo tiene por objetivo ser un acercamiento práctico a los conceptos teóricos de las
redes neuronales, donde se aplicarán los conceptos ya estudiados. Es importante señalar que a
pesar de que los conceptos no serán aplicados explícitamente, ya que no se realizará una
implementación de los algoritmos, sí serán útiles y se utilizarán para la implementación de los
resultados.
La experiencia también tiene por objetivo conocer las los toolbox de MATLAB, herramientas ya
implementadas con que cuenta para la solución de estos problemas.
3. Redes Neuronales Artificiales
3.1 Definiciones
En primer lugar, es importante definir algunos conceptos claves para el desarrollo del trabajo. El
primero de ellos, es el de Red Neuronal Artificial.
3.1.1
Red Neuronal Artificial (RNA)
Sistema de clasificación multiclase, basado en las interconexiones y paralización de estructuras
más pequeñas, denominadas neuronas. Las RNA están inspiradas en el modelo biológico de
una red neuronal, donde millones de neuronas se interconectan entre sí para realizar distintos
procesos biológicos. Con esto se hace necesario definir lo que es una neurona artificial.
Figura 1: Red Neuronal Artificial Multicapa. Fuente: Wikimedia Commons
3.1.2
Neurona Artificial
3
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
Es la unidad más básica de este tipo de estructuras. El primer modelo de ellas fue planteado por
McCulloch y Pitts, el cual contempla una estructura basada en muchas entradas ponderadas, un
sumador de las entradas, y una función de activación que depende de la suma de las entradas.
Figura 2: Modelo matemático de una neurona, tipo perceptrón. Fuente: Wikimedia Commons
3.1.3
Capa de entrada
Corresponde al conjunto de neuronas que reciben las entradas de la red neuronal. Cada una de
estas entradas es ponderada por un peso que depende de la capa. El número de neuronas de
la capa de entrada depende del número de componentes de la entrada del sistema.
3.1.4
Capa oculta
Conjunto de capas intermedias entre la capa de entrada y la capa de salida. Puede existir o no
existir una capa oculta en la red, dependiendo de la aplicación que se le de. Respecto al
tamaño, no existe un criterio que defina la dimensión, aunque más adelante se hablarán de
algunos números sugeridos.
3.1.5
Capa de salida
Conjunto de neuronas que determinan la salida del sistema. EL número de neuronas en la capa
es igual al orden de la salida del sistema.
4
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
3.1.6
Pesos
Ponderadores o amplificadores de las entradas de una determinada neurona. Pueden ser
distintos para cada entrada, pero neuronas en las misma capa poseen los mismos pesos para
cada entrada.
3.1.7
Bias
Entrada constante que se ingresa a la red en cada neurona. Sirve para ajustar la activación de la
neurona frente a una determinada suma de entradas.
3.1.8
Función de activación
Función de control de la neurona. Se activa cuando la suma de las entradas ponderadas con el
bias es mayor que un cierto umbral dado por la función. Por lo general una función de
activación es una función suave (como una función sigmoidal o lineal), aunque también pueden
utilizarse funciones de activación discontinuas, como un escalón.
3.2 Respecto a la dimensionalidad de las capas ocultas
Un problema recurrente al usar redes neuronales, consiste en escoger cuántas capas ocultas y
de cuantas neuronas debe disponer cada una. Respecto al número de capas ocultas, ese es un
problema más bien resuelto en la literatura, el cual se puede resumir en la Tabla 1:
Número
de
Aplicación
Capas Ocultas
0
Clasificación o toma de decisiones linealmente separables.
1
Problemas donde se realiza un mapeo continuo de un espacio finito a otro.
2
Problemas más complejos que involucran mapeos continuos y suaves con
precisión arbitraria.
Tabla 1: Número de Capas ocultas de una Red Neuronal dependiendo de la aplicación
El número de neuronas de cada capa oculta es un problema más complejo, debido a que no
existe un criterio claro o demostrado matemáticamente. Es por ello que generalmente se
5
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
realizan ensayos del tipo prueba y error, donde se compara el rendimiento que se tiene para
diversos valores. Aun así, existen algunas reglas generales (rules of thumb1) que se aplican en
esta decisión, que conforman la base sobre la cual se realizan los ensayos. Algunas de ellas son:

El número total de neuronas ocultas debería estar entre el tamaño de la capa de
entrada y el tamaño de la capa de salida.

El número debería ser 2/3 del tamaño de la capa de entrada, más el tamaño de la capa
de salida.

El número debería ser menos que el doble del tamaño de la capa de entrada.
Es importante reiterar que estos criterios no presentan en ningún caso la solución definitiva al
problema, sino que se basan en la experiencia de la gente que tiene más experiencia en su uso,
de modo de evitar los principales problemas asociados a los casos extremos:
Si el número de neuronas es muy pequeño, puede existir underfitting, o subajuste de la red a
los datos, por lo que tendría problemas para operar con conjuntos de datos muy complicados.
Al contrario, si se utilizan muchas neuronas, puede existir overfitting o sobreajuste de los datos,
lo que dificultaría el reconocimiento de información en entradas nuevas, ya que el criterio de
decisión sería más estricto, ajustado al conjunto de entrenamiento. EL segundo problema
ocurre obviando el problema anterior, ya que suponiendo una buena muestra de datos, podría
existir también un exceso en el tiempo de entrenamiento de la red.
3.3 Algoritmo de Backpropagation
Al utilizar redes neuronales del tipo feedforward, se requiere que exista un ajuste de los pesos
asociados a las conexiones, de modo de que exista un aprendizaje por parte de la red. Para
realizar este ajuste de peso existen muchas técnicas, dentro de las cuales se encuentra el
Algoritmo de Backpropagation, o Retropropagación del error.
En palabras simples, este algoritmo se basa en la minimización del Error Cuadrático Medio
(Mean Squared Error, MSE, en inglés) que existe entre la salida de la red y el valor esperado que
se tiene dada una cierta entrada.
Se basa en el supuesto en que el error depende de los pesos aplicados en la entrada, por tanto
se busca ajustar los pesos de modo de minimizar el error. Este problema que parece local a una
1
Jeff Heaton, The number of hidden layers. Disponible en http://www.heatonresearch.com/node/707
6
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
neurona, puede aplicarse a todas las neuronas existentes en una capa y, más aún, a toda la red
neuronal si se consideran las entradas y salidas correspondientes a cada capa. El algoritmo
plantea el siguiente procedimiento, para una red dos capas (una capa oculta).
Aplicar un vector de entrada y calcular los valores de todas las activaciones en cada capa y en
cada neurona. Para el caso de una red con una capa oculta, las activaciones van a estar
asociadas solamente a la capa oculta y a la salida, las cuales se denominan 𝑢 y 𝑎,
respectivamente.
1) Evaluar la variación que existe en el error, respecto a la activación de la capa de salida.
Esto se realiza con la Ecuación 1:
Δ𝑖 (𝑡) = (𝑑𝑖 (𝑡) − 𝑦𝑖 (𝑡)) ⋅ 𝑔′ (𝑎𝑖 (𝑡))
(1)
Donde
Δ𝑖 (𝑡): Denota la variación del error respecto a la activación de la neurona i-ésima.
𝑑𝑖 (𝑡): Es la salida esperada de la neurona i-ésima.
𝑦𝑖 (𝑡): Salida calculada por la red en el instante 𝑡.
𝑔′ (𝑎𝑖 (𝑡)): Es la derivada de la función de activación respecto a la activación 𝑎𝑖 (𝑡)
2) Retropropagar el error, de modo de obtener la variación que existe en el error de cada
capa oculta respecto a la activación 𝑢 en cada una de ellas. Esto se calcula con la
Ecuación 2:
δ𝑖 (𝑡) = 𝑔′ (𝑢𝑖 (𝑡)) ⋅ ∑ Δ𝑘 (𝑡)𝑤𝑘𝑖
(2)
𝑘
Donde
δ𝑖 (𝑡): Denota la variación del error en la capa oculta respecto a la activación 𝑢 de la neurona iésima de la capa.
𝑔′ (𝑢𝑖 (𝑡)): Es la derivada de la función de activación de la neurona respecto a la activación 𝑢𝑖 (𝑡)
Δ𝑘 : Es la variación del error de la capa anterior respecto a las activaciones de la capa de salida.
7
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
𝑤𝑘𝑖 : Corresponde al peso que existe entre las neuronas 𝑖 y 𝑘 pertenecientes a la capa oculta y
la capa de salida, respectivamente.
3) Finalmente, se evalúan los valores de los nuevos pesos asociados a las capas oculta y de
salida, con las Ecuaciones 3 y 4:
𝑣𝑖𝑗 (𝑡 + 1) = 𝑣𝑖𝑗 + 𝜂𝛿𝑖 (𝑡)𝑥𝑗 (𝑡)
(3)
𝑤𝑖𝑗 (𝑡 + 1) = 𝑤𝑖𝑗 + 𝜂Δ𝑖 (𝑡)𝑧𝑗 (𝑡)
(4)
𝑣𝑖𝑗 (𝑡 + 1): Denota el nuevo peso en la neurona de la capa oculta, análogo a 𝑤𝑖𝑗 (𝑡 + 1) con la
capa de salida.
𝜂: Denota el factor de aprendizaje de la red.
𝑥𝑗 : Es la entrada j-ésima a la red neuronal.
𝑧𝑗 : Es la entrada j-ésima a la capa de salida, dada por las salidas de la capa oculta.
𝛿𝑖 y Δ𝑖 corresponden a las variaciones del error de la capa respecto a las activaciones, que ya
fueron señaladas anteriormente.
3.4 Sobreentrenamiento
El problema de sobreentrenamiento ya fue señalado anteriormente, ya que es prácticamente
equivalente al concepto de sobreajuste u overfitting. Refiere al problema que existe cuando el
clasificador se ajusta demasiado a la muestra de entrenamiento, lo que produce fallas en la
clasificación al momento de ingresar un conjunto de test, o bien cuando la red se encuentra
operativa. Un ejemplo de ello se puede observar en la Figura
8
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
Figura 3: Ilustración de un problema de
Overfitting.
La línea punteada denota el clasificador
sobreentrenado. En negro el clasificador
esperado.
Fuente: Wikimedia Commons
La técnica principal para evitar el overfitting, consiste en utilizar muestras representativas para
entrenar el clasificador, de modo de que aunque exista un ajuste muy estrecho a los datos, aun
así se obtendrá un buen resultado debido a que las muestras representan la generalidad del
problema. Además se debe tener un número grande de estas.
Una segunda técnica, consiste en la selección óptima de los parámetros de la red, tales como
un número adecuado de neuronas en las capas ocultas si es el caso, ya que un número mayor
de ellas podría producir un aprendizaje más ajustado a la caracterización del problema dada
por el conjunto de entrenamiento.
3.5 Matriz de Confusión
La Matriz de Confusión es una métrica utilizada en Aprendizaje Supervisado para medir el
rendimiento de un algoritmo de acuerdo a sus aciertos. Para ello, la matriz compara los
resultados de la clasificación entre 2 o más clases, “contando” el número de veces que clasificó
una muestra como una determinada clase. Puede entenderse también como un histograma
bidimensional.
Clase
actual
Clase prevista
Perro
Gato
Conejo
Perro
Gato
5
2
2
6
0
1
Conejo
0
1
10
Tabla 2: Ejemplo de Matriz de Confusión
9
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
Para calcularla, basta tener una matriz de 𝑛 × 𝑛, donde 𝑛 denota el número de clases de la
salida. Cada muestra del conjunto de pruebas está asociada a una clase 𝑖 conocida. Se ingresa
la muestra en la red, y obtiene una clase 𝑗 a la cual está asociada. Se obtiene entonces un par
(𝑖, 𝑗), el cual se busca en la matriz, y se suma un 1 a esa componente de la matriz.
La interpretación de la matriz nos entrega información acerca de la precisión del método de
clasificación utilizado, dadas unas ciertas configuraciones de la red. Al contrario de la curva
ROC, la cual representa el comportamiento completo de los aciertos y errores del modelo, se
puede interpretar que la Matriz de Confusión es un punto de la curva, ya que sería necesario
variar los parámetros de la red para ir obteniendo distintos resultados, y así caracterizar el
desempeño del clasificador.
4. Problema propuesto
Como ya fue anunciado anteriormente, el problema propuesto para la Tarea 2 consiste en la
clasificación de caracteres manuscritos como dígitos numéricos. Para ello se utilizará una Red
Neuronal Feedforward con Backpropagation, donde se utilizará el algoritmo de gradiente
descendiente de segundo orden de Levenberg-Marquardt para la fase de aprendizaje. Se
utilizará este algoritmo porque a pesar de tener exigencias computacionales más grandes,
produce resultados más rápidos. Para implementar la red neuronal se utilizará el Toolbox de
Redes Neuronales con los que cuenta MATLAB, el cual ya incluye implementaciones robustas
de estos algoritmos.
La idea es apreciar los distintos resultados que se tienen al cambiar la configuración de la capa
oculta de la red, que se reflejan tanto en la precisión de los resultados como también en los
tiempos de ejecución.
5. Desarrollo
Para el desarrollo del trabajo, se implementaron solamente 3 scripts, los cuales realizan la
división del conjunto en entrenamiento y prueba; el segundo realiza la construcción de la Matriz
de Confusión, mientras que el último corresponde al script principal que ejecuta los
procedimientos requeridos por la tarea.
Script divideSets: Realiza la división de los conjuntos en entrenamiento y prueba. La división se
realiza utilizando el porcentaje indicado en la entrada de la función, el cual determina el tamaño
10
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
del conjunto de entrenamiento. Es importante señalar que en este caso la división no se realiza
de manera aleatoria, sino que se utiliza el mismo orden en el que venían los datos.
Respecto a la representatividad de la división de los conjuntos, se observa que tanto el conjunto
de entrenamiento como el de prueba forman conjuntos representativos de la muestra original,
le cual puede apreciarse al ejecutar el script principal.
Función 1: divideSets(conjunto de dígitos, conjunto de trazos, porcentaje de entrenamiento)
function y = divideSets(digits, traces, perc)
if perc >=1
perc = perc/100;
end
[rows columns] = size(digits);
trainingSize = floor(columns*perc);
fullSize = columns;
training = struct('digits', digits(:,1:trainingSize), 'traces', traces(:,1:trainingSize));
test = struct('digits', digits(:,trainingSize+1:fullSize), 'traces', traces(:,trainingSize+1:fullSize));
y = struct('training', training, 'test', test);
Función confusionMatrix: Realiza la construcción de la Matriz de Confusión, dados los conjuntos
de salida de la RNA y la salida esperada ya conocida. Entrega como salida una matriz de 𝑛 × 𝑛,
donde 𝑛 denota la dimensionalidad de la salida. El algoritmo utilizado consiste principalmente
en la búsqueda del máximo elemento en cada columna de la matriz de salida de la red el cual
se reemplaza pro un 1 y el resto como 0’s. Posteriormente, se busca el índice que determina a
11
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
cual clase está asociada, y se realiza una suma vectorial de este vector, con la fila
correspondiente de la Matriz de Confusión.
Función 2: confusionMatrix( Salida de la red, Salida real esperada)
function m = confusionMatrix(netOut, realOut)
if (size(netOut)~=size(realOut))
error('The dimensions don’t match')
end
[rows cols] = size(netOut);
for i=1:cols
netOut(:,i) = netOut(:,i) == max(netOut(:,i));
end
confMat = zeros(rows, rows);
for i=1:cols
index = find(realOut(:,i), 1);
confMat(index,:) = confMat(index,:) + netOut(:,i)';
end
m = confMat;
Script Tarea2: Realiza las operaciones requeridas por el trabajo, tales como la división de los
conjuntos de muestras en conjuntos de entrenamiento y prueba, la configuración de la RNA y el
cálculo de la Matriz de Confusión. Además, ejecuta un script denominado runVANN2, el cual fue
descargado de internet, el que permite visualizar gráficamente la red neuronal mediante un
ejecutable java.
Para la creación de la red, se utilizó la función newff, la cual recibe como entradas una matriz
que indica los valores máximos y mínimos de la entrada y otra de la salida, el número de capas
ocultas y la cantidad de neuronas asociadas (en este caso, una sola capa con 13 neuronas), la
2
Visualizing Artificial Neural Networks 1.0. Disponible en http://sourceforge.net/projects/vann/
12
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
función de activación de cada capa (tangente-sigmoidal) y el algoritmo de entrenamiento
(Levenberg-Marquardt).
Script 1: Tarea2
%Tarea2
layers = 13;
load('BaseDatosTarea2.mat');
data = divideSets(digitos, trazos, 80);
inputMat = zeros(16,2);
inputMat(:,2) = 100;
outputMat = zeros(10, 2);
outputMat(:,2) = 1;
net = newff(inputMat, outputMat, layers, {'tansig', 'tansig'}, trainlm');
net = train(net,data.training.traces, data.training.digits);
netOut = sim(net, data.test.traces);
ConfMat = confusionMatrix(netOut, data.test.digits)
runVANN('net');
6. Resultados
A continuación se presentan los resultados numéricos obtenidos para los experimentos
con la RNA Feedforward con Backpropagation. Estos tienen por objetivo mostrar las
diferencias que existen en el rendimiento de la red al variar el número de neuronas en
la Capa Oculta. Es importante señalar que para estos análisis solamente se consideró
una capa oculta, ya que se desea observar el desempeño de la red como clasificador
para el problema anteriormente señalado.
Respecto a los datos utilizados, la Base de Datos de la Universidad de California, Irvine,
cuenta con 10992 muestras, las cuales se dividieron en razón 80/20 para los conjuntos
13
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
de entrenamiento y prueba respectivamente, utilizando la función divideSets
mostrada anteriormente (Función 1).
Los experimentos realizados consisten en el entrenamiento y prueba de la RNA con
distinto número de neuronas en la capa oculta, de modo de comparar el rendimiento
computacional (tiempo de ejecución, número de iteraciones, entre otros), como así
también su desempeño como clasificador (usando la Matriz de Confusión).
Posteriormente estos resultados serán discutidos en el Análisis de Resultados.
14
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
6.1 Prueba 1: Número de neuronas “óptimo”
Configuración de la Red
Proporción
de
conjuntos
entrenamiento y test
División de datos
Algoritmo de entrenamiento
Medición de desempeño
Número de capas ocultas
Neuronas por capa oculta
de 80/20
Aleatorio (dividerand)
Levenberg-Mardquart (trainlm)
Error cuadrático medio (mse)
1
13 (valor escogido entre tamaño de
entrada y salida)
Tabla 3: Configuración de la red para la Prueba 1
Resultados
Número de iteraciones
Tiempo de ejecución
Desempeño
Gradiente
Chequeos de validación
25
00:01:49
0.000528 (0.406)
0.000674 (0.170)
6
Tabla 4: Resultados de la Prueba 1
Matriz de Confusión
0
1
2
3
4
5
6
7
8
9
0
220
0
0
0
0
0
1
0
2
0
1
0
218
2
0
0
2
0
0
0
0
2
1
2
222
0
0
0
0
2
0
0
3
0
1
0
213
0
1
0
0
0
0
4
1
1
0
0
239
0
0
1
0
1
5
0
0
0
0
0
204
0
1
1
1
6
1
0
0
0
1
1
213
0
0
0
7
0
1
0
1
0
0
0
231
1
0
8
2
0
0
0
0
0
0
2
202
2
9
1
0
0
0
0
1
0
1
1
200
Tabla 5: Matriz de Confusión de la Prueba 1
Observación: En general se observó un comportamiento muy similar para números de
neuronas de la capa oculta entre la dimensionalidad de la entrada y la salida.
15
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
6.2 Prueba 2: Cantidad mínima de neuronas
Configuración de la Red
Proporción
de
conjuntos
entrenamiento y test
División de datos
Algoritmo de entrenamiento
Medición de desempeño
Número de capas ocultas
Neuronas por capa oculta
de 80/20
Aleatorio (dividerand)
Levenberg-Mardquart (trainlm)
Error cuadrático medio (mse)
1
1 (cantidad mínima de neuronas
para la capa oculta)
Tabla 6: Configuración de la red para la Prueba 2
Resultados
Número de iteraciones
Tiempo de ejecución
Desempeño
Gradiente
Chequeos de validación
65
00:00:35
0.0784 (0.5)
0.00362 (0.001)
6
Tabla 7: Resultados de la Prueba 2
Matriz de Confusión
0
1
2
3
4
5
6
7
8
9
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
2
10
51
207
2
9
103
2
45
91
0
3
50
16
3
16
22
3
0
12
39
0
4
127
66
0
175
106
0
24
13
41
1
5
0
0
0
0
0
0
0
0
0
0
6
36
87
0
20
85
50
177
2
33
24
7
0
2
14
0
0
25
0
166
0
0
8
0
0
0
0
0
0
0
0
0
0
9
3
1
0
1
18
28
11
0
3
179
Tabla 8: Matriz de Confusión de la Prueba 2
Observación: Para este valor fijo de 1 neurona, los resultados para el clasificador cambiaban
cada vez que se ejecutaba el algoritmo. Esto será explicado con más detalle en la siguiente
sección.
16
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
6.3 Prueba 3:
Configuración de la Red
Proporción
de
conjuntos
entrenamiento y test
División de datos
Algoritmo de entrenamiento
Medición de desempeño
Número de capas ocultas
Neuronas por capa oculta
de 80/20
Aleatorio (dividerand)
Levenberg-Mardquart (trainlm)
Error cuadrático medio (mse)
1
5 (cantidad igual a la mitad de la
salida)
Tabla 9: Configuración de la red para la Prueba 3
Resultados
Número de iteraciones
Tiempo de ejecución
Desempeño
Gradiente
Chequeos de validación
35
00:00:59
0305 (0.0186)
0.109 (0.000339)
6
Tabla 10: Resultados de la Prueba 3
Matriz de Confusión
0
1
2
3
4
5
6
7
8
9
0
216
0
0
0
0
0
0
3
3
0
1
1
213
6
2
1
53
1
3
2
135
2
0
1
217
0
0
0
0
1
0
7
3
0
5
0
212
0
10
0
2
0
11
4
2
2
0
0
237
9
1
1
0
21
5
3
0
0
0
0
130
0
0
0
0
6
1
0
0
0
0
2
211
0
0
19
7
1
2
1
0
2
0
0
228
3
3
8
1
0
0
0
0
5
1
0
199
2
9
1
0
0
0
0
0
0
0
0
6
Tabla 11: Matriz de Confusión de la Prueba 3
17
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
6.4 Prueba 4
Configuración de la Red
Proporción
de
conjuntos
entrenamiento y test
División de datos
Algoritmo de entrenamiento
Medición de desempeño
Número de capas ocultas
Neuronas por capa oculta
de 80/20
Aleatorio (dividerand)
Levenberg-Mardquart (trainlm)
Error cuadrático medio (mse)
1
20 (cantidad igual al doble de la
salida)
Tabla 12: Configuración de la red para la Prueba 4
Resultados
Número de iteraciones
Tiempo de ejecución
Desempeño
Gradiente
Chequeos de validación
23
00:02:36
0.431 (0.000357)
0.208 (2.73e-6)
6
Tabla 13: Resultados de la Prueba 4
Matriz de Confusión
0
1
2
3
4
5
6
7
8
9
0
220
0
0
0
0
0
0
0
1
3
1
0
219
1
0
0
1
0
1
0
0
2
0
1
222
0
0
0
0
0
0
0
3
0
0
0
210
0
2
0
0
0
0
4
0
0
0
0
239
0
0
0
0
1
5
0
0
0
1
0
205
0
0
1
8
6
0
0
0
0
0
1
214
0
1
0
7
4
2
1
1
1
0
0
236
3
0
8
1
0
0
1
0
0
0
0
201
0
9
1
1
0
1
0
0
0
1
0
192
Tabla 14: Matriz de Confusión de la Prueba 4
18
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
6.5 Prueba 5
Configuración de la Red
Proporción
de
conjuntos
entrenamiento y test
División de datos
Algoritmo de entrenamiento
Medición de desempeño
Número de capas ocultas
Neuronas por capa oculta
de 80/20
Aleatorio (dividerand)
Levenberg-Mardquart (trainlm)
Error cuadrático medio (mse)
1
26 (cantidad igual a la suma de las
dimensionalidades de entrada y
salida)
Tabla 15: Configuración de la red para la Prueba 5
Resultados
Número de iteraciones
Tiempo de ejecución
Desempeño
Gradiente
Chequeos de validación
24
00:03:32
0.448 (0.0105)
0.212 (4.02e-5)
6
Tabla 16: Resultados de la Prueba 5
Matriz de Confusión
0
1
2
3
4
5
6
7
8
9
0
222
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
2
0
100
224
0
0
0
0
1
0
1
3
0
9
0
213
0
0
0
0
0
0
4
3
3
0
0
240
0
0
1
2
0
5
0
1
0
1
0
206
0
0
0
0
6
0
8
0
0
0
0
214
0
0
0
7
0
88
0
0
0
0
0
236
2
0
8
1
5
0
0
0
1
0
0
202
1
9
0
9
0
0
0
2
0
0
0
202
Tabla 17: Matriz de Confusión de la Prueba 5
19
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
7. Análisis de Resultados
Las cinco pruebas mostradas anteriormente, buscan probar el comportamiento de la RNA en
casos que podrían considerarse de interés de acuerdo al análisis teórico señalado
anteriormente. En primer lugar, la Prueba 1 representa el resultado de la red para un número
de neuronas en la capa oculta dado por las rules of thumb que fueron indicadas en las
secciones previas. Se observa que el comportamiento en este caso es bastante cercano al
esperado, dado que la Matriz de Confusión (Tabla 5) posee un número de aciertos considerable
en relación a las malas clasificaciones (diferencias del orden 200:1). A pesar de que no se
muestran explícitamente, pero se puede comprobar con el programa adjunto, pruebas
realizadas con un número de neuronas en el intervalo [10,16], correspondientes a los tamaños
de la salida y entrada respectivamente, se observa un comportamiento similar y bastante
satisfactorio, los cual confirma en parte el criterio escogido para determinar el número de
neuronas. Respecto al tiempo de ejecución, podría considerarse “promedio”, ya que fue similar
en la ejecución de todos los casos en el intervalo anterior.
Los casos interesantes corresponden a los otros 4, debido a las anomalías que se observan en
los resultados. El primer caso presentado es extremo, ya que solamente se consideró una sola
neurona en la capa oculta. Esto implica que todas las entradas pasan por un filtro que
podríamos considerar binario (cosa que no ocurre realmente, ya que la función de activación es
tangente-sigmoidal), pero permite obtener una idea delas distorsiones que se producen en la
clasificación, ya que la salida de esta única neurona es ingresada en toda la capa de salida,
obteniéndose resultados tan extraños como el observado en la Tabla 8. Es importante señalar
que en diversas pruebas que se realizaron, todas produjeron resultados notoriamente distintos,
donde no se seguía un patrón claro. Esto puede producirse debido al modo de funcionamiento
del Toolbox de MATLAB, el cual inherentemente realiza una etapa de entrenamiento y prueba
utilizando el conjunto que se le entregue como entrada. A pesar de que el conjunto de
entrenamiento que se le es ingresado es siempre el mismo (como se señaló al exponer la
función que separa los conjuntos como entrenamiento y prueba), el ordenamiento aleatorio
que realiza la función newff produce que el entrenamiento sea distinto en cada ejecución.
La prueba 3, donde se utilizó un número de neuronas mayor que el anterior, pero igual a la
mitad de la dimensión de la salida (N = 5, con N número de neuronas), se observa un
comportamiento similar al anterior, aunque en un medida mucho menor ya que el efecto de la
“decisión entre dos clases” señalada anteriormente es disminuido al incluir más neuronas. Aun
así, se observan grandes anomalías en las columnas asociadas a las clases 1 y 9 (Tabla 11),
donde existió una confusión entre la Clase 1 y la Clase 9, donde la mayor cantidad de los casos
20
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
fueron clasificados como 1 dado que era 9. De todos modos, este es un resultado extraño, ya
que lo intuitivo sería confundir los casos de 1’s y 7’s, por lo que ya se debería entrar a revisar los
caracteres incluidos en la base de datos para explicar y comprender la confusión que se dio.
Respecto a los dos casos anteriores, se aprecia claramente que el número de iteraciones es
mayor (ya que la convergencia de la red es mucho más difícil por el reducido número de
neuronas), aunque en general la ejecución demora un tiempo mucho menor (ya que los
cálculos necesarios por el entrenamiento para reestablecer los pesos son menores y más
sencillos).
En los últimos dos casos se utilizan valores mayores al intervalo anterior. Sin embargo, en la
Prueba 4, donde se utilizó N = 20, este valor puede ser considerado dentro de otra de las rules
of thumb, la cual postula que “El número debería ser menos que el doble del tamaño de la capa
de entrada”. Observando los resultados obtenidos para una de las ejecuciones de esta prueba,
la Matriz de Confusión (Tabla 14) también presenta buenos resultados similares a la Prueba 1, lo
que también permite comprobar en parte que la regla tiene algo de sentido, a pesar de no
tener un fundamento matemático que la respalde.
La última prueba corresponde a otro “caso extremo”, donde se utilizó N = dim(Entrada) +
dim(Salida). En primer lugar, se observa un tiempo de ejecución mucho mayor (debido a la
complejidad de los cálculos), aunque el número de iteraciones no distó mucho de la Prueba 1 o
4. El otro punto importante respecta a la Matriz de Confusión obtenida (Tabla 17), donde se
observa un buen comportamiento en casi todas las clases, excepto en las clases 1 y 2, donde
prácticamente no se asocia ningún patrón de entrada como un 1, similar a lo ocurrido
anteriormente en la Prueba 2, aunque en este caso si podría existir una confusión más
justificada (por ejemplo, si una persona escribe el número uno de esta forma 1, podría ser
confuso con un 2, debido al trazo que existe en la base del uno).
Respecto a las pruebas en general, se observó un comportamiento bastante similar al esperado
dados los fundamentos teóricos anteriores, donde además se observó una relación entre las
rules of thumb y los resultados del desempeño del clasificador, los cuales confirmaron las reglas
en las pruebas realizadas.
21
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
8. Conclusiones
El trabajo realizado permitió probar el funcionamiento de las redes neuronales
mediante la utilización de un Toolbox de MATLAB que facilita su uso, resolviendo un
problema de clasificación utilizando muestras reales. Si el trabajo solamente hubiera
consistido en la utilización del Toolbox, se hubiera apreciado como fue leído en muchas
críticas que se observaron en la literatura o internet, donde se las señala como “Cajas
Negras”. Sin embargo, el hecho de tener que haber investigado y explicado
previamente el funcionamiento teórico de las RNA, como así también su relación con
conceptos biológicos, permitió comprender de mejor manera su comportamiento, y en
definitiva, el procedimiento que realiza el programa al ejecutarse.
La experiencia permitió conocer herramientas de MATLAB que no habían sido utilizadas
antes, de modo de ampliar el número de herramientas con los que se cuenta para
resolver este tipo de problemas. La interfaz que ofrece es bastante completa, y
proporciona información muy útil al momento de comparar redes o clasificadores
distintos.
Respecto a las redes neuronales en general, se concluye que son una alternativa
bastante interesante al momento de resolver problemas de clasificación, aunque es
necesario considerar las ventajas y desventajas que posee su estructura al momento de
decidir su uso. Conceptualmente son una propuesta muy interesante, que como ya fue
señalado, está muy inspirada en la biología y en el comportamiento del cerebro
humano, aunque en la práctica pueden ser soluciones muy lentas para solucionar
determinados problemas, ya que su complejidad aumenta de gran manera al aumentar
la dimensión de la entrada o la salida, y más aún, al comenzar a incluir capas ocultas
para resolver problemas más complejos, donde se observaron cambios de rendimiento
y tiempo de ejecución muy dependientes de la complejidad de la capa.
Aunque resultaría difícil compararlas con el problema resuelto anteriormente con el
Clasificador Bayesiano (dado que el clasificador fue implementado manualmente),
queda pendiente una comparación más rigurosa de su rendimiento. Del mismo modo,
falta aún conocer el desempeño del clasificador Support Vector Machine (SVM), el cual
se espera que sea analizado en el próximo trabajo.
22
EL4106 Inteligencia Computacional
Prof. Javier Ruiz del Solar
Aux. Daniel Herrmann
Ayud. Felipe Valdés
9. Referencias

M. Hudson, M Hagan, H. Demuth, Neural Network Toolbox 7 User’s Guide, The
MathWorks, Inc. Septiembre 2010.

A.Philippides, Multi-Layer Perceptron, Lectures on Neural Networks 5+6.

Jeff Heaton, The number of hidden layers.. Disponible en:
http://www.heatonresearch.com/node/707
23