Reconocimiento de Patrones

 

Pattern Recognition

 

El proceso de reconocer cosas, como un sonido, comida, un depredador, una imagen, un amigo, un sabor, entre otras cosas, es algo que lo hacemos de forma inconsciente, pero que nos permite adaptarnos a nuestro entorno y puede ser clave en el momento de la supervivencia [1].

Esta habilidad natural que tiene prácticamente todo ser vivo nos lleva a varias preguntas que nos pueden llevar al terreno filosófico: ¿cómo identificamos cosas?, ¿qué proceso hace que nuestra mente resuelva fácilmente este tipo de problemas?, ¿cómo podemos abstraer conceptos?, o más globalmente, ¿cómo y por qué funciona nuestro cerebro?

Estas preguntas son importantes para varias ramas de la ciencia, como la biología, la psicología y la neurología las cuales, en menor o en mayor medida, tienen como objeto de estudio la mente. Sin embargo, esta pregunta es también importante para las personas que trabajamos en las ciencias de la computación, dado que desde un principio la computadora se pensó como un intento por simular el cerebro humano, con el fin realizar tareas que pudieran ser tediosas, complejas o simplemente para facilitar nuestra forma de vivir. Éstas, entre otras razones, han llevado a gente que trabaja en psicología y neurología a inmiscuirse en la computación y viceversa, pero... las preguntas siguen sin respuesta.

Una de las principales cosas que observamos quienes nos dedicamos a tratar de resolver este tipo de problemas en una computadora, es que la solución general es muy complicada, dado que son muchos los factores que están involucrados en el proceso de reconocer.

Se recomienda al amable lector que haga un ejercicio: observe cualquier objeto, digamos un auto, y piense en todas las posibles características que lo hacen ser un auto; encontrará que tal vez tenga un color de pintura, que usa algún tipo de combustible, que usa neumáticos, que tiene transmisión automática o estándar, que tiene un cierto rango de dimensiones, y otras muchas características.

Note usted que la descripción de cada una de estas características (que llamaremos rasgos), a su vez implica una descripción y que algunas pueden medirse para obtener un valor numérico (como las dimensiones) y otras no (como la belleza).

Ahora piense en un camión, mencione sus características y a su vez piense en cómo se diferencia del auto. A continuación trate de imaginar cómo resolver el problema de diferenciar (clasificar) entre un auto y un camión, usando una computadora, y seguramente usted se percatará de que hay rasgos que nos ayudan a diferenciar mejor que otros. De estos procesos, que consisten en la extracción y selección de rasgos, depende en gran medida si podemos resolver o no el problema en la computadora.

Una vez que sabemos qué rasgos utilizar, necesitamos encontrar un método que pueda simularse en la computadora que de alguna forma compare el conjunto de rasgos (que llamaremos patrón) del auto con los del camión y es aquí donde nos topamos con otro problema: ¿qué método ocupar?, y ¿cómo le hago para, en una computadora, comparar cosas que no se pueden medir?.

El problema se hace más complejo cuando nos damos cuenta de que el proceso que se utilice, tal vez ya no funcione si ahora también queremos diferenciar entre un auto deportivo y uno sedán, y así podríamos enumerar un sinfín de problemas relacionados con objetos, seres vivos, conceptos e ideas abstractas, que están presentes en el entorno en que se desenvuelven los seres humanos.

La rama interdisciplinaria de las ciencias de la computación que se encarga de resolver este tipo de problemas se denomina Reconocimiento de Patrones, el cual incluye entre sus principales tareas a la clasificación y a la recuperación de patrones.

Los principales enfoques de Reconocimiento de Patrones son los siguientes:

  • Enfoque estadístico-probabilístico. Su principal clasificador está basado en la teoría de la probabilidad, y específicamente en el teorema de Bayes. Es históricamente el primer enfoque que existió y probablemente el más desarrollado.
  • Clasificadores basados en métricas. Usualmente se ubican dentro del enfoque estadístico y se basan en el concepto de métrica y espacios métricos para hacer la clasificación.
  • Enfoque sintáctico-estructural. Se basa en la teoría de autómatas y lenguajes formales para hacer la clasificación. Se enfoca más en la estructura de las cosas a clasificar que en mediciones numéricas.
  • Enfoque lógico-combinatorio. Creado en la antigua Unión Soviética, tiene como principal característica el poder trabajar con variables de todo tipo, aunque sus algoritmos suelen ser de complejidad alta.
  • Enfoque neuronal. Se basa en modelos matemáticos de las neuronas biológicas, o dicho de otra forma, trata de emular la forma en cómo interactúan nuestras neuronas.

 

Se recomienda al amable lector que continúe en la sección: Clasificadores de Patrones: Asociativos y k-NN

Referencias
[1] Sánchez Garfias, F.A., Díaz-de-León Santiago, J.L. & Yáñez Márquez, C. (2004). 
New Results on the Lernmatrix Properties, in Figueroa-Nazuno, J., Gelbukh-Kahn, A., 
Yáñez-Márquez, C. & Camacho-Nieto, O. (Eds.) "Advances in: Artificial Intelligence, 
Computing Science, and Computer Engineering", Special Edition, Research on Computing 
Science Series, Vol. 10, ISBN 970-36-0194-4, CIC-IPN, México, pp. 91-102.