jueves, 13 de diciembre de 2007

RECONOCIMIENTOS DE PATRONES Y REDES NEURONALES

INTRODUCCIÓN

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 [Duda et al. 01].
El reconocimiento de patrones, pretende obtener a partir de una serie de datos, una "clase" entre un conjunto de "clases" arbitrarias. Esto es, si por ejemplo intentamos diferenciar los colores rojo y naranja según una serie de parámetros de que dispongamos (por ejemplo, variables que representen la intensidad del color), estaremos utilizando una función que convierte los datos de entrada en miembros de una de las dos clases posibles en nuestro modelo simplificado (rojo o naranja). Si tuviéramos dos parámetros X e Y (representables por tanto en una gráfica típica de dos dimensiones), podríamos trazar una frontera: una línea que sirviera como división del espacio en dos, obteniendo entonces dos clases distintas. En este modelo tremendamente sencillo, lineal, usaríamos una ecuación de la forma y = ax + b para la función de
conversión utilizada.

Las redes neuronales como su nombre lo indica pretenden imitar a pequeñísima escala la forma de funcionamiento de las neuronas que forman el cerebro humano. Todo el desarrollo de las redes neuronales tiene mucho que ver con la neurofisiología, no en vano se trata de imitar a una neurona humana con la mayor exactitud posible. Entre los pioneros en el modelado de neuronas se encuentra Warren McCulloch y Walter Pitts. Estos dos investigadores propusieron un modelo matemático de neurona. En este modelo cada neurona estaba dotada de un conjunto de entradas y salidas. Cada entrada está afectada por un peso. La activación de la neurona se calcula mediante la suma de los productos de cada entrada y la salida es una función de esta activación. La principal clave de este sistema se encuentra en los pesos de las diferentes entradas. Como se ha visto, las entradas son modificadas por el peso y las salidas son función de estas modificaciones. Esto nos lleva a concluir que los pesos influyen de forma decisiva en la salida y por lo tanto pueden ser utilizados para controlar la salida que se desea.


RECONOCIMIENTO DE PATRONES

El reconocimiento de patrones, también llamado lectura de patrones, identificación de figuras y reconocimiento de formas es el reconocimiento de patrones en señales. No sólo es un campo de la informática sino un proceso fundamental que se encuentra en casi todas las acciones humanas.
El punto esencial del reconocimiento de patrones es la clasificación: se quiere clasificar un señal dependiendo de sus características. Señales, características y clases pueden ser de cualquiera forma, por ejemplo se puede clasificar imágenes digitales de letras en las clases «A» a «Z» dependiente de sus píxeles o se puede clasificar ruidos de cantos de los pájaros en clases de órdenes aviares dependiente de las frecuencias.
El objetivo es clasificar patrones con base en un conocimiento a priori o información estadística extraída de los patrones. Los patrones a clasificar suelen ser grupos de medidas u observaciones, definiendo puntos en un espacio multidimensional apropiado.
Un sistema de reconocimiento de patrones completo consiste en un sensor que recoge las observaciones a clasificar, un sistema de extracción de características que transforma la información observada en valores numéricos o simbólicos, y un sistema de clasificación o descripción que, basado en las características extraídas, clasifica la medición.
La clasificación utiliza habitualmente uno de las siguientes procedimientos: clasificación estadística (o teoría de la decisión), clasificación sintática (o estructural). El reconocimiento estadístico de patrones está basado en las características estadísticas de los patrones, asumiendo que han sido generados por un sistema probabilístico. El reconocimiento estructural de patrones está basado en las relaciones estructurales de las características.
Para la clasificación se puede usar un conjunto de aprendizaje, del cual ya se conoce la clasificación de la información a priori y se usa para entrenar al sistema, siendo la estrategia resultante conocida como aprendizaje supervisado. El aprendizaje puede ser también no supervisado, el sistema no tiene un conjunto para aprender a clasificar la información a priori, sino que se basa en cálculos estadísticos para clasificar los patrones.
El reconocimiento de patrones es más complejo cuando se usan plantillas para generara variantes. Por ejemplo, en castellano, las frases a menudo siguen el patrón "sujeto-predicado", pero se requiere cierto conocimiento de la lengua para detectar el patrón. El reconocimiento de patrones se estudia en muchos campos, incluyendo psicología, etología, informática y procesado digital de la señal.


Reconocimiento de Patrones

PERCEPCIÓN AUTOMÁTICA (MACHINE PERCEPTION)
Suena lógico el buscar una forma para diseñar y construir mecanismos que puedan reconocer patrones porque de una forma u otra es uno de los mecanismos naturales que utilizamos a diario y gracias a nuestros sentidos. La automatización o mecanización de estos procesos nos ayudaría a realizar labores repetitivas (``sensitivas'' ) en las que usamos nuestros sentidos cambiando, el tacto, el olfato o el oído por sensores que ayudarían a escoger o categorizar objetos quizás en una forma más práctica y con menos errores. En el caso de la música o de las artes nos ayudaría significativamente en el proceso de interacción. Actualmente existen aplicaciones que van desde reconocimiento de voz automatizado, reconocimiento de huellas digitales, reconocimiento de caracteres ópticos, identificación de sucesiones de ADN y mucho más.

Sin embargo existen numerosas restricciones en la traducción del mundo humano al de la maquina imponiendo problemas de cuantificación, cualificación y representación en campos tan diversos o tan obvios como por ejemplo en los campos de reconocimiento visual o de voz. Para sobrepasar estas barreras, investigaciones en el área de aprendizaje automático ilustran sobre como muchas de estas limitaciones podrían ser resueltas gracias a un conocimiento previo o anticipado del problema y sobre todo de como nuestra propia mente o naturaleza humana analiza, sintetiza y resuelve las incógnitas relevantes en el caso de la vida real. Por lo tanto es evidente analizar este fenómeno en la naturaleza y traducirlo en forma de algoritmos para poder diseñar sistemas especializados a una tarea de reconocer patrones específicos. De aquí que las artes jueguen un papel primordial en este campo por lo que están basadas en los sentidos del cuerpo humano.

Instalación

Para ilustrar este caso vale la pena imaginarnos el diseño de un sistema especifico para reconocer boletas o tarjetas para entrar a una instalación de un museo. De acuerdo al color o la forma de la boleta, los artefactos de la instalación reaccionarían de diferentes maneras. Para esto se necesita un foto sensor ajustado a un rango específico de colores que son nuestras categorías. En la calibración del sensor habría que tener un intervalo amplio para aceptar opciones como el caso de que algún visitante curioso quisiera introducir varias o un grupo de tarjetas en lugar de una sola. También es claro el caso de la tarjeta vieja, de la adulterada como también el de la tarjeta falsa. Una vez leídas y entradas, las categorías son clasificadas en grupos que son almacenados en un algoritmo llamado conjunto de entrenamiento o conjunto de aprendizaje donde además están acompañados por otro grupo de reglas con las que se van a comparar los patrones que percibe la instalación por medio de sus sensores. De acuerdo a la comparación entre la clasificación de patrones obtenidos por el sensor y con las reglas clasificación la instalación responde al visitante.

PASOS PARA RECONOCIMIENTO DE PATRONES EN NUESTRA INSTALACIÓN

Característica En este paso se identifican los segmentos o partes que hacen diferente un elemento (objeto) de otro al explorar un patrón. En nuestro caso de la instalación los elementos para clasificar son el color y la forma. A veces no es trivial el proceso de clasificación porque la forma o el color podrían ser difusos añadiendo ruido, corrupción o inconsistencias a la señal digital como podría ser una boleta vieja o utilizada. Para optimizar el proceso de identificación de una característica podríamos hacer análisis de la forma de la boleta como también análisis de espectro para determinar colores como también densidades de pixels para averiguar relieves. En este caso es mejor restringidos a un mundo de dos dimensiones
Modelo Dado que hay diferencias entre las diferentes tarjetas podríamos pensar en cada ``tipo'' como un modelo que posee diferentes descripciones que serían expresadas en formas matemáticas (geometría o álgebra). La meta del modelo es hipotetizar cada clase, con sus cualidades procesar los datos recogidos por el sensor, eliminar errores, ruido o defectos por cada patrón percibido y generar un modelo que describa exactamente la semántica del patrón.
Pre Procesamiento y Segmentación
Este paso es necesario para simplificar las siguientes operaciones en el reconocimiento sin que se pierda la información relevante al modelo de patrón. En particular, se puede utilizar una operación de segmenta miento en la que se extraerían todas las posibles características o propiedades de cada tarjeta. Esta información sería posteriormente enviada a un sistema de extracción de características cuyo propósito es el de reducir los datos redundantes los errores y conservar los aciertos como características típicas o propiedades

ELEMENTOS EN SISTEMAS DE RECONOCIMIENTO DE PATRONES

También podemos definir Reconocimiento de Patrones como el acto de tomar datos sin ningún sentido y clasificarlos de acuerdo a una acción basada en las categorías de un patrón dado o previamente analizado. Siendo así las operaciones en un sistema de reconocimiento son las siguientes (ver: figura 3):
Sensores Los sensores son algún tipo de transductor o mecanismo que traduce algún tipo de energía normalmente mecánica en diferencias de voltaje. Cada valor o diferencia es un dato y dependen o del tiempo o del espacio. Las dificultades en utilización o diseño de sistemas con sensores dependen de las características y las limitaciones del sensor, su ancho de banda, resolución, sensibilidad, distorsión, radio de señal y ruido, latencia, etc...
Ejemplos de transductores típicos podrían ser una cámara, un micrófono, un alto parlante, termómetros, barómetros, sensores de flexibilidad, piezzos, sonares, infrarrojos, proximidad y muchos otros.



Segmentación y Agrupamiento

La operación de segmentación ocurre cuando el sistema determina o que un elemento, objeto o muestra finaliza y da comienzo a otro. Los patrones individuales deben ser segmentados y focalizados. Si se ha identificado un objeto como tarjeta, luego se puede proceder a analizar su color, forma y posteriormente su validez. Es necesario saber cuando pasamos de una tarjeta a otra.
Muy relacionado a la segmentación está el problema de agrupamiento de las diferentes partes partes en un un objeto compuesto (i.e. carro, modelo, color, cilindraje, etc...). Para esto es necesario tener varios sistemas de extracción de características y luego definir varias de sus combinaciones.

Elementos Extracción de Características

La meta del extractor es caracterizar un objeto con medidas o cualidades cuyos ``valores'' tienden a ser similares. Para objetos en la misma categoría las diferencias son mínimas y por lo tanto las características son invariables y poco relevantes a cambios en datos leídos por el sensor. Sin embargo una categoría de tarjetas pude contener tarjetas de varios tamaños, varias formas o geometría y podría ser leída al revés. En este caso el extractor debería estar entrenado para casos similares para no obtener error.
Clasificación
El objetivo en la operación de clasificación es utilizar un ``vector'' con las características provistas por el extractor para asignar el objeto (patrón) de la entrada a una categoría. En muchos casos este paso de clasificar es lejanamente perfecto y por ende se convierte en un trabajo en el que se averigua la probabilidad matemática de cada una de las categorías. Esto quiere decir en nuestro ejemplo de la instalación de museo que de antemano podríamos saber el numero de tarjetas que se han distribuido con diferentes colores y características. En este caso la clasificación se simplificaría en predecir la siguiente tarjeta una vez que se han leído varias tarjetas o un grupo de tarjetas.
Procesamiento a Posteriori
Un clasificador raramente existe al vacío, sin embargo en muchos casos es utilizado para recomendar decisiones y acciones que dependen de un costo o riesgo particular. En el procesamiento a posteriori se utiliza la descarga o resultado del clasificador para recomendar una acción. En teoría esta etapa produce la tasa de aciertos o errores y califica al clasificador. Por lo tanto y en este sentido el objetivo del post procesador es buscar un mínimo de errores y fallas.

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.
En el aprendizaje supervisado una especie de profesor suministra una marca o costo para cada patrón en el conjunto de entrenamiento y también busca en reducir la suma de estos costos.
Aprendizaje no Supervisado.
En el aprendizaje no supervisado no hay un profesor explicito pero el sistema realiza agrupamientos en forma natural sobre los patrones de entrada. Lo natural puede ser definido tanto implícitamente como explícitamente dentro del sistema de agrupación y es dado por un conjunto particular de patrones o funciones de costo, los diferentes algoritmos que generan agrupaciones también generan agrupaciones de patrones diferentes.


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 que esté equivocada.

REDES NEURONALES

Las redes neuronales como su nombre lo indica pretenden imitar a pequeñísima escala la forma de funcionamiento de las neuronas que forman el cerebro humano. Todo el desarrollo de las redes neuronales tiene mucho que ver con la neurofisiología, no en vano se trata de imitar a una neurona humana con la mayor exactitud posible. Entre los pioneros en el modelado de neuronas se encuentra Warren McCulloch y Walter Pitts. Estos dos investigadores propusieron un modelo matemático de neurona. En este modelo cada neurona estaba dotada de un conjunto de entradas y salidas. Cada entrada está afectada por un peso. La activación de la neurona se calcula mediante la suma de los productos de cada entrada y la salida es una función de esta activación. La principal clave de este sistema se encuentra en los pesos de las diferentes entradas. Como se ha visto, las entradas son modificadas por el peso y las salidas son función de estas modificaciones. Esto nos lleva a concluir que los pesos influyen de forma decisiva en la salida y por lo tanto pueden ser utilizados para controlar la salida que se desea.
En realidad cuando se tienen interconectadas muchas de estas neuronas artificiales lo que se hace inicialmente es entrenar el sistema. El entrenamiento consiste en aplicar unas entradas determinadas a la red y observar la salida que produce. Si la salida que produce no se adecua a la que se esperaba, se ajustan los pesos de cada neurona para interactivamente ir obteniendo las respuestas adecuadas del sistema. A la red se le somete a varios ejemplos representativos , de forma que mediante la modificación de los pesos de cada neurona , la red va "aprendiendo".

LA NEURONA BIOLÓGICA

A finales del siglo XIX se logró una mayor claridad sobre el trabajo del cerebro debido a los trabajos de Ramón y Cajal en España y Sherrington en Inglaterra. El primero trabajó en la anatomía de las neuronas y el segundo en los puntos de conexión de las mismas o sinapsis. Se estima que en cada milímetro del cerebro hay cerca de 50.000 neuronas, conteniendo en total más de cien mil millones de neuronas y sinapsis en el sistema nervioso humano.

La Neurona

El tamaño y la forma de las neuronas es variable, pero con las mismas subdivisiones que muestra la figura. Subdividiéndose así en tres partes:
1. El cuerpo de la neurona.
2. Ramas de extensión llamadas dendritas para recibir las entradas.
3. Un axón que lleva la salida de la neurona a las dendritas de otras neuronas.
El cuerpo de la neurona o Soma contiene el núcleo. Se encarga de todas las actividades metabólicas de la neurona y recibe la información de otras neuronas vecinas a través de las conexiones sinápticas (algunas neuronas se comunican solo con las cercanas, mientras que otras se conectan con miles).
Las dendritas, parten del soma y tienen ramificaciones. Se encargan de la recepción de señales de las otras células a través de conexiones llamadas sinápticas. Si pensamos, desde ahora, en términos electrónicos podemos decir que las dendritas son las conexiones de entrada de la neurona.
El axón es la "salida" de la neurona y se utiliza para enviar impulsos o señales a otras células nerviosas. Cuando el axón está cerca de sus células destino se divide en muchas ramificaciones que forman sinapsis con el soma o axones de otras células. Esta unión puede ser "inhibidora" o "excitadora" según el transmisor que las libere. Cada neurona recibe de 10.000 a 100.000 sinapsis y el axón realiza una cantidad de conexiones similar.
La transmisión de una señal de una célula a otra por medio de la sinapsis es un proceso químico. En el se liberan substancias transmisoras en el lado del emisor de la unión. El efecto es elevar o disminuir el potencial eléctrico dentro del cuerpo de la célula receptora.





Si su potencial alcanza el umbral se envía un pulso o potencial de acción por el axón. Se dice, entonces, que la célula se disparó. Este pulso alcanza otras neuronas a través de la distribuciones de los axones.
Una neurona se puede comparar con una caja negra compuesta por varias entradas y una salida. La relación de activación entre la salida y la entrada, o en términos circuitales o de teoría de control, la función de transferencia se encuentra en la figura 2.

FUNCIÓN DETRANSFERENCIA DE UNA NEURONA

La variable f es la frecuencia de activación o emisión de potenciales y u es la intensidad del estímulo del soma.
La Neurona Artificial.
Un circuito eléctrico que realice la suma ponderada de las diferentes señales que recibe de otras unidades iguales y produzca en la salida un uno o un cero según el resultado de la suma con relación al umbral o nivel de disparo, conforma una buena representación de lo que es una
neurona artificial.

La función de transferencia para la activación o disparo de la neurona puede ser de umbral lógico (figura 4ª) o de limitación dura (figura 4b) o de función sigmoidal (tipo s) (figura 4c). W representa el peso o ponderación de la conexión a través de una entrada.



Funciones de transferencia o activación
De una Neurona Artificial
En particular, la función sigmoidal se define así:

La neurona artificial es un dispositivo eléctrico que responde a señales eléctricas. La respuesta la produce el circuito activo o función de transferencia que forma parte del cuerpo de la neurona. Las "dendritas" llevan las señales eléctricas al cuerpo de la misma. Estas señales provienen de sensores o son salidas de neuronas vecinas. Las señales por las dendritas pueden ser voltajes positivos o negativos; los voltajes positivos contribuyen a la excitación del cuerpo y los voltajes negativos contribuyen a inhibir la respuesta de la neurona
La Red Neuronal Biológica

El sistema de neuronas biológico está compuesto por neuronas de entrada (sensores) conectados a una compleja red de neuronas "calculadoras" (neuronas ocultas), las cuales, a su vez, están conectadas a las neuronas de salidas que controlan, por ejemplo, los músculos. La figura 6 muestra un esquema conceptual.

Estructura neuronal

Los sensores pueden ser señales de los oídos, ojos, etc. Las respuestas de las neuronas de salida activan los músculos correspondientes. En el cerebro hay una gigantesca red de neuronas "calculadoras" u ocultas que realizan la computación necesaria. De esta manera similar, una red neuronal artificial debe ser compuesta por sensores del tipo mecánico o eléctrico.

REDES NEURONALES ARTIFICIALES (ARTIFICIAL NEURAL NETWORKS (ANN))

Supervisado.- mediante este tipo se introduce a la red una serie de patrones de entrada y salida . La red es capaz de ajustar los pesos con el fin de memorizar la salida deseada
No supervisado.- aquí la red responde clasificando los patrones de entrada en función de las características mas adecuadas de cada uno
Autosupervisado.- en este tipo la propia red corrige los errores en la interpretación a través
de una realimentación.

El entrenamiento de la red es muy importante ya que servirá para que posteriormente la respuesta del sistema sea la adecuada. Si nos fijamos un poco eso tiene mucho que ver con el aprendizaje humano. Cuando a un niño se le ordena coger un vaso , empieza moviendo el brazo de forma cuasi-aleatoria hasta que choca con el vaso y lo presiona con sus dedos. La próxima vez que se le ordene al niño, éste alcanzará el vaso con mayor soltura y precisión . Este mismo modelo se ha ensayado en redes neuronales de características similares a las del niño. Una vez que el brazo mecánico choca con la pieza y memoriza la secuencia , en posteriores ocasiones al brazo le cuesta menos realizar la misma operación se dice entonces que el sistema adquirió experiencia.

En conclusión las redes neuronales se orientan a desarrollar máquinas o sistemas inteligentes capaces de simular, desarrollar y optimizar muchas de las funciones de un ser humano así como también la investigación científica ya que pueden hacer cosas que el hombre por sus limitaciones físicas no puede realizar.

CLASIFICACIÓN DE LAS ANN

Teniendo en cuenta estas ocho componentes básicas de toda red neuronal, los distintos modelos de red neuronal pueden clasificarse de acuerdo con cuatro criterios básicos (Hilera y Martínez, 1995): (1) la naturaleza de las señales de entrada y salida, (2) la topología de la red, (3) el mecanismo de aprendizaje que utilizan y (4) el tipo de asociación de las señales de entrada y salida y la forma de representar estas señales. Las distintas posibilidades de presentarse estos aspectos junto con las distintas funciones de activación y transferencia nos permiten la clasificación de los distintos modelos.

De Acuerdo Con Su Naturaleza

De acuerdo con la naturaleza de las señales de entrada y de salida podemos clasificar las redes neuronales en analógicas, discretas (generalmente, binarias) e híbridas:
Las redes analógicas procesan datos de entrada de naturaleza analógica, valores reales continuos, habitualmente acotados y usualmente en el compacto [-1,1] o en el [0,1], para dar respuestas también continuas. Las redes analógicas suelen presentar funciones de activación continuas, habitualmente lineales o sigmoides. Entre estas redes neuronales destacan las redes de Backpropagation , la red continua de Hopfield, la de Contrapropagación, la Memoria Lineal Asociativa, la Brain-State-in-Box, y los modelos de Kohonen (mapas auto-organizados (S.O.M.)y Learning Vector Quantizer, (L.V.Q.) .
Las redes discretas (binarias) procesan datos de naturaleza discreta, habitualmente {0,1}, para acabar emitiendo una respuesta discreta. Entre las redes binarias destacan la Maquina de Boltzman, la Máquina de Cauchy, la red discreta de Hopfield, el Cognitrón y el Neogognitrón.
Las redes híbridas, procesan entradas analógicas para dar respuestas binarias, entre ellas destacan el Perceptrón, la red Adaline y la Madaline.

De Acuerdo Con Su Topología

Por lo que hace a la topología de la red, las redes pueden clasificarse de acuerdo con el número de capas o niveles de neuronas, el número de neuronas por capa y el grado y tipo de conectividad entre las mismas. La primera distinción a establecer es entre las redes Monocapa y las Multicapa.
Las redes Monocapa sólo cuentan con una capa de neuronas, que intercambian señales con el exterior y que constituyen a un tiempo la entrada y salida del sistema. En las redes Monocapa (red de Hopfield o red Brain-State-in-Box, máquina de Boltzman, máquina de Cauchy), se establecen conexiones laterales entre las neuronas, pudiendo existir, también conexiones autorrecurrentes (la salida de una neurona se conecta con su propia entrada), como en el caso del modelo Brain-State-in Box.
Las redes Multicapa disponen de conjuntos de neuronas jerarquizadas en distintos niveles o capas, con al menos una capa de entrada y otra de salida, y, eventualmente una o varias capas intermedias (ocultas).
Normalmente todas las neuronas de una capa reciben señales de otra capa anterior y envían señales a la capa posterior (en el sentido Entrada - Salida). A estas conexiones se las conoce como conexiones hacia delante o feedforward. Si una red sólo dispone de conexiones de este tipo se la conoce como red feedforward. Sin embargo, puede haber redes en las que algunas de sus neuronas presenten conexiones con neuronas de capas anteriores, conexiones hacia atrás o feedback. En tal caso hablaremos de una red feedback o interactiva. Entre las primeras destacan los distintos modelos de Kohonen, aunque presentan conexiones laterales y autorrecurrrentes, el Perceptrón (multicapa) o M.L.P., las redes Adaline y Madaline, la Memoria Lineal Adaptativa y las Backpropagation.
Entre las segundas debemos mencionar el Cognitrón y el Neocognitrón, junto con los modelos de Resonancia y las máquinas multicapa de Boltzman y Cauchy.
Las redes neuronales se clasifican según su arquitectura:
capa de entrada Capa de salida
Capa oculta

ARQUITECTURA RBF

Entrada de patrones



ARQUITECTURA FEEDFORWARD

Frecuentemente se habla en la artitectura de lo que sxon las capas ocultas, las definiremos como las capas intermedias entre al capa de salida y la capa de entreda; recuerde que el toolbox de matlab trabaja solo con capas ocultas.








CONCLUSIONES

· 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.

· Para un entendimiento óptimo de este campo este autor sugiere 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.

RECOMENDACIONES

· 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.

· 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.






martes, 11 de diciembre de 2007

VISION ARTIFICIAL

vision artificial
INTRODUCCION

En el año 1955 Herbert Simon, el físico Allen Newell, uno de los padres de la IA actual, y J.C. Shaw, programador de la RAND Corp. y compañero de Newell, desarrollan el primer lenguaje de programación orientado a la resolución de problemas de la IA, el IPL-11. Un año más tarde estos tres científicos desarrollan el primer programa de IA al que llamaron "Logic Theorist", el cual era capaz de demostrar teoremas matemáticos. Este programa demostró 38 de los 52 teoremas del segundo capítulo de "Principia Mathematica" de Russel y Whitehead, uno de ellos incluso de manera más elegante a la propuesta por los autores.
Los centros de investigación fundamentales para la IA durante sus primeros años, de 1956 a 1963, fueron la Universidad Carnegie Mellon, el Massachusetts Institute of Technologie (o MIT), la Universidad de Stanford e IBM, siendo los temas de investigación fundamentales el desarrollo de heurísticas y el aprendizaje de máquina.
En 1957 Newell y Simon continúan su trabajo con el desarrollo del GPS o General Problems Solver. GPS era un sistema orientado a la resolución de problemas; a diferencia del "Logic Theorist", el cual se orientó a la demostración de teoremas matemáticos, GPS no estaba programado para resolver problemas de un determinado tipo, razón a la cual debe su nombre.
En la década del 60 se comienza en el MIT el estudio de la visión artificial, lo cual implica no solo captar imágenes a través de una cámara, sino también la comprensión, por parte del ordenador, de lo que estas imágenes representan. Un resultado importante en este trabajo lo constituye el "mundo de micro-bloques", en el cual un robot era capaz de percibir un conjunto de bloques sobre una mesa, moverlos y apilarlos; el éxito se debió a los investigadores Larry Roberts, Gerald Sussman, Adolfo Guzman, Max Clowes, David Huffman, David Waltz, Patrick Winston, y Berthold Horn.

VISIÓN ARTIFICIAL

La Visión artificial, también conocida como Visión por Computador (del inglés Computer Vision) o Visión técnica, es un subcampo de la inteligencia artificial. El propósito de la visión artificial es programar un computador para que "entienda" una escena o las características de una imagen.

Esquema de relaciones entre visión por computadora y otras áreas afines.
Los objetivos típicos de la visión artificial incluyen:
La detección, segmentación, localización y reconocimiento de ciertos objetos en imágenes (por ejemplo, caras humanas).
La evaluación de los resultados (ej.: segmentación, registro).
Registro de diferentes imágenes de una misma escena u objeto, i.e., hacer concordar un mismo objeto en diversas imágenes.
Seguimiento de un objeto en una secuencia de imágenes.
Mapeo de una escena para generar un modelo tridimensional de la escena; tal modelo podría ser usado por un robot para navegar por la escena.
Estimación de las posturas tridimensionales de humanos.
Búsqueda de imágenes digitales por su contenido.
Estos objetivos se consiguen por medio de reconocimiento de patrones, aprendizaje estadístico, geometría de proyección, procesado de imágenes, teoría de gráficos y otros campos. La visión artificial cognitiva está muy relacionada con la psicología cognitiva y la computación biológica.

Visión Artificial aplicada al Sistema Visual Humano

Cuando la retina está dañada o no funciona bien, los fotorreceptores dejan de funcionar, pero eso no quiere decir que toda la estructura del Sistema Visual Humano no pueda seguir funcionando. Por ello hay una parte de científicos que están desarrollando microchips de silicio que puedan dotar de visión artificial a aquellas personas a las que no les funcionan los fotorreceptores.
Como ya sabemos, la información captada por los fotorreceptores se transmite a las células ganglionales, donde se interpreta y se manda al cerebro a través del nervio óptico. Existen enfermedades que afectan a estas células como la tetignosis pigmentaria o la DMAE, que dejan inoperativos los fotorreceptores pero no dañan las células ganglionales o el nervio óptico, con lo cual el problema no es que la información no puede llegar al cerebro, sino que no se puede captar. En estos casos se pueden desarrollar unos conos y bastones artificiales.
Los requisitos de los microchips para que cumpla la función de los fotorreceptores son:
Que sean lo suficientemente pequeños como para implantarlos en el ojo.
Que tengan una fuente de abastecimiento de energía continua.
Que no causen rechazo, es decir,que sean biocompatibles con los tejidos del ojo.
Uno de los micros que se ha desarrollado con éxito por el momento es un dispositivo de 2mm de diámetro y fino como un pelo humano. Contiene 3500 células solares microscópicas que imitan a los bastones y los conos y convierten la luz en pulsos eléctricos. Se abastece de energía solar, con lo que se evitan cables y baterías.
Microscopía digital
Producción de la imagen digital en microscopía óptica
La digitalización de una imagen electrónica o de video capturada por un microscopio óptico permite obtener un incremento espectacular en las posibilidades de ampliar características, extraer información o modificar la imagen. En comparación con el mecanismo tradicional de capturación de imágenes, la fotomicrografía en película, la digitalización de la imagen y el proceso de postadquisición/recuperación permiten una modificación reversible de la imagen como matriz ordenada de enteros fundamentalmente libre de ruido más que una mera serie de variaciones análogas en color e intensidad. Esta sección trata sobre diversos temas de actualidad acerca de la adquisición y procesamiento de imágenes para microscopía óptica.
Propiedades básicas de las imágenes digitales
Las imágenes de señal continua se reproducen mediante dispositivos electrónicos analógicos que registran los datos de la imagen con precisión utilizando varios métodos, como una secuencia de fluctuaciones de la señal eléctrica o cambios en la naturaleza química de la emulsión de una película, que varían continuamente en los diferentes aspectos de la imagen. Para procesar o visualizar en el ordenador una señal continua o una imagen analógica, se debe convertir primero a un formato comprensible para el ordenador o formato digital. Este proceso se aplica a todas las imágenes, independientemente de su origen, complejidad y de si son en blanco y negro (escala de grises) o a todo color. Una imagen digital se compone de una matriz rectangular (o cuadrada) de píxeles que representan una serie de valores de intensidad ordenados en un sistema de coordenadas (x,y).

Detectores de imagen electrónicos

La gama de métodos de detección de luz y la amplia variedad de dispositivos de imagen que están disponibles actualmente para el microscopista hacen que su selección sea difícil y a menudo confusa. Con este documento se pretende ofrecer ayuda para la comprensión de conceptos básicos sobre la detección de luz y proporcionar una guía para la selección del detector electrónico adecuado (CCD o sistema de videocámara) con aplicaciones específicas de microscopía óptica.
Fundamentos de la producción de imágenes en vídeo
Las imágenes ópticas producidas en el microscopio pueden ser capturadas utilizando bien técnicas de película tradicionales, digitalmente con detectores electrónicos como un chargecoupled device (CCD), o con una cámara de tipo tubo. Las cámaras son a menudo el recurso más apropiado cuando se deben grabar sucesos dinámicos en tiempo real.
Introducción a los sensores de imagen CMOS
Los sensores de imagen CMOS se han diseñado con la capacidad de integrar un número de funciones de procesamiento y control directamente en el circuito integrado del sensor, lo que se extiende más allá de la tarea fundamental de recopilación de fotones. Estos nuevos aspectos incluyen generalmente lógica temporal, control de exposición, conversión de analógico a digital, obturación, balance de blancos, ajuste del aumento y algoritmos de procesamiento inicial de la imagen. Se están introduciendo sensores de imagen CMOS económicos en el campo de la microscopía óptica en instrumentos para fines educativos que combinan una calidad óptica aceptable con paquetes de software de control e imagen fáciles de usar.
Conceptos básicos sobre procesamiento digital de la imagen
El procesamiento digital de la imagen permite una modificación reversible de la imagen prácticamente libre de ruido en forma de una matriz de enteros en vez de las clásicas manipulaciones en el cuarto oscuro o filtración de voltajes dependientes del tiempo necesarios para las imágenes analógicas y señales de video. Incluso aunque muchos algoritmos de procesamiento de imágenes son extremadamente potentes, el usuario medio a menudo aplica operaciones a imágenes digitales sin tener en cuenta los principios subyacentes tras dichas manipulaciones. Las imágenes que resultan de una manipulación descuidada están a menudo distorsionadas con respecto a aquellas que podrían producirse si la potencia y versatilidad del software de procesamiento digital fuesen utilizados correctamente.
Estrategias recomendadas para el procesamiento de imágenes digitales
Dependiendo de las condiciones de iluminación, la integridad de la muestra y los métodos de preparación, las imágenes capturadas con el microscopio óptico pueden requerir una cantidad considerable de rehabilitación/reinserción/renovación para conseguirun equilibrio entre precisión científica y composición estética. Las imágenes digitales que se obtienen mediante un CCD (charge-coupled device) o un CMOS (complementary metal oxide semiconductor) a menudo sufren señales-a-ruido pobres, iluminación irregular, impurezas de enfoque, deslumbramiento, cambios en los colores y otros problemas que distorsionan la calidad global de la imagen.

Deconvolución en microscopía óptica

La deconvolución es una técnica de procesamiento de imagen computacionalmente intensiva/reforzadora que se está utilizando cada vez más para mejorar el contraste y la resolución de las imágenes digitales capturadas con el microscopio. Su fundamento se basa en un juego de métodos diseñados para eliminar las imprecisiones presentes en las imágenes producidas por la abertura limitada del objetivo. Prácticamente, cualquier imagen obtenida con un microscopio digital fluorescente se puede deconvolver y se están desarrollando varias aplicaciones nuevas que utilizan técnicas de deconvolución para imágenes transmitidas de luz compuestas mediante varias estrategias de procesamiento de contraste. Uno de los campos qué más puede beneficiarse de la deconvolución es el de montajes en tres dimensiones a partir de secciones ópticas.

DEMOSTRACIÓN DE TEOREMAS


A finales del siglo XIX, los logistas formalizaron una noción ideal de prueba. A lo que les llevó no fue otra cosa que un ávido interés de la verdad. Estas abstracciones matemáticas fueron realizadas a mano. Tardaríamos un siglo en darnos cuenta de que estas pruebas y los programas eran lo mismo. La lógica moderna empezó con Gottlob Frege a finales de 1870. Medio siglo más tarde dos aspectos del trabajo de Frege alcanzaron su punto culminante: La deducción natural de Grentzen, que capturó una noción de prueba y el Lambda Cálculo de Alonzo Church, que capturó la noción de programa. Ambos se publicaron a principios de 1930.

Hasta finales de 1960 no se descubrió la correspondencia tan precisa que había entre las pruebas de Grentzen y los programas de Church. Introdujo la deducción natural en 1934. Muchas de las ideas son descendientes directas del trabajo de Frege. Alonzo Church introdujo el Lambda Cálculo en 1932. Fue entendido como un nuevo camino de formulación lógica. Hacia 1936, Church se dio cuenta de que los términos lambda podrían ser usados para expresar toda función que podría ser computada por una máquina. Al mismo tiempo, Turing escribió el famoso artículo de la máquina que lleva su nombre. Se reconoció rápidamente que ambas formulaciones eran equivalentes y Turing fue a estudiar a Princeton con Church entre 1936 y 1938.

Church redujo todas las nociones del cálculo de sustitución. Normalmente, un matemático debe definir una función mediante una ecuación. Por ejemplo, si una función f es definida por la ecuación f(x)=t, donde t es algún término que contiene a x, entonces la aplicación f(u) devuelve el valor t[u/x], donde t[u/x] es el término que resulta de sustituir u oir cada aparición de x en t.

Por ejemplo, si f(x)=x*x, entonces f(3)=3*3=9. Church propuso una forma especial (más compacta) de escribir estas funciones. En vez de decir “la función f donde f(x)=t”, él simplemente escribió \x.t. Para el ejemplo anterior: \x.x*x.
Un término de la forma \x.t se llama “lambda expresión”.

Church introdujo una versión tipada del lambda cálculo en 1940. Como ya hemos dicho había una correspondencia entre los trabajos de Church y Grentzen que fue descubierta logistas como Haskell Curry y W.A. Howard. Un artículo de Howard en el que se refleja dicha correspondencia fue escrito en 1969 pero no se publicó hasta 1980 debido a la influencia que podía ejercer. Church y Curry vivieron para ver el impacto tan importante que tuvieron sus teorías en los lenguajes de programación. Gentzen no fue tan afortunado ya que murió en 1945.

El Lambda Cálculo de Church tuvo un profundo impacto en el campo de los lenguajes de programación. El concepto de que funciones pueden tomar funciones como argumentos y devolver funciones, fue particularmente importante.
Lisp usó la palabra clave lambda para definir funciones pero su definición de una función difiere sutilmente de la que da el lambda cálculo.

Algunos de los lenguajes que se inspiraron en el lambda cálculo son: Iswin,
Scheme (un dialecto de Lisp), Miranda, Haskell...
Iswin y Scheme son no tipados (sin tipos) pero los otros tienen sistemas de tipos basados en los sistemas de Hindley-Milner y Girar-Reynolds. Standard ML se caracteriza por su exploración en el tipado de módulos, Haskell por el tipado de clases y O’Calm por el tipado de objetos orientados.


El impacto de la lógica.

La programación funcional con tipos tienen también una especial importancia en Java. Guy Steele unos de los 3 diseñadores principales de Java, empezó con Scheme.
John Roser otro programador de Scheme introdujo términos lambda en Java en forma de clases internas y son usadas para implementar llamadas en el GUI. Una nueva generación de lenguajes distribuidos está ahora en desarrollo, por ejemplo: Cálculo pi de Milner, Ámbito de Cardelli y Gordon, el cálculo de Fournier, Gonthier y otros...
Todos estos lenguajes siguen la tradición del lambda cálculo tipado.


Demostradores de teoremas

Hewlett-Packard aplicó el demostrador de teorema HOL para verificar que ciertos protocolos no sufrían interbloqueo. Con esto se descubrieron errores. El departamento de defensa y Tecnología Australiano está aplicando el demostrador de teorema Isabelle para verficar las condiciones de seguridad de ciertos misiles.

HOL e Isabelle están implementados en Standard ML, fue desarrollado por Gordon, Melham y otros con versiones publicadas en 1988,1990 y 1998; Isabelle fue desarrollado por Paulson, Nipkow y otros con versiones publicadas en 1988, 1994, 1998 y 1999.

ML/LCF explotó dos características principales centrales de los lenguajes funcionales:
- Funciones de orden superior.
- Tipos.

Una prueba táctica es una función a la que se le pasa una fórmula meta (final) para ser demostrada y que devuelve una lista de sub-metas emparejadas con una justificación.
Una justificación es una función que va de las pruebas a la prueba final.
Una táctica es una función que transforma tácticas pequeñas en tácticas grandes.

ML/LCF fue desarrollado por Mildner, Gordon y Wadsworth y la descripción completa fue publicada en 1979. HOL e Isabelle son sólo dos de los muchos demostradores de teoremas que aprovecharon las ideas de LCF, al igual que el estándar ML es sólo uno de los muchos lenguajes que aprovecharon las ideas desarrolladas en ML. Entre otros, COQ está implementado en CAML, Veritas en Miranda, Yarrow en Haskell y ALF,ELF y LEGO en Estándar ML también.



Confianza y Seguridad.

Cuando ejecutamos código máquina ¿hay algún modo de complementar la confianza de la persona que nos haya mandado ese código con un test que me garantice la seguridad?

La hay:
Lenguaje de tipos ensamblados, es uno de los modos.
El sistema de tipos desarrollado para el lambda cálculo es lo bastante flexible como para ser aplicado a otros lenguajes de programación de otros estilos y puede extenderse, incluso, al lenguaje máquina. En Java, los códigos bytes son declarados como tipos y diseñados en TAL (Grez Morriset 1998) que son chequeados por el verificador antes de ejecutar el código. Igualmente, en TAL, el código máquina es declarado con tipos que son chequeados por el chequeador de tipos antes de ejecutar el código.

Demostrador de teoremas Isabelle

El lenguaje en el cual se realizan las pruebas es HOL (acrónimo de Higher-Order Logic), que es un lenguaje fuertemente tipificado con estructuras de datos, funciones recursivas (incluyendo valores funcionales) y expresiones lógicas con cuantificadores.
Entre las características más destacables de Isabelle se pueden mencionar:

v Sistema de deducción natural
v Inferencia de tipos para verificar que los términos manejados estén bien construidos
v Módulos llamados teorías
v Conjuntos y tipos de datos recursivos
v Inducción estructural
v Facilidades para realizar demostraciones interactivas
v Simplificación por reescritura de términos.
Ejemplo extraído de un archivo de teoría

subsection{*Definición inductiva de los números pares*}

consts Par :: "nat set" Par de tipo conjunto de naturales
inductive Par Definición inductiva de par
intros
ZeroI: "0 : Par" Cero es par
Add2I: "n : Par ==> Suc(Suc n) : Par" n+2 es par si n lo es

text{* Uso de reglas de introducción: *}
lemma "Suc(Suc(Suc(Suc 0))) \ Par" 4 es par
apply(rule Add2I) Pasos de la prueba
apply(rule Add2I)
apply(rule ZeroI)
done

text{* Prueba inductiva sencilla: *}
lemma "n:Par ==> n+n : Par" 2n es par si n lo es
Pasos de la prueba
apply(erule Par.induct) Inducción basada en la def. de Par
apply(simp) simplificación
apply(rule Par.ZeroI)
apply(simp)
apply(rule Par.Add2I)
apply(rule Par.Add2I)
apply(assumption)
done





CONCLUSIÓN


La Visión artificial es una tecnología cada día más empleada en distintos ámbitos, en especial en la industria y difundida con frecuencia en medios técnicos. Sin embargo se emplean habitualmente muchos conceptos poco claros, cuando no directamente equivocados por todas las partes implicadas, proveedores, usuarios y técnicos en general. Por ello en este artículo se repasa algunos de los conceptos mas importantes, dando directivas sencillas y claras, aplicables muchas de ellas a otros problemas de sensórica y automatización.