viernes, febrero 17, 2006

Consultorio SF (II). Las redes neuronales

Nuestro lector de honor, Patxi (¡gracias!) nos enviaba esta consulta:
Mola la consultoría. Aquí va una pregunta: ¿llegarán nunca los ordenadores a intepretar imágenes? ¿y vídeo?

Yo me quedaré perplejo el día que a un ordenador le enseñes un video y te lo explique: "se ve un hombre corriendo sobre una playa y ahora rompe una ola..." o algo equivalente.
En realidad aquí se plantean muchas preguntas, así que voy a intentar ir por partes... Nos enfrentamos a un problema decisivo: no conocemos casi nada sobre el funcionamiendo del cerebro. El acto de interpretar es una actividad muy humana, en la medida que precisa de la subjetividad y de la experiencia... tendríamos que preguntarnos cómo percibimos nosotros al hombre que corre por la playa (magnífica excusa para plantar la foto :-P) y cómo sabemos que se trata de una persona... es mucho más complejo de lo que nos parece, porque estamos acostumbrados a interpretar constantemente.

Así que, en cierto sentido, podemos responder que los ordenadores, tal como los conocemos, no serán capaces nunca de interpretar nada... la cuestión aquí es si realmente necesitamos que ellos interpreten de la misma forma en que lo hacemos nosotros... (pero no se desanimen, no todo es lo que parece)

Los ordenadores sólo son capaces de resolver, en principio, los problemas para los cuales conocemos una serie de pasos que nos llevan a su resolución. Pues bien, no existe (no se conoce) una secuencia de este tipo que haga comprender a un computador que lo que se ve en el vídeo es un perro, o una persona, y que lo haga en general (es mucho más complejo que reconocer una letra)

La respuesta tenemos que buscarla en la Inteligencia Artificial. Hay que decir que la IA no es sólo un tema de películas de ciencia-ficción: funciona y sus resultados son prometedores, pero no es la gran revolución que se creía en un principio.

Existe un tipo de computación basada en "redes de neuronas". Una red de neuronas imita el funcionamiento de la mente humana: la idea es simular un montón de unidades independientes que pueden funcionar como pequeñas calculadoras, y que interactúan entre sí, tal y como lo hacen las neuronas en nuestro cerebro... puede parecer increíble, pero esto existe...

Hace unos días veíamos cómo los ordenadores pueden reconocer texto y proponíamos una solución sencilla paso a paso. Ahora bien, en cuanto se distorsionaban las letras, el programa no era capaz de comprender nada... Sin embargo, existe una forma de aplicar redes de neuronas al reconocimiento de texto, utilizando [modo experto] una red de Hopfield, que es capaz de soportar una modificación de hasta el 25% de un caracter a reconocer... ¿Cómo lo hace?

Las redes de neuronas aprenden. La forma del aprendizaje es muy parecida a la nuestra: se le da a red un conjunto de datos inicial y se le pide que de un resultado, el que sea. Si es el que esperábamos, hemos terminado. Si no, ajustamos cómo se comunican las neuronas entre ellas y volvemos a probar... es como un entrenamiento. Parece complicado, y de hecho lo es. No obstante, funciona :-)

Sabiendo esto no puedo decir que un ordenador no vaya a ser capaz nunca de reconocer a un hombre corriendo en la playa, pero desde luego que si lo llega a hacer, será mediante un mecanismo de este tipo... (De hecho, nosotros reconocemos a otro humano caminando en la distancia bastándonos sólo en cinco o seis puntos que se mueven a cierto ritmo... es fascinante)

Ahora mismo podríamos tomar una red de neuronas y entrenarla para que reconociera un hombre corriendo (esto existe, de hecho, en algunos sistemas de seguridad, aunque es bastante primitivo). También podríamos lograr que reconociera en un vídeo como rompe una ola (dosis extra de dificultad). Los límites de este tipo de estructuras no están nada claros, para bien o para mal.

El problema surge al generalizar: el querer una red que estudie un vídeo o una imagen y que identifique lo que sea, cualquier cosa, un perro, un gato, un calamar gigante o un humano... yo me atrevería a decir que no parece posible, salvo que el sistema aprenda todos los objetos que pueden aparecer: sus formas, su comportamiento y sus variantes... lo cual implicaría un entrenamiento largo, como el que podamos tener las personas... pero no veo por qué no podría hacerse.

En conclusión, considero que sí es posible que los ordenadores reconozcan fenómenos concretos en imágenes o en vídeo. Serán necesarias, eso sí, estructuras más avanzadas que la computación tradicional, y que estas estructuras hayan sido entrenadas con cierto volumen de datos. No obstante, será muy complicado que reconozcan todas las situaciones posibles sin que hayan sido previstas, tal y como hacemos nosotros, y en grados variables de detalle... Pero sin duda, más tarde o más temprano, la respuesta a la pregunta de Patxi será un .

Cuando aparecieron los primeros ordenadores, hubo quien dijo que jamás tendrían éxito por el increíble coste que tendrían... es mejor tener la mente abierta, uno siempre se lleva sorpresas ;-)

PD: Perdón por el post kilométrico, pero el tema lo merece...

12 Comentarios:

A las 12:11 a. m., Anonymous Misslucifer escribió... (¡Gracias, Anonymous Misslucifer!)

Uhhhh, ¡bravo! (aplausos)

 
A las 12:25 a. m., Blogger Pau escribió... (¡Gracias, Blogger Pau!)

Jo, que nivel no pasan ni 5 minutos y ya me comentan :)
Espero que no te hayas dormido...

 
A las 10:11 a. m., Anonymous tu sister escribió... (¡Gracias, Anonymous tu sister!)

de lo q se entera una... jajaja. muy chulo el post, sigue asín ;)

 
A las 12:10 p. m., Blogger Juan Haldudo escribió... (¡Gracias, Blogger Juan Haldudo!)

Muy interesante. El reconocimiento de una figura en movimiento sobre un fondo es una tarea muy compleja pero que podrá ser relativamente asequible para una máquina, interpretar por qué corre (de algo o de alguien o hacia algo o alguien, simplificando) éso sí que es una tarea ianabarcable para una máquina y que supongo tardará bastante. Eso sin tener en cuenta que emular nuestra lógica informal, llena de errores o "borrosa" no será tarea nada fácil...
Un saludo.

 
A las 1:48 p. m., Anonymous Dante escribió... (¡Gracias, Anonymous Dante!)

Esencialmente estoy deacuerdo con el articulo. Creo que es posible que un ordenador actualmente te diga un gato marron sobre un fondo azul, aunk sera mas complicado que te diga rocco sifredi tirandose a silvia saint en una plaza del sur de florida al atardecer y ahora rompe una ola, pero para eso ya estan algunos humanos k seguro k reconocen antes eso que al gato (bueno, la ola no :P). El tiempo nos kitara o nos dara la razon pero vista la evolucion de la tecnologia, todo llegara.

 
A las 11:35 a. m., Blogger Illaq escribió... (¡Gracias, Blogger Illaq!)

He llegado aquí por pura casualidad. Desde mi punto de vista, el, post no tiene desperdicio. Coincido prácticamente con tu opinión, añadiendo que, por ahora, ni siquiera sabemos en qué consiste la "interpretación". Por otra parte, las "redes neuronales" de la IA tienen, en sí, muy poco que ver con las redes neuronales, porque obvian aspectos del funcionamiento de cada neurona que, probablemente, sean significativos para el procesamiento de la información. Si a eso se suma que tampoco conocemos demasiado lo que ocurre en esas redes neuronales... Evidentemente, si aceptamos lo anterior, tendremos que reconocer que tampoco sabemos mucho acerca del aprendizaje humano; bueno, sabemos bastante por observación y mediante análisis estadístico, pero de los mecanismos biológicos reales, me temo que poco, poco. Es muy posible que las técnicas de formación de imágenes contribuyan bastante a que aprendamos sobre el aprendizaje, pero todavía está por ver... Y creo que sería muy interesante comparar lo que vaya alcanzándose mediante IA y lo que se vaya descubriendo por la vía neuropsicológica (incluidas emociones y subjetividad). Vamos, que me parece que hay bastante que hacer. Saludos

 
A las 2:22 p. m., Anonymous JuaNMa escribió... (¡Gracias, Anonymous JuaNMa!)

Mis neuronas han tardado menos de un segundo en reconocer que la primera foto es del camello con la magdalena de fondo!(Santander) buf, que ganas de acabar exámenes y volver a casa!
Muy bueno el post :)

 
A las 3:14 p. m., Anonymous SrDGato escribió... (¡Gracias, Anonymous SrDGato!)

Actualmente se aplica la lógica borrosa (que mejora el comportamiento de redes neuronales) para la identificación de fotografías. Lo bueno que tiene este método es que no necesita tener una "información completa" del objeto a tratar, sino que puede, a partir de una parte, recomponer un todo gracias al aprendizaje

 
A las 7:40 p. m., Anonymous emili escribió... (¡Gracias, Anonymous emili!)

Esta bien el artículo. Sólo quería añadir que sepan que ya existen programas que reconocen personas en movimiento en los vídeos. En cámaras estáticas por ejemplo (pueden eliminar el fondo porque nunca se mueve), se reconocen todos los objetos en movimiento y se sabe qué objeto es persona o no, mediante algoritmos de procesado de imagen (reconocimiento de formas, aperturas, cierres..) y quizas lógica difusa. También se sabe reconocer cuando una persona en el vídeo suelta un objeto. Esta tecnología se utiliza actualmente en cámaras de seguridad del metro o superfícies comerciales para detectar "abandonos sospechosos" de mochilas que podrian contener explosivos. Al detectar un objeto abandonado se dispara un aviso para el personal de seguridad que mira los monitores y se marca en rojo en el vídeo el objeto abandonado. http://www.sld.co.uk/products/antiterrorism/mdv.htm


PD: el anterior comentario supongo que se referia a la "lógica difusa" y no borrosa ;)

 
A las 11:25 p. m., Anonymous srdgato escribió... (¡Gracias, Anonymous srdgato!)

Bueno, durante la carrera, estudiando Sistemas Complejos, las referencias se hacían siempre a la "lógica borrosa". Pero, supongo que como muchos otros términos de la Física, al traducir los conceptos los distintos autores se permiten algunas "licencias".
De hecho, el término correcto (introducido por L. Zadeth en 1965) es fuzzy, que en castellano los autores traducen como "borroso" o "difuso"

Me basta con que supiste de lo que hablaba ;)

 
A las 2:43 a. m., Blogger borrado56 escribió... (¡Gracias, Blogger borrado56!)

Con respecto a lo de que para crear inteliencia artificial hay que enseñar a la red neuronal estoy muy de acuerdo.Imaginemos un coche con inteligencia artificial de este tipo.Los fabricantes se encargarian de "enseñar" al coche la forma de conducir y al venderlo al cliente podrian decidir si dejar que siguiera "aprendiendo" o limitarlo una vez vendido.Lo bueno de este planteamiento es que una vez haz "enseñado" a un vehiculo, puedes clonar ese conocimiento para incluirlo en otros vehiculos. Este ejemplo esta sacado de el libro Sobre la inteligencia de Jeff Hawkins donde este ingeniero creador de la Palm y apasionado por el cerebro humano,nos expone una teoria general de como funciona el cortex cerebral humano,el organo donde reside la inteligencia. Os lo recomiendo encarecidamente si os apasiona el tema de la inteligencia artificial

 
A las 10:18 a. m., Blogger Pau escribió... (¡Gracias, Blogger Pau!)

Taikochu,

Como bien dices, los diseños que aporta la IA inicialmente son "sólo" estructuras, a las que hay que entrenar y enseñar.

Es muy curioso el ejemplo que pones con el coche, nunca había hecho esas consideraciones... es cierto que el esquema que citas pude hacer que la IA sea útil y rentable a un mismo tiempo :)

Muchas gracias por la referencia y por el comentario. Un saludo!

 

Recuerda que nos hemos mudado a nosololinux.com

<< Home