Nube de Etiquetas
(Ah?)

jueves, enero 31, 2008

Clasificar vs. Reconocer un Patrón

Estaba en estos días reunido con un amigo explicándole que estaba trabajando en un algoritmo para el reconocimiento de patrones binarios. Entré en detalles, y posteriormente usé la palabra "Clasificación binaria", lo que le motivó a preguntarme:
Por fin, Orestes ¿esto no era para reconocimiento de patrones? ¡Ahora me acabas de decir que es para clasificacion binaria!.

Claro... para algunos de ustedes, que también están empapados en estos temas, la pregunta es trivial. Sin embargo para los que ocupan su mente con otro tipo de problemas y herramientas, no es evidente que ambas cosas son lo mismo.
Para ellos estoy escribiendo este post, y lo haré parafraseando una explicación muy buena que hicieron K.P. Bennet y E.J. Bredensteiner en su artículo "Geometry in Learning".
Imagínese que su trabajo es determinar si un tumor de seno es benigno o maligno. Un cirujano inserta una aguja en el tumor y aspira una pequeña cantidad de tejido. Se prepara una placa de vidrio (porta-objeto) en la que se coloca la muestra, y usted procede a colocarla en el microscopio para estudiarla. Su trabajo es examinar las células que están en la láminilla de vidrio, reconocer los atributos importantes de las células, tales como la uniformidad de la fórma de las células, y la variabilidad en el tamaño. Eventualmente usted llega a la conclusión de que es benigno, o de que es maligno. Esto es algo que usted debería haber aprendido a hacer luego de examinar montones de tumores de los que ya previamente le habían chismeado si el tumor era maligno o benigno, de parte de un experto patólogo que usó biopsias quirúrjicas tradicionales (a punta de cuchillo, para ser completamente claros). Probablemente alguien podría ayudarle señalando en la imágen los atributos que deben ser estudiados con más incapié. Y entonces usted debería "generalizar" el conocimiento que aprendió, aplicándolo luego para estudiar nuevos tumores, para (por ejemplo) tener una idea previa de la malginidad del caso, sin tener que echar cuchillo al delicado seno (y aquí termina mi paráfrasis de la introducción del paper de Bennet y Bredensteiner).
Hablando normalmente, como quien se encuentra en una cafetería hablando con los familiares de la pacienet, usted diría sobre un caso, que "Reconoció el Patrón" que tienen los tumores malignos.
Ahora, hablando matemáticamente, podemos decir que usted "clasificó" a ese elemento como "Maligno", tal y como si usted tuviese una caja donde recibe los casos a estudiar, a su lado derecho, y dos cajas a su lado izquierdo, cada una con una etiqueta: una dice "Maligno" y otra dice "Benigno". El equivalente de su trabajo es tomar cada tumor de la caja de la derecha, estudiarlo, y en base al estudio de sus atributos, lo lanza a una de las cajas de la izquierda. Por eso es que los matemáticos consideran el proceso de "reconocer patrones", como un caso más de "clasificación".

Obviamente, esta puede ser de múltiples clases, no necesariamente binaria. Por ejemplo, reconocer caracteres visualmente, además de entenderse como "reconocer el patrón" de la letra A, la letra B, y así sucesivamente, puede entenderse como que usted tiene tantas cajitas a su izquierda, como letras hay en el abecedario (más una por cada número), y recibe un caracter, lo estudia y lo lanza en alguna de las cajitas luego de dar cuenta de los atibutos de ese caracter. Reconocer patrones de caracteres, es clasificar caracteres en tantos tipos como caracteres posibles pueda haber. También puede verse así el problema típico de "reconocer" una huella digital (alguno ha visto CSI?). Las "clases" son cada uno de los criminales en la base de datos contra la cuál se contrasta la huella en cuestión.

En fin... Yo ya estoy empezando a clasificar este punto de mi escritura del post como del tipo "ya ponte a trabajar", así que... nos vemos luego!

miércoles, enero 30, 2008

¿Para qué me sirve este blog?

Está bien, me digo a mi mismo, pues me he quedado con una pregunta hipotética en mi mente. La pregunta es: Si yo fuese un lector de este blog, para qué me serviría leer lo que se ha publicado acá (hasta el momento)? ¿y el blog en general?

Así que me animé a escribir nuevamente hoy (lo cuál debe ser una especie de record para mi en este blog!), para responder esta pregunta a mis amigos imaginarios (invisibles, diría Uslar Pietri).

Empecemos, aprovechando que son pocos posts, enumerándo las preguntas que podrían ser respondidas en cada uno de los posts:

  1. Máquinas de Aprendizaje ¿con Investigación de Operaciones?
    • ¿Cómo hago si no encuentro como entrenar una red de clasificación binaria?
    • ¿La Investigación de Operaciones me sirve para Inteligencia Artificial?
    • ¿Es Backpropagation (Retropropagación) la mejor forma de entrenar un perceptrón multicapa?
    • ¿Cómo se relaciona la Minería de Datos con la Investigación de Operaciones?
    • ¿Cómo se relacionan la Inteligencia Artificial, las Máquinas de Aprendizaje, la Minería de Datos, las Redes Neurales, la Invesgiación de Operaciones y la Optimización?
    • ¿Qué ideas critica Orestes? (esta es la que menos probablemente se hagan ustedes, pero la que me gustaría que más se hicieran!)
  2. ¿Dónde está el área de Investigación de Operaciones?
    1. ¿En qué departamentos de una universidad puedo encontrar a los profesores e investigadores del área de Investigación de Operaciones?
    2. Mi área es Investigación de Operaciones ¿en qué tipo de lugares debo meter el curriculum vitae en una universidad?
  3. ¿Qué es la Investigación de Operaciones?
    Ya el título es la pregunta, obviamente. Sin embargo, por no dejar, diré acá que esa pregunta puede surgir tanto a una persona de otra área, a la que le salieron con "la palabrota", como a una persona que sencillamente está buscando hacer un postgrado y quiere saber un poco más sobre esto de la IO.
    Yo se los digo, créanme: resulta particularmente confuso y "generaloide" leer la mayoría de las definiciones que hay por ahí. Para quitarse la triste sensación de que los únicos que saben qué es la investigación de operaciones, son los que trabajan en eso, puede ser que este post les de un respiro.
  4. Comienzo de divulgación de mis aportes durante la Maestría
    • ¿Cuáles son las grandes áreas de la Ingeniería de Sistemas?
    • ¿Qué motivó a Orestes a abrir este blog? (el que aún luego de leer lo de arriba, sienta que el blog no se justifica, podría hacerse esta pregunta)
      Claro está, que aún no he cumplido con la "impetuosa necesidad de comunicar mis aportes... etc etc", porque no quiero soltarlos sin contexto. Quiero comunicar mis aportes, luego de poner en el tapete todas las ideas que se necesitan para que al leer mis aportes no se queden con la pregunta mental "¿where are you coming from, Orestes?". Quiero asegurarme de que pongo las ideas de la manera más sencilla y clara posible, en parte para que el mensaje llegue a quienes no son expertos en el área, y en parte porque me gusta contar esto como un cuento que todos puedan más o menos entender (con un poco de investigación en wikipedia, si hace falta!).
  5. My own introduction to Neural Networks (spanish)
    • ¿Qué son las redes neurales artificiales?
    • ¿Para qué sirven?
    • ¿Qué las hace diferentes al cómputo clásico?
    • ¿Cómo me bajo el pdf de la tesis de maestría de Orestes? (LOL!)
Bueno. Ahora si me siento satisfecho. Procuraré, de ahora en adelante, hacer más énfasis en la utilidad de lo que escriba, porque en estos tiempos el ocio no es el que nos lleva a leer cosas como éstas!

Máquinas de Aprendizaje ¿con Investigación de Operaciones?

El tema del "Machine Learning" o de las Máquinas de Aprendizaje es un tema que en principio está en el terreno de la inteligencia artificial, pues cuando queremos que una "máquina" (en general un "ente" artificial) aprenda, básicamente estámos tratando de emular la forma en que el ser humano, a partir de su experiencia, logra tomar deciciones apropiadas, y esto, evidentemente, es parte de lo que llamamos "inteligencia".

Claro que este blog no es un blog de inteligencia artificial, sino de Optimización y Máquinas de Aprendizaje. Así que de ahí se puede desprender una razonable sospecha de que no voy a tratar a las máquinas de aprendizaje de modo general, sino sólo en los aspectos que tiene en común con el área de la Opimización (métodos prescriptivos de Investigación de operaciones, que comenté en un post anterior).

¿Y cuáles son esos tópicos de Máquinas de Aprendizaje que tienen que ver con Optimización? No pretendo en esto mostrar una lista completa de los tópicos, ya que mis conocimientos no abarcan con suficiente profundidad todos los tópicos de las Máquinas de Aprendizaje. Simplemente diré en respuesta a ello, me referiré en particular a los Algoritmos de Aprendizaje Supervisado.

El Aprendizaje Supervisado, como casi todos los tópicos de Máquinas de Aprendizaje, ha sido atacado desde enfoques estadísticos, de redes neurales, y ciencias teóricas de la computación. Son raros los casos en los que se enfrentan estos problemas desde el enfoque de la optimización. En particular, el área del "Data Mining" o Minería de Datos tiene importantes exponentes del área de optimización como lo son las diferentes técnicas de las famosas SVM o Máquinas de Vectores de Soporte.

Estas tienen como particularidad que minimizan el error de clasificación empírico (de allí que sean de Aprendizaje Supervisado) al mismo tiempo que maximizan la distancia que tiene la superficie separadora de las dos clases respecto a los elementos de esas clases que separa. Los problemas de minimización o maximización siempre buscan el comportamiento óptimo de un sistema. En este caso, la función a optimizar es al mismo tiempo los errores y el mencionado margen. Esta optimización simultánea fue deducida por Vapnik como parte de los aportes colaterales de sus nuevas propuestas en el área de la estadística, con apoyo de Chervonenkis.

Hay otros métodos de optimización que atacan problemas de Minería de Datos, por supuesto. Uno de ellos que me parece extremadamente interesante, aunque luego de su surgimiento no ha habido grandes avances en ese respecto, son los métodos "multi-superficie". En ellos se generan, siguiendo una estrategia "golosa", múltiples superficies, que seccionan el espacio en el que se encuentran los elementos a ser clasificados. La máquina de aprendizaje resultante no hace otra cosa que evaluar en cuál de las áreas delimitadas por esas superficies está el individuo que se desea clasificar. La respuesta es: la misma clase que tienen mayoritariamente los individuos de esa área.

Este tipo de estrategias generan, como sub-producto de su uso, el diseño de una red neural (perceptrón multicapa), o un árbol de clasificación.

En mi opinión es muy interesante el hecho de que algoritmos como estos puedan generar redes neurales de clasificación binaria "sin intervención humana". Es bien sabido en la comunidad de las redes neurales, que resolver un problema con redes neurales, la mayor parte de los casos puede considerarse no sólo una ciencia sino un arte, debido a que hay muchas decisiones "arbitrarias" que tomar, y que por ende provocan largas sesiones de ensayo y error, tanteo, o entonamiento. Hay que decidir, cuantas neuronas usar, de qué tipo, conectadas en qué forma, y por si fuera poco, luego decidirse por una estrategia para el entrenamiento.

El uso de algoritmos que propongan ya de por si la estructura y parámetros de la red, hace que el proceso de construír una red neural de clasificación deje de ser un arte, para empezar a convertirse en un proceso ya automático.

Por último, en este post de reflexiones sobre el uso de la optimización para resolver problemas de máquinas de aprendizaje, quiero asomar una idea. Invariablemente, la construcción de máquinas que aprendan a hacer clasificación binaria, basándose en los errores, implica el uso de técnicas para conseguir parámetros óptimos para esas máquinas. En el caso de las redes neurales como los Perceptrones Multicapa, es común el uso de algoritmos asociados al Backpropagation. Mi comentario es el siguiente: desde el punto de vista de optimización, la forma en que se plantea el problema que resuelve la retropropagación, es el tipo de problemas que todo optimizador quiere evitar, ya que:
* la función a optimizar no es convexa
* hay abundancia de óptimos locales
* hay abundancia de puntos estacionarios en los que un algoritmo de optimización fácilmente "cree haber llegado".

Para evitar algunos de esos problemas, se "distorciona" la función de transferencia de las neuronas del perceptrón multicapa, para que la función sea una sigmoidal "suave", en lugar de una función tipo "escalón", lo que da orígen a clasificaciones difusas (sin que en ello esté involucrada la batería de herramientas de las que se aprovisiona la lógica difusa para resolver estas situaciones).

Bueno, es probable que el 99.99% de las personas que lean esto se pregunten ¿y cómo piensa Orestes entrenar un perceptrón sin usar los principios de la retropropagación? Bueno. La respuesta es: buscándole la vuelta al problema, para sólo resolver problemas convexos. Más adelante les seguiré contando.

¿Dónde está el área de Investigación de Operaciones?

Quisiera contar acá una anécdota curiosa. Ya en mi artículo anterior mencioné la dificultad que tiene la gente de Investigación de Operaciones para responder a la pregunta “¿a qué te dedicas?”. Mucha gente cree que esto es una broma de profesor, pero ésto es tan serio, que ha dado lugar a situaciones confusas a nivel académico. Los matemáticos dicen que es una disciplina de los computistas. Los computistas le echan el muerto a los matemáticos. En la Universidad Simón Bolívar, los especialistas en esta área estaban inicialmente divididos en los departamentos de Matemáticas y Computación, y realmente muchos de ambos departamentos opinaban que debían estar en el otro. Luego se creó un departamento de Cómputo Científico y Estadística, que albergó a muchos de estos académicos. También surgió un departamento de Procesos y Sistemas (al cuál estuve adscrito mientras me dedique a labores académicas), que también albergaba a otro tanto.

En conclusión, tenemos una gran cantidad de personas que trabajan en los mismos problemas de forma aislada, probablemente usando muchas técnicas en común, y otras que ellos conocen sólo en su departamento y que podrían servir a los de los otros departamentos. Gente en lugares distintos trabajando sobre lo mismo, inevitablemente desembocará en fenómenos de “reinvención de la rueda”, en competitividad mal enfocada, y en que las personas no sepan a qué departamento ir, ante una duda. Obviamente, siendo una universidad de tipo experimental, donde las coordinaciones agrupan a las carreras, y los departamentos agrupan a los profesores, surge también la pregunta: “Quiero que los alumnos de la carrera X vean la materia Y, cuál departamento debería ofertar esa materia?”.

Como pueden ver, no siempre un "chiste de profesor" carece de seriedad.

No en vano dicen que el humor es el patio trasero de la inteligencia