R E C O N O C I M I E N T O D E P AT R O N E S ANTECEDENTES La capacidad de reconocer patrones ha sido considerada siempre como una de las características fundamentales de la inteligencia humana, en ese sentido, ha sido también una de las áreas de estudio de prácticamente todas las disciplinas que conforman la Ciencia Cognitiva. Así, en su papel más concreto y menos ambicioso en sus planteamientos que la Inteligencia Artificial, el Reconocimiento de Patrones se ha establecido como una disciplina relativamente independiente de aquélla, buscando siempre en otras áreas de conocimiento los modelos, explicaciones y herramientas que le permitan cumplir su cometido. Modernamente podemos distinguir varias corrientes o "enfoques" en el reconocimiento de patrones: el enfoque Estadístico, el Numérico, el Sintáctico, el LógicoCombinatorio, el de Redes Neuronales, etc. Todos ellos abordan la misma problemática: el Problema Universal de la Clasificación, desde diferentes posturas y con diferentes herramientas. A través de una revisión del estado del arte en sistemas de software relacionados con la disciplina de reconocimiento de patrones, encontramos gran cantidad de sistemas de reconocimiento especializados (procesamiento de imágenes, reconocimiento de voz, reconocimiento de caracteres, identificadores personales de seguridad, etc.), muchos de ellos con aplicaciones industriales o comerciales. Muy pocos, sin embargo, están orientados hacia la aplicación académica y prácticamente no existe ningún sistema de carácter general. DEFINICIÓN Reconocimiento de Patrones es una disciplina que estudia la asignación automática de objetos a clases. Estas clases pueden estar predeterminadas o no. El número de aplicaciones prácticas es muy extenso: lectura automática de caracteres manuscritos e impresos; reconocimiento de voz, caras, huellas digitales, firmas; identificación de partículas elementales; detección de fraude; segmentación de mercados, etc. Reconocimiento de Patrones es una área de la tecnología conocido como Aprendizaje de Maquinas (Machine Learning) o Aprendizaje Automático. El único propósito de este método es el clasificar un grupo de patrones conocido como conjunto de pruebas en dos o mas clases de categorías. Esto es logrado al calcular las categorías del conjunto en prueba comparándolo con un conjunto de entrenamiento (previo) o training set. Un clasificador dado mide la distancia entre varios puntos dados (compara), para saber cuales puntos son mas cercanos a la meta en un modelo parametizado Un esquema modular de un sistema de RP se muestra en la siguiente figura. Etapas de un sistema de reconocimiento de patrones. Este esquema no debe verse como los pasos a seguir en la construcción de un sistema de reconocimiento de patrones, sino más bien desde un punto de vista funcional: la entrada es un patrón natural y el resultado es una etiqueta. Además, no debe entenderse que todos los sistemas de reconocimiento de patrones deben incorporar todas estas unidades, ni siquiera que éstas deban estar tan claramente separadas. Se entiende que los componentes ya están diseñados y operativos APROXIMACIONES AL RECONOCIMIENTO DE PATRONES En la literatura pueden encontrarse diferentes aproximaciones a ese problema, motivadas por la diversidad de tareas de reconocimiento que pueden abordarse. Aproximación estadística. La aproximación más simple (y no por ello la menos eficiente) consiste en representar cada patrón mediante un vector de números, resultantes del muestreo y cuantificación (o binarización) de las señales externas (figura) y cada clase por uno o varios patrones prototipo. Dado que existe variabilidad en las medidas registradas, cada componente del vector es una variable aleatoria y cada uno de sus valores es una realización de esa variable aleatoria. Patrones de naturaleza temporal y espacial Con esta aproximación un patrón no es más que un punto en el espacio de representación de los patrones, que es un espacio de dimensionalidad determinada por el número de variables consideradas. Esta aproximación concluye que es razonable que los patrones pertenecientes a una misma clase estén cercanos en el espacio de representación mientras que aquellos que pertenezcan a clases diferentes deberían estar en diferentes regiones del espacio de representación. El estudio del conjunto apropiado de variables, la variabilidad de los patrones de una clase, las medidas de similaridad entre patrones y entre patrones y clases constituye el reconocimiento estadístico de patrones. Aproximación Sintáctica La aproximación estadística no considera el contexto, esto es, la relación entre diferentes patrones: en ocasiones, patrones complejos pueden descomponerse recursivamente en patrones más simples hasta llegar a componentes básicos (de forma similar a como un texto se descompone en párrafos, frases, palabras y finalmente en letras). Esta aproximación resulta muy adecuada para reconocimiento de voz, por ejemplo. Con esta aproximación, un patrón se describe en términos de sus elementos básicos (elementos terminales) y unas reglas sintácticas (gramática) que especifican cómo se pueden generar patrones válidos de una determinada clase. El problema se reduce ahora a responder si un determinado patrón pertenece al lenguaje generado por una gramática. Estas técnicas se conocen como reconocimiento sintáctico de patrones. APRENDIZAJE Y ADAPTACIÓN Casi todos los sistemas de reconocimiento de patrones son sistemas complejos y en ellos es posible no tener alguna suposición sobre lo que sería una meta al diseñar el sistema de clasificación. Por lo tanto y en un amplio sentido, cualquier método que incorpora información sobre un ejemplo o conjunto entrenamiento en el diseño del clasificador, necesariamente emplea algún tipo de aprendizaje, razón básica para considerar nociones sobre aprendizaje. Además al construir clasificadores es importante imponer algún tipo de generalidad para realizar el modelo, forma de modelo o forma de un clasificador y por lo cuál es necesario utilizar patrones de entrenamiento para resolver las incógnitas en los patrones del modelo. Este aprendizaje se refiere a algún tipo de algoritmo que ayude a reducir la cantidad de errores en la información para el entrenamiento. Existen varios tipos de aprendizaje: Aprendizaje Supervisado Un aprendizaje supervisado requiere disponer de un conjunto de patrones de los cuales se conoce su clase cierta. A este conjunto se le denomina conjunto de entrenamiento. Este tipo de entrenamiento se denomina entrenamiento supervisado y los clasificadores así obtenidos clasificadores supervisados. Disponer de un conjunto de entrenamiento supone que alguien se ha preocupado de etiquetar los patrones de ese conjunto. Esta tarea la suele realizar un experto en el campo en el que se va a realizar el reconocimiento y generalmente viene impuesto. Aprendizaje No Supervisado. El aprendizaje no supervisado se realiza a partir de un conjunto de patrones del que no se conoce su clase cierta. En ocasiones, ni siquiera se conoce el número de clases. Básicamente, se traduce en encontrar agrupamientos. El objetivo suele ser el de verificar la validez del conjunto de clases informacionales para una clasificación supervisada. Las técnicas utilizadas suelen denominarse métodos de agrupamiento o clustering. Aprendizaje Reforzado Este tipo de aprendizaje también es conocido como aprendizaje con la asistencia de un critico o editor. Esto quiere decir que aunque no existe una categoría sugerida, en cambio la categoría dada en un nuevo grupo de sugerencias puede interpretarse como correcta o incorrecta aunque específicamente no se señale ni el porqué ni el como de otro. Ejemplo: descripción de un proyecto de reconocimiento de patrones para un controlador en el Modelo Fisco de Violín Serafin, Smith y Thornburg proponen en [Serafin, Thornburg 01] un sistema de reconocimiento de patrones para invertir el Modelo Físico de la cuerda pulsado por un arco en el violín. El objetivo en este caso es estimar u optimizar los parámetros para el sonido óptimo del modelo de violín. En este ejemplo invertir el modelo físico significa recobrar los valores exactos en los parámetros de entrada de la forma de onda acústica en un violín tradicional. En este caso se trata de buscar una combinación óptima para obtener el Movimiento de Helmholtz. Por lo tanto en el paso de segmentación se utiliza análisis de espectro con la transformada de Fourier del Movimiento a que se quiere llegar más predicción lineal para retener las características del mismo en una envolvente espectral retenida en el dominio del tiempo. En el clasificador se utiliza un Gaussian para obtener la probabilidad dado que que quiero llegar al Movimiento Helmholtz óptimo indicado por el segmentador. e que esté equivocada. PATRONES Y RECONOCIMIENTO DE PATRONES Mucha de la información que se maneja en la vida real se presenta en la forma de patrones complejos: caras, textos escritos, enfermedades, música, flores, piezas industriales, etc., La psicología no ha encontrado un modelo concluyente Para la sicología, el problema central en el ámbito del reconocimiento de patrones el es estudio de los mecanismos por los que las señales externas estimulan los órganos sensoriales y se convierten en experiencias perceptuales significativas, o dicho de otra forma, cómo realizamos el etiquetado de estos estímulos tan complejos asignándoles un nombre. Estos procesos continúan siendo desconocidos en su mayor parte y no se ha encontrado un modelo concluyente sobre cómo nuestro sistema nervioso realiza este reconocimiento. No obstante, se admite que esta tarea debe realizarse siguiendo un esquema general como el que se detalla a continuación. Antes del reconocimiento, un patrón debe ser percibido por los órganos sensoriales. Además, el mismo patrón o alguno similar (de la misma clase) debe haberse percibido y recordado previamente. Finalmente, debe establecerse alguna correspondencia entre la percepción actual y lo recordado. En resumen, esta aproximación al reconocimiento de patrones se centra en el estudio del mecanismo de reconocimiento presente en los seres vivos. La tecnología impulsa el estudio El uso intensivo de ordenadores u otros dispositivos electrónicos en los último años ha impulsado el estudio y aplicación de técnicas de reconocimiento de patrones. En particular los dispositivos de adquisición de datos (sensores y transductores) y los convertidores A/D hacen que un ordenador pueda ser ``alimentado'' con datos (observaciones) del mundo real, utilizado para almacenar y recuperar información y para establecer la correspondencia entre observaciones pasadas y actuales (utilizando modelos adecuados, naturalmente). La aproximación al reconocimiento de patrones que adoptaremos es la del estudio de las teorías y técnicas de reconocimiento implementables en un sistema informático. En este sentido, las fuentes de esta área son las Matemáticas-fundamentalmente la Estadística- y la Inteligencia Artificial, en sus aproximaciones algorítmicas a la resolución de problemas. El objetivo final de un sistema de Reconocimiento de Patrones es el etiquetar de forma automática patrones de los cuales desconocemos su clase. Suponemos que el sistema dispone de un módulo de adquisición de datos y que se han seleccionado previamente las variables más significativas. El conjunto de clases En primer lugar debe establecerse claramente el objetivo final del sistema: ¿cuál es el conjunto de etiquetas? o dicho de otra forma ¿qué salidas debe proporcionar el sistema? Si suponemos que todos los patrones a reconocer son elementos potenciales de J clases distintas denotadas = { , ,..., , j = 1, 2,..., J, llamaremos } al conjunto de las clases informacionales. Conviene tener en cuenta que una clase informacional es la denominación que se da a una clase conocida y con significado. Usualmente se habla simplemente de clase prescindiendo del añadido “informacional” aunque esta distinción es muy importante a la hora de abordar las técnicas de agrupamiento. Resulta conveniente ampliar el conjunto incorporando una nueva clase, llamada la clase de rechazo. Así, se define la clase de rechazo ( ) como una clase que se asigna a todos los patrones para los que no se tiene una certeza aceptable de ser clasificados correctamente en alguna de las clases de . Se dice que = { , ,..., , } es el conjunto extendido de clases informacionales. El clasificador Una vez establecido el conjunto de clases se procede a la construcción del clasificador. Como puede intuirse, la construcción del clasificador no es una tarea trivial ni directa e involucra una serie de etapas: 1. La elección del modelo. 2. Aprendizaje (entrenamiento del clasificador). 3. Verificación de los resultados. Es muy importante señalar que estas etapas no deben verse de forma secuencial. Puede ocurrir que en un momento dado hay que volver atrás para replantearse alguno de los pasos dados, incluso el conjunto de clases informacionales. Un clasificador o regla de clasificación es una función d : P patrones X tal que para todo patrón X, d (X) definida sobre los . CAMPO DE APLICACIÓN Aunque la aplicabilidad de las técnicas resulta, a priori, muy amplia, no hay un método que sea la panacea. Diversas razones hacen que los sistemas de reconocimiento de formas operativas sean muy específicos del problema a resolver: 1. La naturaleza de los patrones: caracteres escritos, símbolos, dibujos, imágenes biomédicas, objetos tridimensionales, firmas, huellas dactilares, espectrogramas, imágenes de Teledetección, cromosomas, ... 2. Los requerimientos del sistema, especialmente en tiempo de respuesta hace que algunos métodos de reconocimiento, aún siendo superiores en éxito no sean aplicables en la práctica. 3. Factores económicos: un sistema equipado con diferentes sensores y equipos de procesamiento muy potentes pueden dar resultados muy satisfactorios pero no pueden ser asumidos por los usuarios. Estos factores hacen que un sistema adecuado para un problema sea inaplicable para otro, lo que posibilita el estudio y desarrollo de nuevas técnicas. Debe considerarse, además, que el reconocimiento de patrones no constituye un campo de estudio cerrado sino que las técnicas relacionadas con este campo pueden encontrase en otras ramas de la Ciencia y de la Tecnología. De ahí que encontrar una definición formal para un campo tan diversificado sea imposible. PROYECTOS E INSTITUCIONES DE INVESTIGACIÓN LABORATORIO DE PROCESAMIENTO DE IMÁGENES Las actividades principales de este laboratorio son: la formación de personal altamente calificado, el desarrollo de investigación teórica y aplicada de alto nivel en las áreas del procesamiento de imágenes y reconocimiento de patrones, la visión por computadora y la robótica. Realiza actividades de cooperación científica y tecnológica con el sector productivo. Actualmente, las investigaciones se encaminan en los aspectos teóricos y prácticos en las líneas de segmentación de imágenes, el reconocimiento de objetos 2D y 3D usando técnicas de indexado, redes neuronales e invariantes geométricos y topológicos, el reconocimiento de patrones abstractos usando el enfoque lógico combinatorio, la estructuración de espacios conceptuales, así como el control de servomecanismos usando información visual. Las aplicaciones incluyen el diagnóstico médico asistido por computadora, la segmentación de imágenes usando métodos variacionales, el reconocimiento de rostros, y el control de robots móviles usando información visual. Áreas de Investigación: Algoritmos para el reconocimiento de patrones. Control de sistemas electromecánicos Estructuración Conceptual de Espacios. Morfología Matemática. Multiresolución y Ondículas. Redes Neuronales. Redes Morfológicas Asociativas. Segmentación de Imágenes. Técnicas de indexado en Bancos de Objetos. Teoría de Testores. Topología Digital. Equipo y Software: Estaciones de trabajo SUN. Computadoras personales. Impresoras. Tarjetas de digitalización. Cámaras en blanco y negro. Software de proceso y adquisición de imágenes. Acceso a Internet. Proyectos de Investigación y Desarrollo: Herramientas para la estructuración conceptual de espacios. Modelos Matemáticos y Herramientas Computacionales para el Análisis de Datos. Herramientas basadas en objetos simbólicos. Resp.: M. en C. José Francisco Martínez Trinidad. Tel. 57296000. Ext. 56573. fmartine@cic.ipn.mx Selección y detección de características para reconocimiento de rostros. Resp.: Dra. Patricia Rayón Villela. Tel. 57296000. Ext. 56582. prayon@cic.ipn.mx Construcción y control Visual de robots móviles. Imágenes simbólicas. Resp.: Dr. Juan Luis Díaz de León. Tel. 57296000. Ext. 56582. jdiaz@cic.ipn.mx Detección y reconocimiento de rostros en imágenes y secuencias de imágenes. Herramientas para el tratamiento y análisis de imágenes médicas. Resp.: Dr. Juan Humberto Sossa Azuela. Métodos para segmentación de Imágenes. Resp.: Dr. Sergei Levachikine. Otros investigadores: Dr. Claudio Valenzuela. Tel. 57296000. Ext: 56551. valenzuc@cic.ipn.mx Recuperación de señales minúsculas en presencia de ruido fuerte. Resp. de DIPLAB: Dr. Humberto Sossa Azuela Tel.57296000, Ext. 56512. hsossa@cic.ipn.mx Sistema Multiagentes para la elaboración de modelos de objetos y su reconocimiento usando información de su apariencia. Resp.: DR. MATÍAS ALVARADO MENTADO. Tel.57296000, Ext. 56512. matias@cic.ipn.mx PROYECTO SHELL Objetivo: Diseñar y construir un software para reconocimiento de patrones desde el enfoque lógico-combinatorio que permita al usuario la definición, estructuración y solución de problemas a través de un lenguaje formal. Dicho lenguaje deberá tener la capacidad de expresar -o modelar- todas las condiciones de un problema de reconocimiento de patrones así como el procesamiento de los datos previo a la aplicación de algún algoritmo de reconocimiento. El objetivo de modelar el problema será lograr una plataforma estable que permita, de manera sencilla, aplicar a un mismo problema diversos algoritmos de reconocimiento o bien, el mismo algoritmo con diferentes parámetros para poder estudiar el efecto de éstos sobre el problema y los diferentes grados de precisión de las soluciones obtenidas. Desarrollo: Este proyecto se fundamenta en una metodología de modelado de cubrimientos desarrollada por Salvador Godoy y que permite construir estructuras que abarcan pácticamente todos los aspectos necesarios para modelar problemas de clasificación supervisados. El proyecto deberá realizar definiciones nuevas para completar la expresividad buscada y construir un ambiente adecuado para el estudio de problemas y algoritmos. Expectativas: Con este software se espera lograr tres condiciones fundamentales: 1. Una plataforma sólida y bien adecuada para el estudio y la investigación de problemas, herramientas y algoritmos de reconocimiento de patrones en el enfoque lógico-combinatorio. Este software servirá para apoyar cursos e investigación. 2. Un entorno de aplicación con la capacidad de crecer, mediante algoritmos nuevos programados en forma de DLL y comunicados a través de una interfaz estándar hacia el Shell. Esto permitirá que el software se pueda mantener actual al ritmo de los avances en la disciplina de reconocimiento de patrones. 3. Proporcionar una interfaz de comandos para otras aplicaciones, presumiblemente Reconocedores específicos (imágenes, substancias, etc) que podrán pre-procesar sus datos de entrada, generar una especificación en el lenguaje propio del Shell y emitirle comandos indicando qué tipo de algoritmo aplicar y con qué parámetros. Esta característica justificará plenamente el nombre de "Shell" al colocar a este programa como una capa subyacente para ser aprovechada por capas superiores con mayor grado de especialización. DISEÑO E IMPLEMENTACIÓN DE UNA RED NEURONAL BASADA EN EL RECONOCIMIENTO DE PATRONES Planteamiento y formulación del problema: Las redes neuronales artificiales emulan las redes neuronales biológicas y se utilizan para aprender estrategias de control observando la forma como una persona lo hace. Son sistemas que aprenden con ejemplos, es decir, que no requieren que la tarea a ejecutar se programe. También se utilizan para aprender a controlar un sistema aplicando entradas, evaluando la calidad de las respuestas para estas entradas, y ajustando la fórmula que genera las acciones de control para mejorar la respuesta del sistema. Las redes neuronales artificiales han demostrado su capacidad para resolver problemas donde el computo tradicional ha tenido gran dificultad durante años. Algunas aplicaciones exitosas de las redes neuronales son: Procesamiento de imagen y voz. Reconocimiento de patrones. Planeamiento, predicción, control y optimización de procesos. Un sistema neuronal puede ser simulado desarrollando un programa computacional, pero también se puede llegar al mismo punto empleando circuitos integrados, es así como surge la necesidad de encontrar los dispositivos adecuados que permitan identificar un carácter escrito utilizando redes neuronales. Justificación: La investigación propuesta busca, mediante la regla del perceptrón, entrenar una neurona con la que se obtendrá otra simulada que basa su funcionamiento en multiplicadores, sumadores y umbrales. Una neurona simulada simplemente añade una suma ponderada de sus entradas y permanece encendida mientras la suma de sus entradas se mantenga por encima del umbral. Lo anterior permitirá desarrollar un entrenador electrónico con neuronas simuladas para reconocer cierta regularidad en datos que dependerán del patrón establecido. Para lograr el cumplimiento de los objetivos de entrenamiento se acude al empleo de lenguajes de programación implementados en dispositivos electrónicos (PIC16F84) y etapas de adquisición de los datos a reconocer (sensores ópticos ). El resultado de este compendio de elementos implementados es el de entrenar una red neuronal para el reconocimiento de caracteres escritos por diferentes personas sobre una matriz de cinco por tres píxeles. La estructura de esta red dispone de un error permisible, de un número determinado de patrones de entrenamiento y unas salidas de la red asociadas con el carácter presente en la matriz. Así, la implementación de dispositivos utilizando el entrenamiento de neuronas que simulen el comportamiento “natural” de los humanos como es el reconocimiento de caracteres es de vital importancia para comprender el grado de complejidad que implica la simulación electrónica de estos comportamientos. Objetivos: Objetivo general Diseñar, implementar y entrenar una red neuronal artificial cuya aplicación se dará en el reconocimiento de un patrón determinado. Objetivos específicos Realizar una búsqueda bibliográfica actualizada acerca del estado del arte en las redes neuronales y los métodos utilizados para su modelación y entrenamiento. Diseñar un sistema que cumpla con las características necesarias para modelar una red neuronal artificial teniendo en cuenta que la aplicación a tratar es el reconocimiento de patrones. Desarrollar un software que permita tanto entrenar la red neuronal, para la aplicación prevista, como responder a las exigencias de la puesta en marcha del sistema. Comprobar la eficacia del sistema a través de la validación de los resultados obtenidos. CONCLUSIONES Desde el punto de vista de percepción el área de Reconocimiento de Patrones ofrece inquietudes por el lado sensorial en segmentación o sea reconocer un objeto o un fenómeno con una o varias características, como también en conectividad al relacionar diferentes características y en agrupamiento al mezclar patrones juntando formas para obtener objetos o palabras para lograr frases y oraciones. Es necesario la Clasificación de Patrones para acotar y / o a veces limitar datos generados por un sensor. De esta forma los sensores pueden ser utilizados en varios dominios incluyendo las artes y las ciencias. Esto se logra por medio de un ordenamiento de datos tomando muestras que hacen sentido y descartando las redundantes o las que son error. En convertidores análogo digital el ancho de banda a veces excede nuestras expectativas y por lo tanto es necesario encontrar un rango óptimo para el dominio de la aplicación en la que se esta trabajando. Por ejemplo en el caso del audio es practica común utilizar un filtro pasa altos para eliminar frecuencias por debajo de la escucha y de la misma manera con frecuencias por encima del rango humano con el filtro pasa bajos. Es de gran utilidad conocer los varios tipos de sensores y sus características para diseñar sistemas de clasificación y reconocimiento de patrones para que operen dentro de las normas y restricciones del mecanismo en el que se está trabajando. Por ejemplo si se está realizando una instalación audio visual es de gran utilidad entender la operación de transductores como cámaras, monitores, foto-sensores, etc... y los datos (señal) que ellos generan. Para un entendimiento óptimo de este campo se sugiere una familiarización en áreas de matemáticas avanzadas como álgebra lineal, probabilidad, teoría de decisiones (Bayes) y estadística. También se sugiere familiarización con algoritmos, programación y tratamiento de señal. BIBLIOGRAFÍA LIBROS Lampinen, J., Laakonsen, J, y Oja, E. Pattern Recognition, Capítulo 1 de Image Processing and Pattern Recognition. Editado por Leondes C.T., Academic Press. 1998. Fukunaga, K. Introduction to Statistical Pattern Recognition. Academic Press. 1990. Hand, D.J. Discrimination and Classification. John Wiley & Sons. 1981. PÁGINAS http://www.ugr.es/depar/ccia/rf/patrones/tema2.1 http://www.cic.ipn.mx/index_inv.htm http://redii.cic.ipn.mx/2000/multiagentes/ReporteREDII.html