lunes, 14 de octubre de 2013

Razonamiento del sentido Comun (Reasoning Common Sense)


Unas observaciones, de la excelente presentacion de CYC en Google Tech 2006 denominada 
"Computers versus Common Sense".

enlace http://www.youtube.com/watch?v=gAtn-4fhuWA 


La conferencia fue hecha en el 2006, por lo cual hay puntos señalados que no tienen validez en la actualidad, como que Google no te da respuestas concretas a algunas de tus pregunta. Ya que actualmente, pones en Google “President of Cuba” y Google te muestra una tarjeta con el nombre del presidente de Cuba.
Otro punto es que, según el ejemplo que dio del perro y la madre, que dice:

El perro de mi mama murió.

Y el programa le preguntó: háblame mas sobre su madre; porque era lo único que sabía.
Pues la razón que pase eso, a mi manera de ver, es que, el programa que recibe la pregunta, si desconoce un concepto, debería preguntárselo al usuario y así, el programa tener el concepto del usuario. Y poder inferir conocimiento.
Por ejemplo:
Si el software no sabe que es dog, el preguntaría:
Perdóname, no se lo que es dog.¿Me podrías definirlo?

De esa manera podría crear definiciones de cosas con los usuarios, uno a uno y de esa manera para un usuario tendrías una definición, sin embargo podrías usar esa misma definición para la definición general, cogiendo lo común que cada uno dice o al menos la unión. O podría ser como un nCaptcha. De esa manera estamos enseñando a las maquinas hacer y saber las cosas.
Dicho lo anterior, el principal problema parece venir de que no se sabe trabajar con lo desconocido, y eso es lo que la maquina debe saber preguntar. Como saber sobre lo desconocido.
Si usas un sistema estático, creo que resultaría sencillo, porque al final, si tienes el conocimiento representado con un numero finito de propiedades, pp1, pp2, ... ,ppN, entonces las preguntas serian de acuerdo a esas propiedades. Digo sistema estático a un sistema donde la cantidad de propiedades que se trabajan son fijas y son las mismas.
Por ejemplo:

Dime la descripción, dime el nombre, etc.


Todas estas preguntas es sobre lo desconocido. Como es estático, se podría hacer un estudio mas detallado de cuales propiedades depende una de otras, cuales preguntar primero, etc.

Ahora si se trabaja con un sistema dinámico, o sea, que la cantidad de propiedades no es fija, sino que ira variando. Entonces se debería preguntar por las mas frecuentes, por las propiedades que aparezcan en todos los objetos, o por lo menos en los que mas, y así de alguna manera puedes terminar clasificándolo en una categoría. Por ejemplo:
Una clase podría ser los objetos que tienen descripción, en este sentido todo lo que existe en el mundo tiene una descripción, una definición y un nombre, a eso se le denomina objeto, ahora si además de eso tiene una propiedad tamaño, entonces se puede decir que es medible, y de la propiedad tamaño debería existir un conjunto de reglas que podamos inferir solo desde esa propiedad. La idea aquí, es que dada una propiedad se infiera todo el conocimiento de ella independiente del objeto (como si fueran estructuras algebraicas). De esa manera, si el usuario especifica que ese concepto tiene esa propiedad, ya puedes inferir conocimiento.

¿Que mas pasa la propiedad tamaño? Es que tamaño puede ser que se modifique, puede ser fija, puede cambiar en la instancia o puede tener varios tamaños. Luego se irán haciendo clustering, de acuerdo a sus propiedades sin valores (a su clase). Pero la clase también se puede definir por instancias, por ejemplo:

Tengo clase persona. Y la instancia de la edad es menor que 15 años se considera un niño y no un adolescente. Entonces ahí se tiene una clase niño que depende de los valores de la instancia. Pero creo que esta forma de clasificar (por valores de instancias) seria el ultimo a tomar en cuenta.
Se empieza hablar sobre las construcciones de las base de datos y los errores que tienen la gente a introducir datos, es verdad, que a la hora de concebir el modelo debería concebirse la semántica, como se expone en el video, si esta la fecha de contratación y esta la fecha de nacimiento, es real que debería haber entre ellos una diferencia de al menos 18 años (edad a la cual se permite trabajar) , para así evitar errores. La idea principal es que deberían haber relaciones verificables entre los datos como la expuesta anteriormente. Pero si algo no cumple con el patrón (la edad es menor que 18 años) también debería poder agregarse, pero con el objetivo de que sea como excepción warning de la regla, ya que, podría darse que alguien muy talentoso que tuviera solo 15 años y pudiera trabajar en la empresa, sin embargo podría ser también un error, entonces el usuario que entra los datos, se le avisa que algo parece no estar bien, en este caso la fecha de nacimiento con la fecha en que empezó a trabajar, si el operador decide insertar los datos igualmente, este dato pasaría a tener un warning diciendo que es una excepción de la regla.

Se habla también del completamiento de contenido por el conocimiento, como el ejemplo del niño y la mama. Creo q seria incorrecto ese completamiento. Ya que podría tener otra interpretación diferente a la “que se cree que será el sentido comun”. Porque lo que significa evidente para ti, no tiene porque ser claro para mi. Los ejemplos que pone son muy sencillos, y al parecer, la única respuesta es esa, pero puede ser que no. Que después de tanto conocimiento la respuesta sea mucho mas completa y compleja. Y no resultaría evidente.(18:10)

Se habla también del completamiento de información de las base de datos, lo mismo que hicieron con lo de rellenar o ver si tenia datos inválidos.

Algunas de las estrategias es que Cycs tiene muchas micro definiciones.
Se habla también que la cantidad de conceptos no es muy importante, principalmente porque hay algunas definiciones (pocas), que abarcan mucho conocimiento, que funcionan como axiomas (34:36).
Hay una regla que creo que se asume muy bien, que dice: “Si dos objetos no se sabe su relación taxonómica entonces se consideran disjuntos”. Porque al final una clase puede ser tan especifica como se quiera, se habla de clases y de instancias de clases pero al final son lo mismo, lo que las clases son instancias sin valores. (video en 35:30)
Si existen dos clases que no se conocen (dos taxones, dos ramas de la taxonomía), entonces se asume que son disjuntas. Y en realidad lo son, porque en su nivel de especificidad se hacen diferentes. Pero que pasa si una es una instancia de la otra.? No pasa nada porque también se puede ver como subconjunto pero también como diferentes grupos como lo son clases y lo son las instancias.
Open CYC es una ontología abierta. Y podemos usarla tanto para investigación como para comercialización.

Estas son unas notas, perdonen si no todas las ideas estan muy esclarecidas y si el cambio de las mismas sea muy brusco.

No hay comentarios:

Publicar un comentario