Reconocimiento de números
Un problema clásico en el deep learning es el reconocimiento de números dibujados a mano alzada. Para esto utilizaremos la extensión de RapidMiner llamada Deep Learning en su versión 1.1.2.
Para iniciar verificamos el contenido de los archivos. Podemos observar que tiene 785 columnas, la columna label indica el número que representa, y las restantes 784 representan la intensidad de 0 a 1 (0=blanco absoluto, 1=negro absoluto) de cada pixel de la imagen del número, cada imagen es de 28x28 pixel.
Necesitamos que la columna que indica el valor real del número sea del tipo nominal, para esto vamos a crear una nueva columna y posteriormente la seteamos como label.
Agregamos el bloque Deep Learning desde la seccion de extensiones.
Indicamos el valor 20 en epoch para indicar que el modelo itere esa cantidad de veces el conjuto de datos.
Dentro del bloque Deep Learning es donde construimos las capas de neuronas. Por tener 784 entradas vamos a agregar un bloque Fully-Connected de 784 neuronas y la función de activación ReLu. Para la salida agregamos otro Fully-Connected pero vamos a seleccionra 10 neuroas de salida, ya que son la cantidad de valores diferentes que tendremos, y por este motivo elegimos la función SoftMax el cual nos dara la probabilidad por cada una de las salidas.
Repetimos el proceso de crear una nueva columna nominal y setearla como label para el set de pruebas. Agregamos un bloque de Apply Model y un bloque de Performance para medir el Accuracy de nuestra red neuronal.
Resultado
Utilizando las capas descriptas podemos obtener un 94.9% de Accuracy, un número realmente bueno para el problema, pero vamos a validar que sucede agregando una mayor cantidad de capas en nuestra red neural para intentar mejorar su performace.
Resultado con 3 Capas
Agregando un nueva capa de 784 neuronas y función ReLu, obetenemos un Accuracy de 95.5%, una leve mejora.
Resultado con 4 Capaz
Para intentar mejorar nuestra red agregamos nueva capa, y vemos que sufrimos un sobreentranamiento al intentar complejisar una red innecesariamente.
Modificando la cantidad de iteraciones
En busca de un mejor accurancy de nuestra red neuronal y partiendo del modelo de 3 capas el cual fue la mejor estructura de las probadas, modificamos el valor epoch a 50 de nuestro bloque Deep Learning, este valor señala que la red neuronal iterará 50 veces el conjunto de datos. El resultado logrado es un 98.8% de Accuracy, al igual que con la cantidad de capas utilizada si aumentamos demasiado la cantidad de iteraciones podemos caer en un sobreentrenamiento que a la mínima diferencia con respecto al set de entrenamiento podría darme un resultado incorrecto.