Trabajo de investigación por Carlos de la Cruz:
https://docs.google.com/open?id=0B7SdH7JRPQ1nLWcyZENadlA2cVE
Presentacion en Power Point:
https://docs.google.com/open?id=0B7SdH7JRPQ1naWY3MmdERU4xcnM
Estructura de la exposición: 1) Como surgio la idea. 2) Teoria. 3) Desarrollo investigacion. 4) Breve demostracion. 5) C. y R. del informe.
Para entender el funcionamiento una neurona artificial brevemente describire el funcionamiento de una neurona biologica o real. La neurona biologica es la unidad fundamental del sistema nervioso que transmite impulsos nerviosos o señales nerviosas de izq a derecha. Esta neurona se conecta con otras neuronas por medio de las dendritas en la parte incial y final formando redes neuronales biologicas (grafico). La union entre neuronas es la sinapsis. La informacion llega como señales desde otras neuronas hacia las dendritas. Luego todas las dendritas reunen sus senales en el nucleo (figura-llegan a un punto central como se muestra en la figura) y llegan al axon, donde este elije las señales mas fuertes (potenciales de accion) para transmitirlas hacia las dendritas finales. Finalmente las dendritas finales las llevan a otras neuronas.
Cuando las señales llegan a las dendritas hay caminos por donde viajan con mas intensidad que en otros caminos que estan mas inhibidos, esto se debe a la sinapsis. Entre dos dentritas cuando la conexion esta excitada se dice que la transmision de señal es mas fuerte, cuando esta mas inhibida se dice que es menos fuerte. De alli surge la idea de simular este comportamiento mediante los pesos. La información en las neuronas reales se transmiten como diferencia de potenciales de soluciones iónicas.
En el siglo pasado los cientificos se dieron cuenta que el aprendizaje esta relacionado con la intensidad (profundidad) de las conexiones entre neuronas. Es decir para aprender a caminar, oler, hablar, sumar se debe fortalecer o debilitar conexiones para que el cerebro aprenda.
Cuando estas conexiones estan en forma aleatoria, el cerebro no ha aprendido nada.
Por ej: Si este camino tiene un peso de 100, este de 90, este de 70 y este de 30 y se reparte por las demas dendritas y por todas las neuronas, entonces hay un orden e indica que ha ocurrido un aprendizaje.
Con esta observacion propusieron el modelo teórico de la Neurona Artificial.
Neurona artificial:
En 1943 Mcculloch y Pitts propusieron el 1er modelo matemático que describia a una neurona real. La neurona real tiene dendritas y se conecta con otras neuronas. (graficas)
Explicacion del modelo:
Hay tres operaciones distintas funcionales que tienen lugar en esta neurona. En primer lugar, la entradas representadas por una x son valores escalares que se multiplican por el valor escalar peso w para formar el producto wp , de nuevo otro escalar. En segundo lugar, la entrada ponderada wp se añade al escalar constante b para formar la entrada neta ui. El b llamado también umbral es una constante que se adiciona al sumador para ayudar a mejorar el entrenamiento de la red. (En este caso ,se puede ver como la constante b desplaza a la función f a la izquierda por una cantidad b . El umbral es muy similar a un peso, excepto que tiene una entrada constante de 1). Por último, la entrada neta se evalua en la función de transferencia f que es una funcion no lineal y se encarga de acotar la entrada total (la suma de entradas) ui entre un rango determinado, para producir de salida un unico valor numerico escalar yi, que finalmente se transmite a multiples neuronas. Los nombres dados a estos tres procesos son: la función de peso, la función de entrada total y la función de transferencia.
La red multicapa tiene una capa oculta.
El funcionamiento de una red neurona artificial:
En la red se ingresa de datos la entrada y salida deseada para calcular la matriz de pesos y obtener una salida de la red, la cual despues se compara con la salida deseada que teoricamante debe ser igual a la salida de la red pero al restar la salida de la red menos la salida deseada se obtiene un error. Si este error es muy fuerte se vuelve a reajustar los pesos usando el algoritmo backpropagation el cual usa el error para recalcular una nueva matriz de pesos que obtenga menor error en la salida de la red. Luego con la salida de la red nueva se vuelve comparar y se calcula un nuevo error que si sigue muy fuerte se vuelve a recalcular con una nueva iteracion y asi se itera cuantas veces sea necesaria hasta afinar la salida de la red.
Ejemplo
Preguntas y respuestas del publico
El mecanismo de desicion de las salidas de las neuronas se obtiene entrenando a la misma con ejemplos de entrada y salidas deseadas.
Se memoriza las salidas y aprende a generalizar salidas para nuevas entradas no consideradas en su entrenamiento.
Neurona artificial.- Es un procesador de información basado en un modelo matemático que funciona con similitud a la neurona real o biologica del cerebro.
Memoria asociativa (hopfield model)
Es una red de neuronas interconectadas que reconoce cosas imperfectas comparandolo y lo asocia con un patron en su memoria. Ej: Una E, O escrita.
La interconexion entre neuronas se traduce en una matriz de pesos. wij donde 1 representa una conexion fuerte y -1 una conexion debil de la neurona j hacia la neurona i.
b: llamado umbral y es una constante que se adiciona al sumador para ayudar a mejorar el entrenamiento de la red.
CONCLUSIONES
·
Para lograr un buen resultado, se
debe entrenar la red neuronal con un mínimo de 30 patrones de entrada de cada letra
y número con diferentes tamaños y formas. Además para evitar mutilaciones y
huecos de los caracteres en el formato binario, se debe escribir con lapicero
tinta liquida de la misma caligrafía de la persona que escribió los caracteres.
También para mejorar el entrenamiento con la función train() es necesaria la
inclusión de ruido mediante funciones estocásticas de MATLAB.
·
Para evitar confusión de la red al
clasificar patrones de caracteres en el entrenamiento, es necesario limpiar
manchas y puntos no deseados (ruidos) usando la función bwareopen() además
recortar los campos de caracteres con la función imcrop().
·
Para tener como resultado un texto
en minúsculas, se usa la función lower() sobre la variable “palabra” en la
función salidaAtxt().
·
Se debe resolver la ambigüedad
entre el cero y la letra “O”.
·
Se debe resolver reconocer
espacios entre palabras con la función imcrop().
·
Se puede usar también la función patternnet()
para crear redes neuronales en el reconocimiento de patrones.
·
Los parámetros usados en la red
son 35 neuronas ocultas, 5 patrones con ruido de cada carácter, función de
entrenamiento “trainscg”, periodos de 1000, error de 0.0001, porque los
resultados obtenidos son buenos. Sin embargo debido a las limitaciones del
procesador de mi laptop, no se ha experimentado con periodo de 5000, error de
cero, función de entrenamiento ”trainrp” [14],
inicializar pesos con iw{1,1} y constante b{1}. [15]. No usar demasiadas
neuronas porque se sobrecarga la capacidad de generalización (predecir nuevos formas
de caracteres) de la red.
·
De los procedimientos de uso del
MATLAB se determina que la imagen a reconocer debe estar en formato monocromo,
el ángulo de inclinación de la imagen debe ser cero, el número de neuronas ocultas
máximo es una por cada carácter diferente. Además se deben considerar más
factores para el reconocimiento como: la profundidad del entrenamiento (número
de patrones de entrada) y el número de entrenamientos de la Red Neuronal.
·
Se puede escribir datos en una
ficha digital usando una tableta personal, pero el texto escrito no sirve para
formar una base de datos de archivo de texto.
·
En los procedimientos de llenado
de las fichas, la escritura de las letras a reconocer es tipo arial, mayúscula,
con trazos lentos, firmes, rectos. En mayúsculas porque es más legible y para
evitar los trazos curvos malos producto de una mala caligrafía.
1.1. RECOMENDACIONES
·
Se recomienda extender el programa
CARLOSICR con códigos que produzcan coordenadas de corte de imagen a la función
imcrop() para tener totalmente automatizado el proceso de reconocimiento de
caracteres.
·
Se recomienda comparar resultados
con otros programas como “neuron” (neuron software), el cual ha sido usado en
el programa RECAM. [5]
·
No pegarse a los bordes de los
campos de datos para no tener problemas en la etapa de segmentación de texto en
el desarrollo del programa.
·
Escribir con lapicero negro de
tinta líquida para evitar huecos en las letras de imagen binaria que reduzcan
el reconocimiento de los textos escaneados.
·
Se recomienda escanear en formato
de archivo de imagen TIF no en formato JPG, puesto que este último deteriora la
calidad original de la imagen por ser un formato comprimido que ocupa menos Kilobytes
de espacio.
·
Usar una PC con memoria RAM mínima
de 4 GB, porque el entrenamiento de la red con 35 neuronas ocultas usando la
función de entrenamiento “trainlm” lo necesita.
·
Para el reconocimiento de texto en
las fichas de catastro se recomienda utilizar el programa SmartZone (usa la
tecnología de redes neuronales), porque es un “software” entrenado para
múltiples casos de reconocimiento de caracteres escritos a mano.