lunes, 6 de abril de 2009

Asimultáneo.

¿Qué tan a menudo somos concientes de la relevancia de la simultaneidad? Hoy me he dado cuenta de lo fundamental que es.

Trabajando con el concepto de correlación y simultaneidad, de cómo integrar diferentes sentidos (visión, audio, tacto) en un robot, tuve la siguiente fantasía (advertencia: en verdad es de manicomio, pero fue un ejercicio interesante para entender el tipo de conexiones que debemos presuponer en nuestros cerebros):


Veamos lo que se sentiría si nuestros sentidos fueran perdiendo la coordinación gradualmente, hasta que viéramos cosas suceder que no correspondan con lo que escuchamos o lo que sentimos.

Imaginemos primero el siguiente caso: escuchamos a la gente hablar, pero no vemos a sus labios moverse, sino hasta unos segundos depués. No es una experiencia del todo no familiar, sucede cuando se desfasan el sonido y el video en las películas. -- ¡Ah! tal vez mis nervios ópticos sufren de algún retraso -- pensaríamos. La situación comenzaría a ser algo desesperante si dura mucho tiempo.

Añadamos ahora el sentido del tacto: digamos que hemos decidido hacer una prueba golpeando con el puño sobre una mesilla cercana. Debemos acercarnos a ella. Ahm... pero sabemos que vemos después de que oimos, lo que nos hace suponer que llegaremos a la mesa antes de que lo veamos. Nos preparamos tal vez para chocar con ella. Calculamos la distancia, caminamos y tratamos de tocarla con la palma de la mano, sentimos que está ahí, bajo nuestros dedos, pero unos segundos después nuestro sentido de la vista nos dice que nuestra mano está demasiado alta: ¡no hemos tocado la mesa! ¿cómo es entonces que la sentimos?

Desconcertados bajamos el brazo, sentimos que ya tocamos la mesa, repentinamente escuchamos un brusco "toc", nuestra vista nos dice que nos hemos golpeado con la mesa y, por último, nos duele un poco la mano. ¿Qué carambas fue lo que pasó? Para ahorrar letras en describir más experimentos, venga de una vez la explicación: la primera sensación en el tacto no fue producida por un hecho real, sino que nuestros nervios fueron activados (de más) por el haber estado esperado una cierta sensación. Después de la vista nos llega el dolor, porque aún sentimos, pero nuestro sentido del tacto está aún más retrasado que el de la vista.

La locura es: imaginemos que esto se queda así por suficientes minutos. El retraso entre todos nuestros sentidos es significativo. No podemos saber cuando alguien ha chocado con nosotros sino hasta que ya le hemos oído y luego visto quejarse. Si queremos reaccionar ante algo, probablemente para cuando sepamos qué pasó ya es demasiado tarde y en tratar de reparalo lo hemos hecho peor (en lugar de alejarnos del amigo que pisamos, caimos sobre su otro pie). Comezamos a sentir cosas inesperadas, nos engaña lo que esperamos sentir con lo que realmente sentimos. Las cosas empeoran si los sonidos dejan de corresponder con lo que vemos tanto que, escuchamos diálogos de personas que no están ahí, aparecen personas que no hemos oído o sentido. Sentimos cosas que no vemos pues, si ocurrió algo a nuestras espaldas, para cuando volteamos ya es más que tarde.


Pero... ¿Hemos intentado caminar? Decimos: "pierna izquierda, luego derecha", sentimos que nos movemos, el suelo bajo nuestros pies y el balanceo de nuestro cuerpo. De pronto llega el sonido de un fuerte golpe, vemos el mundo girar a nuestro alrededor, nos duele una rodilla y entonces sabemos que algo está mal; sentimos el golpe en cada parte de nuestro cuerpo a un tiempo muy diferente. Nuestros músculos motores no trabajan ya más exactamente en el orden en el que se los ordenamos.

¿Hemos intentado hablar? Tal vez la desesperación es tan grande que gritamos, escuchamos nuestro grito dos veces -- ¡o no! ahora el sentido del oído está tan mal como el del tacto. Vemos gente voltear y gritamos -- ¡Auxilio! -- nos escuchamos pidiendo ayuda, pero los rostros de la gente se muestran confundidos, nadie nos entiende. Finalmente escuchamos un ronco balbusido que no significa nada.

miércoles, 10 de septiembre de 2008

Creación de Modelos

La clave para implementar un sistema con la habilidad del meta-razonamiento no consiste únicamente en crear una nueva capa de control sobre las estructuras de la mente, sino en la capacidad del agente para crear modelos. Háblese de modelos en forma genérica y de cualquier cosa: objetos, comportamientos en el espacio físico, otras personas o incluso de sí mismo.

Luego entonces, la pregunta principal viene a ser:
¿qué se requiere para hacer un modelo?
A grandes rasgos:
  • Detectar atributos
  • Identificar comportamientos
  • Reconocer motivos (qué causa desencadena determinado comportamiento)
De tal modo que al seguir las reglas del modelo sea posible predecir el comportamiento del objeto real.

Los puntos de partida para crear un nuevo modelo son fundamentales y pueden ser distintos. Por ejemplo: para crear el modelo de otra persona, es común comenzar por un clon de la imagen del sí mismo, modificar los atributos más evidentemente diferentes y las circunstancias alrededor, utilizando esto para inferir reglas y predecir comportamientos. Esto se manifiesta claramente en la expresión "¿Qué haría yo, si estuviera en los zapatos de...?".

Sin embargo, esta aproximación puede no ser suficiente. No todas las personas son iguales y no tienen porqué reaccionar del mismo modo ante circunstancias similares. Pero este conocimiento no lo poseé el individuo de antemano. No es sino hasta que los modelos comienzan a fallar que el individuo se percata de la necesidad de crear nuevas bases distintas al sí mismo.

El cómo hacerlo es la cuestión difícil. Dependiendo del mecanismo pueden presentarse vicios conocidos como la creación de etiquetas, encacillamiento de personas en categorías tajantes y basándose únicamente en un número finito de modelos.

Existe aún otra posibilidad que consiste en, en lugar de crear más modelos finitos, crear una abstracción superior sobre el concepto persona. Esta nueva abstracción debería permitir generar un número, en principio, infinito de modelos de personas, un ejemplar particular por cada nueva persona que se conoce.

Sin embargo, el problema es ¿cómo programar esta nueva generalización? ¿cuál es el algoritmo?

lunes, 9 de abril de 2007

Generalización

"""...one of Python's primary design principles is that: "Special cases aren't special enough to break the rules." """

Cito este extracto, fuera de contexto, porque considero que expresa una regla básica para diseñar máquinas que, a partir de unas pocas reglas sencillas, puedan desarrollar todo el potencial de un ser humano. La escencia es: nuestro diseño debe ser tan general, que el tratamiento de casos especiales esté incluído dentro del mismo diseño.

lunes, 19 de marzo de 2007

La Importancia del Módulo de Atención

Existen una gran cantidad de problemas para los cuales la información recibida por el sistema o agente virtual es más de la necesaria.
Existen una gran cantidad de problemas para los cuales la información recibida por sistema o agente virtual es más de la necesaria. Lo que es más, al momento de aplicar algoritmos de aprendizaje es extremadamente necesario eliminar la información irrelevante para determinada lección y observar aquello que realmente contribuirá al aprendizaje de la tarea objetivo. Por lo general se evita este punto entrenando a los sistemas tan sólo con la información que será relevante para aquello que se desea que aprenda, eliminando el ruido.


Esta omisión de la información superflua se aplica desde a las redes neuronales que son diseñadas para alguna actividad muy específica, como a los sistemas reconocedores de voz para los cuales se asume que el individuo se encuentra cerca del micrófono y se ignora el fondo, aún cuando los seres humanos podríamos estar ignorando a la persona que está cerca de nosotros y enfocarnos en escuchar la conversación de alguien más (A lo cual se le conoce comúnmente como “entrometernos en la conversación de alguien más” cosa que, aunque es una falta de educación, la podemos hacer).


Sin embargo, para una máquina de propósito general, con capacidades de aprender de la experiencia, como se desearía que hiciera un robot de servicio doméstico, hacer este tipo de asunciones no sólo es inútil, sino que además limita definitivamente la capacidad de aprendizaje y evolución del agente.


Pensando concretamente en el caso de dicho robot, éste estaría sometido constantemente a la recepción de una gran cantidad de información: toda aquella que pueda percibir a través de sus sensores: imágenes, sonidos, en fin, todo aquello para lo cual se le haya dotado de la capacidad de percibir. Al igual que los seres humanos, este robot se vería en la necesidad de seleccionar solamente aquella información que le resultara relevante. Si se deseara enseñarle algo, debería tomar solamente aquellas señales que están relacionadas con aquello que debe aprender. Si debe repetir cierta actividad con regularidad, se esperaría que no debiera realizar ya toda la planeación desde el principio sino que el algoritmo debería poder ser seguido con mayor naturalidad, enfocándose más bien, a detectar cuando las condiciones cambian para poder improvisar el comportamiento más adecuado dependiendo de las nuevas circunstancias.


Los seres humanos enfocamos nuestra atención dependiendo de varios factores: la novedad, aquello que nos puede ser de utilidad para alcanzar determinada meta o por interés emocional.


La atención que pongamos en cada cosa determinará la cantidad de memoria de trabajo que se le asigne a un sentido o a otro, si nos concentraremos más en recordad una secuencia en el tiempo o en el espacio o si dejaremos algo intermedio entre ambos, nos indicará si debemos fijarnos en patrones sucesivos o separados por ciertos intervalos, cuya longitud puede ser determinada dinámicamente y puede no ser fija. El tipo de patrones que podríamos necesitar detectar para comprender la lógica de algo podría ser como en la secuencia siguiente:


1 2 2 4 8 3 16 32 64 4 128 256 512 1024 5


En la que la lógica subyacente es:


1 2 2 4 8 3 16 32 64 4 128 256 512 1024 5


Donde he resaltado la separación entre las dos secuencias cambiando el color de una de ellas (añadiendo una diferencia que puede ser fácilmente detectada por el sentido de la vista). Igualmente podría resaltarse esta diferencia si la secuencias fuesen leídas por dos personas diferentes, en cuyo caso, el sentido del oído percibiría la diferencia. Es curioso notar cómo, en este último caso, sería necesario mantener en mente las secuencias durante más tiempo para poder resolver la forma en que son generadas, mientras que, con visión, percibimos toda la información en paralelo, está en el papel y por tanto resulta más sencillo sacar conclusiones.


Sin embargo, aún antes de establecer diferencias visuales o auditivas entre las dos secuencias, nuestro cerebro podría haber encontrado el patrón que separa ambas secuencias.


En cualquier caso, separar las secuencias está estrechamente vinculado con la capacidad que tengamos para atender separadamente a los elementos de una y de otra: llegar a darnos cuenta de que, mientras algunos números incrementan su magnitud rápidamente, otros parecen regresar “rompiendo” este patrón de crecimiento. Seguidamente enfocamos nuestra atención en aquellos miembros cuyo comportamiento difiere del de sus vecinos, con esta acción en la que los observaremos a todos ellos juntos (aún cuando espacialmente sigan estando separados) podremos darnos cuenta de que existe una relación entre todos ellos y es que se trata de números consecutivos.




En este sencillo ejemplo podemos ver cómo, la alternancia entre los elementos en los cuales se pone atención casi simultáneamente, nos permite realizar nuevas agrupaciones de acuerdo a sus similitudes. De este modo, observamos que los seres humanos tendemos a agrupar aquellas cosas que encontramos similares debido a que existe un patrón recurrente y predecible entre los elementos, pero que solamente podemos encontrar esta forma de agrupación si tenemos a todos los elementos, juntos, en nuestra memoria de trabajo y esto resulta mucho más sencillo cuando la información se encuentra en el mundo exterior y podemos percibirla en paralelo (visión), que cuando debemos registrarla en nuestra memoria de trabajo y recordar para analizar.

Computadoras ¿Inteligentes?

Dotar a una computadora del sentido común, tan esencial en las relaciones interpersonales, no será posible mientras la máquina creada por el hombre sea incapaz de experimentar en sí misma las experiencias y emociones que experimentan los seres humanos: ver, oír, oler, gustar, sentir, experimentar los efectos del cansancio, la tristeza, la alegría.


Es sorprendente echar una mirada a la literatura producida en los últimos años acerca de los numerosos proyectos que tienen como finalidad el hacer de las computadoras entes más amigables, más humanos. La idea central es hacer de la computadora algo más que un gran almacén de información. Se desea que cada palabra tenga un significado y que las frases tengan sentido. Sin embargo, el significado de una misma palabra puede variar dependiendo del contexto, el sentido de una frase puede tener una interpretación diferente dependiendo de las circunstancias. ¿Cómo podría una computadora conocer la diferencia?


Existen proyectos que pretenden ya no sólo almacenar las palabras, sino también sus significados. Estos significados se dan en términos de las relaciones entre las palabras mismas y se espera que las computadoras sean capaces de encontrar aún más relaciones a través algoritmos lógicos. Sin embargo, la complejidad de los programas sigue en aumento y la fragilidad del conocimiento adquirido es un obstáculo pues ¿quién puede estar seguro de que “el mayordomo cometió el asesinato”? ¿Quién puede garantizar que “el niño de la vecina no está mintiendo”? ¿Cómo podemos estar seguros de las causas de todas las cosas si aún las continuamos buscando? ¿Quién puede saber de todas las razones, de todos los fines? ¿Cómo podría entonces demostrarse que la computadora llegó a un resultado verdadero después de un razonamiento válido? Si los seres humanos cometemos errores, caemos en contradicciones, cambiamos de opinión, hablamos con imprecisiones ¿cómo podría una computadora lidiar con todas las posibilidades que generamos a cada instante?


Mucho me temo que, si buscamos una solución absoluta a todos estos problemas, las computadoras continuarán sin poder comprender lo que está almacenado en ellas y por consiguiente, seguirán dándonos respuestas sin sentido.


Tras todo esto ¿de qué podría servirle a una computadora tener sensores semejantes a los nuestros?


Bien, curiosamente, creo que ahora hablaré del ejemplo que me hizo percatarme de todos estos problemas con mayor claridad. Sí, curiosamente para mí fue el principio y a pesar de ello lo escribo hasta una página después.


El ejemplo es este: imaginaba yo a un ser humano tratando de entrenar a uno de estos sistemas que desean almacenar todo el conocimiento de sentido común. (Conozco un proyecto que le da premios a los usuarios entre más frases correctas agreguen). De pronto pensé en una frase “Las rosas frescas huelen a caño” ¡Cielos! ¿Qué ser humano se atrevería a afirmar en verdad semejante cosa? A pesar de ello ¿Qué base de datos podría permitirle a una computadora darse cuenta de ello? ¿Qué clase de complejo razonamiento tendría que hacer a la computadora saltar desde una definición de diccionario de una rosa y un caño hasta un poema que exalte su delicado aroma, para luego compararlo con el hecho de que en un caño hay material orgánico en descomposición y que este material huele mal y que por lo tanto afirmar que la rosa, de cuyo aroma se habla bien en un lugar y el caño que huele mal, no pueden oler igual? ¡Imaginen simplemente cuántas búsquedas se requerirían para encontrar y comparar la información necesaria en el modo correcto!, o ¡cuantas frases como “El objeto X y el objeto Y no huelen igual” tendrían que ser agregadas a la base de datos!


Para un ser humano es mucho más sencillo recordar a qué huele una rosa y a qué huele el caño para decidir inmediatamente que no huelen igual, no necesita saberlo de antemano, pero averiguarlo, si es necesario, no toma más que unas fracciones de segundo.


En general, cualquier conocimiento de sentido común se caracteriza por estar ahí en el momento necesario sin que la persona tenga que ser consciente de cómo lo adquirió. Simplemente “lo sabe”. Pero ¿siempre fue así? No necesariamente y tengo un claro contra ejemplo que lo demuestra.


Se puede considerar un conocimiento de sentido común al hecho de que “No puedes estar en algún lugar antes de haber nacido” sin embargo, hace algunos años, cuando aún era pequeña, le reclamé con mucho sentimiento a mis padres el no haberme invitado a su boda. Ahora nos hace mucha gracia, pero en aquel momento no se me ocurrió pensar que no podían invitarme porque aún no había nacido.


De este modo, un conocimiento que se consideraría de sentido común tuvo que ser adquirido, no existió desde siempre y por sí mismo, como a veces aparentaría suceder.


En lo personal, creo que el conocimiento de sentido común puede tener su origen en dos fuentes: conocimientos adquiridos mediante la experiencia y deducciones lógicas casi inmediatas.


Conocimientos como el hecho de que un pie cabe en un calcetín o que el pantalón debe ponerse antes que los zapatos pueden adquirirse de dos modos: previendo a futuro, observando que “el zapato no va a caber a través del tubo de la pierna” o por experiencia, “intentando meter el zapato a través del pantalón y sufriendo las desesperantes consecuencias de quedarse atorado”. En cualquiera de los dos casos, se tendrá que llegar a la terminante conclusión de que los pantalones deben ponerse primero. Y después de un tiempo, ya no será importante cómo fue que la persona aprendió la lección, sino sólo el hecho de que lo sabe y ni siquiera tendrá que reflexionar al respecto la próxima vez que se vista.


A menudo, el concepto de sentido común podría asociarse más con esa capacidad, que algunas personas tienen más desarrollada que otras, de prever las consecuencias de ciertos actos o situaciones, de adelantarse a lo que otras personas podrían estar pensando. Este conocimiento es manejado con tal naturalidad por los individuos que “no se dan cuenta de los procesos mentales que están realizando”, simplemente “saben que las cosas son así” y por consecuencia lo llaman sentido común.